Software Engineering
Fundamentals
CSC-2073
Lecture No. 06
Dr. Muhammad Adeel
Department of Computer Science
National Textile University
[email protected]
Last Lecture Review
Phased Development
– Incremental Development
– Iterative Development
– Iterative vs Incremental Development
– Iterative Development - Pros & Cons
Spiral Model
– Spiral Model - Pros & Cons
2 Software Engineering - CSC2073
Agenda – What will you Learn Today?
Agile Software
Development
3 Software Engineering - CSC2073
Agile Software Development
4 Software Engineering - CSC2073
Agile Software Development
Businesses now operate in a global, rapidly
changing environment
They have to respond to
‒ New opportunities and markets
‒ Changing economic conditions
‒ The emergence of competing products and
services
Rapid development and delivery is therefore
now often the most critical requirement for
software systems
5 Software Engineering - CSC2073
Agile Software Development
Businesses are willing to trade off software
quality and compromise on requirements to
achieve faster deployment of the software
The businesses are operating in a changing
environment, it is often practically impossible
to derive a complete set of stable software
requirements AGIL
E
6 Software Engineering - CSC2073
Agile Software Development
Software development processes that plan on
completely specifying the requirements and
then designing, building, and testing the
system are not geared to rapid software
development AGILE
As the requirements change or as
requirements problems are discovered, the
system design or implementation has to be
reworked and retested
7 Software Engineering - CSC2073
Agile Software Development
As a consequence, a conventional waterfall or
specification-based process is usually
prolonged and the final software is delivered
to the customer long after it was originally
specified
AGILE
8 Software Engineering - CSC2073
Agile Software Development
IBM introduced incremental development in
the 1980's
The notion really took off in the late 1990's
with the development of the notion of agile
approaches such as:
- Scrum
AGILE
- eXtreme programming (Xp)
9 Software Engineering - CSC2073
Agile Software Development
Rapid software development processes are
designed to produce useful software quickly
The software is not developed as a single unit
but as a series of increments, with each
increment including new system functionality
10 Software Engineering - CSC2073
ASD - Fundamental Characteristics
1) The processes of specification, design, and
implementation are interleaved
2) The system is developed in a series of
versions
3) 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
11 Software Engineering - CSC2073
Agile Methods
In the 1980s and early 1990s, there was a
widespread view that the best way to achieve
better software was:
- Careful project planning
- Formalized quality assurance
- The use of analysis and design methods
- Controlled and rigorous software development
processes
- For example control systems for a modern
aircraft
12 Software Engineering - CSC2073
Agile Methods
Plan-driven development approach is applied
to small and medium-sized business systems,
the overhead involved is so large that it
dominates the software development process
More time is spent on how the system should
be developed than on program development
and testing
Rely on an incremental approach to software
specification, development, and delivery
13 Software Engineering - CSC2073
Agile Methods
Best suited to application development where
the system requirements usually change
rapidly during the development process
Intended to deliver working software quickly
to customers, who can then propose new and
changed requirements to be included in later
iterations of the system
14 Software Engineering - CSC2073
Agile Approaches
Lightweight approaches to satisfy the customers
with "early and continuous delivery of valuable
software"
Manifesto for Agile Software Development
Individuals & Interactions over Processes & Tools
Working Software over Comprehensive
Documentation
Customer Collaboration over Contract Negotiation
Responding to Change over Following a Plan
15 Software Engineering - CSC2073
Principles of Agile Methods
Customer Involvement
Incremental Delivery
People Not Process
Embrace Change
Maintain Simplicity
16 Software Engineering - CSC2073
Agile Methods - Difficulties
In practice, the principles underlying agile
methods are sometimes difficult to realize:
1) Willing of a customer to spend time with the
development
2) Individual team members may not have
suitable personalities for the intense
involvement
3) Prioritizing changes can be extremely difficult
4) Maintaining simplicity requires extra work
5) Standard processes definition
17 Software Engineering - CSC2073
Agile Methods - Applicability
Agile methods have been very successful for
some types of system development:
1) Product development where a software company is
developing a small or medium-sized product for sale
2) Custom system development within an organization,
where there is a clear commitment from the
customer to become involved in the development
process and where there are not a lot of external
rules and regulations that affect the software
18 Software Engineering - CSC2073
Recap
Agile Software Development
Agile Software Development - Fundamental
Characteristics
Agile Methods
Agile Approaches
Principles of Agile Methods
Agile Methods - Difficulties
Agile Methods - Applicability
19 Software Engineering - CSC2073
Questions
20 Software Engineering - CSC2073