Software Engineering: Process Models, Agile Methods, and Test-First Development, Exercises of Software Engineering

Answers to Chapter 2 and Chapter 3 of Software Engineering

Typology: Exercises

2020/2021

Uploaded on 04/14/2021

chengting-su
chengting-su 🇨🇳

5

(1)

1 document

1 / 6

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
Chapter 2:
2.1 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 antilock braking in a car
o Safety Critical System
o Plan Driven approach with requirements analysed carefully
o Waterfall model most appropriate with formal transformations between different
development stages.
A virtual reality system to support software maintenance
o Cutting edge and UI dependent for usability
o Incremental or Spiral with some UI prototyping
o Agile process may be used
A university accounting system that replaces an existing system
o Requirements fairly well known
o Reuse based approach is appropriate
An interactive travel planning system that helps users plan journeys with the lowest environmental
impact
o Complex UI which is stable and reliable
o Incremental development approach most appropriate
o System requirements will change as user experience is gained
2.2 Incremental software development could be very effectively used for customers who did not have a
clear idea about the systems needed for their operations. Discuss
Based on the idea of developing initial implementation, getting user feedback and evolving
software through several versions.
Either plan driven, agile or mixture.
Customer can evaluate systems at a relatively early stage.
2.3 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.
Firstly requirements spec involve proposing initial requirements for the system
o Brief descriptions
Refinement stage, reusable components and applications discovered for refinement.
o Modified to reflect available components and system spec is redefined.
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
1) User Requirements describe the system functions and features from the perspective of a user. These are
usually abstract. System requirements provide a more detailed explanation of the procedure.
2) User requirements are written in plain and natural language. System requirements are more detailed
with specific specifications that could be part of a contract.
3) User requirements start with gathering information, identifying important aspects, and understanding
them.
System Requirements can only be implemented after the user requirements are understood and finalised.
pf3
pf4
pf5

Partial preview of the text

Download Software Engineering: Process Models, Agile Methods, and Test-First Development and more Exercises Software Engineering in PDF only on Docsity!

Chapter 2: 2 .1 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 antilock braking in a car o Safety Critical System o Plan Driven approach with requirements analysed carefully o Waterfall model most appropriate with formal transformations between different development stages.
  • A virtual reality system to support software maintenance o Cutting edge and UI dependent for usability o Incremental or Spiral with some UI prototyping o Agile process may be used
  • A university accounting system that replaces an existing system o Requirements fairly well known o Reuse based approach is appropriate
  • An interactive travel planning system that helps users plan journeys with the lowest environmental impact o Complex UI which is stable and reliable o Incremental development approach most appropriate o System requirements will change as user experience is gained 2.2 Incremental software development could be very effectively used for customers who did not have a clear idea about the systems needed for their operations. Discuss
  • Based on the idea of developing initial implementation, getting user feedback and evolving software through several versions.
  • Either plan driven, agile or mixture.
  • Customer can evaluate systems at a relatively early stage. 2.3 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.
  • Firstly requirements spec involve proposing initial requirements for the system o Brief descriptions
  • Refinement stage, reusable components and applications discovered for refinement. o Modified to reflect available components and system spec is redefined. 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
  1. User Requirements describe the system functions and features from the perspective of a user. These are usually abstract. System requirements provide a more detailed explanation of the procedure.
  2. User requirements are written in plain and natural language. System requirements are more detailed with specific specifications that could be part of a contract.
  3. User requirements start with gathering information, identifying important aspects, and understanding them. System Requirements can only be implemented after the user requirements are understood and finalised.

2.5 Using an example, explain why the design activities of architectural design, database design, interface design and component design are interdependent Design of architecture:

  • System overall structure is defined.
  • Discuss reason for interdependency Design of Database:
  • Define structure of database as representation. Design of interface:
  • Interface defined here.
  • Ease of use Component design and selection
  • Reusable components matching requirements are defined here All design activities above should be followed and integrated. Therefore these work together and can be called interdependent 2.6 Explain why software testing should always be incremental, staged activity. Are programmers the best people to test the programs that they have developed? Software testing:
  • Each program is tested for correct functionality
  • Complete program divided into small modules, tested individually. (UNIT TESTING)
  • Then whole system is tested with the programs tested above. (SYSTEM TESTING)
  • Beta version released and end user checks (CUSTOMER TESTING) Programmers are not the best persons
  • Hard to find own errors.
  • Best skills to develop but not to test. 2.7 Imagine that a government wants a software program that helps to keep track of the utilization of the country’s vast mineral resources. Although the requirements put forward by the government were not very clear, a software company was tasked with the development of a prototype. The government found the prototype impressive, and asked it be extended to be the actual system that would be used. Discuss the pros and cons of taking this approach Pros:
  • Allows changes to prototype
  • Customer sees prototype and modifications made before design is created
  • Better implementation
  • Satisfied customer Cons:
  • Additional cost for prototype creation
  • Delays due to extra time creating prototypes

