CSC440 Chapter 2: Software Processes (Software Engineering, Sommerville, 10th Edition)
Four main design activities
1) Architectural design 2) Database design 3) Interface design 4) Component selection and design
Two related approaches to reducing the cost of rework
1) Change anticipation: activities that can anticipate possible changes before significant rework is required 2) Change tolerance: where the process is designed so that changes can be accommodated at relatively low cost
Three Stages of Testing
1) Component testing 2) System testing 3) Acceptance (Customer) testing
Systems where the waterfall method is more appropriate
1) Embedded systems where the software has to interface with hardware systems 2) Critical systems where there is a need for extensive safety and security analysis 3) Large software systems that are a part of broader engineering systems
Process maturity levels
1) Initial - Few processes defined 2) Repeatable - Basic project management, requirements, and documentation are known 3) Defined - Process management procedures and strategies defined and used 4) Managed - Quality management strategies defined and used 5) Optimizing - Process improvement strategies defined and used
Process improvement activities
1) Measurement 2) Analysis 3) Change
Incremental delivery problems
1) Most systems require a set of basic facilities that are used by different parts of the system 2) The essence of iterative processes is that the specification is developed in conjunction with the software
Two approaches to process improvement
1) Process maturity approach 2) The agile approach
Advantages of reuse oriented software development
1) Reduced cost and risks as less software is developed from scratch 2) Faster delivery and deployment of system
Disadvantages of reuse oriented software development
1) Requirements compromises are inevitable so system may not meet real needs of users 2) Loss of control over evolution of reused system elements
Phases of the Waterfall model
1) Requirements definition 2) Systems and software design 3) Implementation and unit testing 4) Integration and system testing 5) Operation and maintenance
Three stages of the requirements engineering process
1) Requirements elicitation and analysis: What do the stakeholders require or expect? 2) Requirements specification: Defining those requirements in detail 3) Requirements validation: Checking the validity of those requirements
Key process stages of reuse based software engineering
1) Requirements specification 2) Software discovery and evaluation 3) Requirements refinement 4) Application system configuration 5) Component adaptation and integration
Four main software processes
1) Specification 2) Design and Implementation 3) Validation 4) Evolution
Four basic process activities of software development
1) Specification 2) Development 3) Validation 4) Evolution
Types of reusable software
1) Standalone application systems that are configured for use in a particular environment 2) Collections of objects that are developed as a package to be integrated into a framework 3) Web services that are developed according to service standards and which are available for remote invocation
Three main benefits of incremental development
1) The cost of accommodating changing customer requirements is reduced 2) It is easier to get customer feedback on the development work that has been done. 3) More rapid delivery and deployment of useful software to the customer
Two main concerns with incremental development
1) The process is not visible 2) System structure tends to degrade as new increments are added
Incremental delivery advantages
1. Customer value can be delivered with each increment so system functionality is available earlier. 2. Early increments act as a prototype to help elicit requirements for later increments. 3. Lower risk of overall project failure. 4. The highest priority system services tend to receive the most testing.
Benefits of Prototyping
1. Improved system usability 2. A closer match to users' real needs 3. Improved design quality 4. Improved maintainability 5. Reduced development effort
Software Process
A structured set of activities required to develop a software system.
What is one of the main difficulties facing a pure waterfall model development project?
Accommodating change after the process is underway.
Describe the planning of Plan-driven processes
All of the process activities are planned in advance and progress is measured against this plan.
Software Process Model
An abstract representation of a process. It presents a description of a process from some particular perspective.
Name some examples of how and why system requirements can change
External pressures (Usually means money) Competition Changed management priorities
T or F: The four process activities of software development are organized the same regardless of what process model is being used
False! For example, in the waterfall model they are organized in sequence whereas in incremental development they are interleaved
Process improvement: Process maturity approach
Focuses on improving process and project management and introducing good software engineering practice. The level of process maturity reflects the extent to which good technical and management practice has been adopted in organizational software development processes
Process improvement: The agile approach
Focuses on iterative development and the reduction of overheads in the software process.
Reuse-Based Development: Application system configuration stage
If an off-the-shelf application system is available that meets the requirements, then it is configured for use in the new system
Reuse-Based Development: Component adaptation and integration stage
If there is no off-the-shelf application available, individual reusable components may be adapted and new components developed. These are then integrated into the system
Software evolution
Modifying or changing the software to meet changing customer needs.
Waterfall Model Process Model
Plan-driven model. Separate and distinct phases of specification and development.
When we describe and discuss processes, we usually talk about the activities in these processes such as specifying a data model, designing a user interface, etc. and the ordering of these activities. Process descriptions may also include:
Products: The outcomes of a process activity Roles: Reflect the responsibilities of the people involved Pre- and Post-Conditions: Statements that are true before and after a process activity has been enacted or product produced
The integration and configuration software process model is based on what major concept?
Software reuse: Reused elements may be configured to adapt their behavior and functionality to a user's requirements
Incremental Development Process Model
Specification, development and validation are interleaved. May be plan-driven or agile.
System testing
Testing the entire system as one entity to ensure that it is working properly
Acceptance or Customer testing
Testing with customer data to check that the system meets the customer's needs.
Software design and implementation
The process of converting the system specification into an executable system.
Software Specification
The process of establishing what services are required and the constraints on the system's operation and development.
Integration and Configuration Process Model
The system is assembled from existing configurable components. May be plan-driven or agile.
Component testing
The testing of individual software components.
T or F: Most practical processes include elements of both plan-driven and agile approaches.
True!
T or F: Reuse is now the standard approach for building many types of business systems?
True!
T or F: 80% of Waterfall type projects fail
True! (According to Prof. Fazi)
T or F: Prototypes should be discarded after development and why?
True! They are not a good basis for a production system because it may be impossible to tune the system to meet non-functional requirements, they are normally undocumented, the structure is degraded through rapid change, and usually they do not meet normal organizational quality standards
Process Improvement
Understanding existing processes and changing these processes to increase product quality and/or reduce costs and development time.
Software validation (V & V)
Verification and validation (V & V) is intended to show that a system conforms to its specification and meets the requirements of the system customer. Involves checking and review processes and system testing.
Coping with change: System Prototyping
Version of the system or part of the system is developed quickly to check the customer's requirements and the feasibility of design decisions. This approach supports change anticipation.
Coping with change: Incremental delivery
Where system increments are delivered to the customer for comment and experimentation. This supports both change avoidance and change tolerance.
Interface design
Where you define the interfaces between system components.
Database design
Where you design the system data structures and how these are to be represented in a database.
Architectural design
Where you identify the overall structure of the system, the principal components (subsystems or modules), their relationships and how they are distributed.
Component selection and design
Where you search for reusable components. If unavailable, you design how it will operate.