Sei sulla pagina 1di 27

Lecture11

Software Engineering I
COMSATS INSTITUTE OF INFORMATION AND TECHNOLOGY
In the Last Lecture

Iterative Models
Prototyping
Spiral Model

2
In Today’s Lecture
Agile methodologies
Plan-driven and agile development
Extreme programming
Agile project management
Scaling agile methods

3
Rapid Development and Delivery
Business need to respond to new opportunities and markets, changing
economic conditions
Incorporate emergence of competing products and services
The most critical requirement of software is rapid development and
delivery
Willingness of customers to trade off software quality and compromise
on requirements to achieve faster deployment of the software

4
Approaches to Rapid Development
-The processes of specification, design, and implementation are
interleaved
-The system is developed in a series of versions. End-users and other
system stakeholders are involved in specifying and evaluating each
version
-System user interfaces are often developed using an interactive
development system that allows the interface design to be quickly
created by drawing and placing icons on the interface

5
Agile Methods
Dissatisfaction with heavyweight, plan-driven development approach
Led a number of software developers to propose new ‘agile methods’
Focus on the code rather than the design
Are based on an iterative approach to software development
Are intended to deliver working software quickly and evolve this
quickly to meet changing requirements

6
Agile Methods
Incremental development methods
Increments are small
New release of the system are made available every two or three
weeks
Involves customers to get feedback on changing requirements
Minimized documentation

7
Agile Manifesto
We are uncovering better ways of developing software by doing it
and helping others do it. Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on the right, we value the
items on the left more

8
Best known Agile Methods
Extreme Programming
Scrum
Crystal
Adaptive Software Development
Feature Driven Development

9
Principles of Agile Methods
Principle Description
Customer involvement Customers should be closely involved throughout the
development process. Their role is to provide and prioritize new
system requirements and to evaluate the iterations.
Incremental delivery The software is developed in increments with the customer
specifying the requirements to be included in each increment.
People not process The skills of the development team should be recognized and
exploited. Team members should be left to develop their own
ways of working without prescriptive processes.
Embrace change Expect the system requirements to change and so design the
system to accommodate these changes.
Maintain simplicity Focus on simplicity in both the software being developed and in
the development process. Wherever possible, actively work to
eliminate complexity from the system.

10
Agile method applicability
Well suited for 2 types of systems
- Product development where a software company is developing a
small or medium-sized product for sale
- Custom system development within an organization, where there is
a clear commitment from the customer to become involved in the
development process
Because of their focus on small, tightly-integrated teams, there are
problems in scaling agile methods to large systems.

11
Problems with agile methods
It can be difficult to keep the interest of customers who are involved
in the process
Team members may be unsuited to the intense involvement that
characterizes agile methods.
Prioritizing changes can be difficult where there are multiple
stakeholders.
Maintaining simplicity requires extra work.
Contracts may be a problem as with other approaches to iterative
development.

12
Agile and software Maintenance
Most organizations spend more on maintaining existing software
than they do on new software development.
Two key issues:
◦ Are systems that are developed using an agile approach
maintainable, given the emphasis in the development process of
minimizing formal documentation?
◦ Can agile methods be used effectively for evolving a system in
response to customer change requests?
Problems may arise if original development team cannot be
maintained
13
Plan Driven and Agile Development
Plan-driven development
◦ A plan-driven approach to software engineering is based around
separate development stages with the outputs to be produced at each
of these stages planned in advance.
◦ Not necessarily waterfall model – plan-driven, incremental
development is possible
◦ Iteration occurs within activities.
Agile development
◦ Specification, design, implementation and testing are inter-leaved and
the outputs from the development process are decided through a
process of negotiation during the software development process
14
Evolutionary Prototypes

15
Balance between Plan and Agile Method

To decide on the balance between a plan-based and an agile


approach, you have to answer a range of technical, human, and
organizational questions

16
Balance between Plan and Agile Method
If requirements should be gathered before development?
• Is it important to have a very detailed specification and design before
moving to implementation? If so, you probably need to use a plan-
driven approach
• Is an incremental delivery strategy, where you deliver the software to
customers and get rapid feedback from them, realistic? If so, consider
using agile methods

17
Balance between Plan and Agile Method
How large is the system that is being developed?
• Agile methods are most effective when the system can be
developed with a small co-located team who can communicate
informally.
• This may not be possible for large systems that require larger
development teams so a plan-driven approach may have to be
used

18
Balance between Plan and Agile Method
What type of system is being developed?
• Systems that require a lot of analysis before implementation
(e.g., real-time system with complex timing requirements)
usually need a fairly detailed design to carry out this analysis. A
plan-driven approach may be best in those circumstances
• Otherwise agile methods can be used

19
Balance between Plan and Agile Method
What is the expected system lifetime?
• Long-lifetime systems may require more design documentation
to communicate the original intentions of the system developers
to the support team.
• However, supporters of agile methods rightly argue that
documentation is frequently not kept up to date and it is not of
much use for long-term system maintenance

20
Balance between Plan and Agile Method
What technologies are available to support system development?
• Agile methods often rely on good tools to keep track of an
evolving design.
• If you are developing a system using an IDE that does not have
good tools for program visualization and analysis, then more
design documentation may be required.

21
Balance between Plan and Agile Method
How is the development team organized?
• If the development team is distributed or if part of the
development is being outsourced, then you may need to
develop design documents to communicate across the
development teams. You may need to plan in advance what
these are
• Otherwise incremental plans can be used

22
Balance between Plan and Agile Method
Are there cultural issues that may affect the system development?
• Traditional engineering organizations have a culture of plan-
based development, as this is the norm in engineering. This
usually requires extensive design documentation, rather than
the informal knowledge used in agile processes
• If there are no cultural issues agile can be used

23
Balance between Plan and Agile Method
How good are the designers and programmers in the development
team?
• It is sometimes argued that agile methods require higher skill
levels than plan-based approaches in which programmers
simply translate a detailed design into code.
• If you have a team with relatively low skill levels, you may need
to use the best people to develop the design, with others
responsible for programming.

24
Balance between Plan and Agile Method
Is the system subject to external regulation?
• If a system has to be approved by an external regulator (e.g., the
Federal Aviation Authority [FAA] approve software that is critical
to the operation of an aircraft) then you will probably be
required to produce detailed documentation as part of the
system safety case
• Or you can use less documentation

25
Advantages of Agile Methods
Customer satisfaction by rapid, continuous delivery of useful software.
People and interactions are emphasized rather than process and tools.
Customers, developers and testers constantly interact with each other.
Working software is delivered frequently (weeks rather than months).
Face-to-face conversation is the best form of communication.
Close, daily cooperation between business people and developers.
Continuous attention to technical excellence and good design.
Regular adaptation to changing circumstances.
Even late changes in requirements are welcomed

26
Problems of Incremental Delivery
In case of some software deliverables, especially the large ones, it is
difficult to assess the effort required at the beginning of the software
development life cycle.
There is lack of emphasis on necessary designing and documentation.
The project can easily get taken off track if the customer
representative is not clear what final outcome that they want.
Only senior programmers are capable of taking the kind of decisions
required during the development process. Hence it has no place for
newbie programmers, unless combined with experienced resources.

27

Potrebbero piacerti anche