Tags: %TAGME{ tpaction="" web="SCMP391" tag="" }% view all tags

Midterm Study Guide

Ch 1-8, 21, User Interface Design, GIT

The midterm will be a mix of essay, multiple choice, and true/fales questions.

  1. What are the main activities involved in software construction?
  2. Why are metaphors used in software design and development?
  3. What are some common metaphors of good software development processes?
  4. What are some common metaphors of bad software development processes?
  5. What is the difference between a heuristic and an algorithm?
  6. Why is it important to carefully consider the prerequisites of a software system before you build it?
  7. What are the three major classes of software, and how does the system class impact practices used in building each type
  8. What is a problem definition, and why is it important?
  9. What are system requirements? Why is it so hard to have stable requirements? What can you do to minimize the impact of requirement changes midstream?
  10. What are the major components of system architecture? What is the meaning of each of the following with respect to system architecture?
    • Program organization
    • Data Design
    • Major Classes
    • Business Rules
    • User Interface
    • Resource Management
    • Security
    • Performance
    • Interoperability
    • Input/Output
    • Over-engineering
    • Buy vs. Build
  11. What are the key design decisions that must be made?
  12. What is a programming convention, and why is it important?
  13. What are the components of a major construction practices. What is the significance of each?
  14. What is the meaning of each of the following design challenges?
    • Design is a wicked problem
    • Design is a sloppy process
    • Design is about trade-offs and priorities
    • Design involves restrictions
    • Design is a heuristic process
    • Design is emergent
  15. What is the reason that managing complexity is so central to good software design?
  16. What are the main desirable characteristics of design, and what do they mean?
  17. What are the major heuristics of the design process? What does each mean?
    • Find real world objects
    • Form consistent abstractions
    • Encapsulate Implementation details
    • Inherit when this makes things simpler
    • Hide secrets
    • Identify areas likely to change
    • Keep Coupling Loose
    • Look for common design patterns
  18. Explain each of the following deign practices:
    • Iterate
    • Divide and Conquer
    • Top-down and Bottom up
    • Experimental Prototyping
    • Collaborative design
  19. What is an ADT, what why is it good to use?
  20. Be able to recognize and critique a good and bad class abstraction.
  21. What is polymorphism?
  22. Why is it good to protect the internal variables of a class?
  23. What are the reasons to create a class?
  24. Recognize the things wrong with a low quality routine.
  25. What are the reasons to create a routine?
  26. What are the types of cohesion? What are better, which are worse? Why?
  27. What are good rules for naming routines?
  28. What order should parameters be put in? How should they be documented?
  29. What are Asserts, and why use them?
  30. Why should you protect the inputs of a routine?
  31. What are the strategies for handling bad input to a routine?
  32. What is an exception, and what are the ways to deal with it?
  33. Constructing classes and constructing routines tends to be an iterative process. What does this mean, and why is it the case?
  34. Why is it a good practice to look over and review each others work?
  35. What is the meaning and significance of each of the following in design?
    • Minimal complexity
    • Loose coupling
    • Extensibility
    • Reusability
    • High fan-in
    • Low-to-medium fan-out
    • Portability
    • Leanness
    • Stratification
Edit | Attach | Watch | Print version | History: r2 < r1 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r2 - 2017-02-24 - JimSkon
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2020 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback