You are on page 1of 29

UNIVERSITY OF ENGINEERING AND TECHNOLOGY, TAXILA

FACULTY OF TELECOMMUNICATION AND INFORMATION ENGINEERING


DEPARTMENT OF COMPUTER ENGINEERING

Software Engineering

Working with Software Process Models

(Agile)

Dated:
3 rd
February, 2020 to 7th February 2020

Course Instructor: Dr. Fawad Hussain


Semester:
Spring 2017

Software Engineering Session:-2K17 Lab Instructor:-Adnan Mustafa


Computer Engineering
Lab Instructions
1. All Students should reach at lab on time.
2. Students should sit on the same computer during whole semester.
3. Student should make a directory by his/her name and store all his/her data in it.
4. Student could take the backup of his/her program the instructor permission.
5. Record Instructions: 1. Lab copy should be updated. 2. Lab copy should be checked on each lab.
What is Agile Methodology?
AGILE methodology is a practice that promotes continuous iteration of development and testing
throughout the software development lifecycle of the project. Both development and testing
activities are concurrent unlike the Waterfall model.

The agile software development emphasizes on four core values.

1. Individual and team interactions over processes and tools


2. Working software over comprehensive documentation
3. Customer collaboration over contract negotiation
4. Responding to change over following a plan.

What agile development really is?

It is a collection of software development methodology which works on an iterative and


incremental method building the software from the very initiation of the project development
instead of building all the software at once. Agile discovers what the customer and how to build
the code and change things along the way.
Agile works by breaking down the project into smaller chunks and then continuously delivering
them in short two weeks cycles called iterations.

In an agile development process, solutions are obtained by self-organizing teams which collaborate,
discuss, and constantly strive to improve their working process and become more effective in what
they do.

Agile model believes that every project needs to be handled differently and the existing methods
need to be tailored to best suit the project requirements. In Agile, the tasks are divided to time
boxes (small time frames) to deliver specific features for a release.

Iterative approach is taken and working software build is delivered after each iteration. Each build
is incremental in terms of features; the final build holds all the features required by the customer.

Here is a graphical illustration of the Agile Model −


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

Agile Vs Waterfall Method

Agile and Waterfall model are two different methods for software development process. Though
they are different in their approach, both methods are useful at times, depending on the requirement
and the type of the project.

Agile Model Waterfall Model

 Agile method proposes incremental and iterative approach to software  Development of


the software flows
design sequentially from
start point to end
point.

 The agile process is broken into individual models that designers work on  The design process
is not broken into
an individual
models

 The customer has early and frequent opportunities to look at the product  The customer can
and make decision and changes to the project only see the
product at the end
of the project

 Agile model is considered unstructured compared to the waterfall model  Waterfall model
are more secure
because they are
so plan oriented

 Small projects can be implemented very quickly. For large projects, it is  All sorts of project
difficult to estimate the development time. can be estimated
and completed.

 Error can be fixed in the middle of the project.  Only at the end,
the whole product
is tested. If the
requirement error
is found or any
changes have to be
made, the project
has to start from
the beginning

 Development process is iterative, and the project is executed in short (2-4)  The development
weeks iterations. Planning is very less. process is phased,
and the phase is
much bigger than
iteration. Every
phase ends with
the detailed
description of the
next phase.

 Documentation attends less priority than software development  Documentation is


a top priority and
can even use for
training staff and
upgrade the
software with
another team

 Every iteration has its own testing phase. It allows implementing  Only after the
regression testing every time new functions or logic are released. development
phase, the testing
phase is executed
because separate
parts are not fully
functional.

 In agile testing when an iteration end, shippable features of the product is  All features
delivered to the customer. New features are usable right after shipment. It developed are
is useful when you have good contact with customers. delivered at once
after the long
implementation
phase.

 Testers and developers work together  Testers work


separately from
developers

 At the end of every sprint, user acceptance is performed  User acceptance


is performed at
the end of the
project.

 It requires close communication with developers and together analyze  Developer does
requirements and planning not involve in
requirement and
planning process.
Usually, time
delays between
tests and coding
Agile Testing Methodology

The Agile Process Flow


1. Concept - Projects are envisioned and prioritized
2. Inception - Team members are identified, funding is put in place, and initial environments and
requirements are discussed
3. Iteration/Construction - The development team works to deliver working software based on
iteration requirements and feedback
4. Release - QA (Quality Assurance) testing, internal and external training, documentation
development, and final release of the iteration into production
5. Production - Ongoing support of the software
6. Retirement - End-of-life activities, including customer notification and migration
Agile Software Development Lifecycle

