CIS-260 Home http://www.c-jump.com/bcc/

Introduction to Software Design


  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. Legacy Systems
  10. Procedural Programming
  11. Object Design Principles

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. Legacy Systems


10. Procedural Programming


11. Object Design Principles