0% found this document useful (0 votes)
9 views43 pages

Introduction to Software Engineering

Software engineering is the discipline of developing software products using systematic and scientific principles, resulting in efficient and reliable systems. It encompasses various stages, including planning, requirement analysis, design, development, testing, deployment, and maintenance, often utilizing models like the Rapid Application Development (RAD) for quicker delivery. The applications of software engineering are vast, spanning mobile app development, web development, embedded systems, AI, and aerospace, showcasing its critical role in modern technology.

Uploaded by

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

Introduction to Software Engineering

Software engineering is the discipline of developing software products using systematic and scientific principles, resulting in efficient and reliable systems. It encompasses various stages, including planning, requirement analysis, design, development, testing, deployment, and maintenance, often utilizing models like the Rapid Application Development (RAD) for quicker delivery. The applications of software engineering are vast, spanning mobile app development, web development, embedded systems, AI, and aerospace, showcasing its critical role in modern technology.

Uploaded by

axenbgl2
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

1

UNIT 1

SOFTWARE ENGINEERING :

Software:
Is a program or set of programs containing instructions which provide desired
functionality
And Engineering is the processes of designing and building something that
serves a particular purpose and find a cost-effective solution to problems.
Introduction TO Software engineering:
The term software engineering is composed of two words, software and
engineering. Software is more than just a program code. A program is an
executable code, which serves some computational purpose. Software is
considered to be a collection of executable programming code, associated
libraries and documentations. Software, when made for a specific
requirement is called software product. Engineering on the other hand, is all
about developing products, using well-defined, scientific principles and
methods. So, we can define software engineering as an engineering branch
associated with the development of software product using well-defined
scientific principles, methods and procedures. The outcome of software
engineering is an efficient and reliable software product. IEEE defines
software engineering as: The application of a systematic, disciplined,
quantifiable approach to the development, operation and maintenance of
software
Software engineering:
Is an engineering branch associated with development of software product
using well-defined scientific principles, methods and procedures The outcome
of software engineering is an efficient and reliable software product.

SOFTWARE ENGINEERING DEFINITION:


:
2

(1)The application of a systematic, disciplined, quantifiable approach to the


development, operation and maintenance of software; that is, the application
of engineering to software.
(2)The study of approaches as in the above statement.
Fritz Bauer, a German computer scientist, defines software engineering
as:

Software engineering is the establishment and use of sound engineering


principles in order to obtain economically software that is reliable and work
efficiently on real machines
Software engineering ethics:
As a software engineer, you must accept that your job involves wider
responsibilities than simply the application of technical skills.

Software product:

Software Products are nothing but software systems delivered to the


customer with the documentation that describes how to install and use the
system. In certain cases, software products may be part of system products
where hardware, as well as software, is delivered to a customer. Software
products are produced with the help of the software process. The software
process is a way in which we produce software.

Types of Software Products


Software products fall into two broad categories:
1. Generic products: Generic products are stand-alone systems that are
developed by a production unit and sold on the open market to any
customer who can buy them.
2. Customized Products: Customized products are the systems that are
commissioned by a particular customer. Some contractor develops the
software for that customer.

Characteristics of Software Product


A well-engineered software product should possess the following essential
characteristics:
3

Characteristics of Software Product

1. Efficiency: The software should not make wasteful use of system resources
such as memory and processor cycles.
2. Maintainability: It should be possible to evolve the software to meet the
changing requirements of customers.
3. Dependability: It is the flexibility of the software that ought to not cause
any physical or economic injury in the event of system failure. It includes
a range of characteristics such as reliability, security, and safety.
4. In time: Software should be developed well in time.
5. Within Budget: The software development costs should not be overrun,
and they should be within the budgetary limit.
6. Functionality: The software system should exhibit the proper
functionality, i.e., it should perform all the functions it is supposed to
perform.
7. Adaptability: The software system should have the ability to adapted to a
reasonable extent with the changing requirements.
4
5
6
7

Software Development Life Cycle (SDLC)

