0% found this document useful (0 votes)
102 views46 pages

Unit 1 Notes-Word

This document contains the unit 1 notes of software engineering software development process. These are the detailed notes of the whole unit which will help in is aceing MSBTE diploma

Uploaded by

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

Unit 1 Notes-Word

This document contains the unit 1 notes of software engineering software development process. These are the detailed notes of the whole unit which will help in is aceing MSBTE diploma

Uploaded by

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

Software engineering Code:315323

Unit 1

software
development
process
MARKS:12
Learning hours
prepared by:
ms khushi sharma

K.V.S. 1
Software engineering Code:315323

UNIT - 1 SOFTWARE DEVELOPMENT PROCESS

What is Software ?

Software is a Mediator which communicates with Computer Hardware and Users.


Today’s society
is known as Information Society. It is impossible for Human beings to live without
information. Humans needs to communicate with each other i.e. Exchange or sharing of
information. The
media’s which are used for Communication could be Emails , Video conferencing ,
Cell phones
etc.

Software is defined as a collection of programs, documentation and operating


procedures. The Institute of Electrical and Electronic Engineers (IEEE) defines software
as a 'collection of computer programs, procedures, rules and associated documentation and
data.' It possesses no mass, no volume, and no colour, which makes it a non-degradable
entity over a long period. Software does not wear out or get tired.

Software Types or Categories:

(1) System software: controls the basic (and invisible to the user) functions of a computer
and comes usually preinstalled with the machine. See also BIOS and Operating System.

(2) Application software: handles multitudes of common and specialized tasks a user wants
to perform, such as accounting, communicating, data processing, word processing.

K.V.S. 2
Software engineering Code:315323

Characteristics of Software :-

Software characteristics refer to the essential attributes or qualities that define how
software behaves and performs. These can be broadly categorized into functional and non-
functional characteristics.

Different individuals judge software on different basis. This is because they are involved
with the software in different ways. For example, users want the software to perform
according to their requirements. Similarly, developers involved in designing, coding, and
maintenance of the software evaluate the software by looking at its internal characteristics,
before delivering it to the user. Software characteristics are classified into six major
components.

• Functionality: Refers to the degree of performance of the software against its intended
purpose.
• Reliability: Refers to the ability of the software to provide desired functionality under the
given conditions.
• Usability: Refers to the extent to which the software can be used with ease.
• Efficiency: Refers to the ability of the software to use system resources in the most
effective and efficient manner.
• Maintainability: Refers to the ease with which the modifications can be made in a
software system to extend its functionality, improve its performance, or correct errors.
• Portability: Refers to the ease with which software developers can transfer software from
one platform to another, without (or with minimum) changes. In simple terms, it refers to
the ability of software to function properly on different hardware and software platforms
without making any changes in it.
In addition to the above mentioned characteristics, robustness and integrity are also
important. Robustness refers to the degree to which the software can keep on functioning in
spite of being provided with invalid data while integrity refers to the degree to which
unauthorized access to the software or data can be prevented.

K.V.S. 3
Software engineering Code:315323

� 1. Functional Characteristics

These define what the software is supposed to do.

 Correctness: The extent to which software meets specified requirements.


 Functionality: The set of functions and features the software provides.

� 2. Non-Functional Characteristics

These define how the software performs and behaves.

A. Quality Attributes

 Reliability: The ability to perform consistently without failure.


 Usability: Ease of use and user-friendliness.
 Efficiency: Optimal use of system resources (e.g., CPU, memory).
 Maintainability: Ease of modifying, updating, or fixing the software.
 Portability: Ability to run across different environments or platforms.
 Scalability: Ability to handle growth in users or data volume.
 Performance: Speed and responsiveness under load.
 Security: Protection from unauthorized access and data breaches.

B. Development-Related Attributes

 Testability: Ease of verifying and validating the software.


 Reusability: Ability to use components in other applications.
 Interoperability: Ability to work with other systems or components.
 Modifiability: Ease of making changes without introducing defects.

K.V.S. 4
Software engineering Code:315323

� 3. Emerging Software Characteristics

 Adaptability: Ability to adjust to changing environments or requirements.


 Resilience: Capacity to recover from unexpected failures.
 Sustainability: Long-term maintainability and energy/resource efficiency.

In the software development process, different types of software are involved depending
on the purpose, target users, and functionality. These can be broadly classified into several
categories:

� 1. System Software

System software acts as a bridge between hardware and application software.

Examples:

 Operating Systems (OS) – Windows, Linux, macOS


 Device Drivers – Printer drivers, GPU drivers
 Utilities – Disk cleanup tools, antivirus software

� 2. Application Software

This software performs specific tasks for end users.

