Review Questions
Review Questions
Review Questions
2 What is the most important difference between generic software product development and custom software development? What might this mean in practice for users of generic software products? 1.3 What are the four important attributes that all professional software should have? Suggest four other attributes that may sometimes be significant. 1.4 Apart from the challenges of heterogeneity, business and social change and trust and security, identify other problems and challenges that software engineering is likely to face in the 21st century (hint: think about the environment). 1.5 Based on your own knowledge of some of the application types discussed in section, explain, with examples, why different application types require specialized software engineering techniques to support their design and development. 1.8 Discuss whether professional engineers should be certified in the same way as doctors or lawyers.
Chapter 2
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 A virtual reality system to support software maintenance A university accounting system that replaces an existing system An interactive travel planning system that helps users plan journeys with the lowest environmental impact 2.3 Consider the reuse-based process model shown in Figure below. Explain why it is essential to have two separate requirements engineering activities in the process.
2.4 Suggest why it is important to make a distinction between developing the user requirements and developing system requirements in the requirements engineering process. 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. 2.9 What are the advantages of providing static and dynamic views of the software process as in the Rational Unified Process? Chapter 3 3.2 Explain how the principles underlying agile methods lead to the accelerated development and deployment of software. 3.3 When would you recommend against the use of an agile method for developing a software system? 3.6 Suggest four reasons why the productivity rate of programmers working as a pair might be more than half that of two programmers working individually. 3.9 It has been suggested that one of the problems of having a user closely involved with a software development team is that they go native. That is, they adopt the outlook of the development team and lose sight of the needs of their user colleagues. Suggest three ways how you might avoid this problem and discuss the advantages and disadvantages of each approach. Chapter 4 4.2 Discover ambiguities or omissions in the following statement of requirements for part of a ticket-issuing system:
An automated ticket-issuing system sells rail tickets. Users select their destination and input a credit card and a personal identification number. The rail ticket is issued and their credit card account charged. When the user presses the start button, a menu display of potential destinations is activated, along with a message to the user to select a destination. Once a destination has been selected, users are requested to input their credit card. Its validity is checked and the user is then requested to input a personal identifier. When the credit transaction has been validated, the ticket is issued. 4.4 Write a set of non-functional requirements for the ticket-issuing system, setting out its expected reliability and response time. 4.6 Suggest how an engineer responsible for drawing up a system requirements specification might keep track of the relationships between functional and non-functional requirements. 4.7 Using your knowledge of how an ATM is used, develop a set of use cases that could serve as a basis for understanding the requirements for an ATM system. 4.9 When emergency changes have to be made to systems, the system software may have to be modified before changes to the requirements have been approved. Suggest a model of a process for making these modifications that will ensure that the requirements document and the system implementation do not become inconsistent. Chapter 5 5.2 How might you use a model of a system that already exists? Explain why it is not always necessary for such a system model to be complete and correct. Would the same be true if you were developing a model of a new system? 5.5 Develop a sequence diagram showing the interactions involved when a student registers for a course in a university. Courses may have limited enrolment, so the registration process must include checks that places are available. Assume that the student accesses an electronic course catalog to find out about available courses. 5.6 Look carefully at how messages and mailboxes are represented in the email system that you use. Model the object classes that might be used in the system implementation to represent a mailbox and an e-mail message. 5.7 Based on your experience with a bank ATM, draw an activity diagram that models the data processing involved when a customer withdraws cash from the machine. 5.10 You are a software engineering manager and your team proposes that model-driven engineering should be used to develop a new system. What factors should you take into account when deciding whether or not to introduce this new approach to software development? Chapter 6 6.1 When describing a system, explain why you may have to design the system architecture before the requirements specification is complete. 6.3 Explain why design conflicts might arise when designing an architecture for which both availability and security requirements are the most important non-functional requirements. 6.7 Explain how you would use the reference model of CASE environments (available on the books web pages) to c ompare the IDEs offered by different vendors of a programming language such as Java. 6.8 Using the generic model of a language processing system presented here, design the architecture of a system that accepts natural language commands and translates these into database queries in a language such as SQL. 6.9 Using the basic model of an information system as presented in Figure below, suggest the components that might be part of an information system that allows users to view information about flights arriving and departing from a particular airport.
Chapter 7
7.1 Using the structured notation shown in Figure 7.3, specify the weather station use cases for Report status and Reconfigure. You should make reasonable assumptions about the functionality that is required here. 7.3 Using the UML graphical notation for object classes, design the following object classes, identifying attributes and operations. Use your own experience to decide on the attributes and operations that should be associated with these objects. a telephone a printer for a personal computer a personal stereo system a bank account a library catalogue 7.7 Draw a sequence diagram showing the interactions of objects in a group diary system, when a group of people are arranging a meeting. 7.9 Using examples, explain why configuration management is important when a team of people are developing a software product. 7.10 A small company has developed a specialized product that it configures specially for each customer. New customers usually have specific requirements to be incorporated into their system, and they pay for these to be developed. The company has an opportunity to bid for a new contract, which would more than double its customer base. The new customer also wishes to have some involvement in the configuration of the system. Explain why, in these circumstances, it might be a good idea for the company owning the software to make it open source. Chapter 8 8.2 Explain why testing can only detect the presence of errors, not their absence. 8.4 You have been asked to test a method called catWhiteSpace in a Paragraph object that, within the paragraph, replaces sequences of blank characters with a single blank character. Identify testing partitions for this example and derive a set of tests for the catWhiteSpace method. 8.5 What is regression testing? Explain how the use of automated tests and a testing framework such as JUnit simplifies regression testing. 8.7 Write a scenario that could be used to help design tests for the wilderness weather station system. 8.8 What do you understand by the term stress testing? Suggest how you might stress test the MHC-PMS.
Chapter 9
9.1 Explain why a software system that is used in a real-world environment must change or become progressively less useful.
9.4 As a software project manager in a company that specializes in the development of software for the offshore oil industry, you have been given the task of discovering the factors that affect the maintainability of the systems developed by your company. Suggest how you might set up a program to analyze the maintenance process and determine appropriate maintainability metrics for the company. 9.5 Briefly describe the three main types of software maintenance. Why is it sometimes difficult to distinguish between them? 9.7 Under what circumstances might an organization decide to scrap a system when the system assessment suggests that it is of high quality and high business value? 9.8 What are the strategic options for legacy system evolution? When would you normally replace all or part of a system rather than continue maintenance of the software?