Post on 28-Dec-2015
The Software Engineering Process
andThe Personal Software
Process(PSP)
The Software Engineering Process
• The Software Product• The Software Process• The Traditional Approach (SDLC)• Software Process Models• SP Modeling – why, what, how• OO Modeling - UML• Software Process Measurement• Software Process Maturity Model (CMM)• The Personal Software Process (PSP)• Appendix – Application Domains
Software Engineering Products and Processes
The software customer wants quality software products at reasonable prices
The software producer wantsa well managed software production process that consistently produces quality software in a cost-effective manner
Some organisations have a defined and managed software engineering process
The Software Product
Composed of programs, data and documents
Delivers hardware computing potential Delivers information
Software Product Characteristics»developed or engineered,
not manufactured»doesn’t wear out»most is custom built
The Software Process
• The software product is created as part of the Software Engineering Process
Definition:– the Software Process is a
description of the process which guides the software engineers as they work
The Software Process
The set of activities which produce a software product
The sequence of steps to develop and maintain software
Sets out the technical and management framework for applying methods, tools and people to the software task
The Software Process ...Software Engineering is a
Layered Technology (Diagram Pressman p.21):
Quality Focus - bedrock of SE» commitment to quality
Process – foundation of SE» framework of key processes as: a basis for control of
projects; and a context for development & methods
Methods – set of basic SE principles» technical ‘how to’ for building software, including
methods for analysis, design, programming, testing etc.
Tools – ideal is an integrated SE environment» automated support for the process and the methods
The Software Process ...
There is no ‘right’ or ‘wrong’ software process.
But poor processes reduce the quality or usefulness of the product
Software processes are complex and involve a large number of activities
The Software Process ...
Generic Phases (Pressman) Definition Phase focuses on ‘what’
- the methods will include these tasks:» system or information engineering» software project planning» requirements analysis
Development Phase focuses on ‘how’- the methods will include these tasks:
» software design» code generation» software testing
Maintenance Phase focuses on the change of the software due to correction, evolution & improvement.
The Software Process ...
Has a common process framework containing (Diagram Pressman p.24):
framework activities - for all software projects work tasks project milestones software work products and deliverables quality assurance points
umbrella activities - occur throughout the process
software quality assurance software configuration management software metrics or measurement
The Software Process ...
To solve SE problems a team of software engineers develops a strategy that includes the process, methods and tool layers, and the generic phases.
This strategy is called a Software Process Model
The process model is based on the nature of the application, & the methods, tools and deliverables.
Traditional ModelSoftware Development Life Cycle (SDLC) (Waterfall or Linear Sequential Model)
SDLC Phases:
1. System Feasibility» Aims to establish the technological, economic, social
feasibility of the proposed system.
2. Software Requirements» Requirements are the functions and features of software
desired by the customer.» Requirements are validated by obtaining the customer's
agreement to the specs.
3. Software Plans» Software planning is concerned with How much, How long?
What resources and skills will be needed? When? Estimating, scheduling, budgeting.
SDLC Phases ...
4. Product Design & Detailed Design
»Concerned with how to meet the requirements.
»Design documents are verified - checked against requirements
5. Coding and Module Testing»Programming, implementation »Producing operational models»Testing them
SDLC Phases ...
6. Integration Testing»Testing the whole product
7. Implementation»Put into operation for the first time. »Create data files / databases, user training,»Parallel running, acceptance testing.
8. Operation & Maintenance»As we have seen, covers many different
activities!
Deficiencies in the Traditional Model
Gross oversimplification In reality phases are not clear-cut. Defects in the products of earlier phases are
discovered in later phases.Best approach is an iterative one which feeds the defect information back to the earlier phase.
Documenting is a nightmare - detection of a design fault during coding - do we go back and revise the design documents? Or are they an historical artifact?
SDLC - the reality
Overlapping phases Large, complex systems are usually
broken into subsystems and other smaller components
Each subsystem may have its own mini-lifecycle.
In reality there will be a continuous stream of change requests.
Software Process Models1. Linear Sequential or ‘Waterfall’ Model
2. Prototyping Model 3. Rapid Application Development Model 4. Evolutionary Development:
Incremental Model Spiral Model Concurrent Development Model
5. Component-Based Development Model6. Formal Methods Model7. Fourth Generation Techniques Model8. Extreme Programming Model
Software Process Models ...
• Component-Based Development Model– OO technologies provide the framework – Focus is on the reuse of components (Classes)
– The Unified Software Development Process is the main component-based development model
• The Unified Development Model (UML)Unified Development Model (UML) is the notation used to define the system components
• Fourth Generation Techniques Model– When coupled with UML may become the dominant
approach to software development.
Software Process Models ...
Process TechnologyThe process models
• have different strengths and weaknesses• are adapted for use by each particular project team• are aided by process technology tools
Process Technology Tools allow:– Organisations to build automated models of the process– Team monitoring and control of the SE tasks – Each team member to plan individual project tasks
Software Process Modeling
Software Process Modeling Requirements
1. Why? - do we need to model software processes and their components?
2. What? - aspects and objects of the software process do we need to model?
3. How? - are we going to model them?
SP Modeling - Why?
The over-riding purpose The over-riding purpose
of software process modelingof software process modeling
isis
software process software process
understanding and understanding and management.management.
SP Modeling - Why?...
• Modeling levels- to allow a general view as well as a more
detailed view of the process- to allow for refinement, explosion,
elaboration- to allow managers to see the woods as
well as the trees
• Flexibility- to allow for model flexibility and
extensibility
SP Modeling - Why?...
Enaction - to allow both project managers and
developers to use the models, supported in a computer-aided manner.
Metrication (measurement)‘You cannot control what you cannot
measure’- Tom de Marco
SP Modeling - What?
Products» Important to model requirements and
design documents - the evolving product;»Products can be measured - size,
complexity, quality...
Activities»Consume resources and lead to the
development of products
SP Modeling - What? ...
Events » Important occurrences on the project time-line.»e.g.
Project start; Approval to produce a detailed proposal; Requirements acceptance;
Decisions»Branch points in the software process»e.g.
Undertake prototyping to reduce risk of inadequate requirements.
SP Modeling
How?»More advanced topic» In practice most companies select and
customise a model, supported by a CASE tool
Software Process SelectionIssues affecting process selection are related to the particular application domain
Some Application Domains(refer Appendix)
• Data-centred systems• Real-time systems• Systems programs• Life/mission-critical systems• Scientific/engineering systems• Spatial information systems (GIS)• Knowledge-based systems• Networks/data comms including intranet,
internet, WAN, LAN, e-commerce• Other including CAD/CAM, office automation
OO Modeling Concepts Static Model – the Class Diagram or Class Chart
» Classes showing specification by class contract
» Grouping into clusters/subsystems
» Relations: client/supplier and inheritance - fundamental
Dynamic models
» Identification of events
» Scenarios of communicating objects
» State charts for more dynamic parts of the system
Unified Modeling Language (UML)
is the international standard
Software Process Measurement
or Software Process Metrics– the gathering of quantitative data about
the software process– does not measure the product quality
Classes or types of Process Metrics– time taken for the process to be completed– resources required for a particular process– the number of occurrences of a particular event
Software Process Maturity
Measurement
The model to measure the maturity of an organisation is:
The SEI Process Maturity Model or The Capability Maturity Model(CMM)
Level 1: InitialLevel 2: RepeatableLevel 3: DefinedLevel 4: ManagedLevel 5: Optimizing
At each level, Key Process Areas (KPAs) provide goals
The SEI ProcessMaturity Model ...
Level 1: Initial– process is ad hoc and sometimes
chaotic– few processes defined – success depends upon individual effort
Key Process Areas (KPAs)»none
The SEI Process Maturity Model ...
Level 2: Repeatable– basic project management processes defined– process discipline in place to repeat successes
Key Process Areas»software configuration management»software quality assurance»software subcontract management»software project tracking»software project planning» requirements management
The SEI ProcessMaturity Model ...
Level 3: Defined– process is documented, standardised and
integrated into a standard software process– all projects use this standard software process
Key Process Areas»peer reviews» intergroup coordination»software product engineering» integrated software management» training program»software process definition and focus
The SEI Process Maturity Model ...
Level 4: Managed– detailed measures of software process and
product quality are collected– process and products are quantitatively
controlled
Key Process Areas»quality management»qualitative process management
The SEI Process Maturity Model ...
Level 5: Optimizing– continuous process improvement is enabled– there is quantitative feedback from the
process and from piloting innovative ideas and technologies
Key Process Areas»process change management»technology change management»defect prevention
The SEI ProcessMaturity Model ...
or Capability Maturity Model (CMM)– is the best available description of the
goals, methods and practices needed for the industrial practice of software engineering
But how do we do this in the classroom?– this is the role of the PSP
i.e. the Personal Software Process
The Personal Software Process or PSP
• PSP Objectives:– To introduce students to a process-based
approach to developing software– To show students how to measure, estimate,
schedule, and track their work– To show students how to improve the quality
of their programs
– In general PSP improves quality and productivity
• The time saved in testing because of better quality reduces time across the project by 20-40%
The Personal Software Process or PSP
a self improvement process designed to
help you be a better software engineer help you control, manage and improve the
way you work requires research and study of your
work needs personal motivation to pay off
The Personal Software Process
PSP helps you to:» manage your work & assess/build your
talents/skills» plan better» track your performance precisely» measure the quality of your software products
- as a framework for determining:» why you make errors and how you find them» the quality of your reviews» the types of errors you make
The Personal Software Process
PSP has a maturity framework like CMM- some KPAs are removed eg training program
Structure:PSP0: establish a measured performance baselinePSP1: make size, resource and schedule plansPSP2: learn defect and yield managementPSP3: scale up PSP methods to larger projects
The Personal Software Process
Baseline Process - PSP0– includes some basic measurements and a
reporting format– the process you currently use to write software
but enhanced to provide measurements
PSP0.1 - PSP0 enhanced by adding: »a coding standard»size measurement and size counting
standard»process improvement proposal (PIP)
The Personal Software Process
The Personal Planning Process (PSP1)– adds planning steps to PSP0
»test report»size and resource estimation
PSP1.1– establishes a performance rate for planning– PSP1 enhanced by adding
»task planning»schedule planning
The Personal Software Process
The Personal Quality Management Process (PSP2)– adds review techniques to PSP1 to help
you find defects early»design reviews»code reviews
PSP2.1– establishes design completeness criteria
»design templates
The Personal Software Process
A Cyclic Personal Process (PSP3)– for large programs e.g. 10,000 LOC
– subdivide into PSP2-sized modules– enhance the base module in iterative cycles– in each iteration do a complete PSP2
including design, code, compile, test– effective scale up from base module to large
program if each increment is of a high quality
The Personal Software Process
• The parts of PSP you will be using: •PSP0 for Stage 1 of your assignment•PSP1 & 2 for Stages 2 & 3 of your
assignment
•The following documents:Time Log, Defect Log and Project Summary - use manually (refer Attachments) or - use electronically in PASEWEB
(Personal Assistant for Software Engineers)
•Process scripts and instructions(refer Attachments)
The Personal Software Process
• The PSP uses 3 types of measures:– Effort, Size and Defects
• Effort measurement• Measured in minutes• Students keep records of time spent on tasks• Interruption time is recorded and subtracted
• Size measurement• Size will be measured in number of lines of code and FP
• Defect measurement• Students record changes to correct an error• Fix time and defect type is recorded
The Personal Software Process
PSP Logic - based on the Principles:• Need measured historical data for effective
planning• A defined process can improve working efficiency• Defined personal processes should fit the individual
skills of the software engineer• Continuous process improvement is enhanced by
rapid and explicit feedback
Competent work is possible when professionals know the basic methods of their field and practice them with discipline.
Summary
The CMM sets out the principal practices for managing the processes in large-scale software development
The PSP sets out the principal practices for defining, measuring and analysing an individual’s own processes
Appendix – Application Domains
Data-Centred Systems Many business applications - payroll,
inventory control Often centred on a database, with
user interaction objects, and ability to generate customised reports.
Essentially passive - you do things to the data periodically.
Application Domains ...
Real-time Systems Air-line reservations, air-traffic control,
nuclear power station Reactive. Things are happening all the
time to change the state of the system. Parallelism, inter-process
communication States and events Direct real-world interfacing Concern with messages, signals,
control parameters.
Application Domains ...
Systems Programs Concerned with the control of computer
resources - memory, disk, ports, buses. Software is Operating systems, device
drivers, IOCS, compilers etc. Shares many of the concerns of real-
time systems. In addition has terms like interrupts,
masks, registers etc. which relate specifically to computer resource allocation and control
Application Domains ...
Life/mission-critical systems Heart monitor, air-traffic control,
rocket launch, nuclear power plant... Typically real-time, often embedded Extra-high reliability requirement
– e.g. Department of Defense specifies the quality standards, and languages to be used in development of its systems.
Application Domains ...
Scientific/Engineering Concerned with scientific and engineering
calculations Evaluation of complex formulae Sophisticated numerical or statistical
methods. Low on input and output
Spatial Information Systems (GIS) Mass data storage Map coordinate digitization, scanning and
image processing, relational DB, SQL
Application Domains ...
Knowledge-based Systems Knowledge acquisition, building a
knowledge base, expert system shell, inference mechanisms.
Networks/Data Communications Including distributed components and
intranet, internet, WAN, LAN Other
Office automation, EDI, CAD/CAM