CSE345 Rohan Assignment
CSE345 Rohan Assignment
on
Prepared for
A. K. M. Ahsanul Haque, Assistant Processor
CSE345.6; Information System Design & Software Engineering
Prepared by
Istiack Amin
ID: 2022100000030
Southeast University
Department of Computer Science and Enginerring
List of Contents
• Introduction
1. The Waterfall Model
2. The V-Model
3. The Incremental Model
4. The Prototyping Model
5. The Spiral Model
6. The Concurrent Model
7. Component-Based Development
8. The Formal Methods Model
9. Aspect-Oriented Software Development
10. The Unified Process
11. Personal Software Process
12. Team Software Process
13. The Agile Process
14. The XP Process
15. Industrial XP
16. Scum Process flow
17. Dynamic Systems Development Method
2
Introduction
Software process models aim to bring order to software development chaos,
but the nature of software work remains on the edge of chaos. Prescriptive
models offer structure, but adaptability is crucial in a constantly changing
environment. Nogueira et al. highlight this dynamic relationship between
order and chaos in software engineering. Prescriptive models prioritize
project consistency and orderliness, prescribing specific process elements
and workflows. However, the suitability of such models in a dynamic
software landscape is debated. Alternative approaches exist, each
emphasizing different aspects of framework activities and process flows,
reflecting the ongoing quest for balance between structure and adaptability
in software engineering.
3
2. V-Model:
The V-Model, a variation of the waterfall model, illustrates the relationship
between quality assurance and software development activities. As the team
progresses down the left side of the V, requirements are refined into
technical solutions. Then, moving up the right side, the team conducts tests
to validate the earlier models. The V-Model offers a visual representation of
how verification and validation are integrated into the development process.
Among the problems that are sometimes encountered when the waterfall
model is applied are:
i. Real projects rarely follow the sequential flow that the model proposes.
Although the linear model can accommodate iteration, it does so indirectly.
As a result, changes can cause confusion as the project team proceeds.
ii. It is often difficult for the customer to state all requirements explicitly. The
waterfall model requires this and has difficulty accommodating the natural
uncertainty that exists at the beginning of many projects.
4
iii. The customer must have patience. A working version of the program(s)
will not be available until late in the project time span. A major blunder, if
undetected until the working program is reviewed, can be disastrous.
Bradac (1994) found that the linear structure of the classic life cycle can lead
to blocking states in projects, where team members must wait for
dependent tasks to be completed. This waiting time can exceed productive
work time, particularly at the beginning and end of the process. In today's
fast-paced software environment, characterized by constant changes, the
waterfall model may not be suitable. However, it can still be useful in
situations with fixed requirements and a need for linear progression towards
completion.
5
The incremental model combines linear and parallel process flows, applied
progressively over time. Each stage produces software increments, with each
subsequent increment adding additional features or functionalities. For
instance, a word-processing software developed incrementally might deliver
basic functions initially, then add more advanced capabilities in subsequent
increments. The first increment often serves as a core product, with further
enhancements based on customer feedback and evaluation, repeating until
the final product is achieved.
6
Prototypes are ideally used to identify software requirements, often
leveraging existing program fragments or rapid generation tools. After
fulfilling this purpose, Brooks suggests treating the prototype as the initial
system to be discarded and rebuilt smarter. However, some prototypes
evolve into the actual system. While stakeholders and developers appreciate
the immediate feedback and building opportunities of prototyping, it can
pose challenges. Stakeholders may mistake prototype quality for final
product quality, leading to resistance to rebuilding for higher quality.
Additionally, developers may make implementation compromises for quick
results, potentially embedding inefficiencies into the final system. Clear
agreement among stakeholders at the outset regarding the prototype's role
is essential for effective prototyping in software engineering.
7
featuring cyclic growth in system definition and implementation with
decreasing risk. The model involves iterative releases, starting with models
or prototypes and progressing to more complete versions. Each iteration is
divided into framework activities, following a clockwise path around the
spiral, with consideration of risks and milestone achievements at anchor
points.
The spiral model involves iterative cycles where each circuit may result in
different outputs, like product specifications or prototypes. Adjustments to
project plans are made based on customer feedback, with costs and
schedules being adapted accordingly. Unlike other models that end at
software delivery, the spiral model can be applied throughout the software's
lifecycle, from concept development to product enhancement. It offers a
realistic approach to large-scale system development, allowing for better
risk management through iterative evolution. However, convincing
customers of its controllability and requiring expertise in risk assessment are
challenges associated with this model.
8
featuring cyclic growth in system definition and implementation with
decreasing risk. The model involves iterative releases, starting with models
or prototypes and progressing to more complete versions. Each iteration is
divided into framework activities, following a clockwise path around the
spiral, with consideration of risks and milestone achievements at anchor
points.
9
Concurrent modeling is applicable to all types of software development and
provides an accurate picture of the current state of a project. Rather than
con- fining software engineering activities, actions, and tasks to a sequence
of events, it defines a process network. Each activity, action, or task on the
network exists simultaneously with other activities, actions, or tasks. Events
generated at one point in the process network trigger transitions among the
states associated with each activity.
7. Component-Based Development:
Commercial off-the-shelf (COTS) software components, developed by
vendors, offer targeted functionality with defined interfaces for integration.
The component-based development model, akin to the spiral model,
emphasizes an iterative approach. It involves identifying, evaluating, and
integrating prepackaged components into software architecture, followed by
comprehensive testing. This model promotes software reuse, reducing
development time and costs when component reuse is embraced within an
organization's culture.
10
Regardless of the technology that is used to create the components, the
component-based development model incorporates the following steps
(implemented using an evolutionary approach):
1. Available component-based products are researched and evaluated for
the application domain in question.
2. Component integration issues are considered.
3. A software architecture is designed to accommodate the components.
4. Components are integrated into the architecture.
5. Comprehensive testing is conducted to ensure proper functionality.
14
11. Personal Software Process:
Every developer has a process, even if it's disorganized or inconsistent. The
Personal Software Process (PSP), proposed by Watts Humphrey, aims to
improve personal software development by emphasizing measurement and
individual responsibility. It consists of five key activities:
15
• Show managers how to coach and motivate their teams and how to help
them sustain peak performance.
• Accelerate software process improvement by making CMM level 5
behavior normal and expected.
• Provide improvement guidance to high-maturity organizations.
• Facilitate university teaching of industrial-grade team skills.
16
13. The Agile Process:
Any agile software process is characterized in a manner that addresses a
number of key assumptions (Fow021 about the majority of software
projects:
1. It is difficult to predict in advance which software requirements will per-
sist and which will change. It is equally difficult to predict how customer
priorities will change as the project proceeds.
2. For many types of software, design and construction are interleaved. That
is, both activities should be performed in tandem so that design models are
proven as they are created. It is difficult to predict how much design is
necessary before construction is used to prove the design.
3. Analysis, design, construction, and testing are not as predictable (from a
planning point of view) as we might like.
To manage unpredictability, an agile software process must prioritize
adaptability. This adaptability is achieved through incremental adjustments,
facilitated by regular customer feedback. By delivering software increments
in short cycles, the process ensures that adaptations align with evolving
project needs. This iterative approach allows customers to evaluate each
increment, provide feedback, and influence further adaptations to meet their
requirements.
17
Agility Principles:
The Agile Alliance (see [Agi031, (Fow01]) defines 12 agility principles for
those who want to achieve agility:
1. Our highest priority is to satisfy the customer through early and continu-
ous delivery of valuable software.
2. Welcome changing requirements, even late in development. Agile pro-
cesses 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 a development team is face-to-face conversation
7. Working software is the primary measure of progress.
8. Agile processes promote sustainable development. The sponsors, devel-
opers, 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.
Not every agile process model applies these 12 principles with equal weight,
and some models choose to ignore (or at least downplay) the importance of
one or more of the principles. However, the principles define an agile spirit
that is maintained in each of the process models presented in this chapter.
18
EXTREME PROGRAMMING
In order to illustrate an agile process in a bit more detail, we'll provide you
with an overview of Extreme Programming (XP), the most widely used
approach to agile software development. Although early work on the ideas
and methods as- sociated with XP occurred during the late 1980s, the
seminal work on the subject has been written by Kent Beck IBec04al. A
variant of XP, called Industrial XP (IXP), refines XP and targets the agile
process specifically for use within large organizations.
19
resulting in the creation of "stories" that describe the desired features and
functionality of the software. Each story, prioritized by the customer, is
assessed by the XP team in terms of development weeks required. If a story
is estimated to take more than three weeks, it's split into smaller ones.
Customers and developers collaborate to group stories for the next release,
deciding on delivery dates and other project details. Stories can be added,
modified, or eliminated at any time.
After delivering the first project release, the XP team calculates project
velocity, representing the number of customer stories implemented. This
velocity helps estimate delivery dates for subsequent releases and ensures
no overcommitment across the project. As development progresses, the
customer can adjust stories, and the team adapts its plans accordingly.
Coding: During coding in XP, the team starts by creating unit tests for each
story in the current release,
20
ensuring focused implementation based on the tests. Pair programming, a
central practice in XP, involves two developers working together at one
workstation, facilitating real-time problem-solving and quality assurance.
One focuses on coding details while the other ensures adherence to
standards and test validation.
IXP adapts existing XP practices and redefines roles to suit the needs of
larger projects in large organizations. Visit http://industrialxp.org for more
details.
22
Key components of Scrum include:
- Backlog: Prioritized list of project requirements or features.
- Sprints: Time-boxed work units aimed at fulfilling backlog items without
introducing changes.
- Daily Scrum meetings: Brief sessions to discuss progress, obstacles, and
plans.
- Demos: Presenting implemented functionality to the customer for
evaluation.
Scrum embraces chaos by acknowledging uncertainty and provides process
patterns for effective team collaboration and adaptation. For a deeper dive,
refer to Beedle et al.'s comprehensive discussion on Scrum process patterns.
These cycles involve producing prototypes, revisiting and refining them, and
placing the latest increment into the operational environment. DSDM can be
complemented with Extreme Programming (XP) to enhance the process with
additional practices for building software increments.
23