Software Engineering - Ch. 2
Why are iterations usually limited when the waterfall model is used?
Cost typically constrains iterations of the waterfall model. Waterfall is document-driven and rework and approval of documents is costly.
Why is it increasingly irrelevant to distinguish between software development and evolution?
It should be seen that software engineering or development is an evolutionary process where software is continually changed over its lifetime in response to changing requirements and customer needs.
What are the fundamental activities that are common to all software processes?
Common activities include specification, design and implementation, validation, and evolution Specification is determining what the system will do. Design/Implementation refers to organizing the system and implementing it. Validation is checking that what you are creating is doing what the customer wants it to do. Evolution is changing the system in response to change in customer needs.
What are the identified levels in the SEI's Capability Maturity Model?
Initial, Managed, Defined, Quantitatively managed, and Optimizing are the 5 levels in the Capability maturity Model 1. Initial - goals associated with the process are satisfied, and for all processes the scope of the work to be performed is explicitly set out and communicated to the team members. 2. managed - the goals associated with the process area are met, and the organizational policies are in place that define when each process should be used. There must be documented project plans that define the project goals. Resource management and process monitoring procedures must be in place across the institution. 3 defined - this level focuses on organizational standardization and deployment of processes 4. Quantitatively managed - at this level, there is an organizational responsibility to use statistical and other quantitative methods to control sub processes. 5. Optimizing - at this level the organization must use the process and product measurements to drive process improvement.
What are the principal requirements engineering activities?
Requirements elicitation and analysis, Requirements specification, and Requirements validation, and Feasibility Study are the four main activities in the requirements engineering process. Elicitation and analysis - is the process of deriving the system requirements through observation of existing systems, discussions with potential users and procurers, task analysis, and so on. Specification - the activity of translating the information gathered during requirements analysis into a document that defines a set of requirements. Two types of requirements may be included in this document. Validation - this activity checks the requirements for realism, consistency, and completeness. Errors are inevitably discovered, and then must be modified to correct the issues.
What are the development stages in integration and configuration?
Requirements specification, Software discovery/evaluation, Requirements refinement, Application system configuration, and Component adaptation and integration Requirements specification - initial requirements for the system are proposed. They don't have to be elaborated in detail but should include brief descriptions of essential requirements and desirable system features. Software discovery and evaluation - given an outline of the software requirements, a search is made for components and systems that provide the functionality required. Requirements Refinement - requirements are refined using information about the reusable components and applications that have been discovered. Application System Configuration - if an off-the-shelf application system that meets the requirements is available, it may then be configured for use to create the new system. Component adaptation and integration - if there is no off-the-shelf system, individual reusable components may be modified and new components may be developed. They are then integrated to create the system.
What are the three benefits of incremental development, compared to the waterfall model?
The cost of implementing requirements changes is reduced. It is easier to get customer feedback on the development work that has been done. Early delivery and deployment of useful software to the customer is possible, even if all of the functionality has not been included.
What are the two different approaches to process improvement and change that have been proposed?
The process maturity approach and the agile approach. Process Maturity - has focused on improving process and project management and introducing good software engineering practice into an organization. Agile - focuses on iterative development and the reduction of overheads in software process. Agile focuses on rapid delivery of functionality and responsive adjustments to customer needs.
What are the advantages of using incremental development and delivery?
There are four advantages according to our book. 1. Customers can use the early increments as prototypes and gain experience that informs their requirements for later system increments. Unlike prototypes, these are part of the real system, so there is no relearning when the complete system is available. 2. Customers do not have to wait until the entire system is delivered before they can gain value from it. The first increment satisfies the most critical needs. 3. The process maintains the benefits of incremental development in that it should be relatively easy to incorporate changes into the system. 4. As the highest priority services are delivered first and later increments the integrated, the most important system services receive the most testing. This means that customers are less likely to encounter software failures in the most important parts of the system.
List 3 generic process models that are used in software engineering.
Waterfall Model, Incremental Development Model, and the Integration/Configuration Model Waterfall is a plan driven model. Separate and distinct phases of specification development. In the Incremental development model specification, development, and validation are interleaved. It can also be plan driven or agile. Integration/Configuration relies on the availability of reusable components or systems.