On Software Design
CS 300 Lecture 2.2
Bart Massey 2013-10-10
Overview
- Misc notes
- "Version Control" with Git Concluded
- Programming Languages and Paradigms
- Project Scheduling
- Software Design
- Architectural and Detailed Design
- Pseudocode
Misc Notes
- Today's CSOD is http://thedailywtf.com/Articles/The_FOR-CASE_paradigm.aspx.
Version Control With Git Concluded
(Completion of in-class Git tutorial.)
Programming Languages and Paradigms
Some language categories
- Traditional / imperative
- Object-Oriented
- Functional and Logic
- Domain-Specific Languages
Languages are usually chosen for weird reasons
Language doesn't matter so much
Scheduling a Project
Useful even for an individual project
Basic principle: very fine-grained scheduling
- Forces paying attention to / exposing details
- Central Limit Theorem gives convergence here
- Constant feedback on progress
- The "instant-endorphin" thing
Practice consciously: everyone is terrible at this
Software Design
How will the software work?
Multi-level
- Architectural strategy
- Detailed-design tactics
Traceable to
- Requirements
- Implementation
Comes mainly with experience, but also
- Looking at other folks' designs
- Reading about how design is done
Architectural and Detailed Design
Architecture: overall block diagram of what you are building
- Is it a pipeline? client-server? plugin architecture? file processor? database-driven? gui?
- What sorts of constraints does the design impose?
- How well does the architecture fit the requirements?
- All else being equal, simpler is better
Detailed Design: Module decomposition of what you are building
- Usually all the way down to "units" (procedures, functions, methods)
- Rule of 7 ± 2
- Bottom-up vs top-down
- All else being equal, simpler is better
Pseudocode
- Not necessarily every unit, but any that have anything interesting.
Rules of Pseudocode:
- Should be translatable to code about as fast as you can type
- Shouldn't be code
- English to make things clearer
- Easy details omitted
- 1-5 LOC per line
(Demo)
Last modified: Monday, 14 October 2013, 11:54 PM