chapter 2 the process. what is software process? a framework for the tasks that are required to...

42
Chapter 2 Chapter 2 The Process The Process

Upload: heather-thornton

Post on 27-Dec-2015

222 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

Chapter 2Chapter 2The ProcessThe Process

Page 2: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

What is Software Process?What is Software Process?

A framework for the tasks that are A framework for the tasks that are required to build high-quality required to build high-quality software.software.

Page 3: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

Is Process synonym with SE?Is Process synonym with SE?

The answer is “yes” and “no”.The answer is “yes” and “no”. A software process defines the A software process defines the

approach that is taken as software is approach that is taken as software is engineered.engineered.

But software engineering also But software engineering also encompasses technologies that encompasses technologies that populates the process – technical populates the process – technical methods and automated tools.methods and automated tools.

Page 4: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

2.1 Software Engineering: 2.1 Software Engineering: A Layered TechnologyA Layered Technology

““Software engineering is the Software engineering is the establishment and use of sound establishment and use of sound engineering principles in order to engineering principles in order to obtain economically software that is obtain economically software that is reliable and works efficiently on real reliable and works efficiently on real machines.”machines.” [Fritz Beuer] [Fritz Beuer]

Lack ofLack of software qualitysoftware quality, , customer customer satisfactionsatisfaction, , timely product deliverytimely product delivery, , importance of measurement and metricsimportance of measurement and metrics, , and and mature processmature process..

Page 5: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

SE: A Layered TechnologySE: A Layered Technology

““Software engineering: (1) The Software engineering: (1) The application of a systematic, application of a systematic, disciplined, quantifiable approach to disciplined, quantifiable approach to the development , operation, and the development , operation, and maintenance of software; that is, the maintenance of software; that is, the application of engineering to application of engineering to software. (2) The study of approach software. (2) The study of approach as in (1).”as in (1).” [IEEE] [IEEE]

Page 6: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

Software EngineeringSoftware Engineering

a “quality” focusa “quality” focus

process modelprocess model

methodsmethods

toolstools

A Layered TechnologyA Layered Technology

Page 7: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

A “quality” focusA “quality” focus

Continuous process improvementContinuous process improvement Bedrock that supports software Bedrock that supports software

engineeringengineering

Page 8: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

ProcessProcess

Is the foundation of software Is the foundation of software engineeringengineering

Defines a framework for a set of key Defines a framework for a set of key process areas (KPAs) process areas (KPAs) – Effective delivery of SE technologyEffective delivery of SE technology– Management control of software projectManagement control of software project– Context of technical methods appliedContext of technical methods applied– Work productsWork products– Milestones, Quality ensuredMilestones, Quality ensured– Proper change managementProper change management

Page 9: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

MethodsMethods

Provide technical how-to’s for building Provide technical how-to’s for building software.software.

Encompass a broad array of tasks that Encompass a broad array of tasks that include requirements analysis, program include requirements analysis, program construction, testing, and support.construction, testing, and support.

Rely on a set of basic principles that Rely on a set of basic principles that govern each area of the technology govern each area of the technology and include modeling activities and and include modeling activities and other descriptive techniquesother descriptive techniques

Page 10: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

ToolsTools

Provide automated or semi-Provide automated or semi-automated support for the process automated support for the process and the methods.and the methods.

CASE: computer-aided software CASE: computer-aided software engineering is a system for the engineering is a system for the support of software development.support of software development.– Combines SW, HW, and a SE database Combines SW, HW, and a SE database

(a repository containing important (a repository containing important information aboutinformation about analysis, design, analysis, design, program construction, and testing)program construction, and testing)

Page 11: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

A Generic View of SEA Generic View of SE

Engineering is analysis, design, Engineering is analysis, design, construction, verification, and construction, verification, and management of technical (or social) management of technical (or social) entities.entities.

Entity Entity computer software computer software A software engineering process must A software engineering process must

be defined: definition phase, be defined: definition phase, development phase, and support development phase, and support phase.phase.

Page 12: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

Definition PhaseDefinition Phase

