Professional Documents
Culture Documents
Software Engineering
(Agile)
Dated:
3 rd
February, 2020 to 7th February 2020
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.
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.
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.
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.
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
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.
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
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.
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.
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.
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
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.
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 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
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.
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
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