Chapter 2 Flashcards
Lock In!
Software Process Definition
A structured set of activities required to develop a software system.
Software Process Model Definition
- An abstract representation of a process
- Presents a description of a process from some particular perspective.
Many different software processes all involve ________
- Specification
- Design and implementation
- Validation
- Evolution
Different Software Processes Involve:
Specification
Defining what the system should do
Different Software Processes Involve:
Design and Implementation
Defining the organization of the system and implementing the system;
Different Software Processes Involve:
Validation
Checking that it does what the customer wants
Different Software Processes Involve
Evolution
Changing the system in response to changing customer needs
Software Process Descriptions may include ______
- Products
- Roles
- Pre- and post-conditions
Software Process Descriptions Include:
Products
outcomes of a process activity
Software Process Descriptions Include:
Roles
reflect the responsibilities of people involved in the process
Software Process Descriptions Include:
Pre and Post Conditions
statements that are true before and after a process activity has been enacted or a product produced.
Plan-Driven Processes
Processes where all of the process activities are planned in advance and progress is measured against this plan.
Agile Processes
Planning is incremental and it is easier to change the process to reflect changing customer requirements.
In practice, most practical processes include elements of both plan-driven and agile approaches.
There are no right or wrong software processes.
Types of software process models
- Waterfall model
- Incremental development
- Integration and configuration
Software Process Models
Waterfall Model
Plan-driven model. Separate and distinct phases of specification and development.
Software Process Models
Incremental Development
Specification, development and validation are interleaved. May be plan-driven or agile.
Software Process Models
Integration and Configuration
The system is assembled from existing configurable components. May be plan-driven or agile.
Waterfall Model Phases
- Requirements analysis and definition
- System and software design
- Implementation and unit testing
- Integration and system testing
- Operation and maintenance
Waterfall Model Main Drawback
- Difficulty of accommodating change after the process is underway.
- In principle, a phase has to be complete before moving onto the next phase.
Waterfall model problems
- Inflexible partitioning of the project into distinct stages makes it difficult to respond to changing customer requirements.
- Only appropriate when the requirements are well-understood and changes will be fairly limited during the design process.
The waterfall model is mostly used for large systems engineering projects where a system is developed at several sites.
* The plan-driven nature of the waterfall model helps coordinate the work.
Incremental Development Benefits
- The cost of accommodating changing customer requirements is reduced.
- The amount of analysis and documentation that has to be redone is much less than is required with the waterfall model.
- It is easier to get customer feedback on the development work that has been done. Customers can comment on demonstrations of the software and see how much has been implemented.
- More rapid delivery and deployment of useful software to the customer is possible. Customers are able to use and gain value from the software earlier than is possible with a waterfall process.
Incremental development problems
- The process is not visible.
- Managers need regular deliverables to measure progress. If systems are developed quickly, it is not cost-effective to produce documents that reflect every version of the system.
System structure tends to degrade as new increments are added.
- Unless time and money is spent on refactoring to improve the software, regular change tends to corrupt its structure.
- Incorporating further software changes becomes increasingly difficult and costly.
Types of reusable software
- Stand-alone application systems (sometimes called COTS) that are configured for use in a particular environment. (Commercial-Off-the-Shelf)
- Collections of objects that are developed as a package to be integrated with a component framework such as .NET or J2EE.
- Web services that are developed according to service standards and which are available for remote invocation.