Intro To Software Processes
Intro To Software Processes
Beginner's mind
初 the beginner's mind sees many
possibilities;
心 the expert's mind sees few or one.
What is the Most Common Software
Process?
What is the Most Common Software
Process?
My Software Process
• used since high school (FORTRAN programming)
1. think about the problem
2. start coding
3. as code grows, I realize that I need to restructure parts
of it.
• modify previous code to support new, improved
structure.
• goto step 2.
Do We Need a Formal Process?
Teams can be effective without a formal software
process!
Teams can have “jack-of-all-trades” programmers
who understand the business of the organization.
Excellent, motivated developers take initiative and
build the software without consensus or planning.
A highly capable development manager may be
willing to put in an enormous effort.
Motivated developers put in extra time to get the
project done.
Problems with an Implicit Process
What are problems of this approach (implicit process)?
Problems with an Implicit Process
1. Depends a lot on motivated, talented individuals.
what happens if your best programmer/architect
quits?
2. Not repeatable or predictable.
if you can't predict how long the next project will take,
then how can you bid (estimate cost)?
3. Stress / burn-out.
Too much pressure on team.
Uncertainty and O.T. lead to frustration, burn-out.
No slack time for HR development.
Another Problem...
1. We learn programming on small projects.
2. We develop an implicit process that works well...
we get "A"s in our courses!
Obviously, we are great "software engineers"!
Problem:
our implicit process doesn't scale to large problems.
Why a Defined Process?
More Effective
less time spent on planning, estimates, decisions
Predictable
Repeatable (related to predictability)
Trackable (measuring predictability)
Maintainability
Quality
Capability Improvement
use what you learn from past experience
Ref: http://www.acm.org/crossroads/xrds6-4/software.html (2000)
Creating a Defined Process
Meta-thinking
thinking about what you know / do
People Technology
Methods
People Technology
People Technology
Roles: Methods
Task Task
Use Case
Artifacts: Description ...
Prerequisite...
Main Scenaria
1.....
..... Desired
2.....
3.....
Extensions: ...
Product
*
Process group
*
Process
*
Phase
*
Work Product
* produces
consumes
Activity Task
*
Resource
Participant
Time
Software Process
Architect Select SPLCM
Milestone
Elicit Analyze Write
Review &
Activities: Requireme Requirem Specificatio
Approval
nts ents n
Baseline
Specifica
tion
Artifacts
Final Deliverables
What should we have when we’re finished? (not
“what code should we write”)
Interim Deliverables
What do we need to get the job done?
Internal vs. External Artifacts
Key Artifacts
Interim Final
Requirements Code Libraries
Analysis & Design Models API Documents
Plan Documents Executables
Test Plans, Procedures, User Documents
Results
Meeting Minutes
Release Notes
Demo Builds
Delivery Bundle
Install Documents
Process Essentials
0 Outcome “Incomplete"
“Incomplete"
depends
on “heroes”
Overview of CMMI - KPA
The CMMI definition of "process"
Some ancient
artifacts
http://www.crystalinks.com/emeraldtablet.html
Software Development Plan
Includes the "Project Management Plan"
What areas does it address?
Software Development Plan
Configuration Management
In your project there are...
280 source code files
12 files for user documentation
8 project documents (deliverable) such as
SRS
Software Architecture Document
...
Configuration Management (2)
How do you know...
which ones have been tested?
where is the "release 1.0" final version?
have they been reviewed?
what bugs or issues remain (in each file)?
Configuration Management (3)
Configuration Mgmt is part of Development Plan
What artifacts do you want to manage?
1. Source code
2. Built code (which one is version 1.0?)
3. Change requests
4. Change notification
5. Bug & Issue tracking
CM: Process
Artifacts
what do you want to manage?
Tasks / Activities
xx
xx
xx
Guidance / Standards:
naming convention
version numbering convention
repository organization
what documents go where?
directory structure
Activities and processes (again)
Roles
IEEE xxxx
1. blah blah
2. blah blah
3. blah blah
Tools, technology