Documente Academic
Documente Profesional
Documente Cultură
(MCA-403)
Prepared By:
Mr. Sujit Kumar Singh
skrsingh1@gmail.com
A.P in M.C.A department
MCA
1/338
Unit -1
Software Engineering Paradigms: Software Characteristics, Software myths,
Software Applications,
Software Engineering Definitions, Software Process Models, Process iteration,
Process activities,
Computer-aided software engineering (CASE) and CASE Tools.
Software Project Management: Management activities, Project planning,
Project scheduling, Risk management and activities.
MCA
2/338
Objectives
To introduce software engineering and to
explain its importance
To set out the answers to key questions about
software engineering
To introduce ethical and professional issues
and to explain why they are of concern to
software engineers
Software Engineering
The economies of ALL developed nations are
dependent on software.
More and more systems are software controlled
Software engineering is concerned with
theories, methods and tools for professional
software development.
Expenditure on software represents a
significant fraction of GNP in all developed
countries.
What is software
engineering?
Software engineering is an engineering
discipline that is concerned with all aspects of
software production.
Software engineers should adopt a systematic
and organised approach to their work and use
appropriate tools and techniques depending on
the problem to be solved, the development
constraints and the resources available.
Engineering
Engineering is
The application of scientific principles and methods to the
construction of useful structures & machines
Examples
Mechanical engineering
Computer engineering
Civil engineering
Chemical engineering
Electrical engineering
Nuclear engineering
Aeronautical engineering
Software Engineering
The reality is it is finally beginning to arrive
Computer science one the scientific basis
Years of studies/experience/statistics provide basis too
Many aspects have been made systematic
Methods/methodologies/techniques
Languages
Tools
Processes
Why Engineer
Software ?
The problem is complexity
Many sources, but size is a key:
Mozilla contains 3 Million lines of code
UNIX contains 4 million lines of code
Windows 2000 contains 108 lines of code
Second is role and combinatories of state
Third is uncertainty of inputs and their timing
Fourth is the continuing changing environment and demands.
Software engineering is about managing all the sources of complexity to
produce effective software.
Software Engineering
in a Nutshell
Scope
study of software process, development/management principles,
techniques, tools and notations
Goal
production of quality software, delivered on time, within budget,
satisfying customers requirements and users needs
Difficulties?
Software Engineering
Software Programming
Software engineering
System families
Reuse to amortize costs
Maintenance accounts for 60%-80% of overall
development costs
Software
Engineering
Objectives
Objectives
To introduce software process models
To describe three generic process models and
when they may be used
To describe outline process models for
requirements engineering, software
development, testing and evolution
To explain the Rational Unified Process model
To introduce CASE technology to support
software process activities
The
software
process
Software
Process
A structured set of activities required to develop a
software system
Specification;
Design;
Validation;
Evolution.
Topics covered
Software
Process
What is a software
process?
A set of activities whose goal is the development or evolution
of software.
Generic activities in all software processes are:
Specification - what the system should do and its
development constraints
Development - production of the software system
Validation - checking that the software is what the
customer wants
Evolution - changing the software in response to changing
demands.
What is a software
process model?
A simplified representation of a software process, presented
from a specific perspective.
Examples of process perspectives are
Workflow perspective - sequence of activities;
Data-flow perspective - information flow;
Role/action perspective - who does what.
Evolutionary development
Specification, development and validation are interleaved.
WaterfallModels
model
Waterfall
Requirements
defi nition
System and
software design
Implementa
tion
and unit testing
Integration and
system testing
Operation and
maintenance
Phases of
Waterfall
Waterfall
model
phases
Models
Waterfall model
problems
Inflexible partitioning of the project into distinct stages makes
it difficult to respond to changing customer requirements.
Therefore, this model is only appropriate when the
requirements are well-understood and changes will be fairly
limited during the design process.
Few business systems have stable requirements.
The waterfall model is mostly used for large systems
engineering projects where a system is developed at several
sites.
Evolutionary
Evolutionary
Model
development
Exploratory development
Objective is to work with customers and to evolve a final
system from an initial outline specification. Should start
with well-understood requirements and add new features as
proposed by the customer.
Throw-away prototyping
Objective is to understand the system requirements. Should
start with poorly understood requirements to clarify what is
really needed.
Evolutionary
Evolutionary
development
Development
Concurrent
activities
Specifi ca
tion
Outline
description
Development
Validation
Initial
version
Intermediate
versions
Final
version
Evolutionary
Evolutionary development
Development
Problems
Lack of process visibility;
Systems are often poorly structured;
Special skills (e.g. in languages for rapid
prototyping) may be required.
Applicability
For small or medium-size interactive systems;
For parts of large systems (e.g. the user interface);
For short-lifetime systems.
Component-based
software engineering
Based on systematic reuse where systems are integrated from
existing components or COTS (Commercial-off-the-shelf)
systems.
Process stages
Component analysis;
Requirements modification;
System design with reuse;
Development and integration.
This approach is becoming increasingly used as component
standards have emerged.
Reuse-oriented
development
Requirements
specifi cation
Component
analysis
Requirements
modifi cation
System design
with reuse
Development
and integ
ration
System
validation
Process iteration
System requirements ALWAYS evolve in the course of a
project so process iteration where earlier stages are reworked
is always part of the process for large systems.
Iteration can be applied to any of the generic process models.
Two (related) approaches
Incremental delivery;
Spiral development.
Incremental delivery
Rather than deliver the system as a single delivery, the
development and delivery is broken down into increments
with each increment delivering part of the required
functionality.
User requirements are prioritised and the highest priority
requirements are included in early increments.
Once the development of an increment is started, the
requirements are frozen though requirements for later
increments can continue to evolve.
Incremental development
Defi ne outline
requirements
Develop system
increment
Assign requirements
to increments
Validate
increment
Design system
architectur
e
Integrate
increment
Validate
system
Final
system
System incomplete
Incremental development
advantages
Customer value can be delivered with each increment so
system functionality is available earlier.
Early increments act as a prototype to help elicit
requirements for later increments.
Lower risk of overall project failure.
The highest priority system services tend to receive the most
testing.
Spiral development
Process is represented as a spiral rather than as a sequence of
activities with backtracking.
Each loop in the spiral represents a phase in the process.
No fixed phases such as specification or design - loops in the
spiral are chosen depending on what is required.
Risks are explicitly assessed and resolved throughout the
process.
Spiral development of
Spiral
model
of
the
software
process
Software Process
Determine objectives,
alternatives and
constraints
Evaluate alternatives,
identify, resolve risks
Risk
analysis
Risk
analysis
Risk
analysis
REVIEW
Requirements plan
Life-cycle plan
Plan ne xt phase
Operational
protoype
Pr ototype 3
Pr ototype 2
Risk
analysis Pr ototype 1
S/W
requirements
Development
plan
Requirement
validation
Integration
and test plan
Design
V&V
Acceptance
test
Service
Product
design
Detailed
design
Code
Unit test
Integration
test
Develop, verify
next-level product
What
Whatare
arethe
theattributes
attributesofof
good
software?
Software?
The software should deliver the required functionality and
performance to the user and should be maintainable, dependable
and acceptable.
Maintainability
Software must evolve to meet changing needs;
Dependability
Software must be trustworthy;
Efficiency
Software should not make wasteful use of system resources;
Acceptability
Software must accepted by the users for which it was designed. This
means it must be understandable, usable and compatible with other
systems.
Rules
Constraints applied to system models;
Recommendations
Advice on good design practice;
Process guidance
What activities to follow.
Process activities
Software specification
Software design and implementation
Software validation
Software evolution
Software specification
The process of establishing what services are required and the
constraints on the systems operation and development.
Requirements engineering process
Feasibility study;
Requirements elicitation and analysis;
Requirements specification;
Requirements validation.
The requirements
engineering process
Feasibility
study
Requirements
elicitation and
analy sis
Requirements
specifi cation
Requirements
validation
Feasibility
report
System
models
User and system
requirements
Requirements
document
Architectural design
Abstract specification
Interface design
Component design
Data structure design
Algorithm design
Abstract
specifi ca
tion
Interface
design
Component
design
Data
structur
e
design
Algorithm
design
System
architectur
e
Software
specifi ca
tion
Interface
specifi ca
tion
Component
specifi ca
tion
Data
structur
e
specifi ca
tion
Algorithm
specifi ca
tion
Design pr
oducts
Structured methods
Systematic approaches to developing a software design.
The design is usually documented as a set of graphical models.
Possible models
Object model;
Sequence model;
State transition model;
Structural model;
Data-flow model.
Programming and
debugging
Translating a design into a program and removing errors from
that program.
Programming is a personal activity - there is no generic
programming process.
Programmers carry out some program testing to discover
faults in the program and remove these faults in the debugging
process.
Locate
error
Design
error repair
Repair
error
Re-test
program
Software validation
Verification and validation (V & V) is intended to show that a
system conforms to its specification and meets the
requirements of the system customer.
Involves checking and review processes and system testing.
System testing involves executing the system with test cases
that are derived from the specification of the real data to be
processed by the system.
Component
testing
System
testing
Ac c eptanc e
testing
Testing stages
Component or unit testing
Individual components are tested independently;
Components may be functions or objects or coherent
groupings of these entities.
System testing
Testing of the system as a whole. Testing of emergent
properties is particularly important.
Acceptance testing
Testing with customer data to check that the system
meets the customers needs.
Testing phases
Requirements
specifi ca
tion
System
specifi ca
tion
System
integration
test plan
Acceptance
test plan
Service
System
design
Acceptance
test
Detailed
design
Sub-system
integration
test plan
System
integration test
Sub-system
integration test
Module and
unit code
and test
Software evolution
Software is inherently flexible and can change.
As requirements change through changing business
circumstances, the software that supports the business must
also evolve and change.
Although there has been a demarcation between development
and evolution (maintenance) this is increasingly irrelevant as
fewer and fewer systems are completely new.
Software Qualities
Qualities are goals in the practice of software engineering, and
directly relate to many of the guiding principles.
External vs. Internal qualities
Product vs. Process qualities
Software Qualities
Critical Quality Attributes
Correctness
Maintainability
Dependability
Usability
Reliability
Other Attributes
Completeness
Compatibility
Portability
Internationalization
Understandability
Scalability
Robustness
Testability
Reusability
Customizability
Efficiency
Correctness
ideal quality
established w.r.t. the requirements/specification
absolute
Reliability
statistical property
probability that software will operate as expected over a given
period of time/inputs
relative
Robustness
reasonable behavior in unforeseen circumstances
subjective
a specified requirement is an issue of correctness;
an unspecified requirement is an issue of robustness
Usability
ability of end-users to easily use software
extremely subjective
Understandability
ability of developers to easily understand produced artifacts
internal product quality
subjective
Verifiability
ease of establishing desired properties
performed by formal analysis or testing
internal quality
Performance
equated with efficiency
assessable by measurement, analysis, and simulation
Evolvability
ability to add or modify functionality
addresses adaptive and perfective maintenance
problem: evolution of implementation is too easy
evolution should start at requirements or design
Reusability
ability to construct new software from existing pieces
must be planned for
occurs at all levels: from people to process, from requirements to
code
Interoperability
ability of software (sub)systems to cooperate with others
easily integratable into larger systems
common techniques include APIs, distributed programming
interfaces (CORBA, DCOM), plug-in protocols, etc.
Scalability
ability of a software system to grow in size while maintaining its
properties and qualities
assumes maintainability and evolvability
goal of component-based development
Software Lifecycle
Models
Waterfall Model
V Model
Phased Development Model
Incremental Model
Prototyping Model
Spiral Model
RequirementsPlan/Schedule
Design
Replan/Reschedule
Implementation
Integration
Validation
Deployment
V Model
OPERATION
& MAINTENANCE
Validate requirements
REQUIREMENTS
ANALYSIS
ACCEPTANCE
TESTING
SYSTEM
DESIGN
Verify design
PROGRAM
DESIGN
SYSTEM
TESTING
CODING
Prototyping Model
Listen to
Build/Revis
e
Customer
Mock-Up
Customer
Test-drives
Mock-up
Prototyping Model
LIST OF
REVISIONS
revise
prototype
LIST OF
REVISIONS
LIST OF
REVISIONS
user/
customer
review
PROTOTYPE
REQUIREMENTS
SYSTEM
REQUIREMENTS
(sometimes informal
or incomplete)
PROTOTYPE
DESIGN
PROTOTYPE
SYSTEM
TEST
DELIVERED
SYSTEM
Spiral development
Spiral development
Spiral model of the software process
Determine objectives,
alternatives and
constraints
Evaluate alternatives,
identify, resolve risks
Risk
analysis
Risk
analysis
Risk
analysis
REVIEW
Requirements plan
Life-cycle plan
Plan ne xt phase
Operational
protoype
Pr ototype 3
Pr ototype 2
Risk
analysis Pr ototype 1
S/W
requirements
Development
plan
Requirement
validation
Integration
and test plan
Design
V&V
Service
Product
design
Detailed
design
Code
Unit test
Acceptance
test
Integration
test
Develop , verify
next-level product
Objective setting
Specific objectives for the phase are identified.
Risk assessment and reduction
Risks are assessed and activities put in place to reduce the key
risks.
Development and validation
A development model for the system is chosen which can be any
of the generic models.
Planning
The project is reviewed and the next phase of the spiral is planned.
Component-based
software engineering
Reuse-oriented
development
Requirements
specifi cation
Component
analysis
Requirements
modifi cation
System design
with reuse
Development
and integ
ration
System
validation
Component-Based
Development
Develop generally applicable components of a reasonable size
and reuse them across systems
Make sure they are adaptable to varying contexts
Extend the idea beyond code to other development artifacts
Question: what comes first?
Integration, then deployment
Deployment, then integration
Different Flavors of
Components
Process iteration
System requirements ALWAYS evolve in the course of a
project so process iteration where earlier stages are reworked
is always part of the process for large systems.
Iteration can be applied to any of the generic process models.
Two (related) approaches
Incremental delivery;
Spiral development.
Incremental delivery
Incremental development
Defi ne outline
requirements
Develop system
increment
Assign requirements
to increments
Validate
increment
Design system
architectur
e
Integrate
increment
Validate
system
Final
system
System incomplete
Incremental development
advantages
Customer value can be delivered with each increment so
system functionality is available earlier.
Early increments act as a prototype to help elicit requirements
for later increments.
Lower risk of overall project failure.
The highest priority system services tend to receive the most
testing.
Extreme programming
An approach to development based on the development and
delivery of very small increments of functionality.
Relies on constant code improvement, user involvement in the
development team and pairwise programming.
Covered in Chapter 17
RequirementsPlan/Schedule
Design
Replan/Reschedule
Implementation
Integration
Validation
Deployment
The requirements
engineering process
Feasibility
study
Requirements
elicitation and
analy sis
Requirements
specifi cation
Requirements
validation
Feasibility
report
System
models
User and system
requirements
Requirements
document
Architectural design
Abstract specification
Interface design
Component design
Data structure design
Algorithm design
Abstract
specifi ca
tion
Interface
design
Component
design
Data
structur
e
design
Algorithm
design
System
architectur
e
Software
specifi ca
tion
Interface
specifi ca
tion
Component
specifi ca
tion
Data
structur
e
specifi ca
tion
Algorithm
specifi ca
tion
Design pr
oducts
Structured methods
Architecture/Design
Requirements/Specification Architecture/Design
architecture: decompose software into
modules/objects/components with interfaces
design: develop module/object/component specifications
(algorithms, data types) and communication details
maintain a record of design decisions and traceability
specifies how the software product is to do its tasks
Difficulties
miscommunication between module designers
design may be inconsistent, incomplete, ambiguous
How to achieve a requirement may be unknown
Planning/Scheduling
Before undertaking cost of development, need to estimate the
costs/sizes of various steps
Estimate Code size
Estimate tools needed
Estimate personnel
Often Done after Architecture and before rest of design, but
revised again after full design.
Develop schedule for aspects of project lifecycle
If doing predictive/quantitative SE, build on past experience,
considering how to improve process.
Implementation &
Integration
Design Implementation
implement modules; verify that they meet their
specifications
combine modules according to the design
specifies how the software design is realized
Difficulties
module interaction errors
order of integration may influence quality and
productivity
Programming and
debugging
Translating a design into a program and removing errors from
that program.
Programming is a personal activity - there is no generic
programming process.
Programmers carry out some program testing to discover
faults in the program and remove these faults in the debugging
process.
Locate
error
Design
error repair
Repair
error
Re-test
program
Software validation
Verification and
Validation
Analysis
Static
Science
Formal verification
Informal reviews and walkthroughs
Testing
Dynamic
Engineering
White box vs. black box
Structural vs. behavioral
Issues of test adequacy
Component
testing
System
testing
Ac c eptanc e
testing
Testing stages
System testing
Acceptance testing
Testing phases
Requirements
specifi ca
tion
System
specifi ca
tion
System
integration
test plan
Acceptance
test plan
Service
System
design
Acceptance
test
Detailed
design
Sub-system
integration
test plan
System
integration test
Sub-system
integration test
Module and
unit code
and test
Quality Assurance
30
1
Requirements Specification
Planning
4
Design
10
ImplementationIntegration
Maintenance
Deployment
Completed End-User Documentation
Separate from Developer documentation
Installation Process(es)
Customer test procedures
Support Processes (help desk, etc)
Trouble Tracking
Repair/rework to address bugs
Regression testing (as bugs are fixed)
Maintenance &
Evolution
Operation Change
maintain software during/after user operation
determine whether the product still functions correctly
Difficulties
Rigid or fragile designs
lack of documentation
personnel turnover
Software evolution
Software is inherently flexible and can change.
As requirements change through changing business
circumstances, the software that supports the business must
also evolve and change.
Although there has been a demarcation between development
and evolution (maintenance) this is increasingly irrelevant as
fewer and fewer systems are completely new.
System evolution
Defi ne system
requirements
Assess existing
systems
Existing
systems
Propose system
changes
Modify
systems
New
system
Car
Driver
Configuration
Management
CM is a discipline whose goal is to control
changes to large software through the
functions of
Component identification
Change tracking
Version selection and baselining
Managing simultaneous updates (team work)
Build processes with automated regression
testing
Software manufacture
CM in Action
1.0
1.1
1.2
2.0
1.3
2.1
1.4
2.2
1.5
4.0
3.0
3.1
Build Tools
Necessary for large projects. Keep track of what depends upon
on what, and what needs recompiled or regenerated when
things change.
Important even for small 1-person projects as soon as you have
multiple files.
Can do much more than just compile, can generate document
(if using code-based docs), generate manufactured code (e.g.
SOAP interfaces), even send emails or suggest alternatives.
E.g. in our IUE project, edit some files compile was one in
seconds, edit another and a rebuild taking days would be
needed. If more than 30 files impacted, our make process
recommend a new branch to avoid conflicts!
Debugging Tools
How do you see what the code is really doing (not what it
seems it should do)?
How to you see what happened to code during compiler
optimization?
How do you find/track down the cause of Segfault/GFP in
code youve never seen before?
How can you test various possibilities without generating
special code or recompiling.
How do you track down a memory leak?
Debugging Tools
Tools, workbenches, environments
CASE
technology
Workbenches
Tools
Editors
Compilers
File
comparators
Analysis and
design
Multi-method
workbenches
Integrated
environments
Programming
Single-method
workbenches
Environments
Process-centr
ed
environments
Testing
General-purpose
workbenches
Language-specifi c
workbenches
Static workflows
Workflow
Description
Businessmodelling
Requirements
Actorswhointeractwiththesystemareidentifiedandusecasesare
developedtomodelthesystemrequirements.
Analysisanddesign
Adesignmodeliscreatedanddocumentedusingarchitectural
models,componentmodels,objectmodelsandsequencemodels.
Implementation
Thecomponentsinthesystemareimplementedandstructuredinto
implementationsubsystems.Automaticcodegenerationfromdesign
modelshelpsacceleratethisprocess.
Test
Testingisaniterativeprocessthatiscarriedoutinconjunctionwith
implementation.Systemtestingfollowsthecompletionofthe
implementation.
Deployment
Aproductreleaseiscreated,distributedtousersandinstalledintheir
workplace.
Configurationand
changemanagement
Thissupportingworkflowmanagedchangestothesystem(see
Chapter29).
Projectmanagement
Thissupportingworkflowmanagesthesystemdevelopment(see
Chapter5).
Environment
Thisworkflowisconcernedwithmakingappropriatesoftwaretools
availabletothesoftwaredevelopmentteam.
Computer-aided
software engineering
Case technology
Case technology has led to significant improvements in the
software process. However, these are not the order of
magnitude improvements that were once predicted
Software engineering requires creative thought - this is not
readily automated;
Software engineering is a team activity and, for large
projects, much time is spent in team interactions. CASE
technology does not really support these.
CASE classification
Functional tool
classification
Tool type
Examples
Planning tools
Editing tools
Prototyping tools
Method-support tools
Language-processing tools
Compilers, interpreters
Testing tools
Debugging tools
Documentation tools
Re-engineering tools
CASE integration
Tools
Support individual process tasks such as design
consistency checking, text editing, etc.
Workbenches
Support a process phase such as specification or design,
Normally include a number of integrated tools.
Environments
Support all or a substantial part of an entire software
process. Normally include several integrated
workbenches.
Software Process
Qualities
Process is reliable if it consistently leads to high-quality
products
Process is robust if it can accommodate unanticipated
changes in tools and environments
Process performance is productivity
Process is evolvable if it can accommodate new
management and organizational techniques
Process is reusable if it can be applied across projects
and organizations
Assessing Software
Qualities
Qualities must be measurable/quantifiable
Measurement requires that qualities be precisely defined
Improvement requires accurate and consistent
measurements
For most SD groups, qualities are informally defined and are
difficult to assess
Characteristics of
Software Products
General characteristics
Usability
Maintainability
Dependability
Efficiency
Good software products require good programming,
Software as a
Product
Software is expensive!!
Every software project has a trade-off
between:
Functionality
Resources (cost)
Timeliness
Risk Management
What can go wrong in a software project?
How can the risk be reduced?
Programming and
Unit Testing
The software design is realized as a set of
programs or program units. (Written
specifically, acquired from elsewhere, or
modified.)
Individual components are tested against
specifications.
Integration and
System Testing
The individual program units are:
integrated and tested as a complete system
tested against the requirements as specified
delivered to the client
Operation and
Maintenance
Operation: The system is put into practical use.
Maintenance: Errors and problems are
identified and fixed.
Evolution: The system evolves over time as
requirements change, to add new functions or
adapt the technical environment.
Phase out: The system is withdrawn from
service.
Projects
Teams that are planning to carry out the
Internet Butler project, please meet with me
after the lecture.
Documentation
Reasons for documentation:
visibility (e.g., project plan, interim report)
user support (e.g., user manual)
team communication (e.g., interface specifications)
maintenance and evolution (e.g., requirements)
Characteristics of documentation:
accurate and kept current
appropriate for audience
maintained online (usually)
simple but professional in style and appearance
Documentation is expensive --> Quality not volume
Form of
Documentation
External
Printed
Web site
Internal
Program documentation
Program context (e.g., copyright notices)
Requirements
Analysis
1. Understand the requirements in depth:
Domain understanding
Examples: Tote Investors, Philips light bulbs
Stakeholders
Example: Andrew project
Interviews with
Clients
Clients may have only a vague concept of requirements.
Prepare before you meet with them
Keep full notes
If you don't understand, delve further
Small group meetings are often most effective
Clients often confuse the current system with the underlying
requirement.
Requirements
Analysis
2. Organize the requirements:
Classification into coherent clusters
(e.g., legal requirements)
Recognize and resolve conflicts
(e.g., functionality v. cost v. timeliness)
Example: Dartmouth general ledger system
Copyright
A copyright gives the owner the exclusive right to:
reproduce
distribute
perform
display
license
Copyright
Copyright at creation
First sale
Fair use
Infringement (contamination)
International differences
Moral rights
Copyright registration
S/W Project
Objectives
Management
To explain the main tasks undertaken by project managers
To introduce software project management and to describe its
distinctive characteristics
To discuss project planning and the planning process
To show how graphical schedule representations are used by
project management
To discuss the notion of risks and the risk management process
S/W Project
Topics covered
Management
Management activities
Project planning
Project scheduling
Risk management
S/W
Project
Software
project
Management
management
Concerned with activities involved in ensuring
that software is delivered on time and on
schedule and in accordance with the
requirements of the organisations developing
and procuring the software.
Project management is needed because software development
is always subject to budget and schedule constraints that are
set by the organisation developing the software.
distinctions
Management Activities
Management
activities
Proposal writing.
Project planning and scheduling.
Project costing.
Project monitoring and reviews.
Personnel selection and evaluation.
Report writing and presentations.
Project Staffing
Project
staffing
May not be possible to appoint the ideal people to work on a
project
Project budget may not allow for the use of highly-paid staff;
Staff with the appropriate experience may not be available;
An organisation may wish to develop employee skills on a
software project.
Project Planning
Project
planning
Probably the most time-consuming project management
activity.
Continuous activity from initial concept through
to system delivery. Plans must be regularly revised as new
information becomes available.
Various different types of plan may be developed to support
the main software project plan that is concerned with schedule
and budget.
Types of
of Project
Types
projectPlan
plan
Plan
Description
Quality plan
Validation plan
Configuration
management plan
Maintenance plan
Staff
plan.
development Describes how the skills and experience of the project team
members will be developed. See Chapter 25.
Project Plan
plan Structure
structure
Project
Introduction.
Project organisation.
Risk analysis.
Hardware and software resource requirements.
Work breakdown.
Project schedule.
Monitoring and reporting mechanisms.
Project Scheduling
scheduling
Project
Split project into tasks and estimate time and resources
required to complete each task.
Organize tasks concurrently to make optimal
use of workforce.
Minimize task dependencies to avoid delays
caused by one task waiting for another to complete.
Dependent on project managers intuition and experience.
Identify
activities
Software
requirements
Identify activity
dependencies
Estimate resources
for activities
Allocate people
to activities
Create project
charts
Activity char
ts
and bar char
ts
Risk management
Risk management is concerned with identifying risks and
drawing up plans to minimise their effect on a project.
A risk is a probability that some adverse circumstance will
occur
Project risks affect schedule or resources;
Product risks affect the quality or performance of the
software being developed;
Business risks affect the organisation developing or
procuring the software.
Risk
identifi cation
Risk analysis
Risk planning
Risk
monitoring
List of potential
risks
Prioritised risk
list
Risk avoidance
and contingency
plans
Risk
assessment
Risk identification
Technology risks.
People risks.
Organisational risks.
Requirements risks.
Estimation risks.
Possiblerisks
Technology
Thedatabaseusedinthesystemcannotprocessasmanytransactionspersecond
asexpected.
Softwarecomponentsthatshouldbereusedcontaindefectsthatlimittheir
functionality.
People
Itisimpossibletorecruitstaffwiththeskillsrequired.
Keystaffareillandunavailableatcriticaltimes.
Requiredtrainingforstaffisnotavailable.
Organisational
Theorganisationisrestructuredsothatdifferentmanagementareresponsiblefor
theproject.
Organisationalfinancialproblemsforcereductionsintheprojectbudget.
Tools
ThecodegeneratedbyCASEtoolsisinefficient.
CASEtoolscannotbeintegrated.
Requirements
Changestorequirementsthatrequiremajordesignreworkareproposed.
Customersfailtounderstandtheimpactofrequirementschanges.
Estimation
Thetimerequiredtodevelopthesoftwareisunderestimated.
Therateofdefectrepairisunderestimated.
Thesizeofthesoftwareisunderestimated.
Risk analysis
Assess probability and seriousness of each risk.
Probability may be very low, low, moderate, high or very high.
Risk effects might be catastrophic, serious, tolerable or
insignificant.
Probability
Effects
Organisationalfinancialproblemsforcereductionsin
theprojectbudget.
Low
Catastrophic
Itisimpossibletorecruitstaffwiththeskillsrequired
fortheproject.
High
Catastrophic
Keystaffareillatcriticaltimesintheproject.
Moderate
Serious
Softwarecomponentsthatshouldbereusedcontain
defectswhichlimittheirfunctionality.
Moderate
Serious
Changestorequirementsthatrequiremajordesign
reworkareproposed.
Moderate
Serious
Theorganisationisrestructuredsothatdifferent
managementareresponsiblefortheproject.
High
Serious
Probability
Effects
Thedatabaseusedinthesystemcannotprocessas
manytransactionspersecondasexpected.
Moderate
Serious
Thetimerequiredtodevelopthesoftwareis
underestimated.
High
Serious
CASEtoolscannotbeintegrated.
High
Tolerable
Customersfailtounderstandtheimpactof
requirementschanges.
Moderate
Tolerable
Requiredtrainingforstaffisnotavailable.
Moderate
Tolerable
Therateofdefectrepairisunderestimated.
Moderate
Tolerable
Thesizeofthesoftwareisunderestimated.
High
Tolerable
ThecodegeneratedbyCASEtoolsisinefficient.
Moderate
Insignificant
Risk planning
Consider each risk and develop a strategy to manage that risk.
Avoidance strategies
The probability that the risk will arise is reduced;
Minimisation strategies
The impact of the risk on the project or product will be
reduced;
Contingency plans
If the risk arises, contingency plans are plans to deal with
that risk;
Risk monitoring
Assess each identified risks regularly to decide whether or not
it is becoming less or more probable.
Also assess whether the effects of the risk have changed.
Each key risk should be discussed at management progress
meetings.
RiskObjectives
monitoring
To introduce the concepts of user and system requirements
To describe functional and non-functional requirements
To explain how software requirements may be organised in a
requirements document.
Software
Requirement
Objectives
Objectives
To introduce the concepts of user and system requirements
To describe functional and non-functional requirements
To explain how software requirements may be organised in a
requirements document.
Objectives
Risk
monitoring
To introduce the concepts of user and system requirements
To describe functional and non-functional requirements
To explain how software requirements may be organised in a
requirements document.
Role of Project
Manager
Create and maintain the schedule
Should track progress against schedule
Keep some slack in the schedule
Be continually making adjustments:
Start activities before previous activity complete
Sub-contract activities
Renegotiate deliverables
Keep senior management informed
Project Planning
Methods
The Critical Path Method, Gantt charts, Activity bar charts, etc.
are roughly equivalent.
These methods are best when:
Model is updated regularly (e.g., monthly)
The structure of the project is well understood
The time estimates are reliable
Activities do not share resources
[Critical Path Method is excellent for large construction
projects
.]
Scheduling: Critical
Path Method
An activity
A dummy activity
An event
A milestone
Other
activities
START
Revise
Unit 3
Edit
Unit 3
Print
Unit 3
Mail
Unit 3
END
Other
activities
Revise
Unit 3
Edit
Unit 3
START
Other
activities
Revise
Unit 4
Edit
Unit 4
Type set
Unit 3
Print
Units 3/4
Type set
Unit 4
Mail
Units 3/4
Make
Edit
Unit 3
TV 2
Delivery
START
Edit
Unit 4
Document
Computer 1
Prototype Computer 1
Program
Computer 1
3
3
6
2
3
2
4
4
1
1
3
2
What is a software
process model?
A simplified representation of a software process, presented
from a specific perspective.
Examples of process perspectives are
Workflow perspective - sequence of activities;
Data-flow perspective - information flow;
Role/action perspective - who does what.
Roughly 60% of costs are development costs, 40% are testing costs. For
custom software, evolution costs often exceed development costs.
Costs vary depending on the type of system being developed and the
requirements of system attributes such as performance and system
reliability.
Lower-CASE
Tools to support later activities such as programming, debugging and
testing.
Specification;
Design;
Validation;
Evolution.
Evolutionary development
Specification, development and validation are interleaved.
Computer-aided software
engineering
Computer-aided software engineering (CASE) is software to
support software development and evolution processes.
Activity automation
CASE classification
Classification helps us understand the different types of CASE
tools and their support for process activities.
Functional perspective
Tools are classified according to their specific function.
Process perspective
Tools are classified according to process activities that are
supported.
Integration perspective
Tools are classified according to their organisation into
integrated units.
CASE integration
Tools
Support individual process tasks such as design
consistency checking, text editing, etc.
Workbenches
Support a process phase such as specification or design,
Normally include a number of integrated tools.
Environments
Support all or a substantial part of an entire software
process. Normally include several integrated
workbenches.
Objectives
Project
Management
To explain the main tasks undertaken by project managers
To introduce software project management and to describe its
distinctive characteristics
To discuss project planning and the planning process
To show how graphical schedule representations are used by
project management
To discuss the notion of risks and the risk management process
TopicsManagement
covered
Project
Management activities
Project planning
Project scheduling
Risk management
Software project
Project
Management
management
Concerned with activities involved in ensuring
that software is delivered on time and on
schedule and in accordance with the
requirements of the organisations developing
and procuring the software.
Project management is needed because software
development is always subject to budget and
schedule constraints that are set by the
organisation developing the software.
Management
Managementactivities
Activities
Proposal writing.
Project planning and scheduling.
Project costing.
Project monitoring and reviews.
Personnel selection and evaluation.
Report writing and presentations.
Management
Management
commonalities
Commonalities
These activities are not peculiar to software
management.
Many techniques of engineering project
management are equally applicable to software
project management.
Technically complex engineering systems tend
to suffer from the same problems as software
systems.
Project
Projectstaffing
Staffing
May not be possible to appoint the ideal people to work on a
project
Project budget may not allow for the use of highly-paid staff;
Staff with the appropriate experience may not be available;
An organisation may wish to develop employee skills on a
software project.
Project
Projectplanning
Planning
Types
Typesof
ofproject
Projectplan
Plan
Plan
Description
Quality plan
Validation plan
Configuration
management plan
Maintenance plan
Staff
plan.
development Describes how the skills and experience of the project team
members will be developed. See Chapter 25.
Project
Projectplan
Planstructure
Structure
Introduction.
Project organisation.
Risk analysis.
Hardware and software resource requirements.
Work breakdown.
Project schedule.
Monitoring and reporting mechanisms.
Activity organization
Activities
Organization
Milestones in the RE
Milestone
Re Project
process
ACTIVITIES
Feasibility
study
Requirements
analy sis
Prototype
development
Design
study
Requirements
specifi ca
tion
Feasibility
report
User
requirements
Evaluation
report
Architectur
al
design
System
requirements
MILESTONES
Project
Projectscheduling
Scheduling
Split project into tasks and estimate time and resources required to
complete each task.
Organize tasks concurrently to make optimal
use of workforce.
Minimize task dependencies to avoid delays
caused by one task waiting for another to complete.
Dependent on project managers intuition and experience
Identify
activities
Software
requirements
Identify activity
dependencies
Estimate resources
for activities
Allocate people
to activities
Create project
charts
Activity char
ts
and bar char
ts
Scheduling
Schedulingproblems
Problem
BarTask
Charts
& Activity
durations
and
Network
dependencies
Activity
Network
Activity network
14/7/03
15 days
M1
T3
8 days
T9
T1
25/7/03
4/7/03
start
15 days
5 days
4/8/03
T6
M4
M3
25/8/03
M6
7 days
20 days
15 days
T7
T2
25/7/03
10 days
M2
T4
T11
10 days
T5
5/9/03
11/8/03
M7
T10
18/7/03
M8
15 days
10 da
ys
T12
M5
25 days
Finish
T8
19/9/03
Activity
Timeline
Activity timeline
4/7
11/7
18/7
25/7
1/8
8/8
15/8
22/8
29/8
5/9
12/9
19/9
Start
T4
T1
T2
M1
T7
T3
M5
T8
M3
M2
T6
T5
M4
T9
M7
T10
M6
T11
M8
T12
Finish
Activity
Timeline
Staff allocation
4/7
Fred
1/8
8/8
5/9
12/9 19/9
T4
T8
T11
T12
Jane
T1
T3
T9
Anne
T2
T6
Jim
Mary
T7
T5
T10
Risk management
Risk management is concerned with identifying
risks and drawing up plans to minimise their
effect on a project.
A risk is a probability that some adverse
circumstance will occur
Project risks affect schedule or resources;
Product risks affect the quality or performance of
the software being developed;
Business risks affect the organisation developing or
procuring the software.
Software risks
Risk
Affects
Description
Staff turnover
Project
Management change
Project
Hardware unavailability
Project
Requirements change
Project and
product
Specification delays
Project and
product
Size underestimate
Project and
product
Product
Business
Product competition
Business
Risk
identifi cation
Risk analysis
Risk planning
Risk
monitoring
List of potential
risks
Prioritised risk
list
Risk avoidance
and contingency
plans
Risk
assessment
Risk identification
Technology risks.
People risks.
Organisational risks.
Requirements risks.
Estimation risks.
Possiblerisks
Technology
Thedatabaseusedinthesystemcannotprocessasmanytransactionspersecond
asexpected.
Softwarecomponentsthatshouldbereusedcontaindefectsthatlimittheir
functionality.
People
Itisimpossibletorecruitstaffwiththeskillsrequired.
Keystaffareillandunavailableatcriticaltimes.
Requiredtrainingforstaffisnotavailable.
Organisational
Theorganisationisrestructuredsothatdifferentmanagementareresponsiblefor
theproject.
Organisationalfinancialproblemsforcereductionsintheprojectbudget.
Tools
ThecodegeneratedbyCASEtoolsisinefficient.
CASEtoolscannotbeintegrated.
Requirements
Changestorequirementsthatrequiremajordesignreworkareproposed.
Customersfailtounderstandtheimpactofrequirementschanges.
Estimation
Thetimerequiredtodevelopthesoftwareisunderestimated.
Therateofdefectrepairisunderestimated.
Thesizeofthesoftwareisunderestimated.
Risk analysis
Assess probability and seriousness of each
risk.
Probability may be very low, low, moderate,
high or very high.
Risk effects might be catastrophic, serious,
tolerable or insignificant.
Probability
Effects
Organisationalfinancialproblemsforcereductionsin
theprojectbudget.
Low
Catastrophic
Itisimpossibletorecruitstaffwiththeskillsrequired
fortheproject.
High
Catastrophic
Keystaffareillatcriticaltimesintheproject.
Moderate
Serious
Softwarecomponentsthatshouldbereusedcontain
defectswhichlimittheirfunctionality.
Moderate
Serious
Changestorequirementsthatrequiremajordesign
reworkareproposed.
Moderate
Serious
Theorganisationisrestructuredsothatdifferent
managementareresponsiblefortheproject.
High
Serious
Probability
Effects
Thedatabaseusedinthesystemcannotprocessas
manytransactionspersecondasexpected.
Moderate
Serious
Thetimerequiredtodevelopthesoftwareis
underestimated.
High
Serious
CASEtoolscannotbeintegrated.
High
Tolerable
Customersfailtounderstandtheimpactof
requirementschanges.
Moderate
Tolerable
Requiredtrainingforstaffisnotavailable.
Moderate
Tolerable
Therateofdefectrepairisunderestimated.
Moderate
Tolerable
Thesizeofthesoftwareisunderestimated.
High
Tolerable
ThecodegeneratedbyCASEtoolsisinefficient.
Moderate
Insignificant
Risk planning
Consider each risk and develop a strategy to
manage that risk.
Avoidance strategies
The probability that the risk will arise is reduced;
Minimisation strategies
The impact of the risk on the project or product will be
reduced;
Contingency plans
If the risk arises, contingency plans are plans to deal
with that risk;
Risk management
strategies (i)
Risk
Strategy
Organisational
financialproblems
Prepareabriefingdocumentforseniormanagement
showinghowtheprojectismakingaveryimportant
contributiontothegoalsofthebusiness.
Recruitment
problems
Alertcustomerofpotentialdifficultiesandthe
possibilityofdelays,investigatebuyingin
components.
Staffillness
Reorganiseteamsothatthereismoreoverlapofwork
andpeoplethereforeunderstandeachothersjobs.
Defective
components
Replacepotentiallydefectivecomponentswithbought
incomponentsofknownreliability.
Risk management
strategies (ii)
Risk
Strategy
Requirements
changes
Derivetraceabilityinformationtoassessrequirements
changeimpact,maximiseinformationhidinginthe
design.
Organisational
restructuring
Prepareabriefingdocumentforseniormanagement
showinghowtheprojectismakingaveryimportant
contributiontothegoalsofthebusiness.
Database
performance
Investigatethepossibilityofbuyingahigher
performancedatabase.
Underestimated
developmenttime
Investigatebuyingincomponents,investigateuseofa
programgenerator
Risk monitoring
Assess each identified risks regularly to decide
whether or not it is becoming less or more
probable.
Also assess whether the effects of the risk have
changed.
Each key risk should be discussed at
management progress meetings.
Risk indicators
Risktype
Potentialindicators
Technology
Latedeliveryofhardwareorsupportsoftware,manyreported
technologyproblems
People
Poorstaffmorale,poorrelationshipsamongstteammember,
jobavailability
Organisational
Organisationalgossip,lackofactionbyseniormanagement
Tools
Reluctancebyteammemberstousetools,complaintsabout
CASEtools,demandsforhigherpoweredworkstations
Requirements
Manyrequirementschangerequests,customercomplaints
Estimation
Failuretomeetagreedschedule,failuretoclearreported
defects