Examples:

 Web Browsers – Chrome, Firefox


 Office Suites – Microsoft Office, Google Workspace
 Media Players – VLC, iTunes
 Mobile Apps – WhatsApp, Instagram

K.V.S. 5
Software engineering Code:315323

� 3. Development Software

These are tools used by developers to create, test, and maintain software.

Examples:

 Integrated Development Environments (IDEs) – Visual Studio, Eclipse, IntelliJ


IDEA
 Code Editors – VS Code, Sublime Text
 Compilers and Interpreters – GCC, Python Interpreter
 Version Control Tools – Git, GitHub

� 4. Embedded Software

Software built into hardware devices, often with real-time constraints.

Examples:

 Software in smart TVs, microwaves, automotive systems, IoT devices

� 5. Middleware

Software that connects different applications or services, enabling communication and data
management.

Examples:

 Database Middleware – ODBC, JDBC


 Message Brokers – Apache Kafka, RabbitMQ
 API Gateways – Kong, Amazon API Gateway

K.V.S. 6
Software engineering Code:315323

� 6. Enterprise Software

Software designed to meet the needs of large organizations.

Examples:

 Customer Relationship Management (CRM) – Salesforce


 Enterprise Resource Planning (ERP) – SAP, Oracle ERP
 Business Intelligence (BI) – Tableau, Power BI

� 7. Artificial Intelligence (AI) and Data Science Software

Used for building models, analyzing data, and enabling smart behavior.

Examples:

 AI Frameworks – TensorFlow, PyTorch


 Data Analysis Tools – R, MATLAB, Pandas

� 8. Cloud and Web-Based Software

Applications hosted in the cloud, accessed via the internet.

Examples:

 SaaS – Google Docs, Dropbox


 PaaS – Heroku, Google App Engine
 IaaS – AWS EC2, Microsoft Azure

K.V.S. 7
Software engineering Code:315323

Definition of Software Engineering:-

Software engineering is a field of engineering, for designing and writing programs for
computers or other electronic devices. A software engineer, or programmer, writes software
(or changes existing software) and compiles software using methods that make it better
quality.

Software Engineering is a Layered Technology approach:

Software development is totally a layered technology. That means, to develop software one
will have to go from one layer to another. The layers are related and each layer demands the
fulfillment of the previous layer. Figure below is the upward flowchart of the layers of
software development.

1.A Quality Focus:


• It is base of Software Engineering.
• The s/w quality refers to the s/w quality which is committed to the client by
the s/w development company.
• As the s/w Engg Process is quality focused ,the culture developed improves
the Processes, Methods and the Tools used for assuring the quality management in
the software.

K.V.S. 8
Software engineering Code:315323

2. Process:
• Process is the foundation for s/w engineering.
• There are specific processes which takes place while developing s/w.
• It helps to produce a Rational and integrated s/w product.
• Process defines a framework for a set of Key Process Areas (KPAs) that must be
established for effective delivery of software engineering technology.
• If any change is occurs it managed properly.

3. Methods:
• It is used to understand How-to-do the technical processes for building software.
• Methods will include Requirements analysis, Design, Program Construction, Testing, and
Support.

4. Tools:
• It is very important part of software engineering.
• It provide automated or semi-automated support for the process and the methods. Eg-
CASE tool.( CASE- Computer Aided Software Engineering)
• The different methods are implemented using CASE tools which are Computerized and
require less Human Effort.
• CASE tools are useful in Analysis, Design, Program, Construction and Testing.

K.V.S. 9
Software engineering Code:315323

Software Development Process Framework:

1. A process framework is a Collection of Software Activities, which forms a complete


foundation software engg. process.
2. A Process framework contains Umbrella activities, Framework activities and Small
activities i.e. Task.
3. It is applicable to Small as well as Large Software development process.
4. The framework activity is a set of Software Engg. Actions.
5. Framework activities are –
1. Communication
2. Planning
3. Modeling
4. Construction
5. Deployment

Some most applicable framework activities are described below.

K.V.S. 10
Software engineering Code:315323

Framework activities
1. Communication:
 This activity involves heavy communication with customers and other stakeholders in
order to gather requirements and other related activities.
 Stake Holder are the people who has a stake in the successful outcomes of the
project. They could be Business managers , end-users. s/w engineers , support people
and so on.
 In fact , when the s/w project starts the data gathering and requirement analysis is
the Communication activities on which full project depends.

K.V.S. 11
Software engineering Code:315323

2. Planning:

 Any project or work has to be planned properly. Planning is done for the time i.e.
Schedule is made.
 Here a plan to be followed will be created which will describe the technical tasks to be
conducted, risks, required resources, work schedule etc.

3. Modeling:

 It creates different models of the software.


 A model will be useful for Customer as well as Developers to better understand the
