0% found this document useful (0 votes)
34 views41 pages

Software Engineering: Agile Processes Overview

The document provides an overview of software engineering, emphasizing its systematic approach to software development, which includes design, testing, and maintenance. It discusses various software process models, including Agile methodologies like Extreme Programming (XP), and outlines key principles and characteristics of good software. Additionally, it highlights the advantages and disadvantages of software engineering, as well as the importance of agility in responding to changing requirements.

Uploaded by

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

Software Engineering: Agile Processes Overview

The document provides an overview of software engineering, emphasizing its systematic approach to software development, which includes design, testing, and maintenance. It discusses various software process models, including Agile methodologies like Extreme Programming (XP), and outlines key principles and characteristics of good software. Additionally, it highlights the advantages and disadvantages of software engineering, as well as the importance of agility in responding to changing requirements.

Uploaded by

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

Software Engineering

Module -1 Software Process and Agile


Development
1. INTRODUCTION TO SOFTWARE ENGINEERING
2. SOFTWARE PROCESS.
3. PERSPECTIVE AND SPECIALIZED PROCESS MODEL
4. INTRODUCTION TO AGILITY AGILE PROCESS
5. EXTREME PROGRAMMING
6. XP PROCESS
INTRODUCTION TO SOFTWARE
ENGINEERING

The term software engineering is composed of two words, software


and engineering.
IEEE defines software engineering as: The application of a
systematic, disciplined, quantifiable approach to the development,
operation and maintenance of software.
Software Engineering is the process of designing, developing,
testing, and maintaining software. It is a systematic and disciplined
approach to software development that aims to create high-quality,
reliable, and maintainable software.
Key Principles
1. Modularity
2. Abstraction
3. Encapsulation
4. Reusability
5. Maintenance
6. Testing
7. Design Patterns
8. Agile methodologies
9. Continuous Integration & Deployment
CATEGORIES AND CHARACTERISTICS OF GOOD SOFTWARE
Categories:
Characteristics:
Operational Functionality
Transitional Usability
Maintenance Reliability
Performance
Security
Maintainability
Reusability
Scalability
Testability
NEED OF SOFTWARE ENGINEERING
Large software
Scalability
Cost
Dynamic Nature
Quality Management
Characteristics
1. Software is developed or engineered; it is not manufactured in the classical
sense.
2. Software doesn't "wear out.“

Failure rate as a function of time for hardware Idealized and actual failure curves for software
Cont.….
Advantages Of Software Engineering Disadvantages Of
Software Engineering
1. Improved Quality. High Upfront Cost.
2. Increased Productivity. Limited Flexibility.
3. Better Maintainability. Bureaucratic.
4. Reduced Costs. Complexity.
5. Increased Customer Satisfaction. Limited Creativity.
6. Better Team Collaboration. High Learning Curve.
7. Better Scalability. High Dependence on Tools.
8. Better Security. High Maintenance.
Software Application Domains
1. System software
2. Real-time software
3. Business software
4. Engineering and scientific software
5. Embedded software
6. Personal computer software
7. Web-based software
Software Engineering: A Layered
Technology
Software Process
 A process is a collection of activities, actions, and tasks that are performed
when some work product is to be created.
 An activity strives to achieve a broad objective and is applied regardless
of the application domain, size of the project, complexity of the effort, or
degree of rigor with which software engineering is to be applied.
 An action (e.g., architectural design) encompasses a set of tasks that
produce a major work product (e.g., an architectural design model).
 A task focuses on a small, but well-defined objective (e.g., conducting a
unit test) that produces a tangible outcome.
Cont.….
The five generic process framework activities:
1. Communication
2. Planning
3. Modelling
4. Construction
5. Deployment
Cont.….
Typical umbrella activities include:
1. Software project tracking and control.
2. Risk management
3. Software quality assurance
4. Technical reviews
5. Measurement
6. Software configuration management
7. Reusability management
8. Work product preparation and production
Software Engineering Practice
1. Understand the problem (communication and analysis).
2. Plan a solution (modelling and software design).
3. Carry out the plan (code generation).
4. Examine the result for accuracy (testing and quality assurance).
Cont.…. SE Paradigms
 Steps or phases in a software lifecycle fall generally into these categories:
