Professional Documents
Culture Documents
Objectives of a
Why This Session?
Modern SD Process
• To provide a modern view of SD process • Apply an iterative, use-case driven, architecture-
(approach, architecture, modeling etc.). centric process to the development of a robust
• To investigate problems (symptoms), root causes design model.
(diagnosis) and solutions (best practices) in team • Apply UML to represent the design model.
SD process.
• Apply the concepts of object orientation:
• To address the issues related to risks, quality and
testing of the software product. abstraction, encapsulation, inheritance and
polymorphism at design and implementation level.
• To have a prelude idea for Rational Unified
Process (RUP).
1
A Broad Perspective Ahead Situation Analysis
• Explore the symptoms and root causes of • World economies are becoming software
dependent (Should we put a big question mark
software development problems.
• Examine SIX best practices for software ?
( ) today.
development. • Applications are expanding in size, complexity,
distribution and importance.
• Apply these practices to address the root
• Business is demanding increased productivity and
causes of the problems. quality in less time and within budget.
• Not enough qualified manpower is available.
2
Symptoms for SD Problems
Symptoms for SD Problems
(Contd.)
• Inaccurate understanding of end-user needs. • Poor software quality.
• Inability to deal with changing requirements. • Unacceptable software performance.
• Modules that don’t fit together. • Team members in each other’s way are unable to
• Software that’s hard to maintain and/or extend. reconstruct who changed what, when, where, why.
• Late discovery of serious project flaws. • An untrustworthy build-and-release process.
Treating symptoms does not treat the disease, e.g. • Insufficient requirement management.
Late discovery of serious project flaws is only a • Ambiguous & imprecise communications.
symptom of larger problems. • Brittle architecture.
We have to diagnose for the symptom i.e. • Overwhelming complexity.
subjective project status assessment for above
• Undetected inconsistencies among requirement,
symptom. designs, and implementations.
3
Best Practices of SE
SIX Best Practices
(Schematic)
• Develop iteratively. Develop Iteratively
• Manage requirements properly.
• Use component architectures. Use
Manage Model Verify
Component
• Model the software visually. Requirements
Architectures
Visually Quality
• Verify quality.
• Manage control changes. Control Changes
Develop Iteratively
Best practices enable high-performance teams
resulting into more successful projects in terms of
Use
quality, timeliness and profits. Manage
Component
Model Verify
Requirements Visually Quality
Architectures
Control Changes
Traditional
Practice 1: Develop Software
Waterfall
Iteratively
Development
• An initial design is likely to be flawed with Requirement
Analysis
respect to its key requirements.
Design
• Late-phase discovery of design defects
results in costly over-runs and/or project Code &
Unit Testing
cancellation.
Subsystem
The time and money spent implementing a Testing
faulty design are not recoverable. System
Testing
Time
4
Waterfall Development Delays Apply the Waterfall Iteratively to
Reduction of Risk System Increments
Iteration 1 Iteration 2 Iteration 3
R R R
R D D D
I C C C
S R
Waterfall T1
T2
T1
T2
T1
T2
K D
T1
TIME
T2
-Earliest iterations address greatest risks.
-Each iteration produces an executable release,
an additional increment of the system.
-Each iteration includes integration and test.
TIME
TIME
5
Definitions: Requirements and Their
Practice 2: Manage Requirements
Management
• Elicit, organize and document required functionality and • A requirement is a condition or capability to
constraints.
which the system must conform.
• Evaluate changes and determine their impact.
• Track and document tradeoffs and decisions. • RM is a systematic approach to
Eliciting, organizing and documenting the
Requirements are dynamic- Expect to change during requirements of the systems and
software development.
Ensuring the agreement between the client and the
development team on the changing requirements.
6
Practice 3: Use Component- Based
Definition of Software Architecture
Architectures
SA is defined as a collection (or organization) of
Develop Iteratively significant components of software system and it involves
decisions like:
• Selection of the structural elements and their interfaces by
Use which a system is composed off.
Manage Model Verify
Component
Requirements Visually Quality • Behavior as specified in collaborations among those
Architectures
elements.
• Composition of these structural and behavioral elements
Control Changes into progressively larger subsystems.
• Architectural style that guides this organization of
components.
7
Problems Addressed by Component
Architectures
Practice 4:Visually Model Software
• Capture the structure and behavior of architectures The Unified Modeling Language (UML) is
• Show how the elements of the system fit together a language for
• Hide or expose details as appropriate for the task • Specifying
• Maintain consistency between a design and its • Visualizing
implementation
• Promote unambiguous communication.
• Constructing
Visual modeling improves our ability • Documenting
to manage software complexity the artifacts of a software intensive system.
8
Diagrams are views of a model Visual Modeling and Iterative
(Contd..) Development (Changes to Design)
• Deployment diagrams are used to show the mapping of Initial
the software to hardware. Requirements
Implementation &
Testing
Deployment
Deployment
9
Iterative Development Permits
Practice 5: Verify Software Quality
Continuous Testing
Software problems are 100 to 1000 times more
Costly to find and repair after deployment Iteration 1 Iteration 2 Iteration 3
C
R R R
O
D D D
S
C C C
T
T1 T1 T1
T2 T2 T2
Test
T Test Suite 1 Test Suite 2 Test Suite 3 Automation
E 13000 Tests
S 6 Hours Run More Tests More Often
1 Person
T
10
Practice 6: Control Changes to Software Practice 6: Control Changes to Software
Factors of Multiplicity
Develop Iteratively • Multiple Developers
• Multiple Teams
• Multiple Sites
Use • Multiple Iterations
Manage Model Verify
Component • Multiple Releases
Requirements Visually Quality
Architectures
• Multiple projects
• Multiple platforms
11
Problems Addressed by Controlling
Changes
Best Practices Reinforce Each Other
Ensures users involved Manage
As requirements evolve Requirements
Root Causes Solutions
• Insufficient requirements • Requirement change workflow is Validates Architectural Use
defined and repeatable Early Component
• Ambiguous communications • Change requests facilitate clear Architecture
communications
• Overwhelming complexity • Isolated workspaces reduce Develop Address complexity of design/ Model
interference from parallel work Iteratively Implementation incrementally Visually
• Subjective assessment
• Change rate statistics are good
metrics for objectively assessing
• Undetected inconsistencies project status Measure quality early and often Verify
• Workspaces contain all artifacts, Quality
• Uncontrolled Change facilitating consistency
• Insufficient Automation • Change propagation is controlled. Evolves baseline incrementally Control
• Changes maintained in a robust,
Changes
customizable system
12