0% found this document useful (0 votes)
2 views

Lecture 04

Uploaded by

ansyas100
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

Lecture 04

Uploaded by

ansyas100
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 18

Faculty of Computers and Artificial intelligence

Software Process and Quality


Management
COURSE CODE: SCS253

Dr. Lamia Abo Zaid presented by: Dr. Amr Galal


l .a bozai d@fci -cu.ed u.eg a mrgal al @aucegypt .edu
Course Contents
Introduction
The Software Lifecycle
Software Engineering Development Models
 Waterfall Model
 The “V” Model

 Spiral Model

 Rational Unified Process

 Agile Processes

Quality In The Software Process


Software Configuration Management
Open Issues in Process Management

SOFTWARE ENGINEERING DEVELOPMENT MODELS 2


Prescriptive Process Models
Two types of Prescriptive process models can be distinguished:
1. Lifecycle Models
◦ Waterfall Model
◦ The Iterative Enhancement Model
◦ The Prototyping Model
◦ The Spiral Model
◦ V shape model
◦ Unified Process Model
◦ Agile
◦ Rapid Application Development model (RAD)

SOFTWARE ENGINEERING DEVELOPMENT MODELS 3


Agile Process Models
Agile is a combination of iterative and incremental process models with focus on
process adaptability and customer satisfaction by rapid delivery of working software
product.
Agile Methods break the product into small incremental builds.
oThese builds are provided in iterations.
oEach iteration typically lasts from about one to three weeks.
oEvery iteration involves cross functional teams working simultaneously on various areas

SOFTWARE ENGINEERING DEVELOPMENT MODELS 4


History of Agile
The Agile thought process had started early in the software development and
started becoming popular with time due to its flexibility and adaptability.

The most popular Agile methods include Rational Unified Process (1994),
Scrum (1995), Crystal Clear, Extreme Programming (1996), Adaptive Software
Development, Feature Driven Development, and Dynamic Systems Development
Method (DSDM) (1995).

These are now collectively referred to as Agile Methodologies, after the Agile
Manifesto was published in 2001.

SOFTWARE ENGINEERING DEVELOPMENT MODELS 5


Agile Manifesto
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

SOFTWARE ENGINEERING DEVELOPMENT MODELS 6


Technical, human, organizational issues
What type of system is being developed?
o Plan-driven approaches may be required for systems that require a lot of analysis before
implementation (e.g. real-time system with complex timing requirements).

What is the expected system lifetime?


o Long-lifetime systems may require more design documentation to communicate the original
intentions of the system developers to the support team.

What technologies are available to support system development?


o Agile methods rely on good tools to keep track of an evolving design

How is the development team organized?


o 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.
SOFTWARE ENGINEERING DEVELOPMENT MODELS 7
Agile and Software Maintenance
Most organizations spend more on maintaining existing software than they do on
new software development. So, if agile methods are to be successful, they have to
support maintenance as well as original development.
Two key issues:
oAre systems that are developed using an agile approach maintainable, given the
emphasis in the development process of minimizing formal documentation?
oCan 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.

SOFTWARE ENGINEERING DEVELOPMENT MODELS 8


Advantages of Agile
Promotes teamwork and cross training.
Functionality can be developed rapidly and demonstrated.
Resource requirements are minimum.
Suitable for fixed or changing requirements
Delivers early partial working solutions.
Good model for environments that change steadily.
Minimal rules, documentation easily employed.
Enables concurrent development and delivery within an overall planned context.
Little or no planning required; Easy to manage.
Gives flexibility to developers.

SOFTWARE ENGINEERING DEVELOPMENT MODELS 9


Disadvantages of Agile
Not suitable for handling complex dependencies.

More risk of sustainability, maintainability and extensibility.

An overall plan, an agile leader and agile PM practice is a must without which it will not work.

Strict delivery management dictates the scope, functionality to be delivered, and adjustments to
meet the deadlines.

Depends heavily on customer interaction, so if customer is not clear, team can be driven in the wrong
direction.

There is a very high individual dependency, since there is minimum documentation generated.

Transfer of technology to new team members may be quite challenging due to lack of documentation.

SOFTWARE ENGINEERING DEVELOPMENT MODELS 10


Extreme Programming (XP)
Perhaps the best-known and most widely used agile method.
XP has a strong focus on producing code
Extreme Programming (XP) takes an ‘extreme’ approach to iterative
development.
oNew versions may be built several times per day;
oIncrements are delivered to customers every 2 weeks;
oAll tests must be run for every build and the build is only
accepted if tests run successfully.

SOFTWARE ENGINEERING DEVELOPMENT MODELS 11


The Extreme Programming Release Cycle

SOFTWARE ENGINEERING DEVELOPMENT MODELS 12


Extreme Programming Practices
Principle or practice Description
Incremental planning Requirements are recorded on story cards and the stories to be included in a
release are determined by the time available and their relative priority.

Small releases The minimal useful set of functionality that provides business value is
developed first.
Simple design Enough design is carried out to meet the current requirements and no more.

Test-first development An automated unit test framework is used to write tests for a new piece of
functionality before that functionality itself is implemented.
Refactoring All developers are expected to refactor the code continuously as soon as
possible code improvements are found.

SOFTWARE ENGINEERING DEVELOPMENT MODELS 13


Extreme Programming Practices
Pair programming Developers work in pairs, checking each other’s work and providing the
support to always do a good job.
Collective ownership The pairs of developers work on all areas of the system, so that no islands of
expertise develop and all the developers take responsibility for all of the
code. Anyone can change anything.
Continuous integration As soon as the work on a task is complete, it is integrated into the whole
system. After any such integration, all the unit tests in the system must pass.
Sustainable pace Large amounts of overtime are not considered acceptable as the net effect is
often to reduce code quality and medium term productivity
On-site customer A representative of the end-user of the system (the customer) should be
available full time for the use of the XP team. In an extreme programming
process, the customer is a member of the development team.

SOFTWARE ENGINEERING DEVELOPMENT MODELS 14


XP and change
Conventional wisdom in software engineering is to design for change.
oIt is worth spending time and effort anticipating changes as this reduces costs later in
the life cycle.

XP, however, maintains that this is not worthwhile as changes cannot be


reliably anticipated.
Rather, it proposes constant code improvement (refactoring) to make changes
easier when they have to be implemented.

SOFTWARE ENGINEERING DEVELOPMENT MODELS 15


Refactoring
Programming team look for possible software improvements and make these
improvements even where there is no immediate need for them.
This improves the understandability of the software and so reduces the need
for documentation.
Changes are easier to make because the code is well-structured and clear.
However, some changes requires architecture refactoring and this is much
more expensive.

SOFTWARE ENGINEERING DEVELOPMENT MODELS 16


Questions ?

SOFTWARE ENGINEERING DEVELOPMENT MODELS 17


Assignment 1
Define the Rapid Application Development model (RAD), mention its advantages and
disadvantages.

Compare between the V shape model and the RAD model

SOFTWARE ENGINEERING DEVELOPMENT MODELS 18

You might also like