1 of 75

Process Models

Dr. Noman Islam

2 of 75

Software Development as Social Learning

Embodied Knowledge in Software Development

Software development is a social learning process where knowledge is brought together and embodied in the software.

The process involves interaction between users, designers, and evolving tools to elicit useful knowledge.

Iterative Process with Communication

The evolving tool serves as the medium for communication in the iterative process.

Each round of the dialogue elicits more useful knowledge from the people involved.

3 of 75

Software Process: Definition and Importance

  • Definition and Purpose of Software Process
    • A software process is a series of predictable steps that helps create a timely, high-quality result.
    • It provides stability, control, and organization to the software development activity.
  • Importance of Agile Software Engineering
    • A modern software engineering approach must be agile and demand only necessary activities and controls.
    • The quality, timeliness, and long-term viability of the product are the best indicators of the efficacy of the process.

4 of 75

Defining a Software Process

Adaptation and Creativity in Software Engineering

Software engineering is performed by creative, knowledgeable people who adapt a mature software process.

Adaptation is necessary to suit the products and demands of the marketplace.

Software Process as a Framework

A software process defines the approach for building high-quality software.

It encompasses technical methods and automated tools, but is not synonymous with software engineering.

5 of 75

Generic Process Model and Process Flow

  • Generic Process Framework
    • The generic process framework defines five framework activities: communication, planning, modeling, construction, and deployment.
    • Additional umbrella activities include project tracking and control, risk management, quality assurance, and configuration management.
  • Process Flow and Execution
    • Process flow describes how framework activities and actions are organized with respect to sequence and time.
    • Types of process flow include linear, iterative, evolutionary, and parallel execution.

6 of 75

Defining a Framework Activity

    • A software team needs more details to execute framework activities effectively.
    • This includes understanding the problem to be solved, team characteristics, and stakeholders' expectations.

Framework Activities Require Additional Information

    • What actions are appropriate for a framework activity given the project context?
    • This involves considering the problem, team, and stakeholders to determine the best course of action.

Key Questions for Framework Activities

7 of 75

8 of 75

9 of 75

Components of a Framework Activity

Task Sets, Work Tasks, and Work Products

    • Task sets are collections of related work tasks.
    • Work tasks are specific activities performed to produce work products.

Quality Assurance Points and Project Milestones

    • Quality assurance points ensure the quality of work products.
    • Project milestones mark significant events in the software development process.

10 of 75

Process Models Overview

  • Types of Process Models
    • Linear process flow: A straightforward, sequential approach with no branching or iteration.
    • Parallel process flow: Multiple tasks executed simultaneously to improve efficiency.
  • Evolutionary Process Models
    • Iterative process flow: A cyclical approach with continuous improvement and refinement.
    • Incremental process flow: Releasing small, working increments of the project regularly.

11 of 75

Project Communication and Planning

  • Communication in Small Projects
    • Simple projects may require minimal communication, such as a phone call with the stakeholder.
    • Key communication tasks include discussing requirements and taking notes.
  • Framework Activity Adaptation
    • The nature of the project affects the framework activity, requiring adjustments to process models.
    • As project complexity increases, communication and planning become more critical.

12 of 75

Organizing Project Requirements

Define Requirements through Task Sets

Task sets outline specific work to be done for each software engineering action, such as requirements gathering.

Task sets can be adapted to accommodate project needs and team characteristics.

Requirements Gathering through Elicitation

Elicitation involves understanding stakeholder wants and needs from the software.

Examples of task sets for requirements gathering include making a list of stakeholders, interviewing stakeholders, and prioritizing requirements.

13 of 75

Choosing a Task Set for Requirements Gathering

Task Set for Small, Simple Projects

Make a list of stakeholders, invite stakeholders to a meeting, and ask for feature and function requirements.

Discuss requirements, prioritize, and note areas of uncertainty.

Task Set for Larger, Complex Projects

Make a list of stakeholders, interview stakeholders, and build a preliminary list of functions and features.

Schedule facilitated application specification meetings, produce user scenarios, and refine user scenarios.

14 of 75

What is a Process Pattern?

A process pattern describes a process-related problem, identifies the environment, and suggests proven solutions.

    • It provides a template for describing problem solutions within the context of the software process.

15 of 75

Process Pattern Template

