A set of related activities that leads to the production of the software
Four activities in any software process
Software specifications
Software development
Software validation
Software evolution
Supporting activities in software process
Configuration and change management
Quality assurance
Project management
User experience
Change Management
Managing changes related to project management plans, processes, and baselines
Configuration Management
Managing changes related to product scope
Software quality assurance (SQA)
A process which assures that all software engineering processes, methods, activities and work items are monitored and comply against the defined standards
Project Management
The application of knowledge, skills, tools, and techniques to project activities to meet the project requirements
User Experience (UX) design
The process design teams use to create products that provide meaningful and relevant experiences to users
Software process is complex, it relies on making decisions
There's no ideal process and most organizations have developed their own software process
Software process model
A simplified representation of a software process
Software process models
Each model represents a process from a specific perspective
They can be adapted and extended to create more specific processes
Waterfall Model
A sequential approach, where each fundamental activity of a process represented as a separate phase, arranged in linear order
Plan-driven process
A process where all the activities are planned first, and the progress is measured against the plan
Phases of Waterfall model
1. Requirements gathering and analysis
2. System Design
3. Implementation
4. Integration and Testing
5. Deployment of system
6. Maintenance
In practice, the phases of Waterfall model overlap and feed information to each other
Prototyping
A version of a system or part of the system that's developed quickly to check the customer's requirements or feasibility of some design decisions
Phases of Prototyping
1. Establish objectives
2. Define prototype functionality
3. Develop the prototype
4. Evaluate the prototype
Incremental Development
Developing an initial implementation, exposing this to user feedback, and evolving it through several versions until an acceptable system has been developed
Each system increment reflects a piece of the functionality that is needed by the customer
Spiral Model
A risk-driven model where the process is represented as spiral rather than a sequence of activities
Phases of Spiral Model
1. Objective setting
2. Risk assessment and reduction
3. Development and validation
4. Planning
Iterative Development
Aims to develop a system through building small portions of all the features, across all components
Phases of Iterative Development
1. Inception
2. Elaboration
3. Construction
4. Transition
Agile
A group of software development models based on the incremental and iterative approach
Agile methods minimize documentation by using informal communications rather than formal meetings with written documents
Increment
Builds a complete feature of the software
Iterative
Builds small portions of all the features
Agile
Combines the incremental and iterative approach by building a small portion of each feature, one by one, and then both gradually adding features and increasing their completeness
Software crisis
The difficulty of writing useful and efficient computer programs in the required time
Aspects of software crisis
Size
Quality
Cost
Delayed Delivery
Software testing typically finds 25 errors per 1000 lines of code
Development of the FAA's Advanced Automation System cost over $700 per lines of code
One in four large-scale development projects is never completed