Lecture slides - DePaul University

advertisement
SE 470
Software Development Processes
James Nowotarski
31 March 2003
Today’s Objectives
• Understand what the course is about (i.e., course
objectives)
• Understand how the course will achieve its objectives
• Get acquainted
• Level set:
–
–
–
–
What is a software development methodology/process
Why use a methodology/process
Who are the key players and products in the marketplace
What are the key vocabulary terms to understand
Today’s agenda
Topic
Duration
• Questionnaire & Intros
20 minutes
• Core Concepts
45 minutes
*** Break
10 minutes
• Core Concepts (cont.)
30 minutes
• Course Overview
30 minutes
• SD Process: Why or why not?
30 minutes
• Marketplace Snapshot
30 minutes
Today’s agenda
Topic
Duration
• Questionnaire & Intros
20 minutes
• Core Concepts
45 minutes
*** Break
10 minutes
• Core Concepts (cont.)
30 minutes
• Course Overview
30 minutes
• SD Process: Why or why not?
30 minutes
• Marketplace Snapshot
30 minutes
Core Concepts
Software Engineering
• The establishment and use of sound
engineering principles in order to economically
obtain software that is reliable and works
efficiently on real machines (Fritz Bauer, 1969)
• Computer science discipline that covers not
only the technical aspects of building software
systems, but also management issues, such as
directing programming teams, scheduling, and
budgeting (webopedia.com)
Core Concepts
The software engineering discipline consists
of people, process, and technology
components
Process
Technology
People
Core Concepts
The focus of SE 470 is the process
component of software engineering
SE 470
Process
Technology
People
Core Concepts
Process
• Sequence of steps performed for a given
purpose
• “A specific ordering of work activities across
time and place with a beginning, an end, and
clearly identified inputs and outputs” -- Tom
Davenport
• An overloaded term, can apply at multiple
levels (macro, micro)
Core Concepts
method
• Within the context of software engineering, a
formalized approach or series of steps for
performing some significant portion of
software development
Methodology
• A collection of methods based on a common
philosophy that fit together in a framework
called the systems development life cycle
-- Ken Orr
Core Concepts
In SE 470, we will use the terms method and
Methodology interchangeably
method/Methodology
•
A systematic way of doing something
•
Typically consists of these key content
pieces:
1.
2.
3.
4.
5.
Processes (what)
Deliverables (what)
Techniques (how)
Roles (who)
Estimating guidelines (how long)
Analysis
Key Question:
What does the system need to do?
Steps
1. Gather requirements
2. Create data model
3. Create process model
Deliverables
Functional requirements
Quality requirements
Data model
Process model
Techniques
Interviewing
Observation
Entity-relationship modeling
Normalization
Data flow modeling
Implementation
Key Question:
Does the system work?
Steps
1. Build the programs
2. Build the databases
3. Test the system
4. Develop and conduct training
5. Convert the data
6. Migrate to production status
Deliverables
Programs
Databases
Converted data
End user training
Operations processes
Techniques
Code walkthroughs
White box testing
Stress testing
Parallel testing
Core Concepts
Broad categories of methods
•
•
•
•
Structured methods
Information engineering
Object-oriented methods
Lightweight/Agile methods
Core Concepts
Methods engineering
• Developing and/or selecting and/or tailoring
methodology for a particular business situation
• “Configuring one-of-a-kind methodology from
common building blocks” -- Gezinus Hidding,
Loyola University
Core Concepts
Systems development life cycle (SDLC)
• A description of the phases of an information
system
Example
Planning
Analysis
Design
Implementation
Core Concepts
Life cycle model
• The iteration and control strategy adopted by a
systems development organization
• Examples
- Waterfall
- Iterative/Evolutionary/Spiral
- Incremental
Core Concepts
The waterfall model is the granddaddy of life
cycle models
Core Concepts
Iterative/Evolutionary/Spiral life cycle models
advocate multiple “threads” through the SDLC
phases
Version 1
A
D
I
Version 2
A
D
I
Version 3
A
D
I
Core Concepts
Incremental life cycle models advocate
delivering the end product piecemeal
Version 1
A
D
I
Version 2
A
D
I
Version 3
A
D
I
Core Concepts
Routes
• A “route” is a preconfigured specialization of a
methodology, depending on a variety of factors:
- custom vs. packaged solution
- degree of project team distribution
- project team size
- technology platform
- application type
• Examples
- Custom Client/Server: Large Project
- Custom Client/Server: Small Project
- Rapid Application Development (RAD)
- Packaged Systems Development
- Data Warehouse
- SAP implementation
Core Concepts
RAD
• A shortened route with the following characteristics:
- high degree of development tool usage and code
generation
- Joint Application Development (JAD) workshops
instead of interviewing
- assumes reuse of existing technical architecture and
standards
- time-boxing (90-day implementation schedule)
- highly iterative
Core Concepts
RAD vs. Traditional
Traditional
Req’ts
Analysis
User
Design
Tech
Design
Construct
RAD
Req’ts
User
Design
Construct
Core Concepts
Techniques
• Provide detailed how-to guidelines
• Fall into 2 main categories:
- Process techniques
- Modeling/Diagramming techniques
Core Concepts
Process for Building Data Models
1.
2.
Review existing data models
Define entities
a.
b.
3.
4.
5.
6.
7.
8.
9.
Independent
Dependent, including Intersection entities
Define attributes and keys (primary, foreign)
Define relationships
Diagramming technique available
Finalize ERD
Process technique available
Normalize
Integrate data models as required
Verify completeness of the data model
Validate the data model
a.
b.
With users
With the enterprise’s data administrator
Core Concepts
Modeling/Diagramming
Technique
Core Concepts
Normalization (Process Technique)
1NF = No repeating groups
2NF = 1NF + no partial dependencies (non-key
attribute dependent on portion of primary key)
3NF = 2NF + no transitive dependencies (nonkey attribute dependent on another non-key
attribute)
Core Concepts
Draw a high-level data model to show how
these components of a methodology relate to
one another:
1.
2.
3.
4.
5.
Processes (what)
Deliverables (what)
Techniques (how)
Roles (who)
Estimating guidelines (how long)
Core Concepts
Capability Maturity Model (CMM)
• A framework for:
– Judging the maturity of an organization’s software processes
– Identifying key practices required to increase the maturity of
these practices
• Levels of maturity
Optimizing
Level
Managed
Level
Defined Level
Repeatable Level
Initial Level
Core Concepts
CMM applies to all aspects of software
engineering, not just process
Process
Technology
People
Today’s agenda
Topic
Duration
• Questionnaire & Intros
20 minutes
• Core Concepts
45 minutes
*** Break
10 minutes
• Core Concepts (cont.)
30 minutes
• Course Overview
30 minutes
• SD Process: Why or why not?
30 minutes
• Marketplace Snapshot
30 minutes
Course Objectives
SE 470 will enable you to develop, use, and
improve software development processes.
Specific Objectives
1. Define the components of a software development process (content,
tools, roles, meta-processes).
2. Analyze key players, products, and philosophies in the software
development process "space" (past, present, and future). The course
will analyze two current processes -- the Rational Unified Process
(RUP), and Extreme Programming (XP) -- in depth.
3. Describe how to identify, select, and review the effectiveness of
software development processes for a particular project or
organization.
4. Identify key success factors to optimize the adoption, use, and
continuous improvement of a software development process. The
course will examine the use of the Capability Maturity Model (CMM)
in this context.
Your grade
Homework Assignments
25%
Quizzes
25%
Term Paper
25%
Class Participation
25%
-------100%
Course Map
Week
1
2
3
4
5
6
7
8
9
Overview
. Introduction
. History
Implementation
. Tools, Training, Roles
. CMM, Metrics
. Selection & Evaluation
Briefings (Term Papers)
Assignments
Quizzes
Memorial Day
Content
. Rational Unified Process
. Extreme Programming
10
11
Course Assignments
• Assignment 1 - Mapping of software development
problem symptoms to root causes to best practices
• Assignment 2 - Deliverable view of RUP
• Assignment 3 - Project request to buy/build software
development process
• Assignment 4 - Assessment of effectiveness of a
software development process (case study)
• Assignments 5,6 - Summary of marketplace
developments
My role
• Facilitate learning
• Plan, prepare, and conduct lectures and
learning activities
• Assess student progress and provide feedback
• Relate concepts to real-world problems
• Provide classroom environment conducive to
learning
• Clearly state expectations
• Gather and implement suggestions for
improving the class
• Keep it fun
• email: jnowotarski@cti.depaul.edu
• phone: 708-352-2930
• office hours: Mondays, 4:15-5:45, location
TBD
Your role
• Be proactive
• Share your experience
• Come to class prepared
• Collaborate with other students as appropriate
• Ask if you don’t understand or if I’m not clear
• Provide constructive feedback (“This class
would be better if . . .”)
Class Participation
Subjective evaluation of participation:
A Consistently asks good questions, makes valuable
observations, and answers questions effectively
B Frequent participant, but not all questions,
answers, and observations are effective, or not
consistently active
C Participates infrequently, or questions/answers do
not reflect adequate preparation, or late to class
D Very rare participation, or questions/answers reflect
little or no preparation, or very late to class
F Displays no sign of life, or absent for entire class
Today’s agenda
Topic
Duration
• Questionnaire & Intros
20 minutes
• Core Concepts
45 minutes
*** Break
10 minutes
• Core Concepts (cont.)
30 minutes
• Course Overview
30 minutes
• SD Process: Why or why not?
30 minutes
• Marketplace Snapshot
30 minutes
Justifying a Methodology
• Vendors and consultants have not done much to
substantiate quantitatively the value of their
methodologies
• What would you say if asked to provide
justification?
Common Drivers Behind
Methodology Adoption
• Project failure leads to realization that “we need a more
formal process”
• Codify best practices, so as to increase predictability and
reliability of software development process
• especially as IT organization grows
• Continued pressure on time to market and quality (web
services)
• Certification (e.g., Capability Maturity Model)
• Desire to stay current and/or sustain/develop competitive
edge
• Need to support distributed development teams (multi-site
and/or multi-organization)
Methodology - Who needs it?
“Any first attempt at converting folklore into knowledge, and a
guessing game into a discipline, is liable to be misread as a
downgrading of individual ability and its replacement by a rule book.
Any such attempt would be nonsense, of course. No book will ever
make a wise man out of a donkey or a genius out of an incompetent.
The foundation in a discipline, however, gives to today’s competent
physician a capacity to perform well beyond that of the ablest doctor
of a century ago, and enables the outstanding physician of today to
do what the medical genius of yesterday could hardly have dreamt
of. No discipline can lengthen a man’s arm. But it can lengthen his
reach by hoisting him on the shoulders of his predecessors.
Knowledge organized in a discipline does a good deal for the merely
competent; it endows him with some effectiveness. It does infinitely
more for the truly able; it endows him with excellence.”
From Managing for Results, by Peter F. Drucker
Today’s agenda
Topic
Duration
• Questionnaire & Intros
20 minutes
• Core Concepts
45 minutes
*** Break
10 minutes
• Core Concepts (cont.)
30 minutes
• Course Overview
30 minutes
• SD Process: Why or why not?
30 minutes
• Marketplace Snapshot
30 minutes
What does a methodology product
consist of?
• Content
– building blocks (processes, deliverables, etc.)
– pre-defined routes
• Delivery vehicle (e.g., browser)
• Tools for authoring and publishing content
• Tools for applying the methodology to a specific project
– project planning and estimating tools
– process management tools
– project management tools
• Deliverable templates tightly coupled with a development
and/or execution platform
• Training and support
• Maintenance
Methodology Marketplace
No single vendor dominates this market
• Rational Software is collecting a fair amount of mindshare
• 3 key categories to consider:
– methodologies developed and delivered by consultants
– methodologies from software tool vendors
– methodologies from industry consortia or other groups
• Tremendous variability among the products
– Content
– Delivery vehicles
– Integration with development tools
Methodologies Developed and
Delivered by Consultants
Consulting firms methodologies have greatest depth and breadth of
content, but not all sell their methodology as a standalone product
Consultant
Methodology
Sold as
Standalone
Product?
PricewaterhouseCoopers
Summit Ascendant
Yes
Headstrong
gantthead.com
Yes
Fujitsu
Macroscope
Yes
Accenture
Accenture Delivery Methods
No
AMS
No
EDS
No
IBM
No
Keane
No
Methodologies from Software
Development Tool Vendors
Customers are increasingly demanding (and receiving)
process guidance from their tool vendors
Vendor
Methodology
Notes
Rational Software
Rational Unified Process
(RUP)
• Many vendor and
consulting partners
Computer Associates
CA ProcessContinuum
• Focus on large
accounts
Allen Systems Group (ASG)
Visual Process
Client/Server Connection
CS 10,000
• Easy to use
Aonix
Select ProcessDirector
• Strong coverage of
CBD
Methodologies from Industry
Consortia or Gurus
There is a growing interest among large corporate
shops in so-called “agile” methods from industry gurus
Guru/Consortium
Methodology
Notes
Kent Beck
Martin Fowler
Extreme Programming (XP)
• Many vendor and
consulting partners
Alistair Cockburn
Crystal
• Focus on large
accounts
Jim Highsmith
Adaptive software
development
Peter Coad
Feature driven development
Dynamic Systems
Development Method (DSDM)
Consortium
DSDM
• More RAD than agile
• Used in Europe more
than U.S.
Key Trends: Content
•
•
•
•
•
•
Component-based development
Reuse
Agile processes
Development of mobile applications
Development with/for web services
Distributed development teams, especially
offshore
How Does a Methodology Stay
Fresh?
• Experience
• New technologies that cause changes in
development processes
• Consortia/Gurus
• Academics
“ . . . those looking for true best practices and leading edge
methodologies should turn to the consulting industry rather than tool
or software vendors” -- Giga Information Group
Mapping Computing Eras to
Technology Maturity Curve
• Mainframe
• Decentralized
High
• Distributed
Degree of
Take-up
• Internet
• ???
• Mobile
Incubation Adaptation Take Up
Life Cycle Stage
Key SD
Process
Change
???
Content Dev
CBD
Iterative Dev
Maturity
Time
GUI Design
Bus Process Redesign
Topics for April 7
• Read 2 articles (see course map)
• Quiz (end of class):
– Vocabulary
– Justification
– History
Download