What CMMI Cannot Give You: Good Software



Similar documents
3C05: Unified Software Development Process

Plan-Driven Methodologies

The Unified Software Development Process

I219 Software Design Methodology

Software Project Management using an Iterative Lifecycle Model

Modellistica Medica. Maria Grazia Pia, INFN Genova. Scuola di Specializzazione in Fisica Sanitaria Genova Anno Accademico

MKS Integrity & CMMI. July, 2007

Developing CMMI in IT Projects with Considering other Development Models

Classical Software Life Cycle Models

Software Development Process Models and their Impacts on Requirements Engineering Organizational Requirements Engineering

Software Engineering for Software-Intensive Systems: III The Development Life Cycle

Outline. III The Development Life Cycle. Characteristics of Software Development Methodologies. The Prototyping Process

The Essence of Software Engineering: Applying the SEMAT Kernel. Scott Ambler interviews Ivar Jacobson

TOGAF usage in outsourcing of software development

CS 1632 SOFTWARE QUALITY ASSURANCE. 2 Marks. Sample Questions and Answers

Business Modeling with UML

CAPABILITY MATURITY MODEL INTEGRATION

An Introduction to the UML and the Unified Process

Capability Maturity Model Integration (CMMI SM ) Fundamentals

CHAPTER. Software Process Models

Leveraging CMMI framework for Engineering Services

2. Analysis, Design and Implementation

Process Improvement -CMMI. Xin Feng

Requirement Management with the Rational Unified Process RUP practices to support Business Analyst s activities and links with BABoK

Agile Unified Process

A FRAMEWORK FOR INTEGRATING SARBANES-OXLEY COMPLIANCE INTO THE SOFTWARE DEVELOPMENT PROCESS

Applying CMMI SM In Information Technology Organizations SEPG 2003

CHAPTER_3 SOFTWARE ENGINEERING (PROCESS MODELS)

Requirements Engineering Process

Universiteit Leiden. ICT in Business. Leiden Institute of Advanced Computer Science (LIACS) Capability Maturity Model for Software Usage

Software Engineering. Christopher Simpkins Chris Simpkins (Georgia Tech) CS 2340 Objects and Design CS / 16

CMMI and IBM Rational Unified Process

Using Use Cases on Agile Projects

The Rap on RUP : An Introduction to the Rational Unified Process

Reaching CMM Levels 2 and 3 with the Rational Unified Process

Process Improvement. From the Software Engineering Institute:

In this Lecture you will Learn: Development Process. Unified Software Development Process. Best Practice

User experience storyboards: Building better UIs with RUP, UML, and use cases

ISSUES OF STRUCTURED VS. OBJECT-ORIENTED METHODOLOGY OF SYSTEMS ANALYSIS AND DESIGN

RUP. Development Process. Iterative Process (spiral) Waterfall Development Process. Agile Development Process. Well-known development processes

Future of CMM and Quality Improvement. Roy Ko Hong Kong Productivity Council

The most suitable system methodology for the proposed system is drawn out.

A Report on The Capability Maturity Model

Abstract. Heavy vs Light Methodologies: Bulimic or Anorexic? Fernando Brito e Abreu FCT/UNL

Software Development Life Cycle (SDLC)

Software Design Models, Tools & Processes *

To introduce software process models To describe three generic process models and when they may be used

Distributed and Outsourced Software Engineering. The CMMI Model. Peter Kolb. Software Engineering

In this Lecture you will Learn: Systems Development Methodologies. Why Methodology? Why Methodology?

A Software Engineering Approach For GIS Developing

Software Engineering. Software Processes. Based on Software Engineering, 7 th Edition by Ian Sommerville

The profile of your work on an Agile project will be very different. Agile projects have several things in common:

Applied Software Project Management

Software Development Methodologies

Abstract. 1 Introduction

Agile Modeling: A Brief Overview

V. Phani Krishna et al, / (IJCSIT) International Journal of Computer Science and Information Technologies, Vol. 2 (6), 2011,

Software Development: An Introduction

Verification and Validation of Software Components and Component Based Software Systems

CS 389 Software Engineering. Lecture 2 Chapter 2 Software Processes. Adapted from: Chap 1. Sommerville 9 th ed. Chap 1. Pressman 6 th ed.

