12 terms

Software Engineering Mid Term

STUDY
PLAY

Terms in this set (...)

3.1 Explain why rapid delivery and deployment of new systems is often more important to businesses than the detailed functionality of these systems.
In a conventional waterfall or specfication-based process the final software is usually delivered to the customer long after it was originally specified. In a business environment, this can cause problems. By the time the software is available for use, the original requirements may have changed drastically. Therefore, business systems focus on rapid software development and delivery.
3.2 Explain how the principles underlying agile methods lead to the accelerated development and deployment of software
The principles underlying agile development are:
1. Individual and interactions over processes and tools.
Overheads of formal communication and process assurance are avoided by letting the development team know what others are doing and taking advantage of individual skills. This means that the team can focus on the development of working software.
2. Working software over comprehensive documentation.
Time is not spent developing, checking and managing documentation. Time is focused on the development and testing of code.
3. Customer collaboration over contract negotiation
Rather than analyzing and negotiating what should be in a system contract, agile developers get feedback from customer's directly during the development. This allows useful functionality to be developed and delivered earlier than would be possible if contracts were required.
4. Responding to change over following a plan
Being responsive to change is more effective than following a plan-based process because change is inevitable. The inflexibility of a plan causes significant overhead when changes are required and finished work may be discarded.
3.3 When would you recommend against the use of an agile method for developing a software system?
Agile should not be used when the software is being developed by teams who are not co- located. If any of the individual teams use agile methods, it is very difficult to coordinate their work with other teams. Informal communication which is an essential part of agile methods is practically impossible.
Agile should not be used for critical systems that cannot afford error (think NASA). However, some ideas from agile approaches such as test first development are certainly useful to critical systems.
3.4 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.
Advantages of stories:
1. They represent real situations that often happen so the system will support the most common user operations.
2. It is easy for users to understand and critique the stories.
3. They represent increments of functionality - implementing a story delivers some value to the user.
Disadvantages of stories
1. They may be incomplete and their informal nature makes this incompleteness difficult to see.
2. They focus on functional requirements rather than non-functional requirements.
3. Representing cross-cutting system requirements such as performance and reliability is impossible when stories are used.
4. The relationship between the system architecture and the user stories is unclear so architectural design is difficult.
3.5 Explain why test-first development helps the programmer to develop a better understanding of the system requirements. What are the potential difficulties with test-first development?
...Test-first development requires there to be a clear relationship between system requirements and the code implementing the corresponding requirements. In test-first devel, the task implementers have to thoroughly understand the specifications so that they can write tests for the system. Some difficulties are: programmers prefer programming to testing and sometimes they take shortcuts when writing tests. Also, some tests can be very difficult to write incrementally. (Example: in complex user interface, often difficult to write unit tests for the code that implements "display logic" and workflow between screens. )
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.
1. Pair programming leads to continuous reviewing. This helps to discovers bugs more quickly
2. Information sharing in pair programming happens during the process. This reduces the need for documentation and the time required if one programmer has to pick up another's work.
3. Pair programming encourages refactoring (the code must be understandable to another person). This reduces the costs of subsequent development and change and means future changes can be made more quickly.
4. In pair programming, people are likely to spend less time in fine-grain optimization as this does not benefit the other programmer. This means that the pair focus on the essential features of the system which they can then produce more quickly.
3.7 Compare the Scrum approach with conventional plan-based approaches. The comparison should be based on the effectiveness of each approach for planning, allocation of people, estimating cost, maintaining the team, and managing changes.
Planning:
Plan Driven - managers draw up the plan, saying what should be developed, when it should be completed, and who should do it.
Scrum - Outline the general architecture of the system and then create small iterations in sprints.
Allocation of people:
Plan Driven - project manager, decides who will program what
Scrum - has a scrum master, no project manager. Small teams no greater than 7 work on short sprints.
Estimating Cost:
Maintaining the team:
Scrum - scrum meetings every day lasting 15 minutes or less. Short meetings after each sprint.
Managing Changes:
Plan Driven - more difficult to manage changes, especially if the change will affect the original plan.
Scrum - easier to manage changes, because the project is made in many different iterations that can all be combined.
3.8.a You are a software manager in a company that develops critical control software for aircraft. You are responsible for development of a software design support system that supports the translation of software requirements to a formal specification. Comment on the advantages and disadvantages of this strategy...
-Collect the requirements for such a system from engineers and external stakeholders, and develop using plan driven approach.
...
3.8.b You are a software manager in a company that develops critical control software for aircraft. You are responsible for development of a software design support system that supports the translation of software requirements to a formal specification. Comment on the advantages and disadvantages of this strategy...
-Develop a prototype using a scripting language, such as Ruby or Python, evaluate the prototype with engineers and stakeholders, then review the requirements. Redevelop using Java.
...
3.8.c You are a software manager in a company that develops critical control software for aircraft. You are responsible for development of a software design support system that supports the translation of software requirements to a formal specification. Comment on the advantages and disadvantages of this strategy...
-Develop the system in Java using an agile approach with a user involved in the development team.
...
3.9 Sometimes having a user involved with the 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.
1. Involve multiple users in the development team. Advantages are you get multiple perspectives on the problem, better coverage of user tasks/requirements and less likelihood of having an abnormal user. Disadvantages are cost and possible user conflicts.
2. Change the user who is involved with the team. Advantages are multiple perspectives. Disadvantages are each user takes time to be productive and possible conflicting requirements from different users.
3. Validate user suggestions with other user representatives. Advantages are independent check on suggestions; disadvantage is that this slows down the development process as it takes time to do the checks.
3.10 To reduce costs and the environmental impact of commuting, your company closes some offices and allows staff to work from home. The senior management who introduces this policy are not aware development uses agile methods, which rely on close team working and pair programming. Discuss the difficulties of the new policy.
The difficulties that may arise with this policy if making employees work from home are:
1. The benefits obtained through agile methods will be less effective due to a communication gap between the members of a team.
2. The benefit of error detection and evaluation through pair programming is lost.
2. Pair programming is not possible. Due to sudden changes in the teams, the project development may be slowed down.