System Analysis and Design

The goal of this course is to understand how real world, large scale, reliable and reusable software should be designed and implemented. The main focus will be Object Oriented A&D, leading to extensive use of design patterns, round trip engineering and better programming practices. The course will also cover issues of security, databases, distributed systems and human-computer interface.




Who, When and Where

Lecturer: David Talby

Reception Hour: Wednesday 11:15-12:00, office in 2nd floor in main building.

Time: Group C1 on Wednesday 8:45-11:15, Group C2 on Wednesday 12:00-14:30



Discussion Group:

The discussion group is only used for publishing information that might interest ALL students!
This is the place to ask questions about the course material, or to clarify a question in an exercise that you don't understand. Discussion groups become more useful the more you use them, so it's up to you. Also, feel free to answer other people's questions and suggestions in the newsgroup, without waiting for David to answer everything.
The newsgroup will also be the place where announcements such as checked exercises and postponements will be posted. Posted messages will be assumed known to everyone! Therefore, remember:

  It is YOUR responsibility to check the discussion group once in a while to find updates and corrections.


Q: Okay, so what do we need the email for if we have a newsgroup?
A: For personal questions only - ones that the entire class shouldn't or needn't know of. Examples are a personal request for a postponement for an exercise, an appeal ("Irur") about an exercise grade, or any other personal question.



The course will cover the following topics, more or less in this order:

  1. Introduction: Information systems in modern organizations, the software crisis
  2. Initiating a system: ISO-9000 and 'Nohal Mafteah' compared
  3. Analysis: Data collection techniques
  4. Analysis: Creating a preliminary specification
  5. Applicability Study: Economic, Technological and Operational
  6. Pert networks: Planning a project's timetable
  7. Functional Decomposition: HIPO, DFD and data dictionaries
  8. Object Oriented Design: Case study and motivation
  9. Eiffel: Reference and Expanded Types, Genericity, Design by Contract, Exceptions
  10. Eiffel: Multiple and Repeated Inheritance, Covariance and Contravariance
  11. Design patterns: Composite, Decorator, Strategy, Bridge, Command, Iterator, Visitor
  12. Distributed Systems: Snapshots, Mutual Exclusion, Transactions
  13. Security: Attacks, Secret and public key cryptography, Encryption, Authentication, Biometrics
  14. User Interface Design: Usability, Evaluatation Techniques, Design Methods



The following books contain all of the class material, and most of them contain much more. If you encounter books or web pages that are relevant to the course and do not appear here, please inform the course's staff so that your findings can be placed here and help other students in the future.


  1. Object Oriented Software Construction, 2nd Edition, Bertnard Meyer, 1997.
  2. (Hebrew) Open University: Information Systems Design, Daniel Glin.
  3. (Hebrew) Software Quality Management, Brian Hembling, 1997.
  4. Design Patterns: Elements of Reusable Object Oriented Software, by Gamma, Helm, Johnson and Vlissides, 1995.
  5. Management Information Systems, K. C. Laudon and J. P. Laudon, Second Edition.
  6. Applied Cryptography, 2nd Edition.

Web References:

  1. A $500 million mistake: The Lessons of Ariane
  2. Year 2000: crisis or opportunity?
  3. Design by Contract (needed for the first exercise)
  4. The OO Soapbox (archive of papers)
  5. Providers of free email and home pages.
  6. Learn basic HTML.
  7. Suggeted Solution of Exercise 4.

Example Tests:

  1. Moed Alef, 1998
  2. Moed Bet, 1998


Guidelines and Grades:

The course will have weekly exercises, worth 15% of the final grade, and a final test that will determine the remaining 85%. In order to pass the course, five out of the six exercises must be submitted.

You may submit an exercise one week late at the cost of 20% of its mark or two weeks late at the cost of 50% of its mark. Later submission will not be accepted and be graded as zero.

The exercises are theoretical. You are encouraged to submit in pairs.

The exercises are a crucial part of the course: They give you a chance to design practical, although miniature, real world scenarios, and understand the tradeoffs involved in every design process. This is the only way to realize the advantages and drawbacks of a methodology, or to evaluate the modeling power of a notation.



The exercises are available for download in Word '97 format.
Grades for checked exercises will available here with separate lists for Gimel 1 and Gimel 2.


Submission Date

Ex1: Design by Contract

Dec 27, 1998

Ex2: Data versus Object Decomposition Jan 17, 1999
Ex3: Inheritance in Eiffel Jan 27, 1999
Ex4: Design Case Study in Eiffel Feb 10, 1999
Ex5: Design in UML and OMT Feb 17, 1999
Ex6: Security Systems Feb 24, 1999


Motto: Analysis and Design should be most useful after the course is over, in real life.