A software life cycle model (also termed process model) is a pictorial and
diagrammatic representation of the software life cycle. A life cycle model
represents all the methods required to make a software product transit
through its life cycle stages. It also captures the structure in which these
methods are to be undertaken.

In other words, a life cycle model maps the various activities performed on a
software product from its inception to retirement. Different life cycle models
8

may plan the necessary development activities to phases in different ways.


Thus, no element which life cycle model is followed, the essential activities are
contained in all life cycle models though the action may be carried out in
distinct orders in different life cycle models. During any life cycle stage, more
than one activity may also be carried out.

SDLC Cycle

SDLC Cycle represents the process of developing software. SDLC framework


includes the following steps:

The stages of SDLC are as follows:

Stage1: Planning and requirement analysis

Requirement Analysis is the most important and necessary stage in SDLC.


9

The senior members of the team perform it with inputs from all the
stakeholders and domain experts or SMEs in the industry.

Planning for the quality assurance requirements and identifications of the


risks associated with the projects is also done at this stage.

Business analyst and Project organizer set up a meeting with the client to
gather all the data like what the customer wants to build, who will be the end
user, what is the objective of the product. Before creating a product, a core
understanding or knowledge of the product is very necessary.

For Example, A client wants to have an application which concerns money


transactions. In this method, the requirement has to be precise like what kind
of operations will be done, how it will be done, in which currency it will be
done, etc.

Once the required function is done, an analysis is complete with auditing the
feasibility of the growth of a product. In case of any ambiguity, a signal is set
up for further discussion.

Once the requirement is understood, the SRS (Software Requirement


Specification) document is created. The developers should thoroughly follow
this document and also should be reviewed by the customer for future
reference.

Stage2: Defining Requirements

Once the requirement analysis is done, the next stage is to certainly represent
and document the software requirements and get them accepted from the
project stakeholders.

This is accomplished through "SRS"- Software Requirement Specification


document which contains all the product requirements to be constructed and
developed during the project life cycle.

Stage3: Designing the Software

The next phase is about to bring down all the knowledge of requirements,
analysis, and design of the software project. This phase is the product of the
last two, like inputs from the customer and requirement gathering.
10

Stage4: Developing the project

In this phase of SDLC, the actual development begins, and the programming
is built. The implementation of design begins concerning writing code.
Developers have to follow the coding guidelines described by their
management and programming tools like compilers, interpreters, debuggers,
etc. are used to develop and implement the code.

Stage5: Testing

After the code is generated, it is tested against the requirements to make sure
that the products are solving the needs addressed and gathered during the
requirements stage.

During this stage, unit testing, integration testing, system testing, acceptance
testing are done.

Stage6: Deployment

Once the software is certified, and no bugs or errors are stated, then it is
deployed.

Then based on the assessment, the software may be released as it is or with


suggested enhancement in the object segment.

After the software is deployed, then its maintenance begins.

Stage7: Maintenance

Once when the client starts using the developed systems, then the real issues
come up and requirements to be solved from time to time.

This procedure where the care is taken for the developed product is known as
maintenance.

RAD Model

RAD or Rapid Application Development process is an adoption of the


waterfall model; it targets developing software in a short period. The RAD
model is based on the concept that a better system can be developed in lesser
time by using focus groups to gather system requirements.
11

o Business Modeling
o Data Modeling
o Process Modeling
o Application Generation
o Testing and Turnover

RAD is a linear sequential software development process model that


emphasizes a concise development cycle using an element based construction
approach. If the requirements are well understood and described, and the
project scope is a constraint, the RAD process enables a development team to
create a fully functional system within a concise time period.

RAD (Rapid Application Development) is a concept that products can be


developed faster and of higher quality through:

o Gathering requirements using workshops or focus groups


o Prototyping and early, reiterative user testing of designs
o The re-use of software components
o A rigidly paced schedule that refers design improvements to the next
product version
o Less formality in reviews and other team communication

