Best Practices of Software Engineering
2
Objectives
What we will learn:
Best Practices of Software Engineering
3
Best Practices Reinforce Each Other
Best Practices
Develop Iteratively
Manage Requirements
Use Component Architectures
Model Visually (UML)
Continuously Verify Quality
Manage Change
Validates architectural
decisions early on
Addresses complexity of
design/implementation incrementally
Measures quality early and often
Evolves baselines incrementally
Ensures users are involved
as requirements evolve
4
Develop Iteratively
Iterative development produces an
executable
1. Initial
Planning
2. Planning
3. Requirements
4. Analysis & Design
5. Implementation
7. Deployment
6. Test
8. Evaluation
Management
Environment
(on-going)
Each iteration
results in an
executable release
5
Managing Requirements
Ensures that you
solve the right problem
build the right system
by taking a systematic approach to
eliciting
organizing
documenting
managing
the changing requirements of a software
application.
6
Use Component Architectures
Software architecture needs to be:
Meets current and future
requirements
Improves extensibility
Enables reuse
Encapsulates system
dependencies
Reuse or customize
components
Select from commercially
available components
Evolve existing software
incrementally
Component-based Resilient
7
Purpose of a Component-Based Architecture
Basis for reuse
Component reuse
Architecture reuse
Basis for project management
Planning
Staffing
Delivery
Intellectual control
Manage complexity
Maintain integrity Systemsoftware
Middleware
Businessspecific
Applicationspecific
Component-based
architecture with
layers
8
SOA
9
Model Visually (UML)
Captures structure and behavior
Shows how system elements fit together
Keeps design and implementation
consistent
Hides or exposes details as appropriate
Promotes unambiguous communication
The UML provides one language for all
practitioners.
10
Visual Modeling with the Unified Modeling Language
Dynamic
Diagrams
Multiple views
Precise syntax and semantics
Activity
Diagrams
Models
Static
Diagrams
Sequence
Diagrams
Communication
Diagrams
State Machine
Diagrams
Deployment
Diagrams
Component
Diagrams
Object
Diagrams
Class
Diagrams
Use-Case
Diagrams
11
Continuously Verify Quality
CCoosstt
Inception Elaboration Construction Transition
Software problems are
100 to 1000 times more costly
to find and repair after deployment
Cost to Repair Software
Cost of Lost Opportunities
Cost of Lost Customers
12
Testing Dimensions of Quality
Peerrffoorrmaannccee
Reelliiaabbiilliittyy
Test that the application
behaves consistently
and predictably.
Test the online response
under average and
peak loading.
Functtiionalliittyy
Test the accurate
workings of each
usage scenario.
Ussaabbiilliittyy
Test application
from the perspective
of convenience to the
end user.
Suuppppoorrttaabbiilliittyy
Test the ability to
maintain and support the
application under
production use.
13
Workspace
Management
Process
Integration
Parallel
Development
Build
Management
Configuration
Management is more
than just check-in
and check-out
Manage Change
To avoid confusion, have:
Secure workspaces for each developer
Automated integration/build management
Parallel development
14
Manage Change (continued)
Unified Change Management (UCM)
involves:
Management across the lifecycle
• System
• Project management
Activity-based management
• Tasks
• Defects
• Enhancements
Progress tracking
• Charts
• Reports
15
Develop Iteratively
Manage Requirements
Use Component Architectures
Model Visually (UML)
Continuously Verify Quality
Manage Change
Rational Unified Process Implements Best Practices
Best Practices
Process Made Practical
16
Achieving Best Practices
Iterative approach
Guidance for activities
and artifacts
Process focus on
architecture
Use cases that drive
design and
implementation
Models that abstract
the system
17
A Team-Based Definition of Process
A process defines Who
is doing What
,
When
, and How
, in order
to reach a certain
goal.
New or changed
requirements
New or changed
system
Software Engineering
Process
18
Process Structure - Lifecycle Phases
The Rational Unified Process has four phases:
Inception
– Define the scope of the project
Elaboration
– Plan the project; specify features and
baseline architecture
Construction
– Build the product
Transition
– Transition the product into the end-user
community
Inception
Elaboration
Construction
Transition
Time
19
Bringing It All Together: The Iterative Approach
Disciplines
group
activities
logically.
In an
iteration
,
you walk
through all
disciplines.
20
Iterative development and the unified process
21
Objectives
What we will learn:
Define an iterative and adaptive process.
Define fundamental concepts in the Unified
Process.
22
Unified Process
Iterative development
Iitaevdopmtrevn is a skillful approach to
software development, and lies at the heart of how
OOA/D is presented
The Unified Process
is an example iterative
process for projects using OOA/D
In particular, the Rational Unified Process or RUP
is a
detailed refinement of the Unified Process
The UP is very flexible and open, and encourages
including skillful practices from other iterative
methods,
such as from Extreme Programming (XP), Scrum, and
so forth
23
From sequential to iterative lifecycle
R: requirements; D: design; C: coding, unit test; T: integration,
test
Time
R
D
C
T
R
D
C
T
R
D
C
T
R
D
C
T
24
Iterative Development
ID is the best practice using the UP to develop software
Development is organized into a series of short, fixedlength
(for example, four week) mini-projects called
iterations;
the outcome of each is a tested, integrated,
and executable system. Each iteration includes its own
requirements analysis, design, implementation, and
testing activities.
Requirements
D esign
Implementation &
Test & Integration
& More Design
Final Integration
& System Test
Requirements
D esign
4 weeks (for example)
The system grows
incrementally.
Feedback from
iteration N leads to
refinement and
adaptation of the
requirements and
design in iteration
N+1.
Iterations are fixed in
length, or tim eboxed .
T im e
Implementation &
Test & Integration
& More Design
Final Integration
& System Test
25
Iterations
Each iteration must result in production quality
code. This implies that each iteration includes
exhaustive testing!
The code may be incomplete (e.g., with stubs for
functions identified but not yet implemented).
Note the contrast with rapid prototyping
methodologies.
Early iterations should address high-risk parts of
the system.
26
Example
in a three-week iteration early in the project, perhaps one hour
Monday morning is spent in a kickoff meeting with the team clarifying
the tasks and goals of the iteration. Meanwhile, one person reverseengineers
the last iteration's code into UML diagrams (via a CASE
tool), and prints and displays noteworthy diagrams. The team spends
the remainder of Monday at whiteboards, working in pairs while agile
modeling, sketching rough UML diagrams captured on digital
cameras, and writing some pseudocode and design notes. The
remaining days are spent on implementation, testing (unit,
acceptance, usability, …), further design, integration, and daily builds
of the partial system. Other activities include demonstrations and
evaluations with stakeholders, and planning for the next iteration.
We should avoid:
A rush to code
A long drawn-out design step that attempts to perfect all details
of the design before programming.
27
Benefits of iterative development
less project failure, better productivity, and lower
defect rates
early rather than late mitigation of high risks
early visible progress
early feedback
user engagement, and adaptation, leading to a refined
system that more closely meets the real needs of the
stakeholders
managed complexity
the learning within an iteration can be methodically
used to improve the development process itself,
iteration by iteration
28
Agile Methods
Agile development methods usually apply
timeboxed iterative and evolutionary
development, employ adaptive planning, promote
incremental delivery, and include other values
and practices that encourage agility rapid and
flexible response to change.
29
Agile Process Example
Iteration 1 Iteration 2 Iteration 3 Iteration 4 Iteration 5
2 0 %
2%
requirements
software
3 0 %
5%
requirements
software
5 0 %
8%
9 0 % 9 0 %
2 0 %
1 0 %
requirements workshops
Imagine this will
ultimately be a 2 0 -
iteration project.
In evolutionary iterative
development, the
requirements evolve
over a set of the early
iterations, through a
series of requirements
workshops (for
example) . Perhaps
after four iterations and
workshops, 9 0 % of the
requirements are
defined and refined.
Nevertheless, only
1 0 % of the software is
built.
1 2 3 4 5 ... 2 0
week 1
M T W T h F
week 2
M T W T h F
week 3
M T W T h F
kickoff meeting
clarifying iteration
goals with the team.
1 hour
team agile
modeling &
design,
UML
whiteboard
sketching.
5 h o u rs
start
coding &
testing
a 3-week iteration
d e -scope
iteration
goals if
too much
w o rk
final check-in
and codefreeze
for the
iteration
baseline
demo and
2-day
requirements
workshop
next
iteration
planning
meeting;
2 h o u rs
Most OOA/D and
applying UML during
this period
U s e -case modeling
during the workshop
30
The Agile Principles ( Not in Details)
1. Our highest priority is to satisfy the customer through early
and continuous delivery of valuable software.
2. Welcome changing requirements, even late in development.
Agile processes harness change for the customer's competitive
advantage.
3. Deliver working software frequently, from a couple of weeks
to a couple of months
4. Business people and developers must work together daily
throughout the project.
5. Build projects around motivated individuals.
Give them the environment and support they need, and trust them
to get the job done.
6. The most efficient and effective method of conveying
information to and within a development team is face-to-face
conversation.
31
The Agile Principles
7. Working software is the primary measure of progress.
8. Agile processes promote sustainable development.
9. The sponsors, developers, and users should be able to
maintain a constant pace indefinitely.
10. Continuous attention to technical excellence and good
design enhances agility.
11. Simplicity the art of maximizing the amount of work not
done is essential.
12. The best architectures, requirements, and designs
emerge from self-organizing teams.
13. At regular intervals, the team reflects on how to
become more effective, then tunes and adjusts its
behavior accordingly.
32
UP Best Practices and Concepts
tackle high-risk and high-value issues in early
iterations
continuously engage users for evaluation, feedback,
and requirements
build a cohesive, core architecture in early iterations
continuously verify quality; test early, often, and
realistically
apply use cases
model software visually (with the UML)
carefully manage requirements
practice change request and configuration
management
33
The UP Phases
A UP project organizes the work and iterations across
four major phases:
1. Inception
approximate vision, business case, scope, vague estimates.
2. Elaboration
refined vision, iterative implementation of the core
architecture, resolution of high risks, identification of most
requirements and scope, more realistic estimates.
3. Construction
iterative implementation of the remaining lower risk and
easier elements, and preparation for deployment.
4. Transition
beta tests, deployment.
34
Schedule-oriented terms in the UP
in c. elaboration construction transition
iteration p h a se
development cycle
release
A stable executable
subset of the final
product. The end of
each iteration is a
minor release.
increment
The difference
(delta) between the
releases of 2
subsequent
iterations.
final production
release
At this point, the
system is released
for production use.
m ilestone
An iteration endpoint
when some
significant decision
or evaluation
occurs.
35
Inception
Purpose:
Establish some initial common vision for the objectives of
the project,
Determine if it is feasible, and
Decide if it is worth some serious investigation in
elaboration.
The good idea—specifying the end-product vision and its
business case and defining the scope of the project
Concluded by the lifecycle objective (LCO) milestone
Inception
Elaboration
Construction
Transition
36
Inception phase
Lasts for one iteration
Is basically a feasibility study
Doesn't involve requirements analysis
Identify most important Use Cases
Write Vision
Write Business Case & Development Case
37
Objectives of the Inception Phase
Establish the project’s software scope and
boundary conditions
Discriminate critical use cases of the system
Exhibit at least one candidate architecture
Estimate overall cost and schedule for entire
project
Estimate risks
38
Activities of the Inception Phase
Formulate scope of project
Plan and prepare business case
Evaluate alternatives for risk management,
staffing, project plan, and trade-offs between cost,
schedule, and profitability
Synthesize candidate architecture
Evaluate trade-offs in design and assess
make/buy/reuse decisions so that cost, schedule,
and resources can be estimated
39
Outcome of the Inception Phase
Vision document
Use-case model survey
Initial project glossary
Initial business case
Business context
Success criteria
Financial forecast
Initial risk assessment
Project plan, which shows phases / iterations
40
Milestone: Lifecycle Objective
Evaluation criteria for inception phase:
Stakeholder concurrence on scope definition and
cost and schedule estimates
Requirements understanding – evidenced by fidelity
of primary use cases
Credibility of cost and schedule estimates, priorities,
risks, and development process
Depth / breadth of any architectural prototype
Actual expenditures versus planned expenditures
Inception
Elaboration
Construction
Transition
Lifecycle
Objective
41
Rational Unified Process – Inception
Business Modeling
B u s i n e s M o d e l i n g
Requirements
R e q u i r e m e n t s
Analysis & Design
Workflows
W o r k f l o w s
Inceptio
n
Elaboration
Phases
Construction
Transiti
on
Implementation
Test
Deployment
Configuration &
Change Management
Project Management
P r o j e c t M a n a g e m e n t
Environment
E n v i r o n m e n t
Iterations
Initial
E
#
1
E
#
2
C
# 1
C
# 2
C
#
n
T
#1
T
#2
Content
Time
42
Elaboration Phase
Purpose: analyze problem domain, establish a sound
architectural foundation, develop project plan, and eliminate
project’s highest-risk elements
An executable architecture prototype built in one or more
iterations
address critical use cases identified in inception phase –
expose project’s major technical risks.
Inception
Elaboration
Construction
Transition
43
Elaboration phase
Multiple iterations
Mainly analysis
Flesh out Use Cases
Add more Use Cases
Supplemental specification
Glossary
Lots of customer involvement
Some design
Some implementation
Wide, rather than high, implementation
44
Objectives of the Elaboration Phase
Define, validate, and baseline the architecture as
rapidly as practical
Baseline the vision
Baseline a high fidelity plan for the construction
phase
Demonstrate that the baseline architecture will
support this vision for a reasonable cost in a
reasonable time
45
Activities of the Elaboration Phase
Vision is elaborated
A solid understanding is established of the most
critical use cases
The process, infrastructure, and development
environment are elaborated
The architecture is elaborated and the
components are selected
46
Outcomes of the Elaboration Phase
A use-case model in which all use cases have
been identified in the use-case model survey, all
actors have been identified, and most use-case
descriptions have been developed
Supplementary requirements that capture the
nonfunctional requirements and any requirements
that are not associated with the specific use case
47
Outcomes of the Elaboration Phase (continue)
A software architecture description
An executable architectural prototype
A revised risk list and a revised business case
A development plan for the overall project
An updated development case that specifies the
process to be used
A preliminary user manual (optional)
48
Milestone: Lifecycle Architecture
Examine
detailed system objectives and scope
choice of architecture
resolution of major risks
Inception
Elaboration
Construction
Transition
Lifecycle
Architecture
49
Evaluation Criteria
Is the vision of the product stable?
Is the architecture stable?
Does the executable demonstration show that the major
risk elements have been addressed and credibly resolved?
Is the construction phase plan sufficiently detailed and
accurate? Is it backed up with a credible basis for the
estimates?
Do all stakeholders agree:
current vision can be achieved if the current plan is
executed to develop the complete system, in the context
of the current architecture?
Is the actual resource expenditure versus planned
expenditure acceptable?
50
Rational Unified Process – Elaboration
Business Modeling
B u s i n e s M o d e l i n g
Requirements
R e q u i r e m e n t s
Analysis & Design
A n a l y s i s & D e s i g n
Workflows
W o r k f l o w s
Inceptio
n
Elaboration
Phases
Construction
Transiti
on
Implementation
I m p l e m e n t a t i o n
Test
T e s t
Deployment
Configuration &
C o n f i g u r a t i o n &
Change Management
C h a n g e M a n a g e m e n t
Project Management
P r o j e c t M a n a g e m e n t
Environment
E n v i r o n m e n t
Iterations
Initial
E
#
1
E
#
2
C
# 1
C
# 2
C
#
n
T
#1
T
#2
Content
Time
51
The Construction Phase
Purpose: all remaining components and
application features are developed and integrated
into the product, and all features are tested
thoroughly
Inception
Elaboration
Construction
Transition
52
Construction phase
Multiple iterations
Some analysis
Mainly design and implementation
Add additional paths to Use Cases
53
Objectives of the Construction Phase
Minimize development costs by optimizing
resources and avoiding unnecessary scrap and
rework
Achieve adequate quality as rapidly as practical
Achieve useful versions (
,
, and other test
releases) as rapidly as practical
54
Activities of the Construction Phase
Resource management, resource control, and
process optimization
Complete component development and testing
against the defined evaluation criteria
Assessment of product releases against
acceptance criteria for the vision
55
Outcome of the Construction Phase
Product ready to put in the hands of its end users
Product consists of
Software product itself – integrated on the
adequate platforms
User manuals
Description of the current release
56
Milestone: Initial Operational Capability
Decide whether software, sites, and users are
ready to become operational without exposing
project to high risks
Called a b
b
release
N.B. b
. b
release often confused with a test
Inception
Elaboration
Construction
Transition
Initial
Operational
Capability
57
Evaluation Criteria for the Construction Phase
Is this product release stable and mature enough
to be deployed in the user community?
Are all stakeholders ready for the transition into
the user community?
Are the actual resource expenditures versus
planned expenditures still acceptable?
58
Rational Unified Process – Construction
Business Modeling
B u s i n e s M o d e l i n g
Requirements
R e q u i r e m e n t s
Analysis & Design
A n a l y s i s & D e s i g n
Workflows
W o r k f l o w s
Inceptio
n
Elaboration
Phases
Construction
Transiti
on
Implementation
I m p l e m e n t a t i o n
Test
T e s t
Deployment
D e p l o y m e n t
Configuration &
C o n f i g u r a t i o n &
Change Management
C h a n g e M a n a g e m e n t
Project Management
P r o j e c t M a n a g e m e n t
Environment
E n v i r o n m e n t
Iterations
Initial
E
#
1
E
#
2
C
# 1
C
# 2
C
#
n
T
#1
T
#2
Content
Time
59
Transition Phase
Purpose: move software product into user
community
Occurs when baseline mature enough to be
deployed in the end-user domain
some useable subset has been completed to an
acceptable level of quality
user documentation is available so transition to
user will provide positive results for all parties
Inception
Elaboration
Construction
Transition
60
Transition phase
Several iterations
Beta testing
Deployment
Development of support artifacts
Beta testing to validate the new system against user
expectations
Parallel operation with the legacy system that the project is
replacing
Conversion of operational databases
Training of users and maintainers
Rollout of the product to the marketing, distribution, and
sales teams
61
Objectives of the Transition Phase
Achieve user self-supportability
Achieve stakeholder concurrence that deployment
baselines are complete and consistent with the
evaluation criteria of the vision
Achieve the final product baseline as rapidly and
cost-effectively as practical
62
Activities of the Transition Phase
Deployment-specific engineering – cutover,
commercial packaging and production, sales
rollout, and field personnel training
Tuning activities, including bug fixing and
enhancement for performance and usability
Assessing the deployment baselines against the
vision and the acceptance criteria for the product
63
Milestone: Product Release
Decide whether
objectives were met
another development cycle should start
This milestone may coincide with the end of the
inception phase for the next cycle
Inception
Elaboration
Construction
Transition
Product
Release
64
Evaluation Criteria
Evaluation criteria for transition phase
includes:
Is the user satisfied?
Are actual resources expenditures versus
planned expenditures still acceptable?
65
Rational Unified Process – Transition
Business Modeling
Requirements
Analysis & Design
Workflows
W o r k f l o w s
Inceptio
n
Elaboration
Phases
Construction
Transiti
on
Implementation
I m p l e m e n t a t i o n
Test
T e s t
Deployment
D e p l o y m e n t
Configuration &
C o n f i g u r a t i o n &
Change Management
C h a n g e M a n a g e m e n t
Project Management
P r o j e c t M a n a g e m e n t
Environment
E n v i r o n m e n t
Iterations
Initial
E
#
1
E
#
2
C
# 1
C
# 2
C
#
n
T
#1
T
#2
Content
Time
66
Timeline for Initial Development Cycles
I
10%
E
30%
C
50%
T
10%
Time
67
Iterations, Releases, and Milestones
Inception
Elaboration
Construction
Transition
Time
Iteration
#1
Iteration
#2
Iteration
#3
Iteration
#4
Iteration
#5
Iteration
#6
Iteration
#7
Iteration
#8
Internal
Release
Minor
Milestone
First External
Release
(e.g., “
”)
Final
Release
68
The UP Disciplines
A discipline is a set of activities (and related artifacts –
Work Products) in one subject area
Business Modeling
When developing a single application, this includes
domain object modeling. When engaged in large-scale
business analysis or business process reengineering,
this includes dynamic modeling of the business
processes across the entire enterprise.
Requirements
Requirements analysis for an application, such as
writing use cases and identifying non-functional
requirements.
Design
All aspects of design, including the overall architecture,
objects, databases, networking, and the like.
69
The UP Disciplines
UP involves a lot of disciplines (not just programming):
Business Modeling
Requirements
Design
Implementation
Project Management
Testing
Environment
Deployment
Configuration
Change Management
…and more…
70
Rational Unified Process – Two Dimensions
Business Modeling
Requirements
Analysis & Design
Workflows
W o r k f l o w s
Inception
Elaboration
Phases
Construction
Transition
Implementation
Test
Deployment
Configuration &
Change Management
Project Management
Environment
Iterations
Initial
E
#
1
E
#
2
C
#
1
C
#
2
C
#
n
T
#1
T
#2
Content
Time
71
UP artifacts
UP includes dozens of artifact types, including:
Vision
Business Case
Development Case -- Choice of artifacts for a project,
discipline & schedule for each.
Phase Plan -- What activities and artifacts will be done
in each phase?
Iteration Plan -- Exactly what use cases, etc will be done
in each iteration?
Use Case
Domain Model
State Diagram
72
UP artifacts (continued)
More UP artifacts:
Design Model
Data Model
Supplementary Specification
Glossary
Risk List
Risk Management Plan
Prototype
Software Architecture Document
Implementation Model
Test Model
73
UP artifacts (continued)
Almost all artifacts are optional.
Formats of artifacts are fairly loose.
Create only those which add value to your final
product.
In your semester project, you won't get to choose
-- certain artifacts are required.
74
You Know You Didn't Understand UP When…
You try to define most of the requirements before starting design or
implementation.
try to define most of the design before starting implementation;
try to fully define and commit to an architecture before iterative
programming and testing.
You spend days or weeks in UML modeling before programming, or
you think UML diagramming and design activities are a time to fully
and accurately define designs and models in great detail.
you regard programming as a simple mechanical translation of these into
code.
You think that inception = requirements, elaboration = design, and
construction = implementation.
You think that the purpose of elaboration is to fully and carefully define
models, which are translated into code during construction.
You believe that a suitable iteration length is three months long, rather
than three weeks long.
You think that adopting the UP means to do many of the possible
activities and create many documents, and you think of or experience
the UP as a formal, fussy process with many steps to be followed.
You try to plan a project in detail from start to finish; you try to
speculatively predict all the iterations, and what should happen in each
one.
Best Practices of Software Engineering
原创luozhuang ©著作权
文章标签 construction transition uml system each 文章分类 HarmonyOS 后端开发
-
Top 100 Best Software Engineering Books.
p 100 Best Software Engineering Books, EverThe Full List This article c
books refactoring list internet construction -
SQL Server - Best Practices
[url]http://www.microsoft.com/technet/prodtechnol/sql/bestpractice/default.mspx[/url]
SQL Server 数据库 Best Practices -
Best Practices in SNOW Development
Best Practices
ServiceNow Development Best Practices