Professional Documents
Culture Documents
`
CONTENTS
Introduction to Software Engineering
Fundamentals of Process Improvement
Overview of CMMI Models
Course Objectives
understand the importance of having
defined process
understand the rationale for process
improvement
comprehend the CMMI model
identify ways of applying the CMMI model
to achieve process improvement
r
=equirements engineering
processes
Feasibility studies.
=equirements elicitation and analysis.
=equirements validation.
=equirements management.
Software requirements
Functional and non-functional
requirements.
User requirements.
System requirements.
The software requirements document.
Formal Specification
System Models
Context models.
Behavioural models.
Data models.
Object models.
Software prototyping
Prototyping in the software process.
=apid prototyping techniques.
User interface prototyping.
Formal Specification
Formal specification in the software
process.
Interface specification.
Behavioural specification.
DESIGN
Structured Programming
Modularity
Functional Decomposition
Data Structure Design
Data Flow Design
Object-Oriented Design
User Interface Design
Formal Development
DESIGN
Architectural design.
Distributed systems design
Object-oriented design
=eal-time software design
Design with =euse
User interface design
P=OG=AMMING
PA=ADIGMS
The Programming Language
Object-Oriented Programming (OOP)
Concurrent Programming
4E=IFICATION AND
4ALIDATION
4erification and validation planning
Software inspections
Automated static analysis
Cleanroom software development
Software testing
Defect testing.
Integration testing.
Object-oriented testing
Critical systems validation
Formal methods and critical systems.
=eliability validation.
Safety assurance.
Security assessment.
MANAGEMENT
Managing people
Limits to thinking.
Group working.
Choosing and keeping people.
The People Capability Maturity Model.
Software cost estimation
Productivity.
Estimation techniques.
Algorithmic cost modelling.
Project duration and staffing
MANAGEMENT
Quality management
Quality assurance and standards.
Quality planning.
Quality control.
Software measurement and metrics.
Process Improvement.
Process and product quality.
Process analysis and modelling.
Process measurement.
The SEI Process Capability Maturity Model.
Process classification
Software re-engineering
Source code translation.
=everse engineering.
Program structure improvement.
Program modularisation.
Data re-engineering.
Configuration management
Configuration management planning.
Change management.
4ersion and release management.
System building.
CASE tools for configuration management.
Software change
Program evolution dynamics.
Software maintenance.
Architectural evolution.
Process Models
Process iteration.
Software Specification.
Software design and implementation.
Software validation.
Software evolution.
Automated process support.
Project management
Management activities.
Project planning.
Project scheduling.
=isk management.
Software Trends (1)
Demands for software-intensive systems has been
growing consistently and steadily
More and more, software costs dominate these
systems
1995 DoD cost figures
Software: $35.7B
Hardware: $6.8B
Increasingly, software products and services are
acquired instead of developed ³in-house.´
Software Outsourcing Trend (2)
Gartner Group
Worldwide IT outsourcing - reach $1T in 4 years.
Outsourcing of retail financial services in the North
America - from $8B in 1998 to $22B in 2002.
IDC
IT outsourcing ± reach $56B in 2000 and $100B by
2005.
Forrester =esearch
64% of all IT outsourcing goes through U.S. based
companies that have relationships with development
shops abroad.
The State of Software Development
2000 US Defense Science Board Study:
53% of projects were late and over budget, 16%
were on time, 31% were cancelled before
completion
There is tremendous growth in software content
in both manned and unmanned systems
Software requirements now amount to the bulk of
the overall specification requirements (65% for
the B-2 bomber, 80% for the F-22 fighter)
The State of Software Engineering
Most successful projects rely on expertise
established with similar systems
Lack of documented processes make
repeatability difficult
Development efforts for unprecedented or
significantly different systems often
encounter problems.
What is the Problem? -1
Systems are increasingly dependent on
software, yet the brief history of software
development has been filled with problems.
Cost overruns
Schedule slippage
Failure to achieve performance objectives
Can not realize benefits of new technologies
and tools
What is the Problem? -2
Government, industry, and the marketplace
require software to be developed
Better
Faster
Cheaper
The workforce is already stressed out, and
throwing technology at the problem hasn't
worked
Ideal Case
Applying new software methodologies and
technologies.
Develop and deliver reliable, usable
software within budget and schedule
commitments
High Productivity
High Quality
What can be done
Improved and align the processes and
practices of system engineers, software
engineers, and managers.
Do this by using the CMM Integrated as a
basis for process improvement program
Quality Leverage Points
Major determinants of product cost,
schedule, and quality
People
Process Technology
Definition of Process ( )
Process:
How we do our work
A set of practices performed to achieve a
given purpose. May include tools, methods,
materials, and/or people
While process is often described as a leg of
the process-people-technology triad, it may
also be considered the "glue" that unifies
the other aspects.
Why Focus on Process? - 1
Everyone realizes the importance of having
a motivated, quality work force but...
... even our finest people can't perform at
their best when the process is not
understood or operating "at its best"
Why Focus on Process? - 2
Process provides a constructive, high-
leverage focus...
As opposed to a focus on people
your work force, on the average, is as "good" as it
is ë ë
working harder is not the answer