The Rapid Application Development Model was first proposed by IBM in the
1980s. The RAD model is a type of incremental process model in which there
is an extremely short development cycle. When the requirements are fully
understood and the component-based construction approach is adopted then
the RAD model is used. Various phases in RAD are Requirements
Gathering, Analysis and Planning, Design, Build or Construction, and finally
Deployment.
12

This model consists of 4 basic phases:


1. Requirements Planning – This involves the use of various techniques used
in requirements elicitation like brainstorming, task analysis, form
analysis, user scenarios, FAST (Facilitated Application Development
Technique), etc. It also consists of the entire structured plan describing
the critical data, methods to obtain it, and then processing it to form a
final refined model.
2. User Description – This phase consists of taking user feedback and
building the prototype using developer tools. In other words, it includes
re-examination and validation of the data collected in the first phase. The
dataset attributes are also identified and elucidated in this phase.
3. Construction – In this phase, refinement of the prototype and delivery
takes place. It includes the actual use of powerful automated tools to
transform processes and data models into the final working product. All
the required modifications and enhancements are to be done in this phase.
4. Cutover – All the interfaces between the independent modules developed
by separate teams have to be tested properly. The use of powerfully
automated tools and subparts makes testing easier. This is followed by
acceptance testing by the user.
The process involves building a rapid prototype, delivering it to the
customer, and taking feedback. After validation by the customer, the SRS
document is developed and the design is finalized.
13

When to use the RAD Model?


1. Well-understood Requirements: When project requirements are stable
and transparent, RAD is appropriate.
2. Time-sensitive Projects: Suitable for projects that need to be developed
and delivered quickly due to tight deadlines.
3. Small to Medium-Sized Projects: Better suited for smaller initiatives
requiring a controllable number of team members.
4. High User Involvement: Fits where ongoing input and interaction from
users are essential.
5. Innovation and Creativity: Helpful for tasks requiring creative inquiry
and innovation.
6. Prototyping: It is necessary when developing and improving prototypes is
a key component of the development process.
7. Low technological Complexity: Suitable for tasks using comparatively
straightforward technological specifications.
Objectives of Rapid Application Development Model (RAD)
1. Speedy Development
Accelerating the software development process is RAD’s main goal. RAD
prioritizes rapid prototyping and iterations to produce a working system as
soon as possible. This is especially helpful for projects when deadlines must
be met.
2. Adaptability and Flexibility
RAD places a strong emphasis on adapting quickly to changing needs. Due to
the model’s flexibility, stakeholders can modify and improve the system in
response to changing requirements and user input.
3. Stakeholder Participation
Throughout the development cycle, RAD promotes end users and
stakeholders’ active participation. Collaboration and frequent feedback
make it possible to make sure that the changing system satisfies both user
and corporate needs.
4. Improved Interaction
Development teams and stakeholders may collaborate and communicate
more effectively thanks to RAD. Frequent communication and feedback
loops guarantee that all project participants are in agreement, which lowers
the possibility of misunderstandings.
5. Improved Quality via Prototyping
Prototypes enable early system component testing and visualization in Rapid
Application Development (RAD). This aids in spotting any problems,
14

confirming design choices, and guaranteeing that the finished product lives
up to consumer expectations.
6. Customer Satisfaction
Delivering a system that closely satisfies user expectations and needs is the
goal of RAD. Through rapid delivery of functioning prototypes and user
involvement throughout the development process, Rapid Application
Development (RAD) enhances the probability of customer satisfaction with
the final product.
Advantages of Rapid Application Development Model (RAD)
 The use of reusable components helps to reduce the cycle time of the
project.
 Feedback from the customer is available at the initial stages.
 Reduced costs as fewer developers are required.
 The use of powerful development tools results in better quality products
in comparatively shorter periods.
 The progress and development of the project can be measured through
the various stages.
 It is easier to accommodate changing requirements due to the short
iteration time spans.
 Productivity may be quickly boosted with a lower number of employees.
Disadvantages of Rapid application development model (RAD)
 The use of powerful and efficient tools requires highly skilled
professionals.
 The absence of reusable components can lead to the failure of the project.
 The team leader must work closely with the developers and customers to
