Lecture 1 Flashcards
Software Engeneering
- engeneering discipline concerned with all aspects of software production (early stages of system specifications –> maintenance)
- Concerned with professional software development
SE Activities
Software Specification
Software Development
Software Validation
Software Evolution
Software Specification
Specification of steps, rules, processes to build software
1968
Software engeneering started as a tem with the objective to adress the software crisis caused by individual aproaches to development not scaling up to complex systems
Software Validation
testing the software
Sfotware Development
development of tools, framerorks…
Software Evolution
Management of the software development over its lifetime
Issues of Software
Heterogeneity - different types of computer and devices for distributed software
Bussines/Social change - software needs to respond well to quick changes
Security, Trust, Privacy - we must trust the software as it is ubiquitous
Software Engeneering Fundamentals
- Software should be developed using a managed and understood process
- Dependability and performance - important for all kinds of systems
- Software specification and requirements need to be well understood
- Reuse software already deployed where applicable
Software Engeneering Process (definition)
A structured set of activities required to develop a software system
(Process: series of actions or steps taken to achieve a particular end)
SEP Activities
- Specification - what software does
- Design - how it does it
- Implementation
- Test and validation
- Maintenance and Evolution - changing sofotware over time according to customer
Software Process Model
Abstract representation of a process. Is composed of:
- Activities: what steps are defined by the model
- Products: outcomes of a process activity
- Roles: responsibilities of the people involved
- Pre and Post Conditions: statements true before and after an activity has been enacted or a product produced
Types of Software Process Models
Plan Driven - All activities are planned in advance and progress is measured against set plam
Agile - Planning is incremental. Easier to change the process to reflect change in requirements
Waterfall Model (general)
Plan Driven, Sequential and separate activities.
Reuse Oriented SE
Software is assembled from existing components. Plan driven/agile
Waterfall Steps (general)
Analysis - requirements and specifications
Design - Solution proposal and description
Implementing and unit testing - coding and testing
Integration, system testing and deployment
Maintenance and Evolution
(one after another)
Waterfall: Analysis
Establishes required functionality and contraints on the software operation and dev.
Requirements engeneering process:
- Feasability study
- Requirements elicitation and analysis
- Requirements specification
- Requirements validation
Waterfall: Design
Design a solution meeting the requirements specification.
Waterfall: Implementation
Translate the design into executable program. Design and implementation are often interleaved
Waterfall: Integration, Testing, Deployment
Verification and validation - the software conforms to its specifications and meets requirements
Testing: Execute system with test cases.
Waterfall: Maintenance and Evolution
Solve bugs and other issues, improve existent functionality, extend software with additional features
Waterfalll: Advantages and Limitations
+ Applied where requirements are stable. Useful for coordinating large projects with development on several sites. Easy to follow progress
- Does not cope well with changes in the requirements and is not flexible.
Suitable for:
- Embedded systems
- Critical Systems (need for safety and security)
- Large Software Systems
Incremental Development
Activities are interleaved. Can be plan driven or agile
Objective: Cope with changes
System is develops in increments, evaluated (by user/customer proxy) before proceeding.
Requirements are prioritized (high priority adressed early). During dev, req are frozen and later adressed.
Incremental Delivery
Deploy an increment for use by end-users –> more realistic evaluation about practical use.