Principles guiding agile development


1. To satisfy the customer through early and continuous delivery of valuable software.
2. Welcome changing requirements, even late in the development. Agile processes harness
change for the customer’s competitive advantage.
3. Deliver working software frequently, from a couple of weeks to a couple of months, with a
preference to the shorter timescale.
4. Business people and developers must work together daily throughout the project.
5. Build projects around motivated individuals. Give them the environment and support they
need, and trust them to get the job done.
6. The most efficient and effective method of conveying information to and within the
development team is face-to-face conversation.

7. Working software is the primary measure of progress.


8. Agile processes promote sustainable development. The sponsors, developers, and users
should be able to maintain a constant pace indefinitely.
9. Continuous attention to technical excellence and good design enhances agility.
10. Simplicity — the art of maximizing the amount of work not done — is essential.
11. The best architectures, requirements, and designs emerge from self-organizing teams.
12. At regular intervals, the team reflects on how to become more effective, then tunes and
adjusts its behavior accordingly.
Case Study
Personnel profiling system and it is needed immediately, what kind of SDLC model should we used
on our documentation?
Analysis: Agile will be the best for immediately
Case Study
We are creating an online hospital management system and it is needed immediately, what kind of
SDLC model should we use on our documentation? and can you explain what will do and what have
done in developing system each phases.
Analysis: With online system and massive programming, you will need to have agile model with
small sprints which will focus on most business valuable features, I think in HMS you can focus in
inpatient or outpatient, you will need to know which one is more required or may be another
module.

Case Study: ABC is an international software house. ABC is currently working on a project that
is totally new for the development team and even the client is confused about the requirements of
this project. Hence this company is facing difficulties because they fail to apprehend user
requirements properly. For this project, it is decided to build a sample application and show it to the
client for feedback.
In the context of this above scenario as a project manager what will be the choice of the software
lifecycle model?

Analysis
I think the best model for this scenario will be the agile model this is mainly because the vague and
unclear requirements, In this model we can have some sprints, each sprint duration from 2 to 3
weeks, and the team will start to take part of the requirements which it is okay to be not clear. The
team has to understand what are the initial requirements and prioritize them based on which one can
give an early business value to the customer and they can actually search for some information about
similar systems to better understand the requirements and the future vision of this software as well.
Moreover, they can build a prototype of what they understand and show it to the customer and
discuss the customer feedback. This will stimulate the new requirements from the feedback as
changes or new additional business requirements need to be developed. Throughout the
development lifecycle, the team will build the backlog and repeat the same process with each sprint
and the requirements will be clearer as well. I’m considering here that we have a skilled team has an
existing experience of the agile model as well as the project manager.
Here, we combined between Agile and prototyping techniques.

Scrum

Scrum is a term used in rugby which means a huddled mass of players engaged with each other to
get a job done.

In software development, the definition remains the same but in a different context. In software
development, scrum means managing a work with a small team and working on project management
framework to reveal the strengths and the weaknesses of the project.
Learn more about Scrum development today!
It consists of three roles.
1. Product owner
1. She/He works as the voice of the client
2. Responsible for developing and maintaining the feature of a sprint;
3. And deciding the release date
2. Scrum Master
1. Resolve the problems during the project
2. Ensure team productivity
3. Build winning team
3. Team
1. People who do work and develop the product
2. Works collaboratively and share responsibilities among each other
3. Responsible for designing, implementing and fixing the bug of the product.

How Scrum works

Step 1: The product owner develops a particular set of features for each sprint which is defined in
the product backlog.

Step 2: Then the team selects the top feature from the product backlog which they will deliver at the
end of a sprint.

Step 3: After agreeing to do a particular feature, the feature is broken into a smaller task which is
developed by product owner found in the sprint backlog.
Step 4: Then the sprint starts, during the sprint, there is so called daily meeting where the team
member provides their task status and discuss the problem related to a task. In this daily
meeting, scrum master is responsible for solving the problem.

Step 5: After completing the sprint, the feature is presented to the product owner for the approval
and the review is given to team related to a feature in sprint review.

Step 6: Finally, in retrospective meeting the team, scrum master and product owner discuss
improvement in the overall process. After agreeing to do a particular feature, the feature is broken
into a smaller task which is developed by product owner found in the sprint backlog.
Also read: A Beginner’s Guide to Scrum. 

