Manangement of Information System 2 Chapter 4
Manangement of Information System 2 Chapter 4
Introduction to Software
Engineering
Prachi Shah
IT Dept.
BVM
Content
Introduction to software
Software characteristics
Components
Applications
Layered technologies
◦ Processes, Methods and tools
◦ Generic view of software engineering
Process models
◦ Waterfall model, Incremental model, RAD model
◦ Evolutionary process models: Prototype, Spiral and
concurrent development model
Agile Development
◦ Agility and agile process
◦ Extreme programming
◦ Other agile process models: ASD, Scrum, DSDM, FDD
Introduction to software
Software is...
(1) instructions (computer programs) that when executed provide
desired features, function, and performance;
(2) data structures that enable the programs to adequately
manipulate information, and
(3) descriptive information in both hard copy and virtual forms
that describes the operation and use of the programs.
Software products may be:
1.Generic- That means developed to be sold to range of different
customers.
2.Custom- That means developed for a single customer
according to their specifications.
Software Characteristics
Softwareis developed or engineered, not
manufactured.
◦ In software development process, problems can
be rectified.
Software does not “wear out”.
◦ Software cant be replaced by another
components like Hardware.
Most software is custom built rather than
being assembled from components.
◦ In Hardware components such as ICs,
capacitors and registers are assembled
according to design but this is not done while
building software.
Components
Any software consist of three major
components – Programs, Documents,
Operating Procedure.
Program is one part of entire software.
Documentation consists of various
Manuals.(SRS and Different diagrams)
Procedure represent instructions for initial
setup.(User guide, Installation guide)
Applications
System software
Application software
Engineering/scientific software
Embedded software
Product-line software
WebApps (Web applications)
AI software
What is Software Engineering?
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 (1).
Layered Technologies
Software engineering is discipline in which theories,
methods and tools are applied to develop professional
software product.
Process
Activity
Action
Task
Generic View of Software Engineering
A Software Process
Generic View of Software Engineering
Common Process Framework:
It is characterized by Process Framework Activities, Task
sets and Umbrella Activities.
Process Framework Activities:
1.Communication
2.Planning
3.Modeling
4. Constructions
5. Deployment (feedback of customer)
Task Set:
The task set defines the actual work done in order to achieve the
software objective. It is divided to :
1.Collection of software engineering work task
2. Project milestones
3. Software quality assurance points
Common Process Framework
(Continued)
Umbrella Activities:
1.Software project tracking and control (Progress and schedule)
2.Risk Management (may affect project outcomes)
3. SQA (to maintain quality)
4. Formal technical review (remove errors)
5. Software configuration management (effect of change)
6. Work product preparation and production (to create models,
log, documentation)
7. Reusability management
8. Measurement
Types of Process flows
Linear Process flow
Iterative Process flow
Evolutionary Process flow
Parallel Process flow
Process models
Waterfall Model / Linear Sequential Model
Incremental Model
Rapid Application Development (RAD) Model
Evolutionary Process Models:
◦ Prototype Model
◦ Spiral Model
◦ Concurrent Development Model
Waterfall Model
Waterfall Model
The project is divided in to separate distinct phases
Each next phase starts after finishing the previous
phase
Each phase communicate to next through pre
specified output
When an error is detected or revision is required it
is traced back to one previous phase at a time, until
it gets resolved at some earlier phase
Waterfall Strengths
Easy to understand, easy to use
Provides structure to inexperienced staff
Milestones are well understood
Sets requirements stability
Good for management control (plan, staff, track)
Works well when quality is more important than
cost or schedule
Waterfall deficiencies
All requirements must be known upfront
Deliverables created for each phase are
considered frozen(unmoving) – reduce
flexibility
Can give a false impression of progress
Does not reflect problem-solving nature of
software development – iterations of
phases
Integration is one big bang at the end
Little opportunity for customer to preview
the system (until it may be too late)
When to use the Waterfall Model
Requirements are very well known
Product definition is stable i.e. Deliverables of each
Phase can be frozen.
Technology is understood
New version of an existing product
Porting an existing product to a new platform.
Incremental SDLC Model
Incremental SDLC Model
Combines elements of Linear and Parallel process
flows
Construct a partial implementation of a total system
Then slowly add increased functionality
The incremental model prioritizes requirements of the
system and then implements them in groups
Each subsequent release of the system adds
function to the previous release, until all designed
functionality has been implemented
Incremental Model Strengths
Develop high-risk or major functions first
Each release delivers an operational product
Customer can respond to each build
Uses “divide and conquer” breakdown of tasks
Initial product delivery is faster
Customers get important functionality early
Risk of changing requirements is reduced
Incremental Model Weaknesses
Requires good planning and design
Requires early definition of a complete and
fully functional system to allow for the
definition of increments
Well-defined module interfaces are required
(some will be developed long before others)
Total cost of the complete system is not
lower
When to use the Incremental Model
Funding, schedule, program complexity, or need for
early realization of benefits.
Most of the requirements are known up-front but are
expected to evolve over time
A need to get basic functionality to the market early
On projects which have lengthy development
schedules
On a project with new technology
Rapid Application Development
(RAD) Model Team # n
M o d e lin g
business m odeling
dat a m odeling
process m odeling
C o n s t r u c t io n
com ponent reuse
Team # 2 aut om at ic code
Com municat ion generat ion
t est ing
Mo d eling
b u si n e ss m o d e l i n g
dat a m odeling
p ro ce ss m o d e l i n g
Planning
Co nst r uct io n De ployme nt
Team # 1 co m p o n e n t re u se int egrat ion
au t o m a t i c co d e
g e n e ra t i o n deliv ery
Mode ling t e st i n g feedback
business modeling
dat a modeling
process modeling
6 0 - 9 0 days
Rapid Application Development
Model (RAD)
An incremental software process model
Having a short development cycle
High-speed adoption of the waterfall model using a
component based construction approach
Creates a fully functional system within a very short
span time of 60 to 90 days
Multiple software teams work in parallel on different
functions
Modeling encompasses three major phases:
Business modeling, Data modeling and process
modeling
Construction uses reusable components, automatic
code generation and testing
RAD Strengths
Reduced cycle time and improved productivity with
fewer people means lower costs
Time-box approach reduce cost and schedule risk
Customer involved throughout the complete cycle
minimizes risk of not achieving customer satisfaction
and business needs
Focus moves from documentation to code
Uses modeling concepts to capture information about
business, data, and processes.
RAD Weaknesses
Requires a number of RAD teams
Requires commitment from both developer and
customer for rapid-fire completion of activities
Not suited when technical risks are high
Accelerated development process must give quick
responses to the user
Hard to use with inherited systems
Requires a system that can be modularized
When to use RAD
Reasonably well-known requirements
When we have CASE and other modeling tools
User involved throughout the life cycle
Project can be time-boxed
Functionality delivered in increments
High performance not required
Low technical risks
System can be modularized
Evolutionary Process models
Prototyping model
Spiral model
Concurrent Development model
Prototyping Model
Prototyping Model
This model uses constant user interaction, early in
the requirements gathering stage to produce a
prototype.
Developers build a prototype during the requirements
phase
Prototype is evaluated by end users
Users give corrective feedback
Developers further refine the prototype
When the user is satisfied, the prototype code is
brought up to the standards needed for a final
product.
Prototyping Steps
A preliminary project plan is developed
An partial high-level paper model is created
The model is source for a partial requirements
specification
A prototype is built with basic and critical attributes
to show how the eventual software system look like,
how input screens and output reports would look
like.
The designer builds
◦ the database
◦ user interface
◦ algorithmic functions
Prototyping Steps (continued)
The designer demonstrates the prototype, the user
reviews and evaluates for problems, more features
and suggests improvements.
Based on feedback the prototype is improved and
sent for review.
This loop continues until the user is satisfied
58
Extreme Programming (XP)
The most widely used agile process, originally
proposed by Kent Beck
More recently, a variant of XP, called Industrial XP
(IXP) has been proposed
IXP refines XP and targets the agile process
specifically for use within large organizations
Extreme Programming (XP)
Values
1. Communication
◦ Verbal collaboration between customers & developers
◦ The establishment of effective metaphors for communicating
important concepts
◦ continuous feedback
◦ avoidance of voluminous documentation as a communication
medium
2. Simplicity
◦ XP restricts developers to design only for immediate needs,
rather than consider future needs
Extreme Programming (XP)
Values (Contd.)
3. Feedback
◦ Derived from three sources: the implemented software itself,
the customer, and other software team members
◦ XP makes use of the unit test as its primary testing technique
◦ After new requirements are derived, the team provides the
customer with rapid feedback regarding cost and schedule
impact
4. Courage
◦ An agile XP team must have the discipline (courage) to design
for today, instead for tomorrow
5. Respect
◦ As they achieve successful delivery of software increments,
the team develops growing respect for the XP process
Extreme Programming (XP) Process
XP Process
XP Planning
o Begins with the creation of “user stories”
o Agile team assesses each story and assigns a cost
o Stories are grouped to for a deliverable increment
o A commitment is made on delivery date
o After the first increment “project velocity” is used to help define
subsequent delivery dates for other increments
o Project velocity is the number of customer stories implemented
during the first release
XP Design
o Follows the “Keep It Simple” principle
o Encourage the use of CRC cards
o CRC (class responsibility collaborator) cards identify and organize the
object-oriented classes that are relevant to the current software
7
increment
o For difficult design problems, suggests the creation of “spike
solutions”—a design prototype
o Encourages “refactoring”—an iterative refinement of the internal
program design
XP Process (Continued..)
XP Coding
◦ Recommends the construction of a unit test for a store before
coding commences
◦ Encourages “pair programming”
XP Testing
◦ All unit tests are executed daily
◦ “Acceptance tests” are defined by the customer and executed to
assess customer visible functionality
Issues related to XP
Requirements volatility
Conflicting customer needs
Requirements are expressed informally
Lack of formal design
Other Agile Process Models
Adaptive Software Development
Scrum
Dynamic Systems Development Method
Feature Driven Development
Adaptive Software Development
Adaptive Software Development
Originally proposed by Jim Highsmith
It is a technique for building complex software and
systems
Three phases:
◦ “Speculation” for project initiation
◦ “Collaboration” for requirements gathering
◦ “Learning” throughout the process
ASD — distinguishing features
◦ Mission-driven planning
◦ Uses time-boxing
◦ Communication, Teamwork, Individualism and Trust
◦ Component-based focus
◦ Produces software project teams having higher success
likelihood
Scrum
Scrum
Originally proposed by Schwaber and Beedle
Scrum—distinguishing features
◦ Development work is partitioned into “packets”
◦ Testing and documentation are on-going as the
product is constructed
Each process patterns defines a set of
development actions:
◦ Backlogs
◦ Sprints
◦ Scrum meetings
◦ Demos
Dynamic Systems Development
Method
Dynamic Systems Development
Method
Promoted by the DSDM Consortium
DSDM is an iterative software process, in which
only enough work is required for each increment to
facilitate movement to the next increment
DSDM—distinguishing features
◦ Active user involvement is imperative.
◦ DSDM teams must be empowered to make decisions.
◦ The focus is on frequent delivery of products.
◦ Fitness for business purpose is the essential criterion
for acceptance of deliverables.
◦ Iterative and incremental development is necessary to
converge on an accurate business solution.
◦ All changes during development are reversible.
◦ Requirements are baselined at a high level
◦ Testing is integrated throughout the life-cycle
◦ Can be combined with XP and ASD model
Feature Driven Development
(FDD)
Originally proposed by Peter Coad et al
FDD describes an adaptive, agile process
that can be applied to moderately sized and
larger software projects
FDD philosophy:
◦ Emphasizes collaboration among people on an
FDD team
◦ manages problem and project complexity using
feature-based decomposition
◦ communication of technical detail using verbal,
graphical and text-based means
Feature Driven Development
Model
Features in FDD
Emphasis is on defining “features” - a client-valued function that
can be implemented in two weeks or less
Features are small blocks of deliverable functionality, can be
described easily
Features can be organized into a hierarchical business-related
grouping
Since a feature is the FDD deliverable software increment, the
team develops operational features every two weeks
Project planning, scheduling, and tracking are driven by the
feature hierarchy, instead of an arbitrarily adopted software
engineering task set.
Uses a feature template
<action> the <result> <by | for | of | to> a(n) <object>
For example,
◦ Add the product to shopping cart
◦ Display the technical-specifications of the product
◦ Store the shipping-information for the customer
Feature Driven Development
Model
A features list is created and plan by feature is
conducted
The FDD approach defines five “collaborating”
framework activities
If deadline pressure is significant, it is critical to
determine if software increments (features) are
properly scheduled.
To accomplish this, FDD defines six milestones
during the design and implementation of a feature:
“design walkthrough, design, design inspection, code,
code inspection, promote to build”
Comparison of Agile and
Traditional Approaches