Development Methodologies. Types of Methodologies. Example Methodologies. Dr. James A. Bednar. Dr. David Robertson

Systematization of Requirements Definition for Software Development Processes with a Business Modeling Architecture

The role of integrated requirements management in software delivery.

Applying Use Cases to Microcontroller Code Development. Chris Gilbert Cypress Semiconductor

SW Process Improvement and CMMI. Dr. Kanchit Malaivongs Authorized SCAMPI Lead Appraisor Authorized CMMI Instructor

IT3203 Fundamentals of Software Engineering (Compulsory) BIT 2 nd YEAR SEMESTER 3

Course Computer Science Academic year 2012/2013 Subject Software Engineering II ECTS 6

The Role of the Software Architect

10/4/2013. Sharif University of Technology. Session # 3. Contents. Systems Analysis and Design

SOFTWARE PROCESS MODELS

A Rational Software Corporation White Paper

RUP for Software Development Projects

CS4507 Advanced Software Engineering

CMMI KEY PROCESS AREAS

Basic Unified Process: A Process for Small and Agile Projects

ICTEC. IT Services Issues HELSINKI UNIVERSITY OF TECHNOLOGY 2007 Kari Hiekkanen

IV. Software Lifecycles

IT3205: Fundamentals of Software Engineering (Compulsory)

Rational Unified Process for Systems Engineering RUP SE1.1. A Rational Software White Paper TP 165A, 5/02

2. Analysis, Design and Implementation

DEVELOPING REQUIREMENTS FOR DATA WAREHOUSE SYSTEMS WITH USE CASES

Engineering Standards in Support of

TRADITIONAL VS MODERN SOFTWARE ENGINEERING MODELS: A REVIEW

Fundamentals of Measurements

Software Lifecycles Models

The Software Process. The Unified Process (Cont.) The Unified Process (Cont.)

Interpretation and lesson learned from High Maturity Implementation of CMMI-SVC

CMMI - The AGILE Way By Hitesh Sanghavi

Object-Oriented Design Guidelines

What is a life cycle model?

Listening to the Customer s Voice 1

CMMI: Specific Goals and Practices

Frameworks for IT Management

Information systems modelling UML and service description languages

A Capability Maturity Model (CMM)

Requirements Management Best Practices

Transcription:

What CMMI Cannot Give You: Good Software Ivar Jacobson ivar@ivarjacobson.com ivar@jaczone.com

Objective To understand what CMM/CMMI is and what it is not To demonstrate how the unified process helps you achieve real software development maturity

Agenda What CMM/CMMI means What Software Development Maturity Really Means Developing Really Good Software Achieving Real Process Improvement

Purpose of CMM/CMMI How can I really be sure? DoD Trust me. We do good software How can I assess you? Software Contractor How do I pass assessment? Is CMM/CMMI the answer?

What is CMM/CMMI? The CMM is a framework that describes the key elements of an effective process. It provides a foundation for process improvement. The CMM describes an evolutionary improvement path from an ad hoc, immature process to a mature, disciplined process. It has five levels of progressive process maturity (Initial, Repeatable, Defined, Managed, and Optimizing). The CMM has become a de facto industry standard for assessing and improving processes http://www.state.gov/m/a/sdbu/pubs/9729.htm CMMI is a more comprehensive than CMM, but the principles and purpose are largely the same

Truth about CMM/CMMI CMM contains five levels of progressive process maturity (Initial, Repeatable, Defined, Managed, and Optimizing), and indicates the Process Areas (PA) that are addressed at each level. It tells you which areas you (as software vendor) should be improving, but not how you should be doing in that area CMM says I must improve in Requirements Management Requirements Software Contractor But how should I actually do Requirements Management

What does CMMI Level means? I am level 5, you are level 2. I am better in everything than you Software Vendor Software Vendor Does higher CMM level ensure better capability in each area?

What does CMMI Level means? I have CMMI Level 5! Why are you still doing things so differently? I have CMMI Level 5! Software Vendor A Software Customer Software Vendor B Does same CMM level means same process?

