Great designs come from great designers. Software
construction is a creative process. —
F.P. Brooks, The Mythical Man Month, 1975
Software Design
Software design
— Focus on the
“Overview” and “Design Concepts”
sections.
- Design is a modern buzz word. Why is it such an
important
concept/practice for the 21st century?
- Identify and explain Booch’s four basic principles
of (object-oriented
software) design.
- Booch doesn’t mention another familiar design
principle, information
hiding. Explain how this principle is related (or not
related) to Booch’s
four principles.
Software design
patterns — Focus on
the introduction, the “History” and the individual
patterns listed
below.
- What is a design pattern?
- From whose work did the original idea for software
design patterns come and
who made the connection to software design?
- Be familiar with the following common design patterns:
- Factory method
- Singleton
- Adapter
- Facade
- Iterator
- Observer
No Silver Bullet —
This entire
paper is work reading, but focus on the questions below.
- Does software have an analog to Moore’s law?
- Compare and contrast essential and accidental
issues.
- What approaches to software development appear to Brooks
to be the most promising? Are these approaches more
compatible with traditional or with agile methods?
- How would you summarize Brook’s thesis in one or
two sentences? Do you agree with him?
Design Modeling
- UML Class Diagrams
- What are the basic building blocks of a class
diagram, that is, what do the nodes and arcs
represent?
- How does a class diagram represent the inter-class
relationships commonly referred to as is-a and
has-a?
Technology Stack
- Refactoring — Be
able to explain the purpose of refactoring a software
system.
-
JavaScript modules — In
the lab, we’ll be modularizing the code from the previous
lab, so it would be good to review the first sections of this
reference, from “Introducing an example” through
“Importing features into your script”.