requirements of the software.
 It is a part of software design to achieve these requirements.

4. Construction:

 Here the code will be generated and tested.


 Software is computerized or actually developed.
 Software is tested manually or automated.

5.Deployment:
 It is done when s/w is developed partially or may be fully.
 In this phase the s/w product is delivered to the Customers.
 Customers evaluates this product and gives feedback about it to the development
team.

K.V.S. 12
Software engineering Code:315323

Process Models:
• Process models define a distinct set of tasks, activities, actions and work products
that are required to engineer high-quality software.
• Process models are not perfect, but they do provide a useful roadmap for s/w engg.
work.
• This helps s/w development organizations to :
• To manage technical quality of product.
• To reduce development time and cost.
• Analyze current process.
• To organize their work tasks.
• To keep control and monitor progress.

1. Each and every S/w Engg. Firm should describe a unique set of framework activities
for s/w processes.
2. Each framework activity with a set of s/w engg. actions and each action in terms of a
task set that identifies the work and work products to be accomplished to meet the
development goals.
3. The firm should then adapt the resultant process model to accommodate the specific
nature of each project, the people who will do the work and the environment in which
the work will be conducted.
4. There is number of s/w process models.
5. Each and every process model also prescribes a workflow, the manner in which the
process elements are inter-related to one another.
6. There are different process models, which are used by the s/w development team to
do their work systematic. i.e. Step by step.

1. Waterfall
2. Incremental
3. RAD
4. Prototype
5. Spiral
K.V.S. 13
Software engineering Code:315323

1. Waterfall Model

1. It is oldest model for software engineering. First published s/w development process
model.
2. The waterfall model is also called as classic life cycle or linear sequential.
3. Cascades from one phase to another where output of one phase is the input to next
phase.
4. It presents systematic sequential approach to software engineering. This begins with
customer specification of requirements, needs and progresses through planning,
construction, modeling and deployment.
5. The output of each phase must be produced using standards. If output of any phase is
wrong, it may affect the subsequent phases.
6. This model is useful to measure the progress of the project as it is easy to check
whether a certain output is delivered exactly on the date when it was expected.

K.V.S. 14
Software engineering Code:315323

The 5 phases of Waterfall model:


1) Communication
2) Planning
3) Modeling
4) Construction
5) Deployment
In Communication phase the major task done is Requirement gathering, which helps to
find out the exact need of the customer.

Next step is Planning, which includes some major activities like planning for schedule,
keeping different tracks on the processes and the estimations related to the project.

Next step is Modeling, in that important is to analyze the data and as per the analysis the
data is designed.

Next step is Construction phase. Based on the designing of the project the coding i.e .
Programming and Testing is done.

Last step is Deployment , in that the product is actually delivered. i.e. installed at
customer’s end and support is given if required. The feedback is taken from the customer to
ensure the quality of product.

Features of Waterfall model:

1) Implemented for all size of projects.


2) Leads to clear and concrete approach to s/w development.
3) Testing done in every phase.
4) Documentation done in every phase which helps for people involved in working on
it.

K.V.S. 15
Software engineering Code:315323

Advantages:
1) Linear model and so it is most simple to implement.
2) Amount of resources required to implement this model is very minimum.
3) Documentation done at every stage which makes the understanding of the product
design process simple.
4) After every stage of coding, testing is done to check the correctness of the code.
5) Progress of system is measurable

Disadvantages:
1) Cannot backtrack. Ex- if design goes wrong, it makes implementation complicated
2) Many a times, the client is not clear of his requirements. Any changes that he
specifies in between may cause a lot of confusion.
3) Small changes or errors that arise in the completed software may cause lot of
problems.
4) The lifecycle can take so long that the original requirements may no longer be valid
by the time the system is implemented.
5) Estimating time and cost is difficult for each stage.

K.V.S. 16
Software engineering Code:315323

2. Incremental Model

C Communication
P Planning
M Modeling
C Construction
D Deployment

1. It is a combination of elements of waterfall model which are applied in an iterative


manner. i.e in above fig. the waterfall model is repeatedly applied.
2. Each linear sequence produces a deliverable increment of the software.
3. The incremental model applies linear sequences in a required fashion. Each linear
sequence produces an increment in the work. i.e. limited set of customer’s
requirements are implemented quickly and are delivered to customer. Then modified
and expanded requirements are implemented step-by-step.
Ex- Word processing s/w.
4. The first increment is often a “core product” [ the basic requirements]. The core
product is evaluated (used) by the customer.
5. After the customer evaluation, there is a plan developed for the next increment.
The next increment implements customer’s suggestions plus some additional

K.V.S. 17
Software engineering Code:315323

requirements in the previous increment. This process is repeated until complete