Components of a Pattern

    • Pattern Name: A meaningful name describing the pattern within the software process context.
    • Forces: The environment and issues affecting the problem and its solution.

Pattern Types

    • Stage pattern: Defines a problem associated with a framework activity.
    • Task pattern: Defines a problem associated with a software engineering action or work task.
    • Phase pattern: Defines the sequence of framework activities within the process.

16 of 75

Pattern Initiation and Context

  • Initial Context and Conditions
    • Prior to pattern initiation, organizational activities, entry state, and existing software engineering information or project information must be established.
    • Examples include: collaborative communication, successful task patterns, and known project scope and business requirements.
  • Pattern Requirements and Constraints
    • The specific problem to be solved by the pattern must be clearly defined.
    • Software engineering information or project information that is available before pattern initiation must be transformed as a consequence of successful pattern execution.

17 of 75

Pattern Implementation and Outcome

  • Pattern Implementation and Transformation
    • The pattern describes how to implement the solution successfully, modifying the initial state of the process and transforming existing software engineering information or project information.
    • Examples include: software project planning, communication, and deployment activities.
  • Pattern Outcome and Resulting Context
    • Upon pattern completion, organizational activities, exit state, and developed software engineering information or project information must be established.
    • Examples include: successful project completion, known project scope and business requirements, and transformed software engineering information or project information.

18 of 75

Process Assessment and Improvement

  • Importance of Process Assessment
    • Ensures the software process meets basic criteria for success, including timeliness, customer needs, and long-term quality characteristics.
    • Requires solid software engineering practice, such as those outlined in Part 2 of this book.
  • Approaches to Software Process Assessment
    • Standard CMMI Assessment Method for Process Improvement (SCAMPI) - a five-step process assessment model with five phases: initiating, diagnosing, establishing, acting, and learning.
    • SEI's CMMI - describes the characteristics of a software process and the criteria for a successful process in detail.

19 of 75

Formal Techniques for Assessing Software Process

  • Understanding Current State and Improving Process
    • Assessment attempts to understand the current state of the software process with the intent of improving it.
    • Formal techniques, such as prototyping, are available for assessing the software process.

20 of 75

CMM-Based Appraisal for Internal Process Improvement

  • CMM-Based Appraisal for Software Organizations
    • Provides a diagnostic technique for assessing the relative maturity of a software organization.
    • Uses the SEI CMM as the basis for the assessment [Dun01].
  • Other Software Process Assessment Standards
    • SPICE (ISO/IEC15504) defines a set of requirements for software process assessment.
    • ISO 9001:2000 for Software applies to any organization that wants to improve the overall quality of its products, systems, or services [Ant06].

21 of 75

Prescriptive Process Models in Software Engineering

  • The Edge of Chaos in Software Development
    • Prescriptive process models strive for structure and order, but may be inappropriate for a software world that thrives on change.
    • The edge of chaos is a natural state between order and chaos, where structure and surprise coexist [Kau95].
  • Philosophical Implications for Software Engineering
    • Too much chaos can make coordination and coherence impossible, while too much order can lead to a lack of creativity and self-organization [Roo96].
    • Software organizations have exhibited significant shortcomings in capitalizing on experiences gained from completed projects [NASA].

22 of 75

Software Process Models Overview

  • Prescriptive Process Models
    • Define a set of process elements, such as framework activities, software engineering actions, and tasks, to ensure project consistency.
    • Prescribe a predictable process work flow, including quality assurance and change control mechanisms.
  • Limitations of Prescriptive Models
    • May not accommodate changing project requirements or uncertain project scope.
    • Can be inflexible and difficult to adapt to new or unexpected situations.

23 of 75

Waterfall Model and V-Model

  • Waterfall Model
    • A systematic, sequential approach to software development that begins with customer specification of requirements and progresses through planning, modeling, construction, and deployment.
    • Suitable for projects with well-defined and stable requirements, such as adaptations or enhancements to existing systems.

24 of 75

25 of 75

V-Model Overview and Application

  • Refining Problem Requirements
    • Basic problem requirements are progressively refined into detailed and technical representations as the team moves down the left side of the V.
    • This process involves modeling and communication activities to ensure a clear understanding of the problem and its solution.
  • Quality Assurance Actions
    • The team performs a series of tests (quality assurance actions) to validate each model created as they move down the left side of the V.
    • These actions are essentially verification and validation actions applied to earlier engineering work.

