CIT-73 Home http://www.c-jump.com/CIT73/CIT73syllabus.htm

Introduction to Software Production


  1. Week 1, Introduction to Software Production
  2. Dealing with nontrivial projects
  3. The need for design
  4. Design constraints
  5. Pitfalls
  6. Procedural vs. object-oriented programming
  7. Difference between OO and procedural programming
  8. Procedural vs. object-oriented programming
  9. Week 1 Reading: pages 5-10

1. Week 1, Introduction to Software Production


  • Software production timeline:

    • Starting from a relatively high-level view of design

    • Increasing detail

    • Ending with programming language-specific techniques that support our design.

  • Our thought process:

      thinking

2. Dealing with nontrivial projects


  • Constructing nontrivial software is a complex task

    • problem analysis

    • overall design

    • documentation

    • testing

    • maintenance

    • management of all of the above

  • Neither the details nor the big picture must be permanently lost in the rush to get a system shipped.

  • Software production activity:

      thinking

3. The need for design


  • The discussion about design is a bit less precise and a bit less detailed than the discussions of individual programming language features and techniques.

  • There is no cookbook method for creating good software systems...

    • ...However, detailed descriptions of design patterns do exist for specific, well understood kinds of applications.

  • There is no substitute for intelligence, experience, and taste in programming.

    programming cookbook

4. Design constraints


  • The design constraints are:

    • the abstract nature of software

    • techniques that work for small projects do not necessarily scale to medium and large projects.

  • The design discussions can be formulated in terms of analogies rather than in terms of code examples.

    • Please remember that proof by analogy is fraud... :-)

    • ...that is why software design is an iterative process.

    design constraints

5. Pitfalls


  • Observations drawn from real-life projects often apply to a wide variety of situations...

    ...therefore "We can have our next project done in two weeks..."

  • Unfortunately, observations can never be considered universal...

    ...Look at such observations with a healthy degree of skepticism.

    pitfalls

6. Procedural vs. object-oriented programming


  • Most modern programming languages (such as C++ or Java) can be used simply as procedural languages.

  • However, doing so leaves the most powerful techniques unused...

    • ...only a small fraction of the potential language benefits is gained.

  • Focus is on approaches to design that enable effective use of

    • data abstraction

    • object-oriented programming facilities

  • Such techniques are often called object-oriented design.

  • Black box way of thinking is typical in procedural programming:

      procedural programming

7. Difference between OO and procedural programming

  • Using global data

      global data

  • Using hidden data and object-to-object communication

      hidden data

8. Procedural vs. object-oriented programming


9. Week 1 Reading: pages 5-10