Best Practices of Software Engineering: Obj I Objectives
Best Practices of Software Engineering: Obj I Objectives
Software Engineering
Petrus Mursanto
[email protected]
Obj i
Objectives:
Explore the symptoms and root causes of software
development problems
Explain Rational’s
Rational s six best practices for software
development
Business demands
increased productivity &
quality in less time Not enough qualified people
Performance
Larger teams Engineer
Analyst
Specialization
Project
Manager
Distribution
Developer
Tester
Rapid Technology change
Release
Engineer
IT Projects Chaos Report by Standish Group 1997
32%
Cancelled
Completed
68%
17%
32%
Cancelled
Over-budget
On-budget
51%
How Are We Doing?
Performance
Engineer
• Too
T Many
M Failures
F il Project
Manager
Developer
Tester
Release
Engineer
end-user
d needs
d insufficient requirements develop iteratively
changing requirements ambiguous manage requirements
modules don’t fit communications use component
hard to maintain brittle architectures architectures
late discovery overwhelming complexity model the software
poor quality undetected inconsistencies visually
poor p
p performance poor testing verity quality
colliding developers control changes
subjective assessment
build-and-release
waterfall development
uncontrolled change
Insufficient automation
Develop Iteratively
Use
U
Manage Model Verify
Component
Requirements Visually Quality
Architectures
Control Changes
Best Practices Enable High-Performance Teams
Results Performance
Engineer
• More Successful
projects Analyst
Project
Manager
Develop Iteratively
Developer
Use
Tester
Manage Model Verify
Component
Requirements Visually Quality
Architectures
Control Changes
g Release
Engineer
Develop Iteratively
Use
U
Manage Model Verify
Component
Requirements Visually Quality
Architectures
Control Changes
Practice 1: Develop Software Iteratively
An initial design will likely be flawed with respect to its key requirements
Late-phase
p discovery y of design
g defects results in costlyy over-runs and/or
project cancellation
$$$
Iterative Development
Iterative Model
TIME
Iterative Development
Each iteration
results in an
executable release.
Iterative Development Characteristics
Critical risks are resolved before making large
investments
Initial iterations enable early user feedback
Testing and integration are continuous
Objective milestones provide short-term focus
Progress is measured by assessing implementations
Partial implementations can be deployed
Develop Iteratively
Use
Model Verify
Manage Component
Visually Quality
Requirements Architectures
Control Changes
Requirements Management
Means…
Making sure you
solve the right problem
build the right system
by taking a systematic approach to
eliciting
organizing
documenting
managing
establishingg and maintaining
g agreement
g on
the changing requirements of a software application.
25
The Goal
System to
be built
Customer
User Community
q
Requirements Surrogate
g
Verification Goal
Misunderstanding requirements
Requirements Trace to Many Project Elements
Develop Iteratively
Control Changes
Software Architecture Defined
Software architecture encompasses significant decisions about the
organization of a software system
Selection of the structural elements and their interfaces by which a
system is composed
Behavior as specified in collaborations among those elements
Composition of these structural and behavioral elements into
progressively larger subsystems
A hit t l style
Architectural t l th
thatt guides
id thi
this organization,
i ti th
these elements
l t and
d
their interfaces, their collaborations, and their composition
J2EE Browser
A hit t
Architecture request response
servlet JavaBean DB
JavaBean
Enterprise Server
Application Server
Application Server
Browser
DB
DB
request response
Enterprise Server
Enterprise Server
servlet DB
Application Server
Architectural Decision
Http browser
Browser
request response MS Access
Risk List:
servlet DB • belum pernah implemen J2EE
architecture
Application Server • konon produk Microsoft tdk
compatible
p dgn
g Sun
Java
TARGET ELABORASI:
• Menguji arsitektur sistem yang disebut sebagai arsitektur basis
Develop Iteratively
Use
U
Manage Verify
Component Model
Requirements Quality
Architectures Visually
Control Changes
Practice 4: Visually Model Software
Capture the structure and behavior of architectures and components
Show how the elements of the system
y fit together
g
Hide or expose details as appropriate for the task
Maintain consistency between a design and its implementation
Promote unambiguous communication
Visualizing
Constructing
Documenting
Implementation
Logical
View
View
A l t/D i
Analyst/Designers P
Programmers
Structure Software Managmt
End-User
Functionality
y
Use-Case
View
Process
View
Vi Deployment
D l View
Vi System
S Engineers
i
System Integrators System topology
Performance Delivery, Installation
Scalability communication
UML History
Sept ‘97 UML 1.1
Dr.James Rumbaugh
j i Rational
joins R ti l
OMT Booch
(Oct 1994)
Inputs to UML
Booch
Rumbaugh Jacobson
Fusion
Meyer Operation descriptions,
Pre and post g numbering
Message g
conditions
Embley
Harel
Singleton classes,
State Charts
High-level view
Gamma, et.al.
Framework,, patterns,
p , Wirfs-Brock
notes Responsibilities
Shlaer-Mellor Odell
j
Object Lifecycles
y Classification
Use-case Class
Diagrams Diagrams
Activity
Diagrams
Object
Diagrams
Sequence
Diagrams
Model
State
Diagrams
g
Collaboration
Diagrams
Deployment Component
Diagrams Diagrams
Visual Modeling Using UML Diagrams
State Diagram
Use-Case Diagram Set count = 0
Class Diagram
Cancel Cancel
[ count = 10 ]
Domain
D i Check Balance Cancel
Expert
Customer
Name
ID
Address Deployment
Package Identify()
Enroll() Diagram
University Package
Diagram Print()
Enrollment Package
Forward & Reverse
Engineering
Administration Package
S
Source Code
C d edit,
dit
: compile, debug, link
Component Diagram
executable
e ecutab e
system
Sequence Diagram
Develop Iteratively
Use
U
Manage Model
Component Verify
Requirements Visually
Architectures Quality
Control Changes
Cost
D
Development
l t
Deployment
R l i C
Relative Cost to R
Repair
i
Stage
1 - .2
.1 2 Requirements
.5 Design
1 Coding
2 Unit test
5 Acceptance test
20 Maintenance
Develop Iteratively
Use
U
Manage Model Verify
Component
Requirements Visually Quality
Architectures
Control Changes
Practice 6: Control Changes to Software
Multiple developers
Multiple
p teams
Multiple sites
Multiple iterations
Multiple releases
Multiple projects
Multiple platforms
Change Test
Reqest (CR)
Help Desk
CR End-User Inputs
Concepts of Configuration & Change Management
Decompose the architecture into subsystems and assign
responsibility for each subsystem to a team
Establish secure workspaces for each developer
Provide isolation from changes made in other workspaces
C t l allll software
Control ft artifacts
tif t - models,
d l code,
d d docs, etc.
t
Establish an integration workspace
Establish an enforceable change control mechanism
Know which changes appear in which releases
Release a tested baseline at the completion
p of each iteration
Addresses complexity of
Develop Iteratively Model Visually
design/implementation incrementally
Measures quality early and often
Verify Quality
• On Budget Analyst
• Meets Users Needs
Project
Manager
Develop Iteratively
Developer
Use
Tester
Manage Model Verify
Component
Requirements Visually Quality
Architectures
Control Changes
g Release
Engineer
Team-Based
Development
Modeling Unified
Language Process