Software Development Processes & Assessment

Download Report

Transcript Software Development Processes & Assessment

Software Development Activities, Processes,
Techniques & Assessment
1. Software Development Activities: Req. Processing, Architecting, Designing,
Coding, Testing, Integrating, etc.
2. Software Development Processes
–
–
–
–
–
Waterfall
Spiral
Prototyping : Rapid & Evolutionary
Iterative
Agile
3. Software Development Techniques and Methodologies
–
–
–
–
–
Structured Programming, Functional Decomposition, Entity-Relationship analysis
Object Oriented Programming
Clean Room set of techniques (formal specification, formal design and verification,
statistical testing, quality modeling)
Defect Prevention set of techniques (root cause analysis, reviews & formal inspections,
implementing preventive actions)
Agile Methodologies
4. Assessments:
–
–
–
–
SEI’s Capability Maturity Model (CMM/CMMI)
Software Productivity Research (SPR)
Malcolm Baldrige National Quality Award (MBNQA)
ISO 9000
Software Development Activities
• “Direct” Development Activities (Pre-Release):
–
–
–
–
–
–
–
–
Requirement Gathering and Analysis (of all deliverables)
Design and Specifications
Implementation (of code, test cases, documentation, help, etc.)
Unit and Functional Test
Component Test
Regression Test and System Test
Packaging and Release
Customer Alpha and Beta Tests
• “Direct” Development Activities (Post-Release):
–
–
–
–
Problem Identification or “debugging” (for fixing bugs)
Problem Tracking (for managing bug fixes)
(same activities as above ---- for multiple releases of product)
Special Package and Release for Emergency Fixes and releases
Supporting Software Development Activities
• “Indirect” Activities that Support Development :
–
–
–
–
–
–
–
–
–
Reviews and Inspections (may be considered “direct” like testing activity)
Test Scaffolding
Estimation and Projection
Status Management & Reports (big area)
Change Control
Configuration Management
Quality Assurance
Customer Satisfaction Survey and Analysis
Measurements and Analysis
• Development Tools:
– All phases of Development and post-release Support tool
– Version and configuration management tool
supports indirect activities:
– All types of Management Activities and Reports
– All types Measurements, Estimation, Projection
2 Well Known Processes
• Waterfall
– Go through the development activities sequentially like a cascading
“waterfall” and relatively rigid
– Focus on the deliverables from each stage of the process (great
for contracts and mile-stones tracking)
– Started some 30 years ago, and used by large complex projects
• Spiral
– A refinement over the Waterfall approach development by Boehm
at TRW (applied to several government contracts --- for risk averse
projects)
– Divides the Process into 4 major portions
•
•
•
•
Identify objectives (allows incorporation of goals)
Analyze risks and prototyping (this requires skills)
Develop and Test (perform the task)
Review and Plan (allows incorporation of good planning)
Other Process Models
• Prototyping
– Iterate in the gathering and understanding of the requirements
– Include the building prototypes before full scale development
– Prototypes may include low-tech paper user interface diagrams
all the way to using very advanced tools to create scenarios
– Has two major approaches:
• Rapid Prototypes - where the prototypes are built but may be
thrown away ( e.g. high risk, proof of concept or ‘quick and dirty’ )
• Evolutionary Prototypes - where the first prototype is built based on
some relatively well established requirements, refined, and evolved
as opposed to thrown away
• Iterative
– First establish the requirements and put together a solid design
– Iterate in the implementation of risk analysis, prototype, code,
tests, and integration of the pieces as they get completed.
When do you stop prototyping ? ; When do you stop the Design ?
Software Development Techniques
• Early Techniques:
– Structured Programming
– Functional Decomposition
• Strong cohesion
• Loose coupling
– Focus on data : Entity Relationship
• Clean Room :
– Championed by Rick Linger & Harlan Mills of Structured Prog.
– Based on Formal Correctness and Verification Methods
• Defect Prevention:
– Analyze problem and identify root cause
– Suggest preventive actions and elimination of root causes
– Implement the suggestions
• Test to “show correctness” versus test to “find error”
• Object Oriented Programming:
– Views and models the user requirements as “objects” or classes
– Design and develops using “objects” or classes which includes both
•
•
attributes (data)
functional capabilities (functions)
Agile Development Methodologies
• Common points of preference and focus:
–
–
–
–
–
•
People and interaction
User/customer collaboration
Flexibility and change
Executable software
Incremental
.vs.
.vs.
.vs.
.vs.
.vs.
Process and tools
Negotiation and contracts
Plan driven
Complete documentation
Complete system
Some noteworthy Agile methods:
–
–
–
–
Extreme programming – K. Beck
Scrum - (Taheuchi & Nonaka); or Schwaber
Crystal family – A. Cockburn
Feature Driven Development – Palmer and Felsing
Extreme Programming (XP)
• A Programming practice or set of principles
originated by Kent Beck in the mid-90’s.
• Based on the concept of quick and constant
“Feedback Mechanism” involving:
•
•
•
•
•
•
•
•
•
•
•
Planning Game (Small Units of Requirements)
Onsite Customer (Immediate and better feedback)
Metaphor (Use one set of metaphor for design/architecture)
Simple Design (Just enough to cover what’s needed)
Coding Standard (Facilitates better communication)
Collective Code Ownership (Peer pressure to improve code)
Pair Programming (Feedback and shared improvements)
Refactoring (Continuous examination to improve code)
Continuous Functional and Unit Testing (100% completion)
Continuous Integration (integrating small functional “releases”)
40 hour work (high morale and energy level)
Extreme Programming “Process”
“loosely defined”
Onsite Customers
Coding standards
Planning
Game
Simple Design
Pair Programming
Functional &Unit Test
Small
Release
System Metaphors
Refactoring
Collective Code
Ownership
Continuous Integration
Larger
Release
Adhere to 40 hour work week as much as possible !
Scrum
• Currently (2010 – 2013 ----201x) popular methodology
• Another Agile process --- similar to XP:
– Small time-boxed unit of development (1wk - 1 month) --called SPRINT.
– Has time- boxed daily scrum meeting to share:
•
•
•
•
what was done yesterday,
what is to be done today, and
what impediment, if any, exist
Burn chart to show sprint status
– Sprint Planning meeting to plan each sprint
– 3 major roles of people:
• Product owner – represents users and stakeholders
• Development team – designers, coders, testers, etc.
• Scrum master – leads team in enforcing rules and remove
impediments (not a people manager)
What about all these processes and
methodologies?
•
•
•
•
Do we gain productivity ?
Do we gain quality ?
Do we reduce cost?
Do we gain on technology, function/features ?
• How would we know and what do we use to measure
these?
• Are there “limits” to these methodologies and
processes?
– “Large” increments of work? (size limitation)
– “Large” team? (size limitation)
– Physically remote and multi-located (e.g. offshore &
distributed) ? (mode limitation)
Software Development Process Assessment
• More Recognized:
– SEI’s Capability Maturity Model (CMM) and
CMMI
– ISO 9000 (the software registration 9001;9003)
• Others (Less Recognized):
– Software Productivity Research (SPR)
– Malcolm Baldrige National Quality Award
– IEEE Standards (730-1984; 983-1986 )
SEI’s Capability Maturity Model
•
•
•
•
•
Level 1: Initial stage where there is no process and activities are chaotic
Level 2: Fundamental Processes in place and Repeatable
– Requirements Management
– Software Project Planning
– Software Project Tracking and Oversight
– Software Configuration Management
– Software Quality Assurance
– Software Subcontract Management
Level 3: Management Processes getting integrated and Defined
– Organization Process Focus
– Organization process Definition
– Training Program
– Integrated software Management
– Software Product Engineering
– Intergroup Coordination
– Peer Reviews
Level 4: Processes are measurable and Managed
– Process Measurement and Analysis
– Quality Management
Level 5: Continuous improvement of processes and Optimizing
– Defect Prevention
– Technology Innovation
– Process Change Management
ISO 9000
•
•
•
•
International Standards Organization sponsored
Very Popular in Europe in 1980’s & 1990’s
Popular in the Manufacturing Industry
ISO 9001 is for the software industry and 9003 is the guideline describing
9001
• Has a total of 20 categories (see text book- chapter 2) including:
–
–
–
–
Design control
Inspection
Purchasing
-statistical techniques (product metrics & process metrics)
etc.
• Heavy Emphasis on Document “Control”
– Document must be adequate for purpose of performance
– Properly approved
.
.
– Pages numbered
.
Note
Other Assessments
See Textbook chapter-2 for more details
• Malcolm Baldrige
– US Government sponsored Quality Award
– Touches on more than quality processes (1: leadership, 2:
customer sat., 3: human resources, 4:quality results, 5: strategic
quality planning, 6: information analysis, 7: quality assurance of
products and services ) – total of 7 categories
– Not just for software
• SPR
– Much like CMM
– Started by Caper Jones (like Watts Humphrey who started SEI
was an IBMer)
• IEEE Standard
– Not an assessment but more of a quality plan
Integrated “Quality” Management System
Software Development Activities (pre-release)
Req.
Gathering
&
Analysis
Design
Coding
&
Implem.
Testing
&
integration
Packaging,
Releasing,
&
Installing
Software Post-Release Activities
Problem
Problem
identif. resolution
&
&
support adaptation
Product
update
&
releasing
Measurements ?
Supporting Activities
Reviews
&
Inspect.
Recruit.
&
team
bld.
Change
Control
Config.
mgmt
Q.A.
Status
tracking Escalat. Translat.
&
report.
Cust.
Survey
Cust.
support
Measurements ?
Tools
Req.
Mgmt.
Design
Coding
&
&
Prototyp. Debug.
Library
&
Config.
Mgmt
Transl.
Testing
&
Test
Mgmt
Measurements ?
Packaging
&
Distribution
Help
Desk &
Problem
Mgmt
Schedule,
Defect,
Call, etc.
Modeling
Some “Recent” Emphasis on Process
Realization of the need for “active management” of process
1.
2.
3.
4.
Get Full Management “buy in”
Understanding and focusing on customers
Usage of statistical analysis and control
Strive for “continuous improvement”
We talked about processes, methodology and assessment.
Don’t forget ---- we care about assessing the PRODUCT, too!
*
Once Again ---- More IMPORTANTLY :
*
Spending time, effort and money on the topics in this lecture and in this
course must produce a return such as:
- faster to market
- improved customer satisfaction
- improved product (reliability, functionality, performance, etc.)
- higher morale and more efficient/productive work force