close the project on time.
 The systems which cannot be modularized suitably cannot use this model.
 Customer involvement is required throughout the life cycle.
 It is not meant for small-scale projects as in such cases, the cost of using
automated tools and techniques may exceed the entire budget of the
project.
 Not every application can be used with RAD.
Applications of Rapid Application Development Model (RAD)
1. This model should be used for a system with known requirements and
requiring a short development time.
2. It is also suitable for projects where requirements can be modularized and
reusable components are also available for development.
3. The model can also be used when already existing system components can
be used in developing a new system with minimum changes.
15

4. This model can only be used if the teams consist of domain experts. This is
because relevant knowledge and the ability to use powerful techniques are
a necessity.
5. The model should be chosen when the budget permits the use of
automated tools and techniques required.
Drawbacks of Rapid Application Development
 It requires multiple teams or a large number of people to work on scalable
projects.
 This model requires heavily committed developers and customers. If
commitment is lacking then RAD projects will fail.
 The projects using the RAD model require heavy resources.
 If there is no appropriate modularization then RAD projects fail.
Performance can be a problem for such projects.
 The projects using the RAD model find it difficult to adopt new
technologies. This is because RAD focuses on quickly building and
refining prototypes using existing tools. Changing to new technologies can
disrupt this process, making it harder to keep up with the fast pace of
development. Even with skilled developers and advanced tools, the rapid
nature of RAD leaves little time to learn and integrate new technologies
smoothly.

SOFTWARE ENGINEERING APPLICATIONS:

Diverse Applications of Software Engineering


Software engineering plays a pivotal role in shaping the modern world, with
applications spanning across various industries and domains. From
developing cutting-edge mobile apps to designing complex systems for space
exploration, the impact of software engineering is profound and far-reaching.
Some of the diverse applications of software engineering and how it drives
innovation across different sectors.
1. Mobile App Development
Mobile app development is one of the most prominent applications of software
engineering. From social networking and entertainment to productivity and e-
commerce, mobile apps have become integral to our daily lives. Software
engineers leverage their expertise to design, develop, and deploy user-friendly
and feature-rich mobile applications across platforms like iOS and Android.
2. Web Development
Web development encompasses the creation of websites and web applications
using programming languages, frameworks, and tools. Software engineers
16

utilize their skills to build interactive websites, e-commerce platforms, content


management systems (CMS), and more. They focus on optimizing
performance, security, and user experience to ensure seamless functionality
across different devices and browsers.
3. Embedded Systems
Embedded systems are specialized computing devices designed for specific
tasks or functions. From automotive electronics and medical devices to
industrial automation and consumer electronics, embedded systems are
ubiquitous in modern technology. Software engineers develop firmware and
software applications tailored to the unique requirements of embedded
systems, ensuring reliability, efficiency, and safety.

4. Artificial Intelligence and Machine Learning


Artificial intelligence (AI) and machine learning (ML) are revolutionizing
industries by enabling computers to perform tasks that traditionally required
human intelligence. Software engineers play a crucial role in developing AI-
powered applications and systems, including chatbots, recommendation
engines, autonomous vehicles, and predictive analytics tools. They leverage
algorithms, data analysis techniques, and programming languages to create
intelligent solutions that drive innovation and efficiency.

5. Space Exploration and Aerospace


Software engineering plays a vital role in space exploration and aerospace
industries, where reliability and precision are paramount. Software
engineers develop mission-critical software for spacecraft, satellites, and
ground control systems, ensuring the success of space missions and the safety
of astronauts. They focus on fault tolerance, real-time processing, and system
resilience to withstand the harsh conditions of space.
6. Software engineering in healthcare

In recent years, software engineering has made significant contributions to the


healthcare industry.

Electronic health records (EHRs) have replaced traditional paper-based


systems, enabling healthcare professionals to store, access, and share patient
information seamlessly.

Software applications have also empowered medical practitioners to diagnose


diseases more accurately, monitor patient progress in real time, and improve
overall patient care.
17

7. The impact of software engineering on finance