product is produced.
6. Incremental development is useful when staffing is unavailable for a complete
implementation by the business deadline that has been established for the project.
7. In project, early increments can be done with less people. If the core product is well
received, understood, then additional staff can be added to implement the next
increment.

Advantages:
1) This model is applied when sufficient staff is not available.
2) Easy to add quality.
3) System can be designed in a manner that it can be delivered in pieces.
4) Increments are developed one after the other, after feedback has been received from
the customer/user.
5) Increments can be planned to manage technical risks.
6) Deadlines can be managed in an effective manner.

Disadvantages:
1) Reusability of codes is minimum.
2) Integration testing is difficult to do.
3) Each quality developed requires testing
4) Can be applied to only those projects which have independent modules.

K.V.S. 18
Software engineering Code:315323

3. RAD Model- [ Rapid Application Development]

1. Rapid Application Development (RAD) model is the high-speed adaptation of


waterfall model. Using RAD model product can be developed within a very short
time period i.e. almost within 60-90 days.
2. The initial activity starts with communication between customer and developer.
Depending upon initial requirements, the project planning is done. Then the
requirements are divided into different groups and each requirement is assigned to
different teams.
3. When all teams are ready with their final products, the product of each team is
integrated/combined to form a product as a whole.

K.V.S. 19
Software engineering Code:315323

• After planning each team follows the given steps:


1) Modeling
2) Construction

1. Modeling:
A. Business Modeling
B. Data Modeling
C. Process Modeling

A. Business modeling:

The information flow among business functions is modeled in a way that


answer the following questions: What information drives the business process? What
information is generated? Who generate it? Where does the information go? Who
process it?
B. Data modeling:
The information flow defined as part of the business modeling phase is refined
into a set of data objects that are needed to support the business. The characteristics
(called attributes) of each object are identified and the relationship between these
objects defined.

C. Process modeling:

The data objects defined in the data modeling phase are transformed to achieve
the information flow necessary to implement a business function. Processing
descriptions are created for adding, modifying, deleting, or retrieving a data object.

K.V.S. 20
Software engineering Code:315323

2. Construction:
A. Component reuse
B. Automatic code generation
C. Testing

A. Component reuse:
Components/modules developed for one application be reused in the
development of other applications.

B. Automatic code generation:


The s/w producing the codes after providing proper inputs or selecting
readymade options. Ex- Microsoft FrontPage used in Web development, Rational
Rose used for Object Oriented analysis and designing.

C. Testing:
Done to check whether flow of coding is correct, to check out the errors of
programs.

K.V.S. 21
Software engineering Code:315323

Advantages:
1) Product can be developed within a very short time duration..
2) Flexible and adaptable to changes.
3) Realizes an overall reduction in project risk

Disadvantages:
1) Used if sufficient number of staff is available. Thus large projects require sufficient
manpower to create number of teams.
2) Many teams work parallel to implement different functions of same project. Hence all
teams must work with equal speed. If one team lags behind, overall project delivery
will be late.
3) If s/m is not properly modularized, building components will be problematic.
4) Not applicable when technical risks are high.

K.V.S. 22
Software engineering Code:315323

Evolutionary process model

Evolutionary process models in software development involve building a system through


incremental and iterative releases, evolving the software over time with feedback. These
models combine iterative and incremental approaches, allowing for continuous
improvement and adaptation based on user feedback.

Key characteristics of evolutionary process models:


 Incremental Development:
The software is built in increments, with each increment adding new functionality or
features.
 Iterative Development:
Each increment undergoes a mini-development cycle (similar to a waterfall model) with
planning, design, implementation, testing, and feedback.
 Feedback Incorporation:
User feedback is crucial in guiding the development of subsequent increments.
 Evolving Requirements:
Requirements can be refined and adjusted as the project progresses and feedback is
gathered.
 Early User Involvement:
Users are actively involved throughout the development process, providing feedback on
each increment.

Types of Evolutionary Process Models:


 Prototyping Model:
Focuses on building prototypes to validate requirements and gather feedback.
 Spiral Model:
Emphasizes risk analysis and iterative development through multiple loops or phases.

K.V.S. 23
Software engineering Code:315323

Advantages of Evolutionary Process Models:

 Reduced Risk: Early identification of potential issues through feedback and iteration.
 Increased Customer Satisfaction: Active user involvement and the ability to incorporate
feedback lead to a product that better meets user needs.
 Adaptability: Flexibility to changing requirements and evolving user expectations.
 Faster Time to Market: Delivering functional increments early allows for quicker
feedback and adaptation.

Example:
A popular example is the evolutionary approach used in developing WhatsApp. Initially, it
provided basic text messaging, and over time, it evolved with features like media sharing,
calling, and video calls.
In essence, evolutionary process models provide a flexible and adaptive approach to
software development, allowing for continuous improvement and a better alignment of the
final product with user needs.