2. Crystal Methodology

In mid-1990s, Alistair Crystal, Developer at Crystal Methods, developed an innovative methodology


for product management and execution.

While interviewing some teams, Alistair found that there were many teams who did not follow
formal methods but still delivered successful projects within deadline. The Crystal family is
Cockburn’s way of cataloguing what they did that made the projects successful.

Cockburn says:

“Process, while important, should be considered after the above as a secondary focus. The idea
behind the Crystal Methods is that the teams involved in developing software would typically have
varied skill and talent sets and so the Process element isn’t a major factor.”
Since teams can go about similar tasks in different ways, the Crystal family of methodologies are
very tolerant to this which makes the Crystal family one of the easiest agile methodologies to apply.

How crystal methodology works

Step 1: Chartering
 Build the core team which includes executive sponsor, lead designer, Ambassador user and
number of system analyst.
 Perform the exploratory 3600 which provide high level project wide review of the key issues
governing the development effort.
 Shape and fine tune the convention methodology which include a minimal set of rule is
agreed by the team for developing the system.
 Build the initial project plan typically include a project map showing the projected
completion dates for delivery cycles and iteration completion dates for delivery cycles.

Step 2: Cyclic delivery


 The requirement and project plan are updated and reviewed according to the experience
gained in the delivery cycle performed so far.
 In delivery cycle one or more iteration are performed and each iteration last from one week
to three month.
 Deliver to real user for feedback and the user feedback are used for the improvement in
system and revising the plan or requirement.
Step 3: Wrap up
 Perform the acceptance training.
 Prepare the final product for the user.
 carry out system conversion
 Perform the final reflection and record the lesson learns from the project.
Start your next project now!
3. Dynamic Software Development Method (DSDM)

DSDM is one of the leading agile project delivery framework, primarily used for the software
development. It is a framework which gives much of the current knowledge about project
management.

The importance aspect of DSDM is that users are actively involved and the team is given power to
make a decision. DSDM are actively focused on frequent delivery of a product.

Three core techniques used in implementing DSDM

1. Timeboxing

Timeboxing technique used in DSDM to achieve the certain task at given interval but not more than
2, 4, or 6 weeks.

2. MoSCoW Rules
DSDM is also concerend with completing the project within budget. One way to do so is to heavily
involve the product owner in the development process. The idea is to always focus on and finish the
most important features for the end product user.

The DSDM techniques to weight the importance of requirements are the MosCow rules. And the
rules are as follows,
1. Must have: All features classified in this group must be implemented and if they are not
delivered, the system would simply not work
2. Should have: Features of this priority is important to the system but can be omitted if time
constraints endanger.
3. Could have: These features enhance the system with functional items which can easily be
reassigned to a later timebox.
4. Want to have: These features only serve a limited group of users and are of little value.

3. Prototyping

Prototyping in DSDM project satisfy 2 principles:


1. Frequent delivery
2. Incremental development

DSDM differentiates on the following for types of prototypes,


1. Business prototype: Allow assessment of the evolving system
2. Usability prototype: Check the user interface
3. Performance prototype: Ensure solution will deliver performance or handle volume
4. Capability prototype: Evaluate possible options
4. Future-driven development (FDD)

Jeff De Luca, a global information technology strategist, faced problems in project management
when a big team was involved in software development. So he designed a framework for a larger
teamwork which came to be known as future-driven development.
This method is focused on designing and building features. And it works best for domain object
modeling, and code and feature development for ownership. FDD describe very specific and short
phases of work that has to be accomplished separately per feature.

Steps involved in future-driven development


1. Domain object modeling
2. Development by feature
3. Component ownership
4. Feature teams
5. Inspections
6. Configuration management
7. Regular Builds
8. Visibility of progress and results

5. Lean Software Development

Lean software development is an iterative agile methodology developed by Mary and Tom
Poppendieck. It is based on the famous Toyota manufacturing methodology Just-in-Time.

Lean software development aims at increasing speed of software development at low cost and
focuses the team on delivering the value to the customer.

The main principles of lean software development


1. Eliminating waste
2. Amplifying learning
3. Defer commitment (deciding as late as possible)
4. Early delivery
5. Empowering the team
6. Building integrity
7. Optimizing the whole

6. Extreme programming (XP)

Extreme programming is a software development methodology intended to improve software


quality. It is a powerful tool when the customer is not sure about the functionality of the system.