Focuses on “what”Focuses on “what” What What informationinformation is to be processed? is to be processed? What What functionfunction and performance are and performance are

desired?desired? What What system behaviorsystem behavior can be can be

expected?expected? InterfaceInterface, , design constraintsdesign constraints, ,

validation criteriavalidation criteria identify key identify key requirements of the system and SW.requirements of the system and SW.

Page 13: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

Development PhaseDevelopment Phase

Focuses on “how”Focuses on “how” How data are to be constructed?How data are to be constructed? How function is to be implemented How function is to be implemented

within a software architecture?within a software architecture? Procedural details, interfaces, design Procedural details, interfaces, design

programming, testing. programming, testing.

Three technical tasks: software design, Three technical tasks: software design, code generation, software testing.code generation, software testing.

Page 14: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

Support PhaseSupport Phase

Focuses on “change” associated with Focuses on “change” associated with error correction, adaptations, changes.error correction, adaptations, changes.

Four types of changes:Four types of changes:– Correction Correction Corrective maintenance Corrective maintenance– Adaptation Adaptation Adaptive maintenance Adaptive maintenance– Enhancement Enhancement Perfective maintenance Perfective maintenance– Prevention Prevention Preventive maintenance, Preventive maintenance,

often called often called Software EngineeringSoftware Engineering more more easily corrected, adapted, and enhance.easily corrected, adapted, and enhance.

Page 15: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

Umbrella ActivitiesUmbrella Activities

Software project tracking and controlSoftware project tracking and control Formal technical reviewFormal technical review Software quality assuranceSoftware quality assurance Software configuration managementSoftware configuration management Document preparation and Document preparation and

productionproduction Reusability managementReusability management MeasurementMeasurement Risk managementRisk management

Page 16: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

A Common Process A Common Process FrameworkFramework

Common process frameworkCommon process framework

Framework activitiesFramework activities

work taskswork tasks

work productswork products

milestones & milestones &

deliverablesdeliverables

QA checkpointsQA checkpoints

Umbrella ActivitiesUmbrella Activities

Page 17: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

Process MaturityProcess Maturity

Software Engineering Institute (SEI) Software Engineering Institute (SEI) has developed a comprehensive has developed a comprehensive model predicated on a software model predicated on a software engineering capabilities that should engineering capabilities that should be present as organization reach be present as organization reach different levels of process maturity.different levels of process maturity.

Called Called Capability Maturity ModelCapability Maturity Model (CMM).(CMM).

Page 18: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

CMMCMM

Level 1: InitialLevel 1: Initial– The software process is characterized ad hoc and The software process is characterized ad hoc and

occasionally chaotic.occasionally chaotic. Level 2: RepeatableLevel 2: Repeatable

– Basic project management process are Basic project management process are established to track cost, schedule, and established to track cost, schedule, and functionality.functionality.

Level 3: DefinedLevel 3: Defined– the software process for both management and the software process for both management and

engineering activities is documented, engineering activities is documented, standardized and integrated into an standardized and integrated into an organizationwide software process.organizationwide software process.

Page 19: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

CMM (Cont’d)CMM (Cont’d)

Level 4: ManagedLevel 4: Managed– Detailed measures of the software process Detailed measures of the software process

and product quality are collected.and product quality are collected.– Both SW process and product are Both SW process and product are

quantitatively understood and controlled quantitatively understood and controlled using detailed measures.using detailed measures.

Level 5: OptimizingLevel 5: Optimizing– Continuous process improvement is Continuous process improvement is

enabled by quantitative feedback from the enabled by quantitative feedback from the process and from testing innovative ideas process and from testing innovative ideas and technologies.and technologies.

Page 20: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

Key Process Areas (KPAs)Key Process Areas (KPAs)

Each KPA is described by identifying the Each KPA is described by identifying the following characteristics:following characteristics:

GoalsGoals CommitmentsCommitments AbilitiesAbilities ActivitiesActivities Methods for monitoring implementationMethods for monitoring implementation Methods for verifying implementationMethods for verifying implementation

Page 21: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

KPA (Cont’d)KPA (Cont’d)

