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

CS 1212 Lecture 3

Uploaded by

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

CS 1212 Lecture 3

Uploaded by

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

CS 1212 SOFTWARE ENGINEERING

Lecture 3 – Building Quality Software II

Yahya Hamad Sheikh, PhD


[email protected]

The State University of Zanzibar,


Department of Computer Science and Information Technology
www.suza.ac.tz
SOFTWARE DEVELOPMENT
METHODOLOGIES
SOFTWARE DEVELOPMENT METHODOLOGY

• Software development methodology or software process


model refers to a set of activities whose goal is the
development and evolution of software.
• There are many ways to approach software development,
including waterfall, V-shape, Agile, etc.
SOFTWARE DEVELOPMENT METHODOLOGY –
WATERFALL MODEL

• In the beginning, when the SDLC was conceived, it implemented what is known as the
waterfall method.
• Waterfall is a sequential method of software development where the output of one phase is the
input for the next phase of the cycle.
• Development and work on the next phase start only after the completion of the previous phase.
• All planning, such as defining requirements and architectural design, is done up front, and
documentation is produced at every stage.
• Problems from the last phase are identified in the following phase, e.g., requirements problem
are identified during design, design problem identified during coding.
• The customer usually does not see the product until it is in the testing phase.
• For a major version release of the product, the same process is repeated resulting in long
intervals, such as years, between releases.
SOFTWARE DEVELOPMENT METHODOLOGY –
WATERFALL MODEL
SOFTWARE DEVELOPMENT METHODOLOGY –
STRENGHTS OF WATERFALL MODEL

• Easy to understand, easy to use


• Provides structure to inexperienced staff
• Milestones are well understood
• Sets requirements stability
• Good for management control (plan, staff, track)
• Works well when quality is more important than cost or schedule
SOFTWARE DEVELOPMENT METHODOLOGY –
WEAKNESSES OF WATERFALL MODEL

• All requirements must be known upfront


• Deliverables created for each phase are considered frozen – inhibits
flexibility
• Can give a false impression of progress
• Does not reflect problem-solving nature of software development –
iterations of phases
• Integration is one big bang at the end
• Little opportunity for customer to preview the system (until it may be too
late)
SOFTWARE DEVELOPMENT METHODOLOGY –
WHEN TO USE WATERFALL MODEL

• Waterfall model is best suited when:


• Requirements are very well known
• Product definition is stable
• Technology is understood
• Developing new version of an existing product
• Porting an existing product to a new platform
SOFTWARE DEVELOPMENT METHODOLOGY –
V-SHAPED MODEL

• The V-shape model is named as such because the phases form the shape of a V.
• The phases going down the left side of the V are called “verification". Then, going up the
right side of the V, those phases are called, "validation.“
• The V-shape model is like waterfall in that it is also sequential. Each phase in verification
corresponds with a validation phase.
• There are four stages that occur on each side of the V. Going down the V are planning,
system design, architecture design, and then module design. The bottom of the V is
the coding phase. And going back up the V are four phases that correspond to the phases
going down the V:unit testing, integration testing, system testing, and acceptance testing.
• The tests are written during the verification phases on the left and executed during the
validation stages on the right.
SOFTWARE DEVELOPMENT METHODOLOGY –
V-SHAPED MODEL
SOFTWARE DEVELOPMENT METHODOLOGY –
ADVANTAGES OF V-SHAPED MODEL

• Simple and easy to use.


• Testing activities like planning, test designing happens well before
coding. This saves a lot of time. Hence higher chance of success
over the waterfall model.
• Proactive defect tracking – that is defects are found at early stage.
• Avoids the downward flow of the defects.
SOFTWARE DEVELOPMENT METHODOLOGY –
DISADVANTAGES OF V-SHAPED MODEL

• Very rigid and least flexible.


• Software is developed during the implementation phase, so no
early prototypes of the software are produced.
• If any changes happen in midway, then the test documents along
with requirement documents must be updated.
SOFTWARE DEVELOPMENT METHODOLOGY –
WHEN TO USE V-SHAPED MODEL

• The V-shaped model should be used for small to medium sized


projects where requirements are clearly defined and fixed.
• The V-Shaped model should be chosen when ample technical
resources are available with needed technical expertise.
• Please note that, high confidence of customer is required for
choosing the V-Shaped model approach. Since, no prototypes are
produced, there is a very high risk involved in meeting customer
expectations.
SOFTWARE DEVELOPMENT METHODOLOGY –
AGILE MODEL

• Agile model is different. It focuses on a collaborative software development process over multiple short
cycles rather than a strictly top-down linear process.
• Agile is what is called an iterative approach to development. It still aligns with the SDLC, but each phase is
short.
• Teams work in cycles, or sprints, which are usually one to four weeks long.
• Unit testing happens in each sprint to minimize the risk of failure.
• Rather than the “maintenance” stage of the SDLC, the final stage of the sprint is a feedback stage. At the end
of each sprint, a chunk of working code is released at a meeting called the “sprintdemo” where stakeholders
can see the new functionality and provide feedback.
• After the sprint demo, the entire process is repeated for every sprint cycle.
• After several sprint cycles, a minimum viable product, or MVP, is developed so stakeholders can provide
feedback on the basic feature set.
• The MVP contains a feature set to validate assumptions about the software.
SOFTWARE DEVELOPMENT METHODOLOGY –
AGILE MODEL
SOFTWARE DEVELOPMENT METHODOLOGY –
THE AGILE MANIFESTO

• Agile is founded on four core values, which are outlined in what is


known as the "Agile manifesto”
• Individuals and interactions over processes and tools
• Working software over comprehensive documentation
• Customer collaboration over contract negotiation, and
• Responding to change over following a plan.
SOFTWARE DEVELOPMENT METHODOLOGY –
ADVANTAGES OF AGILE MODEL

