Midterm Material - Software Process and Process Models Flashcards
What is a software process?
A structured set of activities required to develop a software system.
What do all software processes involve?
Specification - Defining what the system should do
Design and implementation - defining the organization of the system and implementing the system
Validation - Checking that the system does what the customer wants
Evolution - Changing the system in response to customer needs
What is a process model?
An abstract representation of a process.
What is the difference between a process and a process model?
A layer of abstraction similar to the difference between an abstract data type (ADT) and the implemented data type. For example, waterfall is an abstract model that a company can implement as a process to suit their needs.
What is a software process description?
Talking about the activities to be performed within the process and the ordering of the activities. They may also include products, the outcomes of a process activity, and roles, which reflect the responsibilities of the people involved with the process.
What is the difference between plan-driven and agile processes?
In plan driven, all process activities are planned in advance and progress is then measured against it. In agile, planning is incremental. It is easier to change the process to reflect different customer requirements.
What is the advantage of the incremental planning of agile models?
Makes it easier to make changes based on client feedback without needing to redo a lot of the work.
What is the waterfall model?
It is a plan-driven process model with separate and distinct phases of specification and development.
What are the stages of the waterfall model?
Requirements definition, system and software design, implementation and unit testing, integration and system testing, operation and maintenance.
What is the main problem with the waterfall model?
It is difficult to change anything once the process has begun. In waterfall, a phase must be complete before you can move on so if you’ve made a mistake it’s hard to go back.
When should a waterfall model be used?
When requirements are well understood and changes will be limited during the design process. Also for large systems engineering project where a system is developed at several sites.
What are some other problems with the waterfall model?
The client only sees a working product once the entire thing has been coded. This can be a problem because they may have not described what they really want.
What is an incremental development model?
A model where specification, development, and validation are happening concurrently. Could be plan-driven or agile.
What are the stages and products of an incremental development model?
Specification, development, and validation are the stages that happen concurrently. The products produced are the initial version, intermediation versions, and the final version of the product. The initial and intermediate versions provide feedback to improve the product.
What are the benefits of an incremental development model?
It doesn’t cost as much to accommodate changes as the amount of analysis and documentation that would have to be redone is reduced.
Makes it easier to get customer feedback. Because of the production of prototypes customers can comment on demonstrations of the software.
More rapid delivery and deployment of useful software is possible.
What are the drawbacks of an incremental development model?
The process is not as visible to managers since not as much documentation is produced. This makes it more difficult to track progress.
System structure degrades as new increments are added. This happens because the additional build has to be incorporated without destroying what is already there.
What is a reuse-oriented model?
A process where the system is put together from existing components. The components can be configured to make them fit the particular user requirements
What are some examples of reusable software?
Stand alone applications configured for use in a particular environment. Ex: different versions of WindowsOS for enterprise or home use.
Collections of objects developed as a package to be integrated with a component framework.
Web services developed according to service standards available for remote invocation. Ex: REST APIs.
What are the stages of a reuse oriented process?
Requirements specification, software discovery and evaluation where old software is found that meets the criteria for the current application. Requirements refinement where the requirements are adjusted if necessary. If the application system is available it can be directly integrated but if only the components are available, the components will need to be adapted, new components will need to be added, and then the system can be integrated.
What are the advantages of reuse-oriented models?
Reduced costs as not as much software is being built from scratch.
Faster delivery and deployment of the system.
What are the drawback of reuse-oriented models?
Requirements compromises need to be made to make existing components fit so the system may not meet the needs of users.
You lose control of the evolution of the reused elements.
What are the 4 basic process activities?
Specification, development, validation, and evolution