In the finance sector, software engineering plays a crucial role in managing


complex financial systems, conducting high-frequency trading, and developing
secure online banking platforms.

Software applications and algorithms ensure accurate calculations, reduce


human error, and facilitate secure financial transactions.

From creating robust risk management systems to implementing fraud


detection algorithms, software engineering has revolutionised the finance
industry.

8. Software engineering’s role in the automotive industry

The automotive industry has witnessed a tremendous transformation due to


advancements in the application area of software engineering.

Software controls critical aspects of modern vehicles, such as engine


management, safety systems, and infotainment.

With the emergence of self-driving cars and electric vehicles, software


engineering is playing an increasingly vital role in designing intelligent
transportation systems that prioritize safety, efficiency, and sustainability.

9. Software engineering helps to create customized, personalized software that


should look into vulnerabilities and risks before they even emerge. Even when
the software engineering principles of safety aren’t required, it can also help
to reduce costs and improve customer experience.

10. Software engineering has a profound impact on businesses of all sizes. By


developing tailored software solutions, companies can optimize their
operations, streamline processes, and gain a competitive edge.
18
19
20
21
22
23
24
25
26
27
28
29

In Simple Words:

Project Scope = what the project will do


30
31

Why is the Spiral Model called a Meta Model?

The Spiral Model is called a meta-model because it combines features of


multiple software development models into one flexible framework.
32

Advantage and disadvantage of the spiral model


Advantage Disadvantage

Flexible changes are allowed in It is not suitable for the small and low-risk
spiral model. product because it could be costly for a smaller
project.

The development can be It is a traditional model, and thus developers only


distributed into smaller parts. did the testing job as well.

The customer can use the There is no requirement of review process and no
application at an early stage parallel deliverables allowed in the spiral model.
also.

More clarity for Developers and In the spiral model, management is a bit difficult;
Test engineers that's why it is a complex process.

It will provide the wide use of The maximum number of intermediate phases
prototypes. needs unnecessary paperwork.

Advantages of Spiral Model:


1. Software is produced early in the software life cycle.
2. Risk handling is one of important advantages of the Spiral model, it is
best development model to follow due to the risk analysis and risk
handling at every phase.
3. Flexibility in requirements. In this model, we can easily change
requirements at later phases and can be incorporated accurately. Also,
additional Functionality can be added at a later date.
4. It is good for large and complex projects.
5. It is good for customer satisfaction. We can involve customers in the
development of products at early phase of the software development. Also,
software is produced early in the software life cycle.
6. Strong approval and documentation control.
7. It is suitable for high risk projects, where business needs may be unstable.
A highly customized product can be developed using this.
33

Disadvantages of Spiral Model:


1. It is not suitable for small projects as it is expensive.
2. It is much more complex than other SDLC models. Process is complex.
3. Too much dependable on Risk Analysis and requires highly specific
expertise.
4. Difficulty in time management. As the number of phases is unknown at
the start of the project, so time estimation is very difficult.
5. Spiral may go on indefinitely.
6. End of the project may not be known early.
7. It is not suitable for low risk projects.
8. May be hard to define objective, verifiable milestones. Large numbers of
intermediate stages require excessive documentation.

Prototyping model:

The prototype model requires that before carrying out the development of
actual software, a working prototype of the system should be built. A
prototype is a toy implementation of the system. A prototype usually turns out
to be a very crude version of the actual system, possible exhibiting limited
functional capabilities, low reliability, and inefficient performance as
compared to actual software. In many instances, the client only has a general
view of what is expected from the software product. In such a scenario where
there is an absence of detailed information regarding the input to the system,
the processing needs, and the output requirement, the prototyping model may
be employed.
34

Steps of Prototype Model


1. Requirement Gathering and Analyst
2. Quick Decision
3. Build a Prototype
4. Assessment or User Evaluation
5. Prototype Refinement
6. Engineer Product
35

Advantage of Prototype Model