Each of the KPAs is defined by a set Each of the KPAs is defined by a set of key practices that contribute to of key practices that contribute to satisfying its goals.satisfying its goals.

The key practices are policies, The key practices are policies, procedures, and activities.procedures, and activities.

Key indicators: those of key practices Key indicators: those of key practices or components of key practices that or components of key practices that offer the greatest insight into offer the greatest insight into whether the goals of a key process whether the goals of a key process have been achieved.have been achieved.

Page 22: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

2.3 Software Process Models2.3 Software Process Models

A software engineer must incorporate a A software engineer must incorporate a development strategy that encompasses development strategy that encompasses the process methods, and tools layers.the process methods, and tools layers.

This strategy is often referred to as a This strategy is often referred to as a process modelprocess model or a or a software software engineering paradigmengineering paradigm..

A process model is chosen based on the A process model is chosen based on the nature of project and application, the nature of project and application, the methods and tools to be used, and the methods and tools to be used, and the controls and deliverables that are controls and deliverables that are required.required.

Page 23: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

Process as Problem SolvingProcess as Problem Solving

statusquo

problemdefinition

technicaldevelopment

solutionintegration

Page 24: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

2.4 The Linear Sequential 2.4 The Linear Sequential ModelModel

Sometimes called the Sometimes called the classic life classic life cyclecycle or the or the waterfall modelwaterfall model..

analysis design code test

System/informationengineering

Page 25: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

The Linear Sequential ModelThe Linear Sequential Model

Activities:Activities: System/information engineering and System/information engineering and

modelingmodeling– Requirements gatheringRequirements gathering– Interface with other elements: HW, SW, Interface with other elements: HW, SW,

databasedatabase Software requirement analysisSoftware requirement analysis

– Understand nature of SW to be builtUnderstand nature of SW to be builtFunction, behavior, performance and interface.Function, behavior, performance and interface.

– Documented and reviewed with the Documented and reviewed with the customercustomer

Page 26: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

The Linear Sequential ModelThe Linear Sequential Model

Design: Design: – A multi-step process focuses on data A multi-step process focuses on data

structure, SW architecture, interface structure, SW architecture, interface representations, and procedural representations, and procedural (algorithmic) detail.(algorithmic) detail.

– The design process translates The design process translates requirements into a representation of requirements into a representation of the SW that can be assessed for quality the SW that can be assessed for quality before coding begins.before coding begins.

– DocumentedDocumented

Page 27: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

The Linear Sequential ModelThe Linear Sequential Model

Code generationCode generation– Design Design machine readable form machine readable form

TestingTesting– Test all functions, both internal/externalTest all functions, both internal/external– Uncover errorsUncover errors

Support/maintenanceSupport/maintenance– Deal with all kinds of changes that may Deal with all kinds of changes that may

be occurred after SW deliverybe occurred after SW delivery

Page 28: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

2.5 The Prototyping Model2.5 The Prototyping Model

The prototype can serve as “the first The prototype can serve as “the first system”system”

Users get a feel for the actual system Users get a feel for the actual system and developers get to build and developers get to build something immediatelysomething immediately

A customer defines a set of general A customer defines a set of general objectives for SW but does not objectives for SW but does not identify detailed input, processing, or identify detailed input, processing, or output requirements.output requirements.

Page 29: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

The Prototyping ModelThe Prototyping Model

listento

customerbuild/revise

mock-up

customertest-drivesmock-up

Prototyping

Page 30: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

The Prototyping ModelThe Prototyping Model

This approach can be problematic:This approach can be problematic: The customer misunderstands as a The customer misunderstands as a

working version with a few fixes.working version with a few fixes. The developer often makes The developer often makes

implementation compromises in order implementation compromises in order to get a prototype to work quickly.to get a prototype to work quickly.

The customer and developer must The customer and developer must agree that the prototype is built to agree that the prototype is built to serve as a mechanism for defining serve as a mechanism for defining requirements.requirements.

Page 31: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

2.6 The RAD Model2.6 The RAD Model

Is a “high-speed” adaptation of the Is a “high-speed” adaptation of the linear sequential model in which linear sequential model in which rapid development is achieved by rapid development is achieved by using component-based construction.using component-based construction.

