Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 20

Software Engineering

Fundamentals
CSC-2073
Lecture No. 06
Dr. Muhammad Adeel
Department of Computer Science
National Textile University

dr.muhammad.adeel.ntu@hotmail.com
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

You might also like