The extreme programming development software keeps the customer in target and introduces
checkpoint where any customer requirement can be easily implemented.
It is used for releasing a product in shorter cycles of 14 days called iteration. Each iteration includes
phases like coding, unit testing, and system testing where at each phase some minor or major
functionality will be built in the application.

How it works

Step 1: Planning
 Break the user stories into small part
 gather information related to user stories
 Prepare plan, time and cost to carry out the work.

Step 2: Analysis
 Capture stories in parking lot
 prioritize stories
 define budget
 define iteration span time

Step 3: Design
 Break down of task
 Test scenario preparation for each task.
 Regression Automation Framework

Step 4: Execution
 Coding
 Testing
 Conversion of manual to Automation regression test case
 Mid iteration review
 End of iteration review

Step 5: Wrapping
 small releases
 Demos and reviews
 develop stories based on customer need
 Process improvement on an end of an iteration.
Step 6: Closure
 Pilot launch to test the product
 Give training
 Production launch
 Production Support

Things to keep in mind before you start agile development

Agile development is indeed efficient and effective. But still it is not for every team. Every team is
not capable or equipped with right skill set to implement an agile development process. Here are the
three  steps you should keep in mind while implementing agile in your company.

1. Is agile development right for your company?

Well, we have already written a blog post on this: Is Agile Development The Right Fit For Your
Company?

But you’re still in doubt, we would recommend you to consult an agile mentor. He is the
best knowledge base if you are not sure or need facts or success stories to support your approach.
He will understand the ins and outs of your business and team and can then tell whether an agile
development process will be suitable for your company or not. The mentor builds up your
confidence as an agile manager and helps you take small agile steps toward your self-organized
team and your new role as an agile manager.

But before that, you must be open to take advice from your mentor, who has no stakes in your
organization.

2. Get a manager

A 2010 State of Agile Development Survey revealed that:


One of the main reason for the company not adopting agile methods is due to the loss of the
management control

The traditional role of a manager in the corporate world is based command and control format.
A manager gives orders and the team follows. But with software development, the scene is different.
A manager in software development is one who is responsible for managing the team for success
which includes cheering them through their challenges.

An agile manager’s goal is to enable the team to solve its own problems and come up with its own
amazing insights and products.

Skills such as assessing team health, removing organizational impediments, making room for
failure, and having the ability to coach become central.

If you are implementing agile in your company, it’s time that you appoint a manager of some
extraordinary capabilities.
3. Hire an excited team

Most of the time, a team working on agile don’t know how agile development works and they see no
point in applying agile.

If your team is also carrying this idea, you better not introduce agile methods right away. A group of
motivated individuals, who work together toward a goal, have the ability and authority to take
decisions and readily adapt to changing demands. And that is crucial for agile methodology.

Here are a few advantage of having a self-motivated team when applying agile methods:
 They pull work for themselves and don’t wait for their leader to assign work. This ensures a
greater sense of ownership and commitment.
 They manage their work as a group
 They understand requirements and aren’t afraid to ask questions to get their doubts clarified
 They continuously enhance their own skills and recommend innovative ideas and
improvements
Lab Task
Giving reasons for your answer based on the type of system being developed, suggest the most
appropriate generic software process model that might be used as a basis for managing the
development of the following systems or Case Study:
Q#01:
Scrum/agile
Suppose you are a project manager for a software product in a new and growing market with
your competitors who are also developing a product will be the same product. Which model
to select and why?
Q#02:
Agile Method
We are creating an online hospital management system and it is needed immediately, what
kind of SDLC model should be used in our documentation?
Q#03
Spiral method
If you were in charge of a large team implementing such a system, how would you ensure that
the product was both reliable and finished on time? Suggest a process model to accomplish
this task.
Q#04:
Agile Method/Future driven development
When emergency changes have to be made to the systems, the system software may have to be
modified before changes to the requirements have been approved. Suggest a model of a
process for making these modifications which ensure that the requirements document and the
system implementation do not become inconsistent. Also, justify your suggestion.
Q#05:
Waterfall /Scrum   
The product is a custom made product for a specific customer, who is always available to give
feedback.

