



Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Ian Sommerville, Software Engineering, 9th Edition Ch2
Typology: Exercises
1 / 6
This page cannot be seen from the preview
Don't miss anything!




2.1. Giving reasons for your answer based on the type of system being developed, suggest the most appropriate generic software process model that might be used as a basis for managing the development of the following systems: A system to control anti-lock braking in a car waterfall + formal transformations A virtual reality system to support software maintenance Incremental development A university accounting system that replaces an existing system Reuse-based approach can be the best choice, because the requirements are well-known and will be used in conjunction with lots of other systems. An interactive travel planning system that helps users plan journeys with the lowest environmental impact incremental OR Answer: : a) Anti-lock braking system This is a safety-critical system so requires a lot of up-front analysis before implementation. It certainly needs a plan-driven approach to development with the requirements carefully analyzed. A waterfall model is therefore the most appropriate approach to use, perhaps with formal transformations between the different development stages. b) Virtual reality system This is a system where the requirements will change and there will be an extensive user interface components. Incremental development with, perhaps, some UI prototyping is the most appropriate model. An agile process may be used. c) University accounting system This is a system whose requirements are fairly well- known and which will be used in an environment in conjunction with lots of other systems such as a research grant management system. Therefore, a reuse-based approach is likely to be appropriate for this. d) Interactive travel planning system System with a complex user interface but which must be stable and reliable. An incremental development approach is the most appropriate as the system requirements will change as real user experience with the system is gained.
2.2 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? Answer: Business software systems are usually complex, software intensive, and frequently being changed when business goals or processes are changed. It is cheaper and easier to change in an incremental model. The incremental model allows customer input to be implemented quickly to accommodate changing needs. Delivery is faster, and businesses can determine what functionalities they need sooner. Incremental development is better. Real-time systems usually involve many hardware components which are not easy to change and cannot be incremental. Also, real-time systems are usually safety critical which need to be built based on well planned process OR First, incremental development allows early access to the most valuable functionality. Early access not only gains value early, but also gives the most important component of the system the most testing. Second, incremental development can handle requirement changes well, which is necessary for business software systems whose requirements have to change when the business changes. Incremental development reduces rework on analysis and documentation when change happens. Third, incremental development doesn’t need a complete specification in advance. This is important to business software because the detailed requirement may not be spotted until part of the functionalities are implemented. Why is this model less appropriate for real-time systems engineering? This is because the computing time may suffer without a complete plan for the whole system. Real-time system is time-critical, therefore cannot start without a complete plan. 2.3. Consider the reuse-based process model shown in Figure 2.3. Explain why it is essential to have two separate requirements engineering activities in the process. Requirements specification is about determine the user and system requirements of the software system. Requirements modification is to modify the requirement specification based on the reusable components. The modification is necessary because we usually don’t have full control over the reusable components, therefore some work around is necessary.
2.6. Explain why change is inevitable in complex systems and give examples (apart from prototyping and incremental delivery) of software process activities that help predict changes and make the software being developed more resilient to change. The requirements may change due to the change of the market/environment. Sometimes a better solution to the old requirements is also necessary. Develop software interactively can help predict changes, because the experts can have better insight about the possible changes on the business domain in the future. Use component-based architecture can restrict the impact of many changes within some components but not the entire system. More from the solution manual: Recording of requirement rationale so that the reasons behind the requirements is known. This helps with future change. Requirement traceability that shows the dependencies between the requirements. Design modeling helps the structure of the software remain clear even after changes. Code refactoring that improves code quality and organization and so makes it robust enough to take few more changes. 2.7. Explain why systems developed as prototypes should not normally be used as production systems. First, prototypes usually can’t afford proper documentation, which makes it hard to maintain in the future. Second, codes of prototypes usually don’t meet the organizational quality standard. Third, ignorance of some non-functional requirements like user management, security, memory management, and performance may not be fulfilled.
2.8. Explain why Boehm’s spiral model is an adaptable model that can support both change avoidance and change tolerance activities. In practice, this model has not been widely used. Suggest why this might be the case. This is because of the explicit risk management of Boehm’s spiral model. By spotting and handling the risks between planning and developing, many changes can be avoided in advance and plans for future changes can be made to improve change tolerance. Spiral model can be over expensive for most cases, that maybe the reason why it is not widely used. The other reason is that just like incremental development, lacking a complete specification before the end of the process makes it hard to work with management systems. 2.9. What are the advantages of providing static and dynamic views of the software process as in the Rational Unified Process? In reality, the software process contains both static and dynamic patterns. Requirements, development, testing are common activities, while iterations of these static activities can be different from phase to phase and from project to project.