Chapter 3 3.1 At the end of their study program, students in a software engineering course are typically expected to complete a major project. Explain how the agile methodology may be very useful for the students to use in this case

  • Team centered, assisting with interaction.
  • Phase release, showing updates as they work
  • Specification, design, and implementation are interleaved.
  • No detailed system spec and design docs is minimized. 3.2 Explain how the principles underlying agile methods lead to the accelerated development and deployment of software.
  • Individual and interactions over processes and tools o This means that the team can focus on the development of working software
  • Working software over comprehensive documentation o Rather the programmer’s time is focussed on the development and testing of code.
  • Customer collaboration over contract negotiation o This allows useful functionality to be developed and delivered earlier than would be possible if contracts were required.
  • Responding to change over following a plan o There is significant overhead in changing plans to accommodate change and the inflexibility of a plan means that work may be done that is later discarded. 3.3 Extreme programming expresses user requirements as stories, with each story written on a card. Discuss the advantages and disadvantages of this approach to requirements description Adv of stories:
  • Represent real situations arising so systems support common user operations
  • Easy for users to understand and critique stories
  • Represent increments of functionality Disadv:
  • Liable to be incomplete
  • Focus on functional requirements
  • Representing system requirements such as performance and reliability are impossible
  • Relationship between architecture and user stories is unclear. 3.4 In test-first development, tests are written before the code. Explain how the test suite may compromise the quality of the software system being developed.
  • The test suite could become outdated by the time the actual code is written and not test every vulnerability that the code may have.
  • If tests aren’t reviewed, and further tests written, undetected bugs may be in system release.

3.5 Suggest four reasons why the productivity rate of programmers working as a pair might be more than half that of two programmers working individually

  • Pair programming leads to continuous informal reviewing. Discovers bug quicker than individual testing.
  • Informal sharing is implicit. Reducing need for documentation and time required for another’s work load.
  • Encourages refactoring – reducing costs of subsequent development and changes in the future can be done quicker
  • People are likely to spend less time in fine-grain optimization. Both focus on essential features which are produced quicker. 3.6 Compare and contrast the Scrum approach to project management with conventional plan – based approaches. Your comparison should be based on the effectiveness of each approach for planning the allocation of people to projects, estimating the cost of projects, maintaining team cohesion, and managing changes in project team membership Scrum Approach: Conventional plan-based Approaches: Effectiveness applicability: Best for small-medium sized projects. Best for Large security and safety required projects. Planning allocation of people to projects: The whole team is involved in the project. No project managers. Planning is participated by everyone. A manager will break down the work parts and assigns the parts to teams of members involved. Estimating Cost on projects: Easier to estimate costs as the project develops throughout the increments of software development, as the amount of time needed for development can be predicted easily. Determined during initial planning phases. Cost is difficult to determine due to the amount of time needed and product feasibility being undeterminable. Maintaining team cohesion: Teams are always working together on the same increment and everything is visible to everyone. Frequent meetings held and tracks backlog of work Teams are working on different parts of a system, therefore smaller teams work together as opposed to one large team working together, not knowing what other teams are doing Managing changes in project team membership: Lesser number of members in the project team due to all everybody working together. Requires larger amounts of members to ensure the teams have sufficient members. 3.7 To reduce costs and the environmental impact of commuting, your company decides to close a number of offices and to provide support for staff to work from home. However, the senior management who introduce the policy are unaware that software is developed using Scrum. Explain how you could use technology to support Scrum in a distributed environment to make this possible. What problems are you likely to encounter using this approach? Use of technology:
  • Video conferencing
  • Scrummaster should be located with development team to be aware of everyday problems
  • Product owner should visit developers to establish good relationships with them
  • Real time communication through informal communication, I.E. instant message and video calls.
  • Continuous integration, all team members can be aware of state of product at any time
  • Common development environment for all teams Problems:
  • Development requirement daily meetings but not possible in distributed environment