Title: Super-Design
1Super-Design
- Informatics 122
- Alex Baker
2In this class weve gone
System Design Arch. Imp. Design Code
3Recapping 121
- System design
- describes what the software system should do
- How do we fundamentally approach the problem?
- What is desirable?
- Architecture, and
- Implementation design
- describes what the implementer should do
- How do we make the approach reality?
- What is a feasible answer?
- Class diagrams, and
4Recapping 121
- A system design captures the essence of the
solution - An implementation design captures the full
solution
5Putting it back in perspective
System Design Arch. Imp. Design Code
6The Big Picture
- In the sense of
- 1) New perspective on some major topics
- 2) The impact of these issues on big projects
7Big Projects
- Whats the biggest project youve worked on?
8Big Projects
- Whats the biggest project youve worked on?
- A glimpse of the real world
- 3 particularly interesting issues
91) Planning for Change?
- So we know we want to do it, but what does it
mean?
101) Planning for Change?
- So we know we want to do it, but what does it
mean? - What is the role of change, in theory, in
- Waterfall lifecycle model
- Iterative approaches
- Agile approaches
11The Waterfall Model
- System design sets up implementation design
- Provides conceptual guidance
- Specifies parameters
- Suggests structure
- Suggests modules and work divisions
12The Waterfall Model
- System design sets up implementation design
- Provides conceptual guidance
- Specifies parameters
- Suggests structure
- Suggests modules and work divisions
- Never to return! (In theory)
13A linear process? (Really?)
Goal System Design Implementation
Design Code
14An iterative process - Completely?
- New designs, based on results from previous
iterations no actual reuse?
15The agile process?
16The agile process?
17In reality, not so simple
- Debugging
- Adjusting
- Expanding
- Refactoring
- Redesigning
- Re-architecting
- Reconceiving
18Why do we change?
Desirable
Feasible
19In theory
Desirable
Feasible
System design
20In theory
Desirable
Feasible
System design
Implementation design
21In theory
Desirable
Feasible
Implementations
System design
Implementation design
22On the other hand
Desirable
Feasible
Implementations
System design
Implementation design
23On the other hand
- Some degree of learning and changing
- How can we apply what we are learning most easily?
Desirable
Feasible
24Software processes
- No process is truly linear or iterative
- We dont get it right the first time
- Code, designs, architectures, concepts are often
reused when we start over - Many kinds of changes
- Many ways to design for change
25Consider VBoard
- What changes would we like to make?
26VBoard Expanding
- Along existing axis
- Adding more UI widgets
- Implementing new gestures
- Fairly easy?
- We know how to design for these changes
27VBoard Bugs
- Sometimes relationship lines fall under
- Can we understand the program flow to know why?
- Can we find the place in the code that causes
this problem? - Can it be fixed with minimal rippling?
28Problems Recoding or Redesigning?
- Suppose our (future) gesture system is clunky
- Have we reused this? Can it be fixed?
- The program grinds to a halt eventually!
- Is this a bug or a fundamental design flaw?
29VBoard Reconceiving?
- For example
- Making it UML-specific
- Is the grid the right approach to organization?
- Should we have scraps?
30VBoard Reconceiving?
- For example
- Making it UML-specific
- Is the grid the right approach to organization?
- Should we have scraps?
- How much redesign to we have to do?
- Do we start over?
- What knowledge can we apply?
31When design is more than UML
- Large-scale
- Long-term
- Existing systems and frameworks
- These challenges are greater
32Changes
- Large-scale
- Long-term
- Existing systems and frameworks
33Changes Large Scale Design
- More people working
- More people changing
- People working with more changes they didnt make
- Code level changes become design changes..
- Does a design accommodate this?
- More places to change
- Harder to fix, harder to contain
- Design might need to be divided among several
34Changes Long-term Design
- Large-scale
- Long-term
- Existing systems and frameworks
1978
2000 (!)
2007
35Changes Long-term Design
- Needs more likely to change over time
- Understanding changes
- Standards change
- Platforms change
- Market pressures for more features
- Customer changes
- More problematic to make changes
- Developers change, assumptions lost
36Changes
- Large-scale
- Long-term
- Existing systems and frameworks
37Changes Existing Materials
- Can be harder to change
- May be harder to understand
- May not have full access to source, etc.
- May not understand what you do have
- May not be allowed to change
38Changes Real projects
- What can we do? No single answer, but
- Learning before the real thing
- Rigor and wisdom in design
- Well-reasoned adjustments
- Reuse, patterns, styles, frameworks
- Awareness of these issues
- Practice (hint, hint)
39Tired of talking about designing for change?
402) Unified Design Vision
412) Unified Design Vision Tough!
- Adding patterns assignment
- Also a problem in Cake
- Design drift, design decay
42Choices have subtle effects
- Modeless interaction in VBoard
- What if you didnt know?
- Having a word class in Scrabble
- The piece models in Jetris
43Choices have subtle effects
- Modeless interaction in VBoard
- What if you didnt know?
- Having a word class in Scrabble
- The piece models in Jetris
- Is everyone on board?
44When design is more than UML
- Again
- Large-scale
- Long-term
- Existing systems and frameworks
45Consistency Large Scale
- Lots of design work, lots of people needed
- Maintaining shared goals and knowledge
- Possible solutions
- Product Lines
- Frameworks/Patterns/Architectural Styles
- Guidelines/Principles
- Brooks Surgical Team
46Consistency Long Term
- Designer turnover / legacy systems
- Design Drift
- Design Decay
47Consistency Existing Frameworks
- In reality, a lot is reuse
- Frameworks (Piccolo)
- Libraries
- Components
- Must conform
- Consider Piccolo
- Or Jetris
- Brooks Conformity
- Adhering to the real world one of softwares
issues
48Consistency of Vision
- Want a single, unified vision
- But this is tough with
- Tons of people
- Changing people and changing needs
- Pressures to conform to existing models
- Tough enough on a personal project
49Consistency of Vision
- Has helped inspire
- Software Architecture
- Architectural Style
- Product Line Architectures
- Design Patterns
- Traceability
- Rationale
503) Representations
51Architecture (Buildings)
52Process Design
53Multiple Representations
- Translating between them
- Easier in some fields than others
- May require
- Language translation
- Additional design decisions
- Waterfall model
54Single Representation
- Using the same for multiple purposes
- Likely to be subpar for one or the other
- Agiles approach, code for everything
- Recording decisions
- Communication
- Reflective conversing
55When design is more than UML
- One more time
- Large-scale
- Long-term
- Existing systems and frameworks
56Representations Large Scale
- Multiple
- Complexity (translation) gets worse
- Takes longer to get to coding, will more change?
- Single - Code becomes especially tough
- Can the implementers keep their bearings?
- Is a unified vision feasible?
- Can you find the rationale you need?
57Representations Long Term
- Multiple - Consistency and traceability of
changes - Single - New hire issues
58Representations Existing Frameworks
- Single (same as framework)
- Can constrain your only mode of working (!)
- Multiple
- Need to avoid misrepresenting the frameworks
needs across documents
59Representations
- No one solution
- Theres a lot of complexity, it all has to go
somewhere - No silver bullet as they say..
- Softwares a hassle!
60Unique Requirements
- Banks
- Satellites
- Telephone Networks
- Car Driving Software
61Unique Reqs - Bank Software
- Verifiable
- Long term
- Run for decade
- Laws change
- Finance packages change
62Unique Reqs - Satellites
- Software must be reliable
- Can it be proven
- Can we fix it remotely?
- Long term
- High cost of building and installing
- Highly interconnected System Design
- UML not the answer
63Unique Reqs Telephone Network
- Reliability
- Distribution
- Fault tolerance
- How do we accommodate outages
- Will losing one node cripple the system?
- Different representations needed
64(No Transcript)
65(No Transcript)
66Unique Reqs Car Driving SW
- Complexity
- Reliability
- Can we count on input from sensors?
- What happens when theres an error?
67Unique Reqs Car Driving SW
- Reliability
- Can we count on input from sensors?
- What happens when theres an error?
- UML far from enough
68Wrapup
- Designing for change
- Multiple designer issues
- Representation issues
69- Theres more to software design than we can show
you first hand - UML often not enough, need meta-design
- Senior projects a start
70Remember
- Talks Tuesday
- Questions about assignment?
- About Informatics?