OO Problem Analysis  «Prev  Next»
Lesson 4 Problem and Domain Analysis Couse Project
Objective Learn about the course project.

Problem and Domain Analysis Couse Project

Model an online ticket sales system

The project for this course requires you to model an online ticket sales system for a local auditorium.
In order to create this model, you will need to find out what the users want to be able to do with the system, how they do business, and how they expect an automated solution to help them.
Your task will be to:
  1. Document user expectations
  2. Help users clarify their expectations and business practices
  3. Model the users' business in a way that will support the development of an automated solution

During this process, you will use the UML diagramming standards to provide a consistent and precise view of the knowledge captured along the way and the decisions that you and the users make.
You will learn what tools and concepts to use at each phase, including what questions to ask and how to test your conclusions. The end product of this project, which will be developed in the first two courses in this series, will be a complete use case model, object model, and interaction diagrams.
These products will be the foundation for the design phase covered in part three of the Object-Oriented Analysis and Design Fundamentals Series.

Foundations of the Object Model

Structured design methods evolved to guide developers who were trying to build complex systems using algorithms as their fundamental building blocks. Similarly, object-oriented design methods have evolved to help developers exploit the expressive power of object-based and object-oriented programming languages, using the class and object as basic building blocks.
Actually, the object model has been influenced by a number of factors, not just object-oriented programming. The object model has proven to be a unifying concept in computer science, applicable not just to programming languages, but also to the design of user interfaces, databases, and even computer architectures. The reason for this widespread appeal is simply that an object orientation helps us to cope with the complexity inherent in many different kinds of systems.
Object-oriented analysis and design thus represents an evolutionary development, not a revolutionary one. It does not break with advances from the past, but builds upon proven ones. Unfortunately, most programmers today are formally and informally trained only in the principles of structured design. Certainly, many good engineers have developed and deployed countless useful software systems using these techniques. However, there are limits to the amount of complexity we can handle using only algorithmic decomposition; thus we must turn to object-oriented decomposition. Furthermore, if we try to use languages such as C++ and Ada as if they were only traditional, algorithmically oriented languages, we not only miss the power available to us, but we usually end up worse off than if we had used an older language such as C or Pascal.