Title: Week 8 Implementation Design
1Week 8Implementation Design
2Implementation Design
- System Design
- Describes what the system should do
- Implementation Design
- Describes what the implementer should do
Implementation CGprofile vertexProfile
cgD3D9GetLatestVertexProfile()const char
vertexOptions cgD3D9GetOptimalOptions(
vertexProfile ), NULL,const char
vertexOptions "-profileopts", "dcls", NULL,
System Design
3Implementation Design
- System Design
- Describes what the system should do
- Implementation Design
- Describes what the implementer should do
Given what our system design tells us Whats
our plan?
4Motivation Why Bother with Implementation Design?
- Suppose we code an object-oriented program
- 16 implementers
- No Implementation Design
- What problems might arise?
5Motivation Why Bother with Implementation Design?
- Suppose we code an object-oriented program
- 16 implementers
- No Implementation Design
- What problems might arise?
- Poorly chosen classes
- Multiple people on the same code
- Functionality in hidden, or multiple, places
- Inefficiencies and interaction problems emerge
- Bad match to the system design
- No common vision
63 Goals of Implementation Design
- Provide a shared plan to follow
- Consistency
- Ensure the plan meets its recipients needs
- Helpfulness
- Ensure the solution is appropriate
- Effectiveness
7Goal Consistency
- As we mentioned in week 6, our audience is
- system designers
- implementation designers themselves
- programmers
- testers
-
8Goal Consistency
- As we mentioned in week 6, our audience is
- system designers
- implementation designers themselves
- programmers
- testers
-
9Goal Consistency
- As we mentioned in week 6, our audience is
- system designers
- implementation designers themselves
- programmers
- testers
-
Communication
10Goal Consistency
- Ensuring implementers have the same plan
- Every design is a plan, to some extent
11Goal Consistency
- Ensuring implementers have the same plan
- Every design is a plan, to some extent
12Goal Consistency
- Ensuring implementers have the same plan
- Every design is a plan, to some extent
13Goal Consistency
- Ensuring implementers have the same plan
- Every design is a plan, to some extent
14Goal Consistency
- Ensuring implementers have the same plan
- Every design is a plan, to some extent
- Division of Labor
- Separate parts to work on
- Ensuring they work together
15Goal Consistency
- Ensuring implementers have the same plan
- Every design is a plan, to some extent
- Division of Labor
- Separate parts to work on
- Ensuring they work together
- A common vision (Ideas)
- Will the developers guesses coincide?
16Goal Consistency
17Communication isnt enough
- A good representation is important
- What if we just communicate really well?
- Some problems cant be seen along the way
- Implementation design is a birds eye view
- Need a plan that
- Supports the key work
- Will lead to an effective product upon completion
18Role of the Implementation Design
- As we mentioned in week 6, our audience is
- system designers
- implementation designers themselves
- programmers
- testers
-
Reflective Conversation with Materials
193 Goals of Implementation Design
- Provide a shared plan to follow
- Consistency
- Ensure the plan meets its recipients needs
- Helpfulness
- Ensure the solution is appropriate
- Effectiveness
20Goals Helpfulness
- In a way, the implementer is our customer!
- What are the implementers needs?
21The Implementers Needs
- Implementers must
- Create code
- Modify code
- Reuse code
22The Implementers Needs
- Implementers must
- Create code
- Subtle connections must be adjusted for
- Modify code
- How can you find it? What else will it effect?
- Reuse code
- How can you integrate new code? Reuse this code?
- The difficulty is in the interconnectivity
23Spaghetti vs. The Ideal Program
vs.
24Goals High-Quality Implementation
- Reducing interdependency (Low Coupling)
- Proper cooperation easier to maintain
- Changes dont propagate
- Reuse is facilitated
- Grouping functionality (High Cohesion)
- Easier to find things
- Metaphor guides decisions
- Both aid in dividing work
25Design Notations
- Assuming we have a supportive plan
- How do we present it?
- What representation will we use?
- Class Diagrams
- Interface specifications
- Textual Descriptions
- Sequence Diagrams
- Data Flow Diagrams
- Petri Nets
- any of the notations from system design
26Design Notations
- Each has its advantages and disadvantages
- Diagrams can
- Help deal with complexity, abstract, give the big
picture - Visualize the invisible code objects,
interactions, timing, etc. - Text can explain
- Depends on the needs of the system too
27Goal Helpfulness
- When designing, we must recognize the difficult
work we are describing - A design must help implementers keep complexity
under control - We must
28Goal Helpfulness
- When designing, we must recognize the difficult
work we are describing - A design must help implementers keep complexity
under control - We must
- provide a plan that meets implementers needs
- present the plan in a way that the implementers
can understand
293 Goals of Implementation Design
- Provide a shared plan to follow
- Consistency
- Ensure the plan meets its recipients needs
- Helpfulness
- Ensure the solution is appropriate
- Effectiveness
30What makes a design effective?
- Quality of Service
- Security
- Reliability
- Scalability
- Portability
- Minimal Hardware Requirements
- Also still maintainability, testability,
reusability - Remember your system design!
31Getting down to Business
- Existing notations may suit your needs
- Created with existing wisdom
- Will be more familiar to your implementers
32The Class Diagram
33The Class Diagram
- Again
- Implementers must code, maintain, reuse
- Systems needs
34The Class Diagram
- Again
- Implementers must code, maintain, reuse
- Systems needs
- But what classes do I need?
- System design provides hints
- Requirements emphasis can set priorities
- What parts are likely to change or be reused?
- Carefully apply information hiding
- Create classes with secrets
35Context may also guide classes
- Frames which classes to use
- Suggests I/O, interfaces, places for converters
36Further Existing Wisdom
- Patterns provide insight into common issues
- More next week
37Data Flow Diagrams
- A more active depiction of the system
- Context
- InternalProcesses
38Sequence Diagrams
- Can describe usage scenarios
- Might be especially useful in some games
- Logic of services andtransactions
- Can suggest classesand methods
39Sequence Diagrams Communication
40Petri Nets
- Maybe communication is very dicey
- A distributed system with concurrent processes
- Petri nets are a notation designed for this
- Not as common, but can be useful
41User Interface Specification
- Could spend a whole year on it
- May use existing components
- This will guide what is possible
- Needs to be determined early in some cases
42User Interface Specification
43User Interface Specification
- Can explain
- UI layout itself, but
- Intended functionality
- User experience
- Simple sequences
- Can imply specificimplementation,given a
particular API
44Or something else entirely
45Summary
- Must create an effective plan for implementers
- And ensure they can readily
- Create code
- Change code
- Reuse code
- Must consider the system designs needs
- A tricky balancing act
46Implementation Design in Context
Domain of Materials
Representation
Activity
Ideas
concern
manipulates
informs
Goal
captures
enhances
47Next week
- Specific Domain wisdom about tackling software
design problems - Some walkthroughs
- Implementation design drafts due Thusday