Skip to content
Textbook Guides

Solution Manual for Engineering Software Products: An Introduction to Modern Software Engineering, 1st Edition

Need help with textbook problems? Solution Manual for Engineering Software Products: An Introduction to Modern Software Engineering, 1st Edition is the perfect solution, providing comprehensive answers to every question.

Preview 11 of 35 pages

See the first 11 pages exactly as they appear in the document.

  1. Page 1
    Read page 1 as text

    1 ENGINEERING SOFTWARE PRODUCTS SOLUTIONS TO EXERCISES

  2. Page 2
  3. Page 3
    Read page 3 as text

    3 1. Solutions to exercises 1.1 Briefly describe the fundamental difference between project-based and product-based software engineering. The most important difference is that in project-based software engineering there is an external client for the software who is responsible for specifying their needs as ‘requirements’. For products, the owner of the product is responsible for specifying its features and may change this specification in response to schedule pressure or technical difficulties. 1.2 What are three important differences between software products and software product lines. 1. There is a single version of a software product for all customers in a particular market. For software product lines, every delivered product is different and adapted to specific customer needs. 2. Software product lines are designed for evolution so that the needs of different clients can be accommodated. While evolution is important for software products, issues such as performance and usability are usually more important. 3. Product updates are more complex for software product lines as it is important to check that these do not interfere with every client version of the software. 1.3 Based on the vision example for the iLearn system, identify the ‘WHAT, WHO and WHY’ for that software product. WHAT: An open-learning environment that allows teachers to configure the set of tools and resources available to teachers and students to meet the specific needs of these users. WHO: Teachers and other educators. WHY: Because existing learning environments are inflexible with a focus on the administration of learning rather than the learning process itself. 1.4 Why do software product managers have to be generalists with a range of skills rather than simply technical specialists? Because they have to interface and interact with a wide range of people who may not be technical experts. Typically this will include potential users, company managers and managers of companies who are potential customers for the product. Of course, they also have to interact with the development team so must understand technical issues that may be important. 1.5 You are a software product manager for a company developing educational software products based around scientific simulations. Explain why it is important to develop a product roadmap so that final product releases are available in the first three months of the year. The market for this software is science departments in schools and colleges. The product is a simulation system so teachers need to have time to evaluate it before deciding on

  4. Page 4
    Read page 4 as text

    4 whether or not it suits their needs. Typically, schools and colleges work around an academic year, which starts in September and runs through till May or June. Therefore, to use the product in a new academic year, it has to be installed by June of that year at the latest as teachers and instructors cannot be guaranteed to be available during the vacation. All institutions have a purchasing process and there may be several weeks between a decision to purchase and the delivery of the software. Therefore, if the software is not available in the first three calendar months of the year, it is probably impossible to evaluate, purchase, install and test the product in time for the new academic year. 1.6 Why should you develop a prototype before you start developing a new software product? You should always develop a prototype system for four reasons: 1. If you are looking for funding for your product development, a prototype shows possible funders what your software can do. It is much easier to explain to them why your company is worth investing in if they can see customer benefits. 2. A prototype can be used for initial customer experimentation to see if the features that you propose to include are genuinely useful and likely to be used by customers. 3. You can use a prototype to investigate the feasibility of technologies (e.g. NoSQL databases) that you might use in your product. 4. Developing a prototype helps you understand the overall structure of your system. This is helpful in deciding how to decompose your final implementation into fundamental software units, such as services.

  5. Page 5
    Read page 5 as text

    5 2. Solutions to exercises 2.1 Explain why it is important that software products are developed and delivered quickly. Why is it sometimes sensible to deliver an unfinished product and then issue new versions of that product after delivery? It is important to develop and deliver software products quickly because of the dynamic and competitive market and because of the need for a company to generate revenue as soon as possible. If you don’t deliver quickly, then a competitive product may be introduced first and capture the market. Customers are reluctant to change after they have made a decision. Furthermore, product development is expensive and there is a need to try and cover costs of people, premises etc. as soon as possible otherwise there may be insufficient funding to run the company. Delivering an unfinished product may make sense because it introduces your product to customers and gives them a chance to embed it in their way of working. They are therefore more likely to commit to a finished version when it has been completed. 2.2 Explain why the fundamental objectives of agile software engineering are consistent with the accelerated development and delivery of software products. The fundamental objectives of agile software engineering are incremental development and delivery of software and minimising activities such as documentation that do not contribute directly to the delivery of the software. These lead to accelerated development because incremental development means that changes can be accommodated during the development process with only minimal product rework. Rework is a major factor in slowing down delivery. Minimising ancillary activities means that the team can spend its time on delivering software and so can complete it more quickly. 2.3 Give three reasons why Extreme Programming (XP) is envisaged by its developers is not widely used. 1. XP fails to provide guidance on how projects should be managed and organized - it simply suggests that teams should be self-organizing. The reality of software development in businesses is that there needs to be a clear interface between the development team and the wider organization and someone who takes responsibility for everyday management tasks. 2. Pair programming is a fundamental part of XP but it is contrary to the way that many organizations work and is sometimes disliked by developers. There is no definitive evidence that pair programming is more effective than individual developers. 3. While the idea of embedding a customer in the development team is an attractive one, it is impractical in many circumstances to find a representative customer who has time for such involvement. 2.4 You are developing a software product to help manage student admissions in a university. Your agile development team suggests that they should develop this as a number of small

  6. Page 6
    Read page 6 as text

    6 releases that potential customers can try and then provide feedback. Comment on this idea and suggest why it may not be acceptable to the system’s users. This issue exemplifies the problem with incremental delivery. There are some processes where all of the functionality of a system is needed and users prefer to stick with their existing system rather than experiment with an untried new system. They are too busy to ‘play around’ with unfinished software as they are working on tasks that have a strict deadline. They are therefore unlikely to want to experiment or become involved in the agile development process. 2.5 Explain why the product owner is an essential role in a Scrum development team. How might a development team that is working in an environment where there are no external customers (e.g. a student project team) reproduce this product owner role? The product owner is an essential role because they are the interface with the potential customers for the software and they have to represent the needs and wishes of these customers to the team. Failure to do this properly will lead to software that does not do what customers want and so is unlikely to be successful. In a situation where there are no external customers, the problem is that the whole team have ideas about what the software is required to do. While it may seem that appointing a team member as a product owner is an alternative, the reality is that individuals will always question their authority as they are no more qualified than anyone else to say what should and shouldn’t be in the product. Rather than a ‘product owner’ a possible alternative is a ‘product discussion’ where the team meet at the start of each iteration and discuss what they will do during that iteration. This should be a short, time-bounded meeting where everyone has the opportunity to make proposals for the work of that iteration. At the end of the meeting, if there is no consensus on what proposals should be accepted, the team should vote and the proposals that get the highest number of votes should be implemented. 2.6 Why is it is important that each sprint should normally produce a ‘potentially shippable’ product increment? When might the team relax this rule and produce something that is not ‘ready to ship’? It is important to product a potentially shippable product increment for three reasons: 1. This means that there is always a high quality version of the software available as a demonstrator for potential customers and funders. 2. The software should be reliable so can be used as a basis for future development, reused, etc. 3. If people leave the team, new people are not faced with the problem of trying to finish incomplete software. The circumstances where this rule might be relaxed is when the aim of the sprint is to gather information rather than to create working software. So, if the sprint is developing a throw-away prototype, this does not need to be shippable; alternatively if some new

  7. Page 7
    Read page 7 as text

    7 technology such as a new type of database is being tested, there should be no expectation of producing finished software. 2.7 Explain why estimating the work required to complete a product backlog item using effort in ‘person-hours’ or ‘person-days’ can lead to significant variations between the estimated effort and the actual effort to implement that item. Team members have differing ability and experience. What one team member might complete in 10 hours, might take another 20 hours. Teams will always tend to defer to more senior members when making estimates and, because they are experienced, they may underestimate the time needed by more junior members to finish the work. 2.8 Explain why daily scrums are likely to reduce the time that is normally required for new team members to become productive. Daily scrums are a mechanism for information exchange where the whole team can discuss issues. New team members attending a scrum are not only provided with updates on progress and problems faced by the team, the meeting also means they can ask questions without feeling that they are interrupting the work of other team members. 2.9 One of the problems with self-organising teams is that more experienced team members tend to dominate discussions and therefore to influence the team’s way of working. Suggest ways to reduce this problem. Two ways in which this problem might be reduced: 1. All team-members propose solutions and issues anonymously on post-it notes and these are all discussed by the team. 2. More junior members of the team are asked to lead discussions on issues rather than always relying on senior team members. 2.10 Scrum has been designed for use by a team of 5-8 people working together to develop a software product. What problems might arise if you try to use Scrum for student team projects where a group work together to develop a program. What parts of Scrum could be used in this situation? Problems and issues 1. No explicit product manager 1.2. ScrumMaster is unlikely to be experienced in using Scrum so can’t really act as a coach 1.3. Difficulties in arranging daily Scrums because team members are not full-time but have class commitments. 1.4. The project goal is not usually to produce shippable software but a working perhaps incomplete demonstrator. 1.5. Inexperienced team unlikely to be able to make accurate estimates Aspects of Scrum that can be used: 1.6. Product backlog ii. Time-boxed sprints producing demonstrable software in each sprint

  8. Page 8
    Read page 8 as text

    8 iii. Regular all-team meetings to discuss problems and agree on backlog items

  9. Page 9
    Read page 9 as text

    9 3. Solutions to exercises 3.1 Using the input/action/output template that I introduced at the beginning of this chapter, describe two features of software that you commonly use such as an editor or a presentation system. Change name feature of program editor : Input: The name of a variable or a function that has to be changed and the new name for the variable or function. Action: All of the instances of that name in the current scope are replaced with the new name ie the name change may be restricted to within a function or can be a global change. Activation: User chooses the ‘Change name’ command from the Refactoring menu Output: A program with the new names replacing the old names Remove dust spots feature of a photo editor. Input: A photograph plus a selection where the command should apply. The size of dust spot that should be removed. Action: Within the selected area, the program identifies dust spots and replaces the spot pixels with adjacent pixels. Activation: User choice from Restore Photo menu. Output: The input photograph without dust spots Format document Input: A document annotated with Markdown mark-up commands+ a style sheet defining how commands should be styled Action: Formats the document according to the mark-up specification and the style chosen Activation: From the Format document menu or keyboard shortcut Output: A PDF representation of the document formatted according to the style sheet 3.2 Explain why it is helpful to develop a number of personas representing types of system user before you move on to write scenarios of how the system will be used. It is important to write personas to represent the different types of user that you think will use the system so that you can imagine the type of system feature that they are likely to use and they level of complexity in features that they can deal with. Writing personas also helps you empathise with users and makes you think about how they would react to using your software.

  10. Page 10
    Read page 10 as text

    10 3.3 Based on your own experience of school and the teachers you knew, write a persona for a high school science teacher who is interested in building simple electronic systems and using these in class teaching. Iona is 27 and has been a high-school science teacher in Portobello High School near Edinburgh, Scotland for 4 years. Her father was an electronic engineer and introduced her to building home electronic systems when she was 10. She enjoys building and using these systems and often builds systems with her students. She did a degree in Physics at Aberdeen University and as part of that course, learned to program in Python. She normally teaches physics but sometimes helps with computer science classes. Outside of work, she enjoys rock climbing and cooking and is very interested in the science of cooking. One of the problems that Iona has is that getting simple electronic construction tasks over to students is time-consuming and takes up a lot of lesson time. She primarily wants to use the iLearn system to integrate video into her teaching where she plans to make videos demonstrating completed systems and how-to videos showing simple tasks like choosing resistors, etc. 3.4 Extend Jack’s scenario, shown in Table 3.5, to include a section where students record audio reminiscences from their older friends and relatives and include them in the iLearn system. The following text might be added to the scenario: The audio reminiscences are collected by students from older relatives and friends. The class discuss a list of questions that they can ask and students are issued with digital recorders to capture these from friends and relatives. Once they have made the recordings, information is added about who is involved and their role in the fishing industry. The recordings are then uploaded to the iLearn system as audio files. Obviously, there are many possible acceptable answers to this question. 3.5 What do you think are the weaknesses of scenarios as a way of envisaging how users might interact with a software system? There are three major weaknesses of the scenario-based approach: 1. They may be too specific. Even if your scenarios are based on potential system users, it is very difficult to know if these represent ways of using the system that are general rather than specific to this type of user. 2. They may be incomplete. The scenario presents a high-level view of interactions. You can never know if your set of scenarios are missing something that would be important to some users. They also may not cover essential features such as security features. 3. Lack of detail. Some interactions may involve detailed actions by users but these tend to be missed out in scenarios as they make them too long and tedious to read. 3.6 Starting with Jack’s scenario, derive four user stories about the use of the iLearn system by both students and teachers.

  11. Page 11
    Read page 11 as text

    11 As a teacher, I want to be able to quickly review student’s photographs before they are added to the system to check that they do not include copyright material from other sources. As a teacher, I want students to be able to access information on the fishing industry from sources such as newspaper archives. As a student, I want to be able to create short vignettes where a series of photos are shown alongside an audio reminiscence. As a student, I want to be able to edit and merge audio files. 3.7 What do you think are the weaknesses of user stories when used to identify system features and how they work? The problem with user stories is that users tend to focus exclusively on how they might use the system to do the things they want to do. They do not think of things that may be needed (such as backups) that are essential but which users prefer to ignore. 3.8 Explain why domain knowledge is important when identifying and designing product features. Domain knowledge is very important because the features of the product must be geared to addressing common problems and actions from that domain. For example, if the domain is managing dental records, you need to know what dentists include in a dental record and how they use these records when planning treatment. 3.9 Suggest how a development team might avoid ‘feature creep’ when they are faced with many different suggestions for new features to be added to a product. Ways to avoid feature creep: 1. Look for overlaps in suggested features and try to merge features into a single feature 2. Check that feature suggestions do not overlap with existing features and that there is no way to do the same thing using existing features 3. Look at the generality of suggested features and choose features that provide functionality that is likely to be widely used rather than very specific functionality 4. Review feature suggestions with a domain expert to see how useful they are likely to be 3.10 Based on Elena’s scenario, shown in Table 3.7, use the method of highlighting phrases in the scenario to identify four features that might be included in the iLearn system. 1. A feature to set up a dedicated learning environment for a subject or class. 2. A feature to configure that environment by adding tools and services that will be made available to all users. 3. A feature to create sub-environments that contain a subset of the tools/services and whose use is confined to specific sub-groups. 4. A feature that makes it possible for an environment to be reviewed by a specified group of users before it is made generally available.

24 more pages in the full document

Unlock it once and it stays in your library, ready to chat with or turn into flashcards.

Unlock the full document
See all

Study this document with CramX

Once it is in your library, every tool can work from it.