26 of 75

27 of 75

Waterfall Model Limitations and Criticisms

  • Sequential Flow and Iteration Challenges
    • Real projects rarely follow the sequential flow proposed by the waterfall model.
    • The model can accommodate iteration, but it does so indirectly, leading to potential confusion and difficulties in making changes.

28 of 75

Challenges with Waterfall Model

  • Difficulty in Stating Requirements Explicitly
    • The waterfall model requires explicit requirements, which can be challenging for customers to provide, especially at the beginning of a project.
    • This can lead to 'blocking states' where team members must wait for others to complete dependent tasks, resulting in wasted time.
  • Linear Nature of Waterfall Model
    • The waterfall model follows a linear sequential process, which can be inappropriate for fast-paced and changing software work.
    • This can lead to delays and difficulties in accommodating changes and updates to the software.

29 of 75

Incremental Process Models

Delivering Software in Increments

    • The incremental model delivers a series of releases, called increments, that provide progressively more functionality for the customer.
    • Each increment can incorporate prototyping and other process flows to ensure timely delivery of software features.

Delivering

Meeting Impossible Deadlines

    • When faced with an impossible deadline, suggest delivering one or more increments by that date and the rest of the software later.
    • This approach allows for a phased delivery of software, meeting customer demands while also ensuring the quality and completeness of the final product.

Meeting

30 of 75

Incremental Development Process

Incremental Development Model Overview

    • The incremental model focuses on delivering an operational product with each increment, starting with stripped-down versions of the final product.
    • Early increments provide capability and a platform for user evaluation, allowing for feedback and adjustments before subsequent increments.

Benefits of Incremental Development

    • Incremental development enables the delivery of partial functionality to end-users without inordinate delay, even in the presence of technical risks or uncertain hardware availability.
    • It allows for the implementation of early increments with fewer people, and additional staff can be added for subsequent increments if required.

31 of 75

32 of 75

Evolutionary Process Models

  • Characteristics of Evolutionary Process Models
    • Evolutionary process models produce an increasingly more complete version of the software with each iteration, reflecting changing business and product requirements.
    • These models are particularly useful in situations where tight market deadlines make completion of a comprehensive software product impossible.

33 of 75

Evolutionary Process Models

  • Characteristics of Evolutionary Models
    • Iterative development of increasingly more complete versions of the software
    • Accommodate a product that evolves over time
  • Examples of Evolutionary Process Models
    • Prototyping
    • Other process models (not specified in the text)

34 of 75

The Prototyping Paradigm

  • Key Steps in the Prototyping Paradigm
    • Communication: Define overall objectives and identify known requirements
    • Quick plan and construction of a prototype, followed by modeling and a quick design
  • Benefits of Prototyping
    • Assists stakeholders to better understand what is to be built when requirements are fuzzy
    • Quote: "Plan to throw one away. You will do that, anyway." - Frederick P. Brooks

35 of 75

Prototyping in Software Engineering

  • Prototype Construction and Deployment
    • A quick design leads to the construction of a prototype, which is deployed and evaluated by stakeholders.
    • Feedback from stakeholders is used to refine requirements and iterate the prototype to satisfy their needs.
  • Prototype Evaluation and Refining Requirements
    • The prototype serves as a mechanism for identifying software requirements, and its working version provides a feel for the actual system.
    • Stakeholders and software engineers can collaborate to build something immediately, but it's essential to define the rules of the game at the beginning.

36 of 75

37 of 75

Challenges and Best Practices in Prototyping

  • Common Challenges in Prototyping
    • Stakeholders may demand that a prototype be made into a production product, compromising quality.
    • Software engineers may make implementation compromises to get a prototype working quickly, leading to less-than-ideal choices becoming an integral part of the system.

38 of 75

The Spiral Model Overview

Evolutionary Software Process Model

    • Combines iterative prototyping with controlled waterfall model aspects
    • Enables rapid development of increasingly complete software versions

Risk-Driven Process Model Generator

    • Guides multi-stakeholder concurrent engineering of software-intensive systems
    • Features cyclic approach for incrementally growing system definition and implementation while decreasing risk

39 of 75

Spiral Model Key Characteristics