1. Reduce the risk of incorrect user requirement
2. Good where requirement are changing/uncommitted
3. Regular visible process aids management
4. Support early product marketing
5. Reduce Maintenance cost.
6. Errors can be detected much earlier as the system is made side by side.

Disadvantage of Prototype Model


1. An unstable/badly implemented prototype often becomes the final
product.
2. Require extensive customer collaboration
o Costs customer money

o Needs committed customer

o Difficult to finish if customer withdraw

o May be too customer specific, no broad market

3. Difficult to know how long the project will last.


4. Easy to fall back into the code and fix without proper requirement
analysis, design, customer evaluation, and feedback.
5. Prototyping tools are expensive.
6. Special tools & techniques are required to build a prototype.
7. It is a time-consuming process.

TheAgileSoftwareDevelopmentProcess:
36
37
38

Advantages of Agile Agile model

 Flexibility: Easy to change requirements even late in the project.


Example: Imagine you’re building a shopping app. If halfway through,
users want a new feature like “one-click checkout,” Agile lets the team
add that feature quickly without huge delays.
 Faster delivery: You get working software quickly in small pieces.
Instead of waiting 6 months for the entire app, Agile teams deliver parts
like “login” or “browse products” every few weeks, so users can start
using the app early.
 Better teamwork: Developers and customers work closely together.
Developers, testers, and users meet regularly, discuss progress, and fix
issues fast. This helps everyone stay on the same page.
 Customer satisfaction: Regular feedback means the product meets what
users really want. Because the team shows the working product often,
customers can say “yes, this is good” or “please change this,” avoiding
surprises at the end.
 Higher quality: Testing is done often, so bugs are caught early.

Disadvantages of Agile

 Needs active customers: Customers have to be involved a lot, which can


be hard sometimes. If the customer is busy and can’t give feedback
often, the team might build something that doesn’t fully match what’s
needed.
 Less predictability: Harder to predict time and cost because
requirements can change. Since features and requirements can change,
it’s hard for managers to say exactly when the project will finish or how
much it will cost.
 Can be chaotic: Without good management, things can get messy or
unorganized. Without strong leadership or discipline, Agile can turn
into a “free-for-all” with unclear roles and missed deadlines.
39

 Not good for big fixed projects: If requirements are fixed and won’t
change, Agile might be overkill. If a government contract or big
company wants exactly what’s in the contract with no changes, Agile
might not fit well.
 Requires experienced team: Teams need to be skilled and work well
together. Agile relies on the team making good decisions quickly. If the
team is new or inexperienced, they may struggle to work effectively
without detailed plans.

Various agile software development methodologies:

[Link] programming in agile software development:

Extreme Programming (XP) is a software development methodology that falls


under the umbrella of Agile development practices. It's a set of principles and
techniques that focus on improving software quality and responsiveness to
changing customer requirements through iterative cycles and close
collaboration.

Key Principles of Extreme Programming:

Extreme Programming emphasizes technical excellence, frequent feedback,


and continuous improvement. The key principles of Extreme Programming
are:

1. Communication: Close and constant communication among developers,


customers, and other stakeholders.
2. Simplicity: Writing the simplest code possible to meet the requirements,
avoiding unnecessary complexity.
3. Feedback: Frequent feedback from customers and automated tests to
guide development and improve quality.
4. Courage: Encouraging team members to embrace change, take
responsibility, and refactor code when necessary.
5. Respect: Creating a respectful team culture where everyone's ideas and
contributions are valued.
6. Continuous Improvement: Regularly reviewing practices, techniques,
and tools to improve overall performance and quality.
40

2. scrum in agile software development :


Scrum is one of the most widely used Agile frameworks for software
development. It provides a structured yet flexible way for teams to
deliver high-value software in small, incremental pieces, enabling rapid
feedback and continuous improvement.
Key Components of Scrum

Scrum Roles

There are three defined roles in Scrum:

 Product Owner
o Represents the customer or stakeholders.
o Responsible for the Product Backlog, prioritizing work based on
business value.
o Makes decisions about features and acceptance criteria.
 Scrum Master