1. Requirements
2. Specification (analysis)
3. Design
4. Implementation
5. Testing
6. Integration
7. Maintenance
8. Retirement
 Generally the software development cycle can be divided into the following
phases:
1. Requirements analysis and specification  Design ,Preliminary design ,
Detailed design
 Implementation Component Implementation , Component Integration,
System Documenting
 Testing Unit testing, Integration testing, System testing, Change
requirements and software upgrading
2. Verification - Validation
 Verification: "Are we building the product right"
 The software should conform to its specification
 Validation: "Are we building the right product" .
 The software should do what the user really requires
SOFTWARE PROCESS
A Generic Process Model
 A process was defined as a collection of work activities, actions, and tasks
that are performed when some work product is to be created.
 Each of these activities, actions, and tasks reside within a framework or
model that defines their relationship with the process and with one another.
Process flow—describes how the framework activities and the actions and tasks that
occur within each framework activity are organized with respect to sequence and time.

1. A Linear Process Flow 3. An evolutionary process flow


2. An iterative process flow 4. A parallel process flow
A linear process flow executes each of the five framework activities in
sequence, beginning with communication and culminating with deployment.

An iterative process flow repeats one or more of the activities before


proceeding to the next.
An evolutionary process flow executes the activities in a ―”circular”
manner. Each circuit through the five activities leads to a more complete
version of the software.

A parallel process flow executes one or more activities in parallel with


other activities (e.g., modelling for one aspect of the software might be
executed in parallel with construction of another aspect of the software).
Identifying a Task Set:
A task set defines the actual work to be done to accomplish the objectives of a software
engineering action.
For example, elicitation (more commonly called ―requirements gathering‖) is an important
software engineering action that occurs during the communication activity.
The goal of requirements gathering is to understand what various stakeholders want from the
software that is to be built.
Process Patterns:

 A process pattern describes a process-related problem that is encountered during


software engineering work, identifies the environment in which the problem has been
encountered, and suggests one or more proven solutions to the problem.

Ambler [Amb98] has proposed a template for describing a process pattern:


1. Pattern Name.
2. Forces.
3. Type. a. Stage pattern b. Task pattern c. Phase pattern d. Related Pattern.
PRESCRIPTIVE PROCESS MODELS

1. The Waterfall Model


2. Incremental Process Models

3. Evolutionary Process Models


The Waterfall Model
Incremental Process Models
Evolutionary Process Models
1. The Prototyping Model
2. Spiral Model
3. Concurrent Models

The Prototyping Model


Spiral Model
Concurrent Models
SPECIALIZED PROCESS MODELS
Various types of specialized models are-
1. Component based development
2. Formal methods model
3. Aspect oriented software development
Component based development

Following steps are applied for component based development

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.


Formal methods model

Aspect oriented software


development
Aspect-oriented software development (AOSD), often referred to as aspect-
oriented programming (AOP), is a relatively new software engineering
paradigm that provides a process and methodological approach for defining,
specifying, designing, and constructing aspects— ―mechanisms beyond
subroutines and inheritance for localizing the expression of a crosscutting
concern.
INTRODUCTION TO AGILITY

What is Agility?

Agility is the ability to respond quickly to changing needs. It encourages team


structures and attitudes that make effective communication among all
stakeholders.

Agility and
the Cost of Change
AN AGILE PROCESS

An Agile Process is characterized in a manner that addresses a number of key


assumptions about the majority of software project:

1. It is difficult to predict which software requirements will persist and which


will change.

2. It is difficult to predict how customer priorities will change.

3. It is difficult to predict how much design is necessary before construction.

4. Analysis, design, construction, and testing are not as predictable.


1. To satisfyAgility Principles
the customer through early and continuous delivery of software.

2. Welcome changing requirements, even late in development.

3. Deliver working software frequently, from a couple of weeks to a couple of months.

4. ‘Customers and developers must work together daily throughout the project.

5. Build projects around motivated individuals.

6. Emphasis on face-to-face communication.

7. Working software is the primary measure of progress.