Incremental Growth and Risk Reduction

Cyclic approach for incrementally growing system definition and implementation

Decreasing system risk with each iteration

Anchor Point Milestones for Stakeholder Commitment

Ensures stakeholder commitment to feasible and mutually satisfactory system solutions

Provides structure for software development

40 of 75

Spiral Model Overview

Framework Activities in Spiral Model

The spiral model is divided into a set of framework activities defined by the software engineering team.

These activities represent one segment of the spiral path and are performed in a clockwise direction, beginning at the center.

Risk Consideration and Anchor Points

Risk is considered as each revolution is made around the spiral.

Anchor point milestones—a combination of work products and conditions—are noted for each evolutionary pass.

41 of 75

Adaptability and Iterations in Spiral Model

  • Adaptability Throughout Software Life Cycle
    • The spiral model can be adapted to apply throughout the entire life cycle of an application, from concept development to maintenance.
    • This allows for continuous improvement and adjustments to the project plan based on customer feedback.

42 of 75

43 of 75

Spiral Model- Characteristics and Advantages

Characteristics of the Spiral Model

Iterative framework that reflects real-world development

Risk reduction through prototyping at any stage

Advantages of the Spiral Model

Systematic stepwise approach with risk assessment expertise

Reduces risks before they become problematic

44 of 75

Challenges and Limitations

  • Potential Drawbacks of the Spiral Model
    • May be difficult to convince customers of controllable evolutionary approach
    • Requires considerable risk assessment expertise

45 of 75

Concurrent Development Model Overview

    • The concurrent development model allows a software team to represent iterative and concurrent elements of any process model.
    • It enables teams to accomplish multiple software engineering actions simultaneously, such as prototyping, analysis, and design.

Definition and Purpose

    • All software engineering activities exist concurrently but reside in different states.
    • The concurrent model is often more appropriate for product engineering projects where different engineering teams are involved.

Key Characteristics

46 of 75

47 of 75

Concurrent Process Model Representation

  • Modeling Activity States
    • The modeling activity may be in one of the following states: Under review, Baselined, Under revision, Awaiting changes, Under development, Inactive, or Done.
    • Each state represents an externally observable mode of behavior.

48 of 75

Concurrent Modeling Overview

  • Transition of Software Engineering Activities
    • The modeling activity transitions from inactive to under development state upon completion of communication activity.
    • Customer requirements changes trigger transitions among states.
  • Process Network Definition
    • Concurrent modeling defines a process network where each activity exists simultaneously.
    • Events generated at one point trigger transitions among states.

49 of 75

Evolutionary Process Models Limitations

Uncertainty in Prototyping and Project Planning

Prototyping poses a problem to project planning due to uncertain number of cycles required.

Most project management techniques are based on linear layouts, which do not fit evolutionary processes.

Risk of Chaos or Low Productivity

Evolutionary processes do not establish the maximum speed of evolution.

Too fast or too slow evolution can lead to chaos or low productivity.

50 of 75

Prioritizing Speed over High Quality

Flexibility and Extensibility over High Quality

    • Prioritize speed of development over zero defects to meet market demands.
    • Extending development for high quality may lead to late delivery and lost opportunities.

Evolutionary Models for Speed and Flexibility

    • Evolutionary models can be adapted to emphasize flexibility, extensibility, and speed of development.
    • Balance critical project and product parameters with customer satisfaction for quality.

51 of 75

Specialized Process Models

  • Component-Based Development
    • Incorporates characteristics of the spiral model, with iterative approach to software creation.
    • Constructs applications from prepackaged software components with well-defined interfaces.

52 of 75

Component-Based Development Model

  • Research and Evaluate Components
    • Available component-based products are researched and evaluated for the application domain in question.
    • Consideration of component integration issues is also a crucial step in this process.
  • Benefits of Component Reuse
    • Software reuse leads to a reduction in development cycle time and project cost.
    • Component reuse becomes a key part of a software engineering culture.

53 of 75

Formal Methods Model and Its Challenges

Formal Methods Enable Rigorous Software Development

    • Formal methods provide a mathematical notation for specifying, developing, and verifying a computer-based system.
    • They enable the elimination of problems such as ambiguity, incompleteness, and inconsistency.

