focus on design principles and on a process for doing design = to produce a precise, complete, high-...
TRANSCRIPT
Designing with Teams
Tawatchai IempairoteSeptember 16, 2014
OBJECTIVES
Focus on design principles and
on a process for doing design=
To produce a precise, complete, high-quality foundation for product
implementation
OUTLINES
Design principle Designing in teams Design standards Designing for reuse Designing for usability Designing for testability Design reviews & inspections
Designing in Teams
Design Principles
Creative process; produce complete and precise specification of how to build a product
Complete design defines the principal parts, describe how they interact, and how they put together to produce the finished result.
Design Principles After the requirements have been defined, the
entire software process concerns various levels of design;
The high-level design must produce a SDS( Software Design Specification),which includes the complete functional specifications of each component, its interface and its state behavior
Design PrinciplesPRODUCT
Component Part2Component Part1 Component Part n
Team Member 1 Team Member nTeam Member 2
Designed &Implemented
Designed &Implemented
Designed &Implemented
SDSthe complete functional specifications of each
component, its interface and its state behavior.
Design Principles
The detailed design defines the logical structure, all the loop initialization and stepping conditions, the detailed state structure, and the state transitions for every program.
If the High-level design is vague or imprecise, the engineers have to fill the gap component incompatibilities, detected in integration & system test..
Design Principles
High-level design differs from detailed design only in scope and detail.
In TSPi, the high-level design process is described in the design phase. The detailed-design process is described in the implementation phase.
Designing in Teams
Designing in Teams
Using entire team Design Studies Using all the team’s talents
Who should design each part? In what order?
How do the parts fit together?
Using the Entire Team
Common problem in designing large software system = the need to define the overall system structure. If not, difficult to divide the work.
To have the entire team work together on the overall structure design. => An attractive alternative
Using the Entire Team
The entire team brainstorms the initial design ideas.
Once the team has picked a general approach, only one or two engineers are usually needed to document the highest level design, specify the interfaces, allocate system functions among the components, and define the overall program structure and logic.
And identify other team tasks could do:- design studies, standards development, and reuse.
Using the Entire Team
Design Studies
› While the system designers are producing the external component specifications, other could think about alternative ways to design the components => to build the prototype, and user interface.
Using the Entire Team
Using All the Team’s Talents› Powerful range of skills and knowledge› To get all the members to fully contribute
Ask if anyone has further ideas or relevant knowledge on the topics
Speak up
Design Standards
Some important types of design standards;
› Naming conventions
› Interface formats› System and error messages› Defect standards*› LOC counting› Design representation standards
Design Standards
Design Representation Standards To know having the complete design,
need a specification for what a complete design contains
Need to precisely document every design by using the 4 PSP design templates› The operational scenario template› The functional specification template› The state specification template› The logic specification template
COMPLETE &
PRECISE
Designing for Reuse Reuse is a potentially powerful way to
increase team productivity. By establishing a reuse program, you
can often save engineering time in development cycles.
Teams generally achieve higher reuse level when s/o produces an initial reuse standard and specifies a starter set of reusable parts:- › Reuse interface standards› Reuse documentation standards› Reuse part quality› Application support.
Designing for Reuse
Reuse Interface Standards One key issue of reuse: make parts
convenient to use. To define reusable functions that
are self-contained & cleanly isolated
Ex: the call-return interfaces
Designing for Reuse
Reuse Documentation Standards
Reuse Part Quality High Quality Because give up if its first defect found. To achieve the high part quality Use a fully defined process & conduct
personal reviews & peer inspections of both the design and the code
Application Support
Designing for Usability
One way to make products usable is to produce scenarios for every key user function (reflect the kind of system you believe the users will want.)
*** Good idea to prototype and demonstrate all user interfaces.
Designing for Testability
Black-box testing White-box testing
Design Reviews and Inspections
For improving the quality of your design.
A well-document design design analysis (check each design element => interfaces, state behavior.
The TSPi Design Scripts
Entry Criteria
A development strategy A development plan A completed and inspected SRS
Can’t do a competent design job unless you have a high-quality SRS that has been Inspected. The team must have agree on how to represent the completed design.
High-level design
The development manager leads the team through… Decide on the overall product structure. Name the product components. Allocate product function to components Produce the component external
specifications Allocate use-cases function to these
components. Identifying the design tasks to be
completed and documented.
Design Standards
The quality/process manager leads the team to produce the design standards and name glossary.
Design Task Allocation
[Overall design specified and the components named] => produce the design specifications
The development manager lead Lay out the design of the SDS
document + identify the work needed to produce & dividing this work into sections.
Allocate & get the commitment
The Design Specification
Each team memberProduces and reviews his or her portions of the
SDS document Provides these to the development manager
The development manager produces a composite SDS draft.
Integration Test Plan
to produce the integration test plan while you are producing the design specifications check & verify all interfaces
Inspect the integration test plan when inspect the SDS.
Design Inspection
The quality/process manager leads all the team through inspecting the SDS draft and integration test plan.
to find maximum no. of design defects. to ensure all team understand the
design.
The inspection is documented in form INS and defects are recorded in LOGD.
Design and Integration Test Plan Update
Team member fix the identified errors in SDS/ integration test plan
The development manager obtains the updated SDS and integration test plan sections and combine them into a final SDS and integration test plan
Distributes.
Design Baseline
The support manager baselines an official SDS copy, which the team can now change only by using the change control procedure
(form CCR).
Exit Criteria
The final design products are …
The completed, inspected and corrected SDS, + all design material
The completed, inspected and corrected integration test plan
The design standard and name glossary The completed inspection forms (INS) Updated SUMP and SUMQ forms Update time, size, defect Updated the project notebook (copy all
design materials)
Summary
To ensure that engineers produce high-quality design.
Design Flow
Produce overall design
Divide into principal components
Design BDesign A Design C
The development manager
SDS
Design Result
Precise, complete, high-quality How the product part interact How assembled to the finished system
4 Design Steps
Deciding on the overall product structure Allocating product functions to
components Producing the component external
specifications Deciding which components & functions
to develop in each development cycle.
+ REUSE and STANDARDS