K.V.S. 24
Software engineering Code:315323

Prototyping Model

1. Prototyping can be used as a standalone process model. While developing a software


product prototyping can be combined with any other model.
2. “Prototyping is the process that enables the developer to create a model of the s/w
that must be built”.
3. Prototype is just an idea about the System. It does not contain all features or perform
all necessary functions of the final system.
4. Customer evaluates the prototype and then suggests what changes are needed in the
s/m. Thus prototyping is an interactive process as it is revised to satisfy the needs of
the customer.
5. Requires low cost to build the prototype. Can be built using pen, pencil or computer
s/w.

K.V.S. 25
Software engineering Code:315323

6. The model can be like:


i. A paper prototype or PC-based model.
ii. A working prototype.
iii. An existing program.
7. Phases under prototyping model are:
1. Communication
2. Quick plan
3. Modeling quick design
4. Construction of prototype
5. Deployment, delivery, feedback

1. Communication
 Communication between customer and developer to define the objectives/goals.
 Based on this communication, gathering the requirements.

2. Quick plan
 Here prototype iteration is planned quickly and then modeling occurs.

3. Modeling quick design


 A quick design focus on the representation of those aspects of the s/w that will be
visible to the end-users.
 Ex- human interface layout or output display formats.

4. Construction of Prototype
 The quick design leads to the construction of the prototype.
 The prototype is deployed and evaluated by the customer.

5. Deployment , delivery ,feedback


 As the picture of the s/w to be built is now clear, customer gives his suggestions
as feedback.
 If satisfactory output, the model is implemented otherwise process is repeated to
satisfy customer’s all requirements

K.V.S. 26
Software engineering Code:315323

Advantages:
1) Helps to build the s/m with user’s satisfaction and avoid wrong s/m delivery.
2) Difficult or confusing user services can be identified and refined.
3) System can be delivered within time, avoiding delays.

Disadvantages:
1) Insufficient analysis.
2) User confusion of prototype and finished s/m.
3) Developer misunderstanding of user objectives.

Spiral Model
Estimation
Scheduling
Risk analysis

Analysis
Design

Code
Delivery Test
Feedback

K.V.S. 27
Software engineering Code:315323

1. Spiral model s/w process is combination of controlled & systematic Waterfall


model and iterative nature of Prototyping model.
2. Here, s/w is developed as a series of evolutionary releases. During initial releases it
may be a paper work or a prototype. But in later releases, the version goes towards
more complete stage.
3. The spiral model can be applied throughout the lifecycle of the application from the
concept development to maintenance.
4. It is divided into a set of framework activities. Each framework activity represents
one segment of spiral.
5. The initial activity is shown from the center of circle and developed in clockwise
direction.
6. After development gets over , the product is delivered to the customer.
7. The cost and schedules are adjusted depending on the feedback received from the
customer.
8. The project manager adjusts the number of iteration or repetitions.
9. Includes:
1) Communication
2) Planning
3) Modeling
4) Construction
5) Deployment
10.The initial loop represents the “concept development project”.
11.The working or implementation of the product moves outward on the spiral and a
“new product development project” starts.
12.Prototyping is used for risk reduction.

K.V.S. 28
Software engineering Code:315323

Advantages:

1) Used for Most realistic model for s/w development.


2) Used to develop large scale projects.
3) It is able to produce rapid development in more complicated versions of the s/w.
4) Reduces number of risks before they become a serious problem.

Disadvantages:
1) If major risks are not discovered in early iterations, in later stages it may become a
serious problem.
2) Difficult to convince the customer that the model is controllable.

K.V.S. 29
Software engineering Code:315323

Agile model
Agile model suggest following modelling principles:
1. Model with purpose: Before the development of the model agile team collects all tasks.
Choose best suitable model technique according to task.
2. Use multiple models: One project may have a multiple task. Each task may be
developed in different models.
3. Travel light: Software developers keep only those models which give maximum values
during the developments, in terms of features, time span etc. Content is more important
than Representation : If somebody could not able to represent but have the capability of
development.
Know the models and tools you use to create them : Developers should know the strengths
and weaknesses of each model.
Adapt locally : It should adapt all needs of the agile team.

Diagram of Agile model:

K.V.S. 30
Software engineering Code:315323

Advantages of Agile model:


 Customer satisfaction by rapid, continuous delivery of useful software.
 People and interactions are emphasized rather than process and tools. Customers,
developers and testers constantly interact with each other.
 Working software is delivered frequently (weeks rather than months).
 Face-to-face conversation is the best form of communication.
 Close, daily cooperation between business people and developers.
 Continuous attention to technical excellence and good design.
 Regular adaptation to changing circumstances.
 Even late changes in requirements are welcomed