Challenges and Limitations of Formal Methods

    • The development of formal models is time-consuming and expensive.
    • Extensive training is required for software developers to apply formal methods.

54 of 75

Aspect-Oriented Software Development Overview

  • Localized Software Characteristics and Components
    • Localized software characteristics are modeled as components (e.g., object-oriented classes) and constructed within the context of a system architecture.
    • Components may provide or require one or more aspect details relating to a particular aspect, such as user interface, distribution, persistency, security, and transaction aspects.
  • Crosscutting Concerns and Aspectual Requirements
    • Crosscutting concerns are concerns that cut across multiple system functions, features, and information, often referred to as crosscutting concerns.
    • Aspectual requirements define those crosscutting concerns that have an impact across the software architecture.

55 of 75

Aspect-Oriented Software Development Process

  • Aspect-Oriented Process Characteristics
    • The evolutionary model is appropriate as aspects are identified and then constructed.
    • The parallel nature of concurrent development is essential because aspects are engineered independently of localized software components.

56 of 75

Asynchronous Communication in Software Process

  • Aspect-Oriented Software Development
    • Applies to engineering and construction of aspects and components.
  • Importance of Asynchronous Communication

57 of 75

Process Models for Software Development

  • Process Management
    • Objective: Define, execute, and manage prescriptive process models.
    • Tools provide a road map and template for software engineers and managers.
  • Unified Process
    • Use case driven, architecture-centric, iterative, and incremental software process.
    • Draws on best features of traditional software process models and agile development principles.

58 of 75

Unified Process Key Features

Emphasizes Customer Communication

Streamlined methods for describing the customer's view of a system (use case)

Helps the architect focus on the right goals, such as understandability, reliability to future changes, and reuse

Iterative and Incremental Process Flow

Provides an evolutionary feel essential in modern software development

Supports adaptability to meet specific project needs

59 of 75

Unified Process Phases and History

Development of UML and Unified Process

    • UML is a unified modeling language that combines object-oriented analysis and design methods
    • The Unified Process was developed by Jacobson, Rumbaugh, and Booch to guide project teams in applying UML

Phases of the Unified Process

    • The Unified Process consists of phases that relate to generic framework activities
    • The phases can be adapted to meet specific project needs

60 of 75

Inception Phase Overview

Customer Communication and Planning

    • Collaborate with stakeholders to identify business requirements and propose a rough system architecture.
    • Develop a plan for the iterative, incremental nature of the project, including resource allocation, risk assessment, and scheduling.

Preliminary Use Cases and Architecture

    • Describe fundamental business requirements through preliminary use cases, outlining features and functions for each major user class.
    • Propose a tentative outline of major subsystems and their functions, which will be refined later.

61 of 75

Elaboration Phase Activities

  • Communication and Modeling
    • Refine and expand preliminary use cases to include five different views of the software: use case, requirements, design, implementation, and deployment models.
    • Create an executable architectural baseline, representing a first cut of the system, to demonstrate architecture viability.
  • Plan Review and Modification
    • Carefully review the plan to ensure scope, risks, and delivery dates remain reasonable.
    • Make necessary modifications to the plan at the culmination of the elaboration phase.

62 of 75

Unified Process Construction Phase

Develop or Acquire Software Components

    • Requirements and design models are completed to reflect the final version of the software increment.
    • All necessary features and functions for the software increment are implemented in source code.

Implement and Test Software Components

    • Unit tests are designed and executed for each component.
    • Integration activities (component assembly and integration testing) are conducted.

63 of 75

Unified Process Transition and Production Phases

  • Transition Phase: Software Deployment and Feedback
    • Software is given to end users for beta testing and user feedback reports defects and necessary changes.
    • Support information (e.g., user manuals, troubleshooting guides) is created for the release.
  • Production Phase: Ongoing Software Support
    • Ongoing use of the software is monitored, and support for the operating environment is provided.
    • Defect reports and requests for changes are submitted and evaluated.

64 of 75

Personal Software Process (PSP) Overview

Emphasizes Personal Measurement and Responsibility

    • Individuals measure and track their work product quality and efficiency
    • Practitioners are responsible for project planning and quality control

Five Framework Activities in PSP

    • Planning: Isolate requirements, develop estimates, and create a project schedule
    • High-level design: Develop component designs and prototypes, track issues

65 of 75