What is a good foundation for CMMI? Project Management Project Planning Project Monitoring and Control Supplier Agreement Management Integrated Project Management(IPPD) Integrated Supplier Management (SS) Integrated Teaming (IPPD) Risk Management Quantitative Project Management Support Configuration Management Process and Product Quality Assurance Measurement and Analysis Causal Analysis and Resolution Decision Analysis and Resolution Organizational Environment for Integration (IPPD) Engineering Requirements Management Requirements Development Technical Solution Product Integration Verification Validation CMMI Process Areas Process Management Organizational Process Focus Organizational Process Definition Organizational Training Organizational Process Performance Organizational Innovation and Deployment Many process areas what are their relationships? Is there any approach that can unify all the different process areas? Need to get the foundation right!

Agenda What CMM/CMMI means What Software Development Maturity Really Means Developing Really Good Software Achieving Real Process Improvement

Real software maturity Is software maturity about describing how you do software? Is software maturity about how you get good software? How do I pass assessment? To pass assessment, I need to describe the current way I am doing requirements, etc. How do I get good requirements? Good meaning well-organized, testable, understandable, etc.

A Story about A Foolish Farmer and a Thirsty Cow This is path the cow takes every day WATER COW There was once a farmer who has a thirsty cow. The cow follows an unusual route to the water hole every day, and kicked some of the farmer s crops.

A Story about A Foolish Farmer and a Thirsty Cow WATER COW The farmer decides to build a path for the cow, so that the cow no longer damage his crops. He loves his cow, so he puts flowers on the path. Now the cow gets to the water hole faster and his crops stay healthy!

A Story about A Foolish Farmer and a Thirsty Cow WATER COW Actually, there is a better route! Much easier to build and better results!

A Story about A Foolish Farmer and a Thirsty Cow WATER WATER Bad Process Good Process You can describe and even measure a bad process It is easy, but is it worth it? But it is best to have a good process in the first place It is not easy, but it is worth it! It is easy to make a good process measurable; but it is hard to make a measurable process good

A Story about A Foolish Farmer and a Thirsty Cow WATER WATER Bad Process Focus on documents Late exposure and resolution of risks Quality verified late in project Complex traceability from requirement to code Fragile in face of changes Etc. Good Process Focus on working software Early exposure and resolution of risks Quality throughout the project Seamless transition from requirements to code Robust to changes Etc.

Be a Smart Farmer Get your software processes good/right first! Before you describe and publicize the process (or seek CMM certification) Software maturity is NOT about how well you describe and measure your software development processes Software maturity is about how well you develop software It is about THE RESULT of your software development process WATER

Agenda What CMM/CMMI means What Software Development Maturity Really Means Developing Really Good Software Achieving Real Process Improvement

What is good software Good software IS component based! We need a way to describe software components and how they interact UML component UML

Component technology and UML is not enough! Components and UML can be used wrongly Need good practices! How to identify the right components in the first place? How to manage the development of components? Best Practices WATER component UML

Core Best Practices to Deliver Good Software Focus on working software Early exposure and resolution of risks Quality throughout the project Seamless transition from requirements to code Robust to changes Iterative architecture use case component UML

Core Best Practices The most important practices are Iterative development Use cases driven development Architecture-centric Iterative architecture use case component UML

Traditional waterfall development Requirements High-Level Design Detailed-Level Design Coding Testing

Traditional waterfall development and your investments Requirements High-Level Design Wrong! Detailed-Level Design Coding Kick away your old habits Testing

Modern iterative risk driven approach Project Iteration = mini-project time Integrate, test and deliver Requirements And analysis Design, code Unit test The whole project is divided into a number of mini-project Each mini-project is an iteration, i.e. iteration=mini-project Each mini-project is like a project The trick is to select what to do in each iteration

Every iteration produces new version of the system that is tested Project Iteration 1 Iteration 2 Iteration 3 time Version 1 Version 2 Version 3 If at any time, budget is cut or for whatever reason the project is cancelled, you still have a working system. Your investments are protected.

Core Best Practices The most important practices are Iterative development Use cases driven development Architecture-centric Iterative architecture use case component UML