8. Agile processes promote sustainable development.

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. Self-organizing teams produce the best architectures/ requirements/ design.

12. The team reflects on how to become more effective at regular intervals.
EXTREME PROGRAMMING (XP)

The best-known and a very influential agile method, Extreme Programming


(XP) takes an ‗extreme‘ approach to iterative development.
New versions may be built several times per day;
 Increments are delivered to customers every 2 weeks;
All tests must be run for every build and the build is only accepted if tests
run successfully. This is how XP supports agile principles.
 People not process through pair programming, collective ownership
and a process that avoids long working hours.
 Change supported through regular system releases. Maintaining
simplicity through constant refactoring of code.
Cont.…
Cont.….
XP values

 XP is comprised of five values such as:

1. Communication
2. Simplicity
3. Feedback
4. Courage
5. Respect.
Cont.….
The XP Process

 Extreme programming uses an object-oriented approach for software


development. There are four framework activities involved in XP Process
are shown in the Figure.

1. Planning

2. Designing

3. Coding

4. Testing
Other Agile Process Models

1. Adaptive Software Development (ASD)


2. Dynamic Systems Development Method (DSDM)
3. Scrum
4. Crystal
5. Feature Driven Development (FDD)
6. Agile Modelling (AM)
7. Lean Software Development (LSD)
8. Agile Unified Process (AUP)
Adaptive Software Development (ASD)

Adaptive Software Development (ASD) is a technique for building


complex software and ASD incorporates three phases Speculation,
Collaboration, and Learning systems.
Dynamic Systems Development Methods (DSDM)

The Dynamic Systems Development Method is an agile software


development approach that “provides a framework for building and
maintaining systems which meet tight time constraints through the
use of incremental prototyping in a controlled project environment”.
Scrum
Scrum principles are consistent with the agile manifesto and are
used to guide development activities within a process that
incorporates the five framework activities: requirements, analysis,
design, evolution, and delivery.
Crystal
The Crystal methodology is one of the most lightweight, adaptable
approaches to software development. Crystal is actually comprised of
a family of agile methodologies such as Crystal Clear, Crystal Yellow,
Crystal Orange and others, whose unique characteristics are driven by
several factors such as team size, system criticality, and project
priorities.
Feature Driven
Development(FDD)
 FDD is a model-driven, short-iteration process.

 The features are small, “useful in the eyes of the client” results.

 FDD designs the rest of the development process around feature delivery using the following eight practices:

1. Domain Object Modelling

2. Developing by Feature

3. Component/Class Ownership

4. Feature Teams

5. Inspections

6. Configuration Management

7. Regular Builds

8. Visibility of progress and results


Agile Modelling (AM)

Agile Modelling (AM) is a practice-based methodology for effective modelling and documentation
of software-based systems.
Simply put, Agile Modelling (AM) is a collection of values, principles, and practices for modelling
software that can be applied on a software development project in an effective and light-weight
manner.

Lean Software Development (LSD)


Lean Software Development (LSD) has adapted the principles of lean manufacturing to the world of software
engineering.
The lean principles that inspire the LSD process can be summarized as eliminate waste, build quality in, create
knowledge, defer commitment, deliver fast, respect people, and optimize the whole.

Agile Unified Process (AUP)


AUP adopts a ―serial in the large‖ an ―iterative in the small‖ philosophy for building computer-based systems.
By adopting the classic UP phased activities –inception, elaboration, construction, and transition.
It enables a team to visualize the overall process flow for a software project. Each AUP iteration addresses the
following activities:
1. Modelling
2. Implementation
3. Testing
4. Deployment
5. Configuration and project management
6. Environment management
Questions To Refer
1. Explain the characteristics of software.
2. Explain in detail about software process.
3. Explain in detail about Extreme programming XP process.
4. What is Agile process? Identify the principles of agile software development.
5. Compare the following life cycle models based on their distinguishing factors, strengths and weakness –
Waterfall Model, RAD Model, Spiral Model and Formal Method Model.
6. Explain iterative waterfall and Spiral model for software lifecycle and various activities in each phase.
7. List and explain key principles of software engineering.
8. Explain different process models of Software Engineering in detail.
9. List and explain agile process models.

You might also like