PSP Framework Activities and Postmortem

    • High-level design review: Apply formal verification methods to uncover errors
    • Development: Refine component-level design, generate and test code

Additional PSP Framework Activities

    • Analyze collected measures and metrics to determine process effectiveness
    • Use data to guide process modifications and improvements

Postmortem Analysis in PSP

66 of 75

Personal Software Process (PSP) Overview

  • Identify Errors Early and Understand Error Types
    • PSP emphasizes the need to record and analyze the types of errors you make, so that you can develop strategies to eliminate them.
    • This is accomplished through a rigorous assessment activity performed on all work products you produce.
  • Benefits of PSP Adoption
    • PSP leads to significant improvement in software engineering productivity and software quality.
    • However, PSP adoption is hindered by human nature and organizational inertia.

67 of 75

Team Software Process (TSP) and Self-Directed Teams

    • TSP aims to build self-directed project teams that plan and track their work, establish goals, and own their processes and plans.
    • A self-directed team has a consistent understanding of its overall goals and objectives, and tracks quantitative project data.

TSP Objectives and Key Features

    • TSP accelerates software process improvement by making CMM Level 5 behavior normal and expected.
    • TSP facilitates university teaching of industrial-grade team skills.

Benefits of TSP Adoption

68 of 75

TSP Framework Activities

TSP Framework Activities Overview

Project launch, high-level design, implementation, integration and test, and postmortem activities enable disciplined software development and quantitative process measurement.

These activities set the stage for process improvements through postmortem analysis.

TSP Scripts and Standards

TSP scripts define specific process activities and detailed work functions, guiding team members in their work.

Examples of scripts include project launch, design, implementation, integration and system testing, and postmortem activities.

69 of 75

Adapting Process Models with Process Technology

Process Technology Overview

Process technology tools help software organizations analyze their current process, organize work tasks, and control progress.

These tools enable the creation of an automated process model, facilitating workflow analysis and alternative process structures.

Process Technology Applications

Process technology tools can allocate, monitor, and control software engineering activities, actions, and tasks.

Each team member can use these tools to develop a checklist of work tasks, products, and quality assurance activities.

70 of 75

The Software Process: Understanding and Modeling

    • Process modeling tools represent key elements of a process to improve understanding and facilitate process descriptions.
    • These tools provide links to process descriptions, actions, and work tasks required to perform the process.

Process Modeling Tools: Objective and Purpose

    • Tools allow teams to define unique process models, provide detailed guidance on process elements, and manage the process as it is conducted.
    • Some tools incorporate standard project management tasks such as estimating, scheduling, tracking, and control.

Mechanics of Process Modeling Tools

71 of 75

Product and Process Duality

  • The Pendulum Swing Between Product and Process
    • The software community constantly shifts focus between product and process issues, causing confusion and failure to solve the problem.
    • This dichotomy is harmful and does not recognize the dual nature of product and process.

72 of 75

Duality of Product and Process

  • Viewing Artifacts as Both Product and Process
    • Derives a sense of self-worth from activities resulting in reusable representations or instances.
    • Increases satisfaction from reuse of products by oneself or others.
  • Consequences of One-Sided View
    • Reduces opportunities for reuse and job satisfaction.
    • Obscures context and ways to use artifacts.

73 of 75

Software Engineering Process Models

  • Generic Process Model for Software Engineering
    • Encompasses framework and umbrella activities, actions, and work tasks.
    • Can be described by different process flows and patterns.
  • Prescriptive Process Models and Sequential Paradigms
    • Suggest different process flows, but perform the same generic framework activities.
    • Have applicability in situations with well-defined and stable requirements.

74 of 75

Incremental Process Models Overview

    • Recognize the iterative and incremental nature of software engineering projects
    • Designed to accommodate change and produce incremental work products quickly

Evolutionary Process Models

    • Component-based model: emphasizes component reuse and assembly
    • Formal methods model: encourages a mathematically based approach to software development and verification

Specialized Process Models

75 of 75

Software Process Models and Activities

Unified Process and Personal/Team Models

Unified Process: use case driven, architecture-centric, iterative and incremental

Personal and team models emphasize measurement, planning, and self-direction

Challenges and Research Opportunities

Communication challenges: conflicting ideas and requirements

Measurement and improvement: PSP and personal effectiveness