Fundamentally software development is use case driven Any product development should follow three steps: 1. Capture the stakeholders concerns 2. Design to fit those concerns 3. Test that the concerns are fulfilled stakeholders concerns are modeled as use-cases Use Case Driven Req t Design & Impl. Test Capture the Use Cases Design to Implement the Use Cases Test that the Use Cases are Fulfilled

What is a use case? A use case is a sequence of actions a system performs that yields an observable result of value to a particular actor Customer Reserve Room Use case specifications versus traditional feature spec s? Focus on end user concerns Focus on acceptance criteria Focus on incremental software development

The role of use-cases Reuse Requirements Architecture Iteration Planning Use Cases Analysis & Design Business Modeling User Experience Design Test

Core Best Practices The most important practices are Iterative development Use cases driven development Architecture-centric Iterative architecture use case component UML

A good architecture keeps concern separate A system need to balance many different kinds of concerns Please don t forget security! I want this functionality analyst Changes to a concern should not have huge impact on the system stakeholders I want performance A Layered Architecture! architect

A layered architecture separate concerns Layers facilitate identification components Layers facilitate organization of resources Layers facilitate systematic reuse More Application Specific Customer Customer Application Application Counter Counter Application Application Waiting Waiting List List Service Service Application Layer Reservation Reservation Management Management Room Room Management Management Domain Layer Authorization Authorization Presentation Presentation Distribution Distribution Persistence Persistence Infrastructure Layer More Application Generic

Agenda What CMM/CMMI means What Software Development Maturity Really Means Developing Really Good Software Achieving Real Process Improvement

Recap: We want a better route to better software WATER Iterative architecture use case Criteria for Good Process Focus on working software Early exposure and resolution of risks Quality throughout the project Seamless transition from requirements to code Robust to changes There is a Good Process It is Iterative Use case driven Architecture centric

Build On A Strong Foundation Project Management Project Planning Project Monitoring and Control Supplier Agreement Management Integrated Project Management(IPPD) Integrated Supplier Management (SS) Integrated Teaming (IPPD) Risk Management Quantitative Project Management Support Configuration Management Process and Product Quality Assurance Measurement and Analysis Causal Analysis and Resolution Decision Analysis and Resolution Organizational Environment for Integration (IPPD) Engineering Requirements Management Requirements Development Technical Solution Product Integration Verification Validation CMMI Process Areas Process Management Organizational Process Focus Organizational Process Definition Organizational Training Organizational Process Performance Organizational Innovation and Deployment Iterative architecture use case component uml

Real Software Improvement Is Hard! While ideas to iterative development, use case driven and architecture centric approach is simple Many misinterpretation and poor formulation Software improvement is organizational and cultural change! Affects developers, managers, executives Be adequately prepared Executives Iterative risk-driven Architecture centric Managers Use case driven Developers

True Software Maturity Across The Industry Everyone both software vendors and software customers use a common approach to develop good software! Software Vendors Software Customers Iterative architecture use case component uml

Final Remarks We can describe and measure a bad process But only a good process is worth describing and measuring Adopt the good process Then you can describe and measure it It is easy to make a good process measurable, but it is hard to make a measurable process good We will help you do both

Thank you Thank You

References The UML Books (Booch, Jacobson, Rumbaugh with Addison Wesley) The UML User Guide The UML Reference Manual The Unified Software Development Process The Rational Unified Process The Rational Unified Process - An Introduction Philippe Kruchten (Addison Wesley)

References cont d On Use Cases Object-Oriented Software Development--A Use Case Driven Approach (Addison Wesley) Jacobson et al, Addison Wesley Longman (1992) On Business Modeling The Object Advantage: Business Process Reengineering with Objects (Addison Wesley) Jacobson et al, Addison Wesley Longman (1994)

References cont d On Systems of Systems Software Reuse: Architecture, Process and Organization for Business Success (Addison Wesley) Ivar Jacobson, Martin Griss & Patrik Jonsson, Addison Wesley Longman (1997) On Aspects Aspect Oriented Software Development with Use Cases (Addison Wesley) Ivar Jacobson, Pan-Wei Ng, Addison Wesley (2004)

Other References Karl E. Wiegers, Misconceptions of the Capability Maturity Model http://www.processimpact.com/articles/miscon.html