Q#06: 
scrum
The same as above, except that we have access to a CASE tool that generates program code
automatically.
Q#07:  
XP  
A general purpose product, but with a very strong marketing team who understand and articulate
the overall customer requirements very well
Q#08:Incremental Model A product that is made of a number of features that becomes
available sequentially and incrementally.
Q#09:Incremental model  which model is suitable for the implementation of class
management system?
Q#10:Incremental Model  Web based application on online teaching system.
Q#11:Prototype Model Online ordering system and it is needed immediately, what kind of
SDLC model should we use on our documentation? 
Q#12:Scrum model You have been appointed a project manager within an information
systems organization. Your job is to build an application that is quite similar to others your
team has built, although this one is larger and more complex. Requirements have been
thoroughly documented by the customer. What software process model(s) would you choose
and why? Explain in detail.
Q#13:XP Retail shop
Q14:Prototype / DSDD Suppose a project involves writing a compiler and the development
team has never written a compiler. In such a case, the team can consider a simple language, try
to build a compiler in order to check the issues that arise in the process and resolve them. After
successfully building a small compiler, they would extend it to one that supports a complete
language.
Q15:Spiral /XP Accounting in a Firm
Q16:XP Vehicle tracking system?
Q17: Incremental Model Development of word processing application • the following services
are provided on subsequent builds: • Basic file management, editing and
document production functions • Advanced editing and document production functions • Spell
and grammar checking • Advance page layout

How to select the right SDLC


Selecting the right SDLC is a process in itself that organization can implement internally or consult
for. There are some steps to get the right selection.

STEP 1: Learn the about SDLC Models


SDLCs are the same in their usage. In order to select the right SDLC, you should have enough
experience and be familiar with the SDLCs that will be chosen.
STEP 2: Assess the needs of Stakeholders
We must study the business domain, stakeholders concerns and requirements, business priorities,
our technical capability and ability, and technology constraints to be able to choose the right SDLC
against their selection criteria.

STEP 3: Define the criteria


Some of the selection criteria or arguments that you may use to select an SDLC are:
 Is the SDLC suitable for the size of our team and their skills?
 Is the SDLC suitable for the selected technology we use for implementing the solution?
 Is the SDLC suitable for client and stakeholders concerns and priorities?
 Is the SDLC suitable for the geographical situation (distributed team)?
 Is the SDLC suitable for the size and complexity of our software?
 Is the SDLC suitable for the type of projects we do?
 Is the SDLC suitable for our software engineering capability?

What are the criteria?


Here are my recommended criteria, It will be good to share any new criteria you see that it will be
valid

Evolutionary Iterative and


Factors Waterfall V-Shaped Prototyping Spiral Incremental Agile
Unclear User
Requirement Poor Poor Good Excellent Good Excellent
Unfamiliar
Technology Poor Poor Excellent Excellent Good Poor
Complex System Good Good Excellent Excellent Good Poor
Reliable system Good Good Poor Excellent Good Good
Short Time
Schedule Poor Poor Good Poor Excellent Excellent
Strong Project
Management Excellent Excellent Excellent Excellent Excellent Excellent
Cost limitation Poor Poor Poor Poor Excellent Excellent
Visibility of
Stakeholders Good Good Excellent Excellent Good Excellent
Skills limitation Good Good Poor Poor Good Poor
Documentation Excellent Excellent Good Good Excellent Poor
Component
reusability Excellent Excellent Poor Poor Excellent Poor
STEP 4:  Decide
When you define the criteria and the arguments you need to discuss with the team each one, you will
need to have a decision matrix and give each criterion a defined weight and score for each option.
After analyzing the results, you should document this decision in the project artifacts and share it
with the related stakeholders.

Following are the points focus on how incremental, spiral, RAD and waterfall models are differed


from in terms of requirement, planning, duration required, strategies applied, cost,
testing, deployment etc.
S.N Features Incremental Spiral RAD Waterfall
 1  Requirement  Beginning  Beginning  Time boxed release  Beginning
2  Planning  Yes Yes Not require Yes
3  Documentation  Yes Yes Not necessary Yes
4  Handle large project  Not necessary  Yes  Not necessary  Not necessary
5 User involvement Intermediate High At beginning only At beginning only
6 Returning to early phase Yes Yes Yes No
7  Cost Low High Low Low
8 Modifications Easy Easy Easy Difficult
9 Duration Long Long Short Long
10 Testing After each iteration After each iteration After coding After coding
11 Risk low Medium to high low High
12 Maintenance Easy Hard Easy Easy
13 Reuse Up to some extent Up to some extent Yes Up to some extent
14 Framework Iterative and Linear Iterative and Linear Linear Linear

You might also like