o Facilitates the Scrum process and removes impediments.
o Ensures the team follows Scrum practices.
o Acts as a coach and servant leader for the team.
 Development Team
o Cross-functional group that builds the product.
o Self-organizing and accountable for delivering potentially
shippable product increments each Sprint.

Scrum Artifacts :
Scrum Artifacts are the main tools used by a Scrum team to plan, track,
and deliver work.
Scrum has three main artifacts — they help the team stay organized
and focused.
Artifact What it is Who owns it
Product Backlog Full list of needed features Product Owner
Sprint Backlog Tasks for this Sprint Development Team
Increment Finished, working product Development Team

3. Agile Modeling is a way to make quick and simple diagrams or plans to


help a team understand and build software — without wasting time on
big documents.
41

Common Modeling Techniques in Agile Modeling:

 UML diagrams (e.g. use case, class, sequence)


 Sketches on whiteboards or digital tools
 User story maps
 Flowcharts
 Data models

4. Adaptive Software Development:

Adaptive Software Development is an Agile method that helps teams build


software step by step, learn from each step, and adjust quickly when things
change.

Key Idea:

Plan less, adapt more.


Three Main Phases in ASD:

1. Speculate
o Make a flexible plan (not fixed).
o Focus on goals, not every detail.
2. Collaborate
o Work closely as a team.
o Share ideas, solve problems together.
3. Learn
o Review what worked and what didn’t.
o Use that learning to improve the next version.

[Link] clear and other crystal methodologies:

Crystal is a family of Agile methods created by Alistair Cockburn. It


focuses on people, communication, and flexibility more than strict rules
or tools.

Crystal Clear (the most well-known Crystal method):

Used for small teams (up to 6–8 people) working on low-risk projects.
It’s simple, informal, and focuses on frequent delivery, good communication,
and team reflection.
42

Crystal Method Team Size Project Risk Level


Crystal Clear 1–8 people Low
Crystal Yellow 10–20 people Medium
Crystal Orange 20–50 people Medium to High
Crystal Red 50–100+ people High
6. Dynamic Software Development Method (DSDM)

DSDM is one of the earliest Agile frameworks and is part of the Agile family
of methodologies. It focuses on delivering business solutions on time and
within budget through an iterative and incremental approach.

Key Characteristics of DSDM:

 Iterative and Incremental: Development happens in small increments


with frequent delivery of functional products.
 Active User Involvement: Continuous involvement of users ensures that
the product meets real business needs.
 Frequent Delivery: Early and frequent delivery of working software is
prioritized.
 Integrated Testing: Testing is embedded throughout the project
lifecycle to ensure quality.
 Collaboration and Communication: Close cooperation between all
stakeholders.
 Flexibility: Requirements can evolve and adapt during the project.
 Focus on Business Needs: Ensures the software delivers real business
value.

7. Feature Driven Development (FDD):

Feature Driven Development (FDD) is an Agile method that focuses on


building software by designing and delivering small, client-valued
features one at a time, usually in short cycles. It helps teams plan, track
progress, and deliver working software regularly.

The 5 Basic Activities of FDD

Develop an Overall Model.


Build a Features List
Plan by Feature
43

Design by Feature
Build by Feature.

8. Lean Software Development is an Agile approach that focuses on


eliminating waste, delivering fast, and improving quality by optimizing the
whole development process. It emphasizes efficient use of resources,
continuous learning, and empowering teams to deliver value quickly.

The Core Principles of Lean Software Development explained simply:

 Cut out Waste


Get rid of anything that doesn’t help make the software better or faster.
 Build Quality from the Start
Make sure your work is good as you go, so you don’t have problems
later.
 Keep Learning
always look for ways to improve by trying things and learning from
them.
 Wait to Decide
Don’t rush big decisions—wait until you have enough info to choose the
best option.
 Deliver Quickly
Finish small parts fast so users get value sooner and you can get
feedback.
 Respect Your Team
Trust and support your teammates—they know best how to get the job
done.
 Improve the Whole Process
Look at everything from start to finish and make the whole process
better, not just one part.

You might also like