The Process Infsy 570 Dr. R. Ocker. Chapter 2 (Pressman, 1997) and Readings (Boehm88, Alavi84,...

Post on 04-Jan-2016

218 views 0 download

Transcript of The Process Infsy 570 Dr. R. Ocker. Chapter 2 (Pressman, 1997) and Readings (Boehm88, Alavi84,...

The Process

Infsy 570

Dr. R. Ocker

Chapter 2 (Pressman, 1997) and Readings (Boehm88, Alavi84, Mantei&Teorey88)

The Process

software process – framework for the tasks that are required to

build high-quality software

Quality - basic notion behind SWE

some SWE definitions the establishment and use of sound

engineering principles in order to obtain economically software that is reliable and works efficiently on real machines

(1) the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software.

(2) the study of approaches used in (1).

Process, Methods, and Tools

SWE Process

glue that holds everything together; supposed to enable rational and timely development of SW

process defines the framework that must be followed for sw delivery

used for management control establish the context in which

technical methods are applied, etc.

SWE Methods

provide the technical how to’s for building sw;

methods encompass tasks, including: requirements analysis design program construction testing maintenance

SWE Tools

provide automated support for the process and methods

CASE - when tools are integrated so that information created by one tool can e used by another

Generic view of SWE

engineering is the analysis, design, construction, verification, and management of technical entities.

3 generic phases of SWE:

definition development maintenance

1. definition phase - focus on what what information is to be processed what function and performance are

desired what system behavior can be expected what interfaces are needed what design constraints exist what validation criteria are required to

define a successful system

3 tasks occur

1. system or information engineering 2. software project planning 3. requirements analysis

2. development phase - focus on how how data are to be structured how function is to be implemented how interfaces are to be characterized how design will be translated into

programming languages how testing will be performed

3 specific technical tasks always occur 1. software design 2. code generation 3. software testing

3. maintenance phase - focus on change error correction adaptations required as SW evolves changes due to enhancements brought

about by changing customer requirements

Umbrella activities

applied throughout the sw process; include:– project tracking and control– formal technical reviews– quality assurance– configuration management– document preparation and production– measurement– risk management

SW Process

emphasis on process maturity

Software Engineering Institute (SEI) developed comprehensive model based upon a set of SWE capabilities that should be present as organizations reach different levels of process maturity

capability maturity model

defines key activities required at different levels of process maturity

5 process maturity levels

level 1 - initial

sw process is ad hoc, maybe even chaotic

few processes are defined success depends on individual effort

level 2 - repeatable

basic project management processes are established to track cost, schedule, and functionality

Necessary process discipline is in place to repeat earlier successes on projects with similar applications

level 3 - defined

sw process for both management and engineering activities is documented, standardized, and integrated into an organization-wide sw process

all projects use a documented and approved version the this for developing and maintaining sw

level 4 - managed

detailed measures of sw process and product quality are collected

both sw process and products are quantitatively understood and controlled using detailed measures

level 5 - optimizing

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

Software Process Models Process models differ from a sw

method/methodology method’s primary focus is on:

– how to navigate through each phase• e.g. partitioning functions

– how to represent the products of each phase• e.g. structure charts

software process models specify the order in which a project should carry out its major tasks

We will look at:

code-and-fix model linear sequential model (life cycle) prototyping model human factors approach*** RAD model Evolutionary process models (iterative)

– incremental model– Spiral model*****

A. Code-and-Fix Model (2 steps) 1. Write some code 2. Fix the problem in the code

earliest process model problems: spaghetti code, lack of

planning, difficult to maintain over time, no requirements phase

B. Linear Sequential/ Stagewise/Life

Cycle and Waterfall Models (fig. 1, Boehm88) software developed in successive stages

(linear sequential) Waterfall - added feedback loops between

stages followed code-and-fix model traditional approach to development not iterative but sequential stages deliverables and milestones at each stage

basic stages:

analysis design coding testing maintenance

Advantages:

designed for control complete system delivered after linear

sequence completed

Disadvantages:

emphasis on document driven standards (e.g. fully elaborated documents as completion criteria for early requirements and design phases);

can result in elaborate specs. of poorly understood user interfaces followed by design and development of large quantities of unusable code

C. Prototyping Model

designed to help understand requirements

build an experimental system rapidly and inexpensively for users to evaluate

2 types of prototypes:

1. evolutionary prototype evolves into working system 2. throw away after prototype completed and requirements

determined, it is “thrown away” software developed beginning with design

stage

iterative process of development (fig. 1 Alavi84) 1. identify initial user requirements 2. develop prototype 3. use & evaluate prototype 4. revise prototype (back to 3)

prototyping

prototyping much more iterative than SDLC

promotes design changes

less formal approach than SDLC quickly generate working model of

system

Advantages of prototyping:

useful when uncertainty about information requirements or design solutions

good for design of user interface encourages user involvement

throughout development

Disadvantages:

no detailed specifications - should not substitute for careful requirements analysis

better suited for smaller applications more difficult to control than SDLC - must

plan the effort in advance to control for cost, effort, and time limits

be prepared for more changes than in SDLC

D. Human Factors (Mantei & Teory, 1988)

incorporates changes into prototyping process model based on human factors engineering

prototyping lifecycle (fig. 1) fits prototyping into linear sequential (life cycle)

process model– feasibility study– requirements definition– global design– prototype construction– user evaluation– system implementation– testing– update and maintenance

fig. 2 add human factors to life cycle

market analysis feasibility study requirements definition product acceptance analysis task analysis global design prototype construction

fig. 2 (cont.) add human factors to life cycle

user testing and evaluation user evaluation system implementation product testing user testing update and maintenance product survey

Human Factors aspects:

MARKET ANALYSIS (iterative) * - Run “focus groups” with users to determine their perceptions and needs

PRODUCT ACCEPTANCE ANALYSIS * - Prepare a system “mockup” for presentation to a sample of users (changes can be recommended at this point). These changes result in a loop back to the requirements definition stage.

Human Factors aspects:

TASK ANALYSIS * - Examines the users’ mental process relative to the procedures currently being used. The results are employed in the global design and prototype construction stages in “tuning” the user interface to reflect their thought process.

Human Factors aspects:

USER TESTING AND EVALUATION * - finished prototype presented to sample of users for testing (ease of use, functionality and performance).

Resultant design changes require looping back through the global design and prototype construction stages.

Major system failings call for revisiting the requirements definition stage.

Human Factors aspects:

USER TESTING * - Upon completion of “user testing and evaluation”, the system is implemented and undergoes traditional product testing (unit and system) by the developers. The system is now subjected to a second round of USER testing.

Human Factors aspects:

PRODUCT SURVEY * -obtain more user feedback

This stage is tied to the ongoing update and maintenance process.– Small changes handled by looping back to

requirements determination stage.– significant revisions may require going all the

way back to “market analysis”, for a complete re-evaluation.

Other Considerations:

Cost effectiveness increases with the number of users

Savings from running user studies also rise with user population

Rule of thumb - use a prototype when the cost is less than 25% of the total project cost

Human factors model not recommended for small/simple projects, better suited to large user base or complex systems

Good example...

NOTE: This article provides a great example of applying numbers (benefits and costs) to SWE.

E. RAD Model linear sequential process emphasizes very short development cycle (60-

90 days) use when requirements are well-understood

and project is scaleable (able to break into concurrent pieces)

each major function developed by a separate RAD team

emphasizes reuse

RAD phases:

1. business modeling look at information flow among business

processes 2. data modeling data objects to support the business 3. process modeling create process descriptions to support

business functions

RAD phases:

4. application generation 4th generation languages, reuse

existing programs 5. testing & turnover test new components only

F. Evolutionary Process Model stages consist of expanding increments

of an operational software product (iterative development)

1. Incremental model 2. Spiral model

1. Incremental Model

turns linear sequential approach (analysis, design, code, test) into iterative approach

system broken down into series of pieces or iterations

stagger sequences over time each linear sequence produces a

deliverable increment of the system

1. Incremental Model

first increment = core system; covers basic reqs.

good to use when staffing not adequate to deliver complete system

also use increments to manage risk

Advantages:

matched to fourth generation languages application

good fit when users say, “I can’t tell you what I want, but I’ll know it when I see it”

Disadvantages:

difficult to distinguish from the old code-and-fix model (spaghetti code, lack of planning);

assumes that system can accommodate uplanned evolution plans

2. Spiral Model (figure 2, Boehm88) sw developed in series of incremental

releases

model uses concept that each cycle involves a progression that addresses the same sequence of steps, from an overall concept of operation document to the coding of each individual program.

Typical Spiral Cycle:

Determine objectives, alternatives, constraints– determine objectives for portion of product

being elaborated– identify alternatives to implement it– identify constraints imposed on alternatives

Typical Spiral Cycle:

Evaluate alternative, identify, resolve risks evaluate alternatives relative to objectives

and constraints identify uncertainties that are significant

sources of project risk formulate strategy to resolve risks (may

involve prototyping, simulation, benchmarking, user surveys, etc.)

Typical Spiral Cycle:

Develop, verify next-level product e.g. generate sw requirements and

perform requirements validation

Plan next phases e.g. development plan; integration and

test plan

Spiral Model Template

Each round of the spiral model addresses the following:– Objective

– Constraints

– Alternatives

– Risks

– Risk Resolution

– Risk Resolution Results

– Plan for Next Phase

– Commitment

Evaluation:

Primary Advantage of Spiral Model: its range of options accommodates the

good features of existing software process models, while its risk-driven approach avoids many of their difficulties

Other Advantages: it focuses early attention on options involving the reuse of existing

software it accommodates preparation for life-cycle evolution, growth, and

changes of the software product it provides a mechanism for incorporating software quality

objectives into software product development it focuses on eliminating errors and unattractive alternatives early it answers the question “How much is enough?” it doesn’t involve separate approaches for software development

and software enhancement it provides a viable framework for integrated hardware-software

system development

Other Advantages:

focuses on early elimination of errors answers the question “How much is

enough?” doesn’t involve separate approaches for

software development and software enhancement

provides a viable framework for integrated hardware-software system development

Difficulties:

matching to contract software relying on risk-assessment expertise need for further elaboration of spiral

model steps

Risk Management Plan

one characteristic of spiral approach that can be adapted to life-cycle models

ensures that each project makes an early identification of top risk items and develops a strategy for resolving risks

Unit Review:Process Model Comparison Create a chart describing all of the

above process models (including both evolutionary models).

Unit Review:Process Model Comparison On this chart, complete the following

categories:– basic description of process– steps in process– unique features of process– advantages of using process– disadvantages of using process– when to use process