Exam 1 - Chapter 2
What are the advantages of using incremental development and delivery?
- Customers can use early increments as prototypes and gain experience that can influence later increments of the system. - Customers do not have to wait until the entire system is finished and delivered to gain value from it. - It should be relatively simple to incorporate changes into the system as the process maintains the benefits of incremental development. - Since the highest priority increments are delivered first, they also receive the most testing, so they should be robust upon delivery.
What are the identified levels in the SEI's Capability Maturity Model
- Initial - Scope of work is communicated to team members. No 'real' management. - Managed - Organizational policies are in place that define when each process must be used. - Defined - Focus on organizational standardization and deployment of processes. - Quantitatively Managed - Organizational responsibility to use statistical and other quantitative methods to control subprocesses. - Optimizing - Organization must use the process and product measurements to drive process improvements.
Software process models
abstract representations of these processes.
general models
waterfall model, incremental development, and reusable component configuration and integration.
What are the two different approaches to process improvement and change that have been proposed?
- Process Maturity Approach - Focuses on improving process and project management and introducing good software engineering practice to an organization. It is a hierarchical approach which places an organization on a certain level of maturity. - Agile Approach - Focuses on reducing the overhead in the software process as well as iterative development. Focus on rapid delivery of functionality and responsiveness to the changing needs of the customer as well.
What are the development stages in integration and configuration?
- Requirements Specification - Software discovery and evaluation - Requirements Refinement - Application system configuration - Component adaption and integration
What are the principal requirements engineering activities?
- Requirements elicitation and analysis - Requirements specification - Requirements validation
What are the fundamental activities that are common to all software processes?
- Software Specification - The functionality of the software and constraints on its operation must be defined. - Software Development - The software to meet the specification must be produced. - Software Validation - The software must be validated to ensure that it does what the customer wants. - Software Evolution - The software must evolve to meet changing customer
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 of useful software to the customer is possible, even if all the required functionality has not been built.
Why is it increasingly irrelevant to distinguish between software development and evolution?
- Very few software systems are created from scratch today, and because of this thinking of software development as a continuous, and evolving, process would make more sense. Few software systems are now completely new and a more realistic model of software development is of an iterative process that lasts for the lifetime of the software.
List 3 generic process models that are used in software engineering?
- Waterfall Model - Takes fundamental process activities and presents them as the following separate process phases: requirements specification, software design, implementation, and testing. -Incremental Development - Interleaves specification, development, and validation and the system is developed by version, each version adding functionality not contained in the previous. - Integration and Configuration - Relies on reusable components or systems to create a new system using the components or systems found reusable.
Explain why software testing should always be an incremental, staged activity. Are programmers the best people to test the programs that they have developed?
Because each increment of the software system should be testing during development, as well as individual pieces once it is finished. Customers may be the best people to test the programs that have been developed because they will be looking for what they require to have a useful program.
Explain why incremental development is the most effective approach for developing business software systems. Why is this model less appropriate for real-time systems engineering?
Because most business software systems requirements will change during the development process. It reflects the way we solve problems, incrementally moving forward and backtracking to fix errors when we find mistakes. Also, for the customer, progress is much easier to judge as they have physical examples of what has been developed. Real-time systems need to be well structured and robust systems but incremental development tends to degrade software structure as each increment is added, unless an investment in refactoring is made.
Consider the integration and configuration process model shown in Figure 2.3. Explain why it is essential to repeat the requirements engineering activity in the process.
Because, with the integration and configuration model the developer doesn't know what the requirements are until they find out what kind of software is available for reuse. Once reusable software is found the developer refines the requirements to cover reusable components.
Why are iterations usually limited when the waterfall model is used?
The result of each phase in the waterfall model is one or more documents that are approved. The cost of each phase is significant so iterations, or phases, are limited to keep costs within reason.
Requirements engineering
the process of developing a software specification.
Suggest why it is important to make a distinction between developing the user requirements and developing system requirements in the requirements process.
User requirements are abstract statements of the system requirements for customer and end-user. System requirements are a more detailed description of the functionality to be provided. There must be a distinction because the information a customer and developer need are very different, even though the information concerns the same system.
Design and implementation processes
concerned with transforming a requirements specification into an executable software system
General process models
describe the organization of software processes
Specifications
intended to communicate the system needs of the customer to the system developers.
Process improvement
is the process of improving existing software processes to improve software quality, lower development costs, or reduce development time. It is a cyclic process involving process measurement, analysis, and change.
Software evolution
takes place when you change existing software systems to meet new requirements. Changes are continuous, and the software must evolve to remain useful.
Software processes
the activities involved in producing a software system
Software validation
the process of checking that the system conforms to its specification and that it meets the real needs of the users of the system