OOPortal OOPortal


Design Concepts  «Prev  Next»
Lesson 8

Key Analysis and Design Concepts Conclusion

This module discussed
  1. Creating objects requires abstraction
  2. An abstraction is a representation of a real object in a useful manner for a specific problem.
  3. The content of an abstraction is affected by
    1. The context in which the abstraction will be used
    2. The level of detail required to support the problem
    3. The time frame that the abstraction has to support
  4. Cohesion is a measure of the degree to which all parts of an object support the same purpose. The goal of high cohesion is one well-defined purpose per object.
  5. Coupling is a measure of the dependency between objects. Loose coupling means that objects are able to operate independently with verylittle help or communication with other objects.
  6. Aggregation and composition provide a means to represent objects made up of other objects. Aggregation is used when the life-span of the part objects may be longer than their participation in the assembly. Composition (also referred to as strong aggregation) is used when the part objects exist only as long as the assembly is intact.
  7. Generalization and specialization provide the means to organize shared and unique properties among similar objects. Generalization combines shared properties into a single definition. Specialization identifies the distinguishing properties in a set of objects.

Demand for Cost Effective and High Quality Systems

A particular strength of modeling is that it reveals our assumptions. Without reading thousands of lines of code, we can
  1. measure communication traffic,
  2. evaluate quality by assessing coupling and cohesion, and
  3. test our models before we write faulty code.
Modeling accomplishes these objectives by raising the level of abstraction. Back in the 1980's and 1990's we wrote Assembler code, just one level above machine language. Then we moved to third-generation languages such as COBOL and PL/I (Programming Language One) The assembly programmers of the time thought COBOL just couldn't do what Assembler could do and would eventually go away. They insisted that to write applications, you had to know how the machine really works. How many of you (other than game programmers) write any Assembler today, let alone develop systems with it?
Compare that with the hundreds of millions of lines of COBOL code are in production today and the problems it caused prior to Y2K.
The Assembler programmers were missing an essential fact in their machine code. That is, the only reason to write code is to solve a problem. The machine and the languages are tools to solve a problem, not the end itself. Still today, when our focus is forced onto the technology (Java versus C++, JSP versus ASP, NodeJS versus C#) and away from the problem, we risk losing sight of our real purpose and the factors that define true success, and that is not whether the code is finished, but does the application do what we need it to do and can it survive the inevitable changes?
UML is an attempt to express in precise, familiar, and consistent language everything needed to generate complete, stable, maintainable systems. UML is a level of abstraction above the current programming languages, just as PL/I was a level above Assembler.

Glossary terms

  1. Aggregation: An aggregation is an association that represents a part-whole relationship. It is shown by a hollow-diamond adornment on the end of the path attached to the aggregate class.
  2. Abstraction
  3. Cohesion
  4. Composition:A composition is a stronger form of association in which the composite has sole responsibility for managing its parts, such as their allocation and deallocation. It is shown by a filled-diamond adornment on the composite end.
  5. Coupling
  6. Generalization
  7. Specialization:To produce a more specific description of a model element by adding features, relationships, constraints, and other items to an original model element. The opposite relationship is generalization, which is also used as the name of the relationship between the more specific element and the more general element, as there is no good term for the relationship that is undirected. A child element is the specialization of a parent element. Conversely, the parent is the generalization of the child.

UML Relationships - Quiz

Click the Quiz link below to take a short multiple-choice quiz on the material covered in this module.
UML Relationships - Quiz