Disadvantages of Agile model:


 In case of some software deliverables, especially the large ones, it is difficult to
assess the effort required at the beginning of the software development life cycle.
 There is lack of emphasis on necessary designing and documentation.
 The project can easily get taken off track if the customer representative is not clear
what final outcome that they want.
 Only senior programmers are capable of taking the kind of decisions required during
the development process. Hence it has no place for newbie programmers, unless
combined with experienced resources.

K.V.S. 31
Software engineering Code:315323

When to use Agile model:


 When new changes are needed to be implemented. The freedom agile gives to change
is very important. New changes can be implemented at very little cost because of the
frequency of new increments that are produced.
 To implement a new feature the developers need to lose only the work of a few days,
or even only hours, to roll back and implement it.
 Unlike the waterfall model in agile model very limited planning is required to get
started with the project. Agile assumes that the end users’ needs are ever changing in
a dynamic business and IT world. Changes can be discussed and features can be
newly effected or removed based on feedback. This effectively gives the customer the
finished system they want or need.
 Both system developers and stakeholders alike, find they also get more freedom of
time and options than if the software was developed in a more rigid sequential way.
Having options gives them the ability to leave important decisions until more or
better data or even entire hosting programs are available; meaning the project can
continue to move forward without fear of reaching a sudden standstill.

K.V.S. 32
Software engineering Code:315323

What is Extreme Programming? (XP)


 Extreme Programming (XP) is a software engineering methodology, the most
prominent of several agile software development methodologies.
 Like other agile methodologies, Extreme Programming differs from traditional
methodologies primarily in placing a higher value on adaptability than on
predictability.
 Proponents of XP regard ongoing changes to requirements as an often natural and often
inescapable aspect of software development projects; they believe that being able to
adapt to changing requirements at any point during the project life is a more realistic
and better approach than attempting to define all requirements at the beginning of a
project and then expending effort to control changes to the requirements.
 XP prescribes a set of day-to-day practices for managers and developers; the practices
are meant to embody and encourage particular values.
 Proponents believe that the exercise of these practices—which are traditional software
engineering practices taken to so-called "extreme" levels—leads to a development
process that is more responsive to customer needs ("agile") than traditional methods,
while creating software of similar or better quality.

Origins

 Software development in the 1990s was shaped by two major influences: internally,
object-oriented programming replaced procedural programming as the programming
paradigm favored by some in the industry; externally, the rise of the Internet and the
dot-com boom emphasized speed-to-market and company-growth as competitive
business factors.
 Rapidly-changing requirements demanded shorter product life-cycles, and were often
incompatible with traditional methods of software development.
 Information about the principles and practices behind XP was disseminated to the
wider world through discussions on the WikiWikiWeb.
 Various contributors discussed and expanded upon the ideas, and some spin-off
methodologies resulted (see agile software development). Also, XP concepts have been
explained, for several years, using a hyper-text system map on the XP website.

K.V.S. 33
Software engineering Code:315323

Current state

 XP created quite a buzz in the late 1990s and early 2000s, seeing adoption in a number
of environments radically different from its origins.
 The high discipline required by the original practices often went by the wayside,
causing certain practices to be deprecated or left undone on individual sites.
 Agile development practices have not stood still, and XP is still evolving, assimilating
more lessons from experiences in the field.

Goal of XP

Extreme Programming is described as being:

 An attempt to reconcile humanity and productivity


 A mechanism for social change
 A path to improvement
 A style of development
 A software development discipline

The main aim of XP is to lower the cost of change. In traditional system development
methods (like SSADM) the requirements for the system are determined at the beginning of
the development project and often fixed from that point on. This means that the cost of
changing the requirements at a later stage will be high.
XP sets out to lower the cost of change by introducing basic values, principles and
practices. By applying XP, a system development project should be more flexible with
respect to changes.

XP values

Extreme Programming initially recognized four values. A new value was added in the
second edition of Extreme Programming Explained. The five values are:

K.V.S. 34
Software engineering Code:315323

 Communication
 Simplicity
 Feedback
 Courage
 Respect

 Building software systems requires communicating system requirements to the


developers of the system. In formal software development methodologies, this task is
accomplished through documentation.
 Extreme Programming techniques can be viewed as methods for rapidly building and
disseminating institutional knowledge among members of a development team.
 The goal is to give all developers a shared view of the system which matches the view
held by the users of the system.
 To this end, Extreme Programming favors simple designs, common metaphors,
collaboration of users and programmers, frequent verbal communication, and feedback.
 Extreme Programming encourages starting with the simplest solution and refactoring to