Is an incremental software Is an incremental software development process model that development process model that emphasizes an extremely short emphasizes an extremely short development cycle.development cycle.

Page 32: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

The RAD ModelThe RAD Model

Phases:Phases: Business modelingBusiness modeling Data modelingData modeling Process modelingProcess modeling Application generation: 4GTApplication generation: 4GT Testing and turnoverTesting and turnover

Page 33: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

The RAD ModelThe RAD Model

businessmodeling

datamodeling

processmodeling

applicationgeneration

testing&

turnover

businessmodeling

datamodeling

processmodeling

applicationgeneration

testing&

turnover

businessmodeling

datamodeling

processmodeling

applicationgeneration

testing&

turnover

team #1

team #2team #3

60 - 90 days

RAD

Page 34: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

The RAD ModelThe RAD Model

Drawbacks:Drawbacks: RAD requires sufficient human RAD requires sufficient human

resources to create the right number resources to create the right number of RAD team, for a large project.of RAD team, for a large project.

RAD requires strong commitment from RAD requires strong commitment from developers and customers in much developers and customers in much abbreviated time frame.abbreviated time frame.

A system must be properly A system must be properly modularized.modularized.

RAD is not appropriate when technical RAD is not appropriate when technical risks are high.risks are high.

Page 35: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

Evolutionary Software Process Evolutionary Software Process ModelModel

Business and product requirements Business and product requirements often change as development often change as development proceeds.proceeds.

Tight market deadlines, etc..Tight market deadlines, etc..

Page 36: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

2.7.1 The Incremental Model2.7.1 The Incremental Model

analysis design code test

System/informationengineering

analysis design code test

analysis design code test

analysis design code test

increment 2

increment 3

increment 4

increment 1

delivery of1st increment

delivery of2nd increment

delivery of3rd increment

delivery of4th increment

calendar time

Page 37: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

2.7.2 The Spiral Model2.7.2 The Spiral Model

Proposed by Boehm.Proposed by Boehm. It provides the potential for rapid It provides the potential for rapid

development of incremental versions development of incremental versions of the software.of the software.

A spiral model is divided into a A spiral model is divided into a number of framework activities, also number of framework activities, also called called task regions.task regions.

Each of the regions is populated by a Each of the regions is populated by a set of work tasks, called a set of work tasks, called a task set.task set.

Page 38: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

The Spiral ModelThe Spiral Model

CustomerCommunication

Planning

Construction & ReleaseCustomerEvaluation

Engineering

Risk Analysis

Page 39: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

2.7.3 The WINWIN Spiral Model2.7.3 The WINWIN Spiral Model

Addresses more on customer Addresses more on customer communication, the following communication, the following activities are defined:activities are defined:

1.1. Identification of the system or Identification of the system or subsystem’s key “stakeholder”.subsystem’s key “stakeholder”.

2.2. Determination of the stakeholders’ Determination of the stakeholders’ “win conditions”.“win conditions”.

3.3. Negotiation of the stakeholders’ win Negotiation of the stakeholders’ win conditions to reconcile them into a conditions to reconcile them into a set of win-win conditions for all set of win-win conditions for all concerned.concerned.

Page 40: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

2.8 Component-Based 2.8 Component-Based DevelopmentDevelopment

OO technologies provide the OO technologies provide the technical framework for a technical framework for a component-based process model for component-based process model for SE.SE.

The process to apply when reuse is a The process to apply when reuse is a development objective.development objective.

Page 41: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

2.9 The Formal Methods Model2.9 The Formal Methods Model

The process to apply when a The process to apply when a mathematical specification is to be mathematical specification is to be developeddeveloped

Cleanroom software engineeringCleanroom software engineering—emphasizes error detection —emphasizes error detection beforebefore testingtesting

Page 42: Chapter 2 The Process. What is Software Process?  A framework for the tasks that are required to build high-quality software

Homework #1Homework #1

Problem 2.11-2.13Problem 2.11-2.13 Due next Friday 5 July.Due next Friday 5 July.