CS 3610: Software Engineering – Spring 2009 Dr. Hisham Haddad – CSIS Dept. Chapter 2 The Software Process Discussion of the Software Process: Process Framework, CMM, and Patterns CS 3610: Software Engineering – Spring 2009 Dr. Hisham Haddad – CSIS Dept. The Process • What is a Process? A roadmap (predefined steps) to produce a quality product or accomplish a specific task. - Building a car - Student registration • What is Software Process? A predefined series of steps (called framework or approach) to guide us in the development of high quality software products. Is software process same as software engineering? CS 3610: Software Engineering – Spring 2009 Dr. Hisham Haddad – CSIS Dept. Software Engineering (1) Software engineering involves Process (management and control), Methods (“how to“ technical tasks), and tools (support) with the goal of producing high quality software products. tools methods process model a “quality” focus Software Engineering Layers CS 3610: Software Engineering – Spring 2009 Dr. Hisham Haddad – CSIS Dept. Software Engineering (2) Software is engineered through three essential phases: - Discovery (definition) (What to do) Data, Functions, Behavior, Interface, Limitation and Constraints, Validation Criteria, etc… - Development (construction) (How to implement it) Data Structures, Algorithms, Interface Characteristics, Error Handling, etc… - Support (maintenance) Corrections and fixes, Changes to environment (HW and SW), Functional enhancements, Interfacing, etc… SE layers cover all three phases. CS 3610: Software Engineering – Spring 2009 Dr. Hisham Haddad – CSIS Dept. Software Process A software process consists of process (framework) activities applied to all projects, such as Discovery/communication, planning, modeling (requirements analysis and design), construction (prototyping, coding, and testing), deployment, and maintenance/support. Each process activity has actions and task sets. (see figure 2.2) work tasks, milestones, products, deliverables, and quality assurance checkpoints, etc… Umbrella activities are additional activities applied throughout the process, and are independent of process activities. CS 3610: Software Engineering – Spring 2009 Dr. Hisham Haddad – CSIS Dept. Umbrella Activities (1) • Project management (planning, tracking and control) • Formal technical reviews (reviews help identify errors as early as possible) • Quality control (reviews, inspections, and tests insure that the product meets the requirements) • Quality assurance (auditing and reporting of management functions) • Configuration management (Management and control of changes while building the software) • Document preparation and production (all sort of documentations for the product and the process) CS 3610: Software Engineering – Spring 2009 Dr. Hisham Haddad – CSIS Dept. Umbrella Activities (2) • Reusability management (planning, defining, and applying reusability) • Measurements (metrics or data to assess product quality, process effectiveness, and people efficiency) • Risk management (risk identifying and developing plan to mitigate, monitor, and manage such risks) CS 3610: Software Engineering – Spring 2009 Dr. Hisham Haddad – CSIS Dept. Software Process Adaptability Process activities will always be applied to every project … BUT, the tasks (and degree of rigor) for each activity will vary based on: - the type/nature of project (entry point to the model) - characteristics of the project - concurrence/harmony of the project team The “Prescriptive” nature of software process models (chapter 3) lead to the “agile” process models (chapter 4): - facilitate dynamic adaptability of changes - effective response to changes (arguable!) - introduction of agile process models (e.g., extreme programming) CS 3610: Software Engineering – Spring 2009 Dr. Hisham Haddad – CSIS Dept. Process Model Variations Process models are not alike! - flow of and dependency among activities and tasks task definition within each activity product identification and requirement degree of rigor of quality assurance tasks degree of applicability of tracking and control activities degree of customer involvement in the process level of autonomy given to the project team description of team organization and roles overall process details and its degree of rigor CS 3610: Software Engineering – Spring 2009 Dr. Hisham Haddad – CSIS Dept. Software Process Maturity (CMMI) (1) CMMI (Capability Maturity Model Integration) is a model (developed by SEI) to assess the maturity of an organization’s software process. The CMMI defines each process area ( in terms of “specific goals” and the “specific practices” required to achieve these goals. – Specific Goals (SG) describe characteristics that must exist if the activities implied by a process area are to be effective. – Specific Practices (SP) refine a goal into a set of activities. – Generic Goals (GG) and Generic Practices (GP) defined for each process area in at each maturity level. See page 29 for SGs, SPs, GGs, and GPs for Project Planning. CS 3610: Software Engineering – Spring 2009 Dr. Hisham Haddad – CSIS Dept. Software Process Maturity (CMMI) (2) CMMI consists of 5 maturity levels: Level 0: Incomplete: Informal (ad hoc) process. Level 1: Performed: Management process (scheduling and tracking) in place and success can be repeated on similar projects. Work tasks are defined and applied. Level 2: Managed: The organization has a defined policy, all needed resources are provided, customers actively involved, and has monitoring/control procedures. All projects follow the process approved by the organization. CS 3610: Software Engineering – Spring 2009 Dr. Hisham Haddad – CSIS Dept. Software Process Maturity (CMMI) (3) Level 3: Defined: The process is documented and standardized. Organization-specific process and improvement guidelines are defined. Level 4: Quantitatively Managed: Quality and assurance measures are in place and quantitative data is collected. Level 5: Optimized: Continues process improvement capabilities. Each level has Key Process Areas (KPAs) that must be practiced to be at that level. (see figure 2.4, page 31) Each KPA has goals, requirements, abilities/tools, tasks, monitoring procedures, and verification methods. Visit SEI Site: http://www.sei.cmu.edu/ for details. CS 3610: Software Engineering – Spring 2009 Dr. Hisham Haddad – CSIS Dept. Process Patterns Process patterns define a set of activities, actions, work tasks, or work products. Templates are used to define patterns (at different levels) Typical examples: – – – – – Customer communication (a process activity) Analysis (an action of modeling activity) Requirements gathering (a work task of modeling activity) Reviewing a work product (a work task quality control activity) Test plan (a work product of construction activity) Why define process patterns? See page 32 for a sample template. CS 3610: Software Engineering – Spring 2009 Dr. Hisham Haddad – CSIS Dept. Process Assessment The process should be assessed to ensure that it meets a set of basic process criteria that are essential for a successful software engineering. The assessment process should lead to capability determination and process improvement. Many different assessment options are available: • SCAMPI (Standard CMMI Assessment Method for Process Improvement) • CBA IPI (CMM-Based Appraisal for Internal Process Improvement) • SPICE (ISO/IEC 15504) • ISO 9001:2000 for software CS 3610: Software Engineering – Spring 2009 Dr. Hisham Haddad – CSIS Dept. Process and Assessment Relationship Software Process is examined by identifies modifications to identifies capabilities and risk of Software Process Assessment leads to Software Process Improvement motivates leads to Capability Determination CS 3610: Software Engineering – Spring 2009 Dr. Hisham Haddad – CSIS Dept. Personal Software Process PSP is a metrics-based approach intended for individual software developers (to develop proper development practices). It emphasizes the measurement of the product and its quality. It stresses the need to identify and track errors early, and to understand the types and causes of errors. It is based on five framework activities: – Planning – High-level design – High-level design review – Development – Postmortem (analysis of gather data and errors for improvement) CS 3610: Software Engineering – Spring 2009 Dr. Hisham Haddad – CSIS Dept. Team Software Process TSP is a metrics-based approach intended to facilitate selfdirected software development teams. It emphasizes self-management, from planning to metrics analysis (to improve the teams’ development practices). TSP activities: – Each project starts with a script that defines the tasks to be accomplished (planning) – Teams are self-directed (management) – Measurement is encouraged (data collection) – Measures are analyzed with the intent of improving the team process (develop metrics) CS 3610: Software Engineering – Spring 2009 Dr. Hisham Haddad – CSIS Dept. Process Technology Tools (1) Tools to facilitate process adoption and implementation in an organization. Mainly, work tasks organization, work flow, progress control and monitoring, work status, checklists, use of other tools, and others… Taxonomy of CASE Tools: - Business process engineering tools Process modeling and management tools Project planning tools Risk analysis tools Project management tools Requirements tracing tools Metrics and management tools Documentation tools System software tools CS 3610: Software Engineering – Spring 2009 Dr. Hisham Haddad – CSIS Dept. Process Technology Tools (2) - Quality assurance tools Database management tools Software configuration tools Analysis and design tools Prototyping and simulation tools Interface design and development tools Programming tools Web development tools Integration and testing tools Static analysis tools Dynamic analysis tools Test management tools Reengineering tools CS 3610: Software Engineering – Spring 2009 Dr. Hisham Haddad – CSIS Dept. The Goal: High Quality The process has direct impact on the quality of the final product. Selecting the appropriate process for a given project leads to a better product! CS 3610: Software Engineering – Spring 2009 Dr. Hisham Haddad – CSIS Dept. Suggested Problems Try to work problems 2.1, 2.3, 2.4, 2.5, 2.6, 2.10, and 2.12 from Chapter 2, page 43. No submission is required for practice assignments. Work it for yourself! CS 3610: Software Engineering – Spring 2009 Dr. Hisham Haddad – CSIS Dept. Last Slide End of chapter 2