better ones.
 The difference between this approach and more conventional system development
methods is the focus on designing and coding for the needs of today instead of those of
tomorrow, next week, or next month.
 Proponents of XP acknowledge the disadvantage that this can sometimes entail more
effort tomorrow to change the system; their claim is that this is more than compensated
for by the advantage of not investing in possible future requirements that might change
before they become relevant.
 Coding and designing for uncertain future requirements implies the risk of spending
resources on something that might not be needed. Related to the "communication"
value, simplicity in design and coding should improve the (quality of) communication.
 A simple design with very simple code could be easily understood by most
programmers in the team.

K.V.S. 35
Software engineering Code:315323

Adaptive Software Development


Adaptive Software Development (ASD) is an agile software development methodology that
emphasizes flexibility, collaboration, and the ability to adapt to change throughout the
software development lifecycle. It was introduced by Jim Highsmith in the late 1990s as a
response to the limitations of traditional, rigid methodologies like the Waterfall model.

What is ASD?

Adaptive Software Development (ASD) is a software development methodology that


emphasizes adaptability to respond to changing requirements and environments. It focuses
on continuous learning and is considered a part of agile software development.

1. Iterative Development: ASD breaks down the project into small, manageable
iterations, delivering incremental values.
2. Risk Management: ASD involves identifying and addressing risks early in the
development process.
3. Continuous Testing: It integrates testing throughout the development process to
ensure high-quality outcomes.
4. Decentralized Control: It encourages decision-making at the team level instead of
relying on top-down directives.
5. Customer Satisfaction: It prioritizes customer satisfaction by delivering products that
meet their needs and expectations.

K.V.S. 36
Software engineering Code:315323

Characteristics of ASD Process


Here are the seven principles of ASD that distinguish it from more traditional, plan-driven
methodologies:
1. Adaptability: ASD focuses on high-level adaptive planning instead of detailed, fixed
plans.
2. Collaborative Environment: In ASD, a strong focus is on collaboration within the
team, thus promoting a culture of open communication.
3. Continuous Learning: It emphasizes learning from each iteration and using feedback
to improve the process and the product.
4. Iterative Development: In ASD, the development is broken into small, manageable
increments. Each increment delivers a piece of functional software.
5. Responsive to Change: It allows the project to quickly adapt to the changes in
requirements, technology, and market conditions.
6. Risk Management: Proactive identification and management of the risks with the
flexibility to adapt as risks evolve.
7. Emphasizes Quality: Testing is integrated throughout the development process to
ensure high quality and early detection of issues. Regularly improve the code to
maintain quality and adaptability.
8. Empowerment and Ownership: It allows teams to make decisions and take
ownership of their work. It also encourages decision-making at the team level to
promote responsiveness and accountability.

Phases of ASD Process


ASD life cycle incorporates three phases namely:
1. Speculation
2. Collaboration
3. Learning

K.V.S. 37
Software engineering Code:315323

1. Speculation
During this phase project is initiated and planning is conducted. The project plan uses
project initiation information like project requirements, user needs, customer mission
statement, etc, to define a set of release cycles that the project wants.

2. Collaboration
It is the difficult part of ASD as it needs the workers to be motivated. It collaborates
communication and teamwork but emphasizes individualism as individual creativity plays
a major role in creative thinking. People working together must trust each other to
 Criticize without animosity,
 Assist without resentment,
 Work as hard as possible,
 Possession of skill set,
 Communicate problems to find effective solutions.

4. Learning
The workers may have an overestimate of their understanding of the technology which
may not lead to the desired result. Learning helps the workers to increase their level of
understanding of the project.
The learning process is in 3 ways:
1. Focus groups
2. Technical reviews
3. Project postmortem
ASD’s overall emphasis on the dynamics of self-organizing teams, interpersonal
collaboration, and individual and team learning yields software project teams that have a
much higher likelihood of success.

K.V.S. 38
Software engineering Code:315323

Advantages of ASD
 Adapts well to changing business needs
 Promotes innovation and continuous improvement
 Delivers usable software earlier and more often
 Encourages strong team collaboration

Disadvantages
 May be challenging for teams used to strict structures
 Can lead to scope creep if not managed carefully
 Requires high involvement from stakeholders

K.V.S. 39
Software engineering Code:315323

Scrum:
This is agile process model developed by Jeff Sutherland and his team in year 1990.
Recently scrum further developed by Schwaber and Beedle.

- Scrum focuses on delivering the highest business value in shortest time.

