CSC3004 Software Development

Final Exam Study Guide

Spring 2013 Exam Time: Tuesday, May 9, 1:10-3:00

  1. Metaphors in Software Development – What are they? Why use them? Give several examples. What are their limits?

  2. What is the overarching goal of preparing for construction?

  3. Why are Prerequisites important in Software Development?

  4. Iterative and Sequential Approaches – what are they? How do we choose between them?

  5. Problem-Definition Prerequisite – what is it, why is it important?

  6. Consider the student information system at MVNU. Give 3 examples of each of the following:
    a. Specific Functional Requirements
    b. Specific Nonfunctional (Quality) Requirements
    c. Requirements Quality
    d. Requirements Completeness

  7. Software architecture – why is it import to specify this carfully?

  8. Software architecture – What are the typical components of good software architecture. What is the purpose of each?

  9. What is the importance of having good requirements for a project? What are software requirements?

  10. What are Key Construction Decisions? Give and explain several.

  11. What factors are involved in selecting a program language?

  12. What are the strengths and weaknesses of C++?

  13. What does it mean to say design is “Wicked”? “Sloppy? About tradeoffs? Restrictions? Emergent?

  14. Why is managing complexity so important in software development?

  15. What is the meaning and significance of each of the following in design?
    a. Minimal complexity
    c. Loose coupling
    d. Extensibility
    e. Reusability
    f. High fan-in
    g. Low-to-medium fan-out
    h. Portability
    i. Leanness
    j. Stratification

  16. What the key steps in designing with objects are:

    1. Identify the objects and their attributes (methods and data).

    2. Determine what can be done to each object.

    3. Determine what each object is allowed to do to other objects.

    4. Determine the parts of each object that will be visible to other objects—which parts will be public and which will be private.

    5. Define each object's public interface.

  17. What is the meaning and purpose of each of the following?

    1. Encapsulate Implementation Details

    2. Inherit—When Inheritance Simplifies the Design

    3. Hide Secrets

  18. What are the Two Categories of Secrets?

  19. Why is it valuable to hide secrets?

  20. What does it mean to keep Coupling Loose? Why is this important?

  21. What does it mean to keep Strong Cohesion? Why is this important?

  22. Describe and give an example of each of the following design practices:

    1. Iterate

    2. Divide and Conquer

    3. Top-Down and Bottom-Up Design

    4. Experimental Prototyping

    5. Collaborative Design

  23. For each of the above, what is its advantage? Disadvantage?

  24. What is an ADT? What are it’s benefits?

  25. Given a piece of code, find and critique all instances of poor class interface and/or abstraction. Suggest improvements,

  26. Give an example of a class interface with services at different levels of abstraction.

  27. Why is it better to NOT expose member data in public?

  28. Describe “has a” and “is a” relationships among classes. How is each implemented?

  29. What is polymorphism? Under what circumstances should a case statement be replaced with polymorphism?

  30. What are valid reasons to create a routine?

  31. What are good practices to use in naming a routine?

  32. What are good practices to use in creating and using parameters when designing a routine?

  33. How can a routine protect its inputs, and why should it do this?

  34. What is offensive programming and why should it used?

  35. What are some of the advantages of using pseudocode is designing code?

  36. What are implicit variable declarations, and why are they often undesirable?

  37. Why and when should variables be initialized?

  38. What is the “life” of a variable? Be able to compute it.

  39. What does it mean to minimize the scope of a variable, and how can it be done?

  40. What is variable persistence?

  41. What is meant by variable binding time? What are some common binding times? Give examples of each.

  42. What are the advantages/disadvantages of early binding verses late binding?

  43. Why is it a good time to use each variable for one purpose only?

  44. What is the MOST IMPORTANT variable naming consideration?

  45. Why is it good to have a consistent naming policy? Give several reasons.

  46. What does it mean to have a “problem oriented” variable name? What is the alternative?

  47. With variables, what are some ways to do each of the following:

    1. Differentiate between variable names and routine names

    2. Differentiate between classes and objects

  48. What is each of the following?

    1. latency time

    2. rotational delay time

    3. transfer time

    4. seek time

    5. instantaneous transfer rate

    6. average transfer rate

  49. 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

    1. The average/best case/worse case time to locate and read in a sector.

    2. The size in bytes of the disk drive.

    3. The size of a cylinder.

  50. What is difference between block-addressable disks and sector-addressable disk drives? What are the advantages and disadvantages of each?

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

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

Topic revision: r1 - 2013-05-02 - 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