Software Development

Midterm Exam review

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 cylinder? What is its significance with respect to performance?

9. What is a problem definition, and why is it important?

10. 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?

11. 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
12. What are the key design decisions that must be made?

13. What is a programming convention, and why is it important?

14. What are the components of a major construction practices. What is the significance of each?

  • What is the meaning of each of the following design challenges?
  • Design is a wicked problem
  • Design is a sloppy process
  • Design is about tradeoffs and priorities
  • Design involves restrictions
  • Design is a heuristic process
  • Design is emergent
16. What is the reason that managing complexity is so center to good software design?

17. What are the main desirable characteristics of design, and what do they mean?

18. What are the 5 levels of design, and what is the significance of each?

19. 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
20. Explain each of the following deign practices:
  • Iterate
  • Divide and Conquer
  • Top-down and Bottom up
  • Experimental Prototyping
  • Collaborative design
21. What is an ADT, what why is it good to use?

22. Be able to recognize and critique a good and bad class abstraction.

23. What is the meaning of “containment” and “Inheritance” in classes?

24. What is polymorphism?

25. Why is it good to protect the internal variables of a class?

26. What are the reasons to create a class?

27. Recognize the things wrong with a low quality routine.

28. What are the reasons to create a routine?

29. What are the types of cohesion? What are better, which are worse? Why?

30. What are good rules for naming routines?

31. What order should parameters be put in? How should they be documented?

32. What is a macro, and why use it instead of a routine?

33. What are Asserts, and why use them?

34. Why should you protect the inputs of a routine?

35. What are the strategies for handling bad input to a routine?

36. What is an exception, and what are the ways to deal with it?

37. What is each of the following?

  • latency time
  • rotational delay time
  • transfer time
  • seek time
  • instantaneous transfer rate
  • average transfer rate
38. Given a disk seek time, average rotational, transfer, sector size, number of surfaces, number of sectors per track, and number or tracks per surface compute
  • The average/best case/worse case time to locate and read in a sector.
  • The size in bytes of the disk drive.
  • The size of a cylinder.
39. What is difference between block-addressable disks and sector-addressable disk drives? What are the advantages and disadvantages of each?

40. What is a contiguous file? What is internal fragmentation?

41. What is text format and binary format in a file? What are the advantages and disadvantages of each? What are the portability issues?

42. What is the reason for using clustering (and what is it).

Topic revision: r1 - 2011-03-14 - JimSkon
This site is powered by the TWiki collaboration platformCopyright &© by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback