On Software Design

CS 300 Lecture 2.2

Bart Massey 2013-10-10


  • Misc notes
  • "Version Control" with Git Concluded
  • Programming Languages and Paradigms
  • Project Scheduling
  • Software Design
  • Architectural and Detailed Design
  • Pseudocode

Misc Notes

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


  • 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