- It allows us to rapidly (every two weeks to one month and repeatedly inspect actual
working software.

- The business sets the priorities. Agile teams then determine the best way to deliver the
highest priority features,

- Every two weeks to a month anyone can see real working software and decide whether to
release it or continue to enhance for another iteration.

Characteristics of Scrum

- Self-organizing teams.

- Product progresses in a series of month-long

"sprints".

- Requirements are captured as items in a list of

"product backlog":

- No specific engineering practices prescribed.

Uses generative rules to create an agile environment for delivering projects.

K.V.S. 40
Software engineering Code:315323

Scrum team accepts changing requirements, business criticality, and tight timelines and
defines a set of activities. Those are :

Backlog consists of :

 Requirement gathering.
 Assigns priorities to each requirement.
 Add features in each requirement from the point of view of business.
 Customer can add new items or requirements in the backlog at anytime.
 Product manager can assess the backlog and updates priorities.

Sprints consists of:

 Work task defined from the requirement analysis of the backlog.


 It allots some short time to each work unit (typically it is 30 days).
 During Sprints the new backlog changes are frozen.
 It provides stable environment to developer.

K.V.S. 41
Software engineering Code:315323

Scrum Meetings consist of three key questions that are asked and answered by each team
members :

 What did the team member do since the last team meeting?
 What obstacles is he coming across?
 What do you plan to finish till the next team meeting?

These questions are asked by the team leader which is called as a scrum master.

The scrum meeting helps team to find out solutions of problems mentioned in work units.
Daily scrum meetings increase knowledge socialization.

Demos: The main objectives of demos are

 Deliver software increments to customer.


 Accepts feedback from the customers.
 Demos may not contain all planned functionality only main functionality is shown
 to user.

K.V.S. 42
Software engineering Code:315323

Dynamic System Development


 DSDM is also called as a fitness for business purpose as it supports incremental
process model, prototyping as well as rapid software development approach.
 It follows tight time constraints. It checks whether there is enough work for new
increment or not if so, then only it starts new increment otherwise not.

Key principles of DSDM

- Business Needs/Value.

- Active User Involvement.

- Empowered Terms.

- Frequent Delivery.

- Integrated Testing.

- Stake Holder Collaboration.

K.V.S. 43
Software engineering Code:315323

DSDM life cycles define three iterative life cycles proceeds by two additional life cycles.

* Feasibility study: It collects all the requirements and constrain associated with that
requirement from the user. It checks whether that requirements are feasible or not?

Business study : It collects all information about the business that will allow application to
business value. According to this information it plans and defines basic application
architecture. It also finds out all requirements regarding maintainability of the application to
be developed.

Functional model iteration: Produces a set of incremental prototypes that demonstrate


functionality for the customer. The main intension of this functional model iteration is to
collect all information from customers and end users of all functionality of project to be
developed.

Design and build iteration: Here it accepts information from functional model iteration
and design the project. According to design, it develop program for it. Some time functional
model iteration and design and build iteration phase occurs concurrently.

Implementation: It places developed software into customer's site if any increment is not
found. Continuously check the maintenance of that system.

K.V.S. 44
Software engineering Code:315323

Agile Unified Process (AUP)

The Agile Unified Process (AUP) is a simplified version of the Rational Unified Process
(RUP), adapted to follow Agile principles. It was created by Scott Ambler to provide a
lightweight, agile approach to software development while retaining the structured,
disciplined elements of RUP.

Phases of AUP

Like RUP, AUP has four main phases, but with Agile principles infused:

1. Inception
o Define project scope, objectives, and feasibility.
o Identify initial risks and constraints.
2. Elaboration
o Refine requirements and architecture.
o Plan the project in more detail.
o Build architectural proof-of-concept.
3. Construction
o Develop working software in iterations.
o Emphasize testing, feedback, and continuous integration.
4. Transition
o Deliver the software to users.
o Handle final testing, training, and deployment.

� Key Disciplines in AUP

AUP organizes work into disciplines (similar to RUP), but in a streamlined way:

1. Modeling – Understand and define the system’s structure and behavior.


2. Implementation – Code and build the software.
3. Testing – Verify functionality and quality.

K.V.S. 45
Software engineering Code:315323

4. Deployment – Release the system to end users.


5. Configuration Management – Control versions and changes.
6. Project Management – Plan, track, and manage work.
7. Environment – Support infrastructure and tools.

Agile
Feature RUP AUP
(Scrum/XP)
Process Heavyweight Lightweight Lightweight

Documentation Extensive Minimal Minimal

Phases Defined Defined Iteration-based

Iterative Yes Yes Yes

Flexibility Moderate High Very High

Not Strongly
Agile Principles Core foundation
emphasized emphasized

The Agile Unified Process is best seen as a bridge between traditional structured methods
and Agile development. It’s particularly useful for teams that:

 Like RUP's structure but want to be more agile


 Need some level of documentation and formal processes
 Work on medium-to-large or complex projects

K.V.S. 46

You might also like