Chapter 2 -Process Models
adapted from the book of Dr. Roger S. Pressman
Overview
· The roadmap to building high quality software products is software process.
· Software processes are adapted to meet the needs of software engineers and managers as they undertake the development of a software product.
· A software process provides a framework for managing activities that can very easily get out of control.
· Modern software processes must be agile, demanding only those activities, controls, and work products appropriate for team or product.
· Different types of projects require different software processes.
· The software engineer's work products (programs, documentation, data) are produced as consequences of the activities defined by the software process.
· The best indicators of how well a software process has worked are the quality, timeliness, and long-term viability of the resulting software product.
Software Process
· Framework for the activities, actions, and tasks required to build high quality software
· Defines approach taken as software is engineered
· Adapted by creative, knowledgeable software engineers so that it is appropriate for the products they build and the demands of the marketplace
Generic Process Framework
· Communication
· Planning
· Modeling
· Construction
· Deployment
Umbrella Activities (applied throughout process)
· Software project tracking and control
· Risk management
· Software quality assurance
· Formal technical reviews
· Measurement
· Software configuration management
· Reusability management
· Work product preparation and production
Process Flow
· Describes how each of the five framework activities, actions, and tasks are organized with respect to sequence and time
· Linear process flow executes each of the framework activities in order beginning with communication and ending with deployment
· Iterative process flow executes the activities in a circular manner creating a more complete version of the software with each circuit or iteration
· Parallel process flow executes one on more activities in parallel with other activities
Task Sets
· Each software engineering action associated with a framework activity can be represented by different task sets
· Small one person projects do not require task sets that are as large and detailed as complex projects team oriented project task sets
· Task sets are adapted to meet the specific needs of a software project and the project team characteristics
Process Patterns
· Templates or methods for describing project solutions within the context of software processes
· Software teams can combine patterns to construct processes that best meet the needs of specific projects
Process Pattern Template
· Meaningful pattern name
· Forces (environment in which the pattern is encountered and indicators that make problems visible and affect their solution)
· Type
o Stage patterns (define problems with a framework activity for the process)
o Task patterns (define problems associated with engineering action or work task relevant to successful software engineering practice)
o Phase patterns (define the sequence or flow of framework activities that occur within a process)
· Initial context (describes conditions that must be present prior to using pattern)
o What organizational or team activities have taken place?
o What is the entry state for the process?
o What software engineering or project information already exists?
· Solution (describes how to implement pattern correctly)
· Resulting context (describes conditions that result when pattern has been implemented successfully)
o What organization or team activities must have occurred?
o What is the exit state for the process?
o What software engineering information of project information has been developed?
· Related patterns (links to patterns directly related to this one)
· Known uses/examples (instances in which pattern is applicable)
Process Assessment and Improvement
· Standard CMMI Assessment Method for Process Improvement (SCAMPI) provides a five step process assessment model that incorporates five phases (initiating, diagnosing, establishing, acting, learning)
· CMM-Based Appraisal for Internal Process Improvement (CBAIPI) provides diagnostic technique for assessing the relative maturity of a software organization
· SPICE (ISO/IE15504) standard defines a set of requirements for process assessment
· ISO 9001:2000 for Software defines requirements for a quality management system that will produce higher quality products and improve customer satisfaction
Prescriptive Process Models
· Originally proposed to bring order to the chaos of software development
· They brought to software engineering work and provide reasonable guidance to software teams
· They have not provided a definitive answer to the problems of software development in an ever changing computing environment
Software Process Models
· Waterfall Model (classic life cycle - old fashioned but reasonable approach when requirements are well understood)
· Incremental Models (deliver software in small but usable pieces, each piece builds on pieces already delivered)
· Evolutionary Models
- Prototyping Model (good first step when customer has a legitimate need, but is clueless about the details, developer needs to resist pressure to extend a rough prototype into a production product)
- Spiral Model (couples iterative nature of prototyping with the controlled and systematic aspects of the Waterfall Model)
· Concurrent Development Model (concurrent engineering - allows software teams to represent the iterative and concurrent element of any process model)
Specialized Process Models
- Component-Based Development (spiral model variation in which applications are built from prepackaged software components called classes)
- Formal Methods Model (rigorous mathematical notation used to specify, design, and verify computer-based systems)
- Aspect-Oriented Software Development (aspect-oriented programming - provides a process for defining, specifying, designing, and constructing software aspects like user interfaces, security, and memory management that impact many parts of the system being developed)
Unified Process
· Use-case driven, architecture centric, iterative, and incremental software process
· Attempts to draw on best features of traditional software process models and implements many features of agile software development
· Phases
o Inception phase (customer communication and planning)
o Elaboration phase (communication and modeling)
o Construction phase
o Transition phase (customer delivery and feedback)
o Production phase (software monitoring and support)
Personal Software Process (PSP)
· Emphasizes personal measurement of both work products and the quality of the work products
· Stresses importance of indentifying errors early and to understand the types of errors likely to be made
· Framework activities
o Planning (size and resource estimates based on requirements)
o High-level design (external specifications developed for components and component level design is created)
o High-level design review (formal verification methods used to uncover design errors, metrics maintained for important tasks)
o Development (component level design refined, code is generated, reviewed, compiled, and tested, metric maintained for important tasks and work results)
o Postmortem (effectiveness of processes is determined using measures and metrics collected, results of analysis should provide guidance for modifying the process to improve its effectiveness)
Team Software Process
· Objectives
o Build self-directed teams that plan and track their work, establish goals, and own their processes and plans
o Show managers how to coach and motivate their teams and maintain peak performance
o Accelerate software process improvement by making CCM Level 5 behavior normal and expected
o Provide improvement guidance to high-maturity organizations
o Facilitate university teaching of industrial team skills
· Scripts for Project Activities
o Project launch
o High Level Design
o Implementation
o Integration and system testing
o Postmortem
Process Technology Tools
· Used to adapt process models to be used by software project team
· Allow organizations to build automated models of common process framework, task sets, and umbrella activities
· These automated models can be used to determine workflow and examine alternative process structures
· Tools can be used to allocate, monitor, and even control all software engineering tasks defined as part of the process model
Sir, what am I supposed to do with this? xD
ReplyDeleteJust kidding! Where's your Modeling and Simulation Theory upload? 0=
Denver, I gonna make use of my newly design blogs site.... i forgot the password and username ... cud u please email me...thanks
ReplyDelete