• The advantages of Agile Methodology are inherent in its 12 Principles, as outlined by the
Agile Alliance.
• The 12 Principles of the Agile Methodology are:
1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable
software. Customer satisfaction and quality deliverables are the focus.

2. Welcome changing requirements, even late in development. Agile processes harness change for the
customer’s competitive advantage. Don’t fight change, instead learn to take advantage of it.

3. Deliver working software frequently, from a couple of weeks to a couple of months, with a
preference to the shorter timescale. Continually provide results throughout a project, not just at its
culmination.
SOFTWARE DEVELOPMENT METHODOLOGY –
ADVANTAGES OF AGILE MODEL

• The 12 Principles of the Agile Methodology are:


4. Businesspeople and developers must work together daily throughout the project. Collaboration is
key.

5. Build projects around motivated individuals. Give them the environment and support they need and
trust them to get the job done. Bring talented and hardworking members to the team and get out of
their way.

6. The most efficient and effective method of conveying information to and within a development
team is face-to-face conversation. Eliminate as many opportunities for miscommunication as possible.

7. Working software is the primary measure of progress. It doesn’t need to be perfect; it needs to
work.
SOFTWARE DEVELOPMENT METHODOLOGY –
ADVANTAGES OF AGILE MODEL

• The 12 Principles of the Agile Methodology are:


8. Agile processes promote sustainable development. The sponsors, developers, and users should be
able to maintain a constant pace indefinitely. Slow and steady wins the race.

9. Continuous attention to technical excellence and good design enhances agility. Don’t forget to pay
attention to the small stuff.

10. Simplicity—the art of maximizing the amount of work not done—is essential. Trim the fat.

11. The best architectures, requirements, and designs emerge from self-organizing teams. Related to
Principle 5, you’ll get the best work from your team if you let them figure out their own roles.

12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its
behaviour accordingly. Elicit and provide feedback, absorb the feedback, and adjust where needed.
SOFTWARE DEVELOPMENT METHODOLOGY –
DISADVANTAGES OF AGILE MODEL

• Most common drawbacks to Agile Methodology are:


• Less predictable. The flexibility at the core of the Agile method also means a much lower degree of
predictability. It can be much more difficult to accurately estimate the time necessary or quantify the
resources and efforts required to complete a project. Many teams fear this uncertainty, and that fear
can lead to frustration and poor decision-making.
• More time and commitment. Communication and collaboration is great, but that constant interaction
takes more time and energy for everyone involved.
• Greater demands on developers and clients. Commitment from everyone involved is required for
Agile Methodology to be effective. Anyone who isn’t on board can negatively impact the quality of a
project.
SOFTWARE DEVELOPMENT METHODOLOGY –
DISADVANTAGES OF AGILE MODEL

• Most common drawbacks to Agile Methodology are:


• Lack of necessary documentation. Because tasks are often completed just
in time for development under the Agile Method, documentation tends to
be less thorough, which can lead to misunderstanding and difficulties
down the road.
• Projects easily fall off track. The less-structured nature of Agile
Methodology means projects can easily go astray or run beyond the
original scope of the project.
SOFTWARE DEVELOPMENT METHODOLOGY –
SCRUM AGILE METHODOLOGY

• Scrum is one of the most straightforward and widely used Agile method. The main goal of Scrum
Methodology is to improve communication, teamwork and speed of development.
• It is a lightweight software development methodology that focuses on having small time-boxed sprints of
new functionality that are incorporated into an integrated product baseline.
• Scrum places an emphasis on transparent customer interaction, feedback and adjustments rather than
documentation and prediction.
• Instead of phases, Scrum projects are broken down into releases and sprints. At the end of each sprint, you
have a fully functioning system that could be released.
• With Scrum projects, the requirements for the project do not have to be codified up-front, instead they are
prioritized and scheduled for each sprint. The requirements are composed of user stories that can be
scheduled into a particular release and sprint
SOFTWARE DEVELOPMENT METHODOLOGY –
SCRUM AGILE METHODOLOGY

• Scrum is often deployed in conjunction with other agile methods such


as eXtreme Programming (XP), since such methods are mostly
complimentary.
• In this case, for example, XP focuses on the engineering (continuous
exploration, continuous integration, test-driven development, etc.), and
Scrum focuses on the project management side as part of the product
management.
SOFTWARE DEVELOPMENT METHODOLOGY –
EXTREME PROGRAMMING AGILE METHODOLOGY

• eXtreme Programming is an Agile software development methodology that


shares many similarities to Scrum, particularly with its emphasis on
communication and responsiveness.
• Where it differs, however, is in its prescriptive set of rules for the technical
aspects to designing and testing coding. Due to its more specific set of
principles, eXtreme Programming is not easily applied to other types of
project management.
SOFTWARE DEVELOPMENT METHODOLOGY –
EXTREME PROGRAMMING AGILE METHODOLOGY

• Some of the software development-specific rules include making mandatory the


following:
• Including user stories – descriptions of small features
• Test-driven development (TDD) – software requirements are converted to test cases
before software is developed
• Pair programming – technique where two programmers work together at a single
workstation
• Continuous integration – code is uploaded regularly to test throughout the project in
order to detect problems early
SOFTWARE DEVELOPMENT METHODOLOGY –
OTHER TYPES OF AGILE METHODS

• Lean • Crystal Clear


• Muda • Dynamic Software Development
• Mura Method (DSDM)

• Muri
• Rapid Application Development
(RAD)
• Adaptive Software Development
(ASD)
• Rational Unify Process (RUP)

• Feature Driven Development (FDD)


• Kanban.
END OF LECTURE


You might also like