Refining Object Models Conclusion
Iterative and Qualitative Process
Review what you have learned in this module.
Modeling is an iterative and qualitative process. It is learned best through practice and cooperative learning within a team. Learn the unique characteristics of each diagram.
Learn how to compare and contrast these characteristics to identify differences that need to be explained.
As you develop and redevelop the model, take care to apply the principles that help ensure a good model.
Encapsulate at every level of abstraction. Measure each entity and the group of entities at each level against the goals of high cohesion and loose coupling.
Focus on the responsibility of each entity. Treat each entity or "object" (in the broader sense) like you would want your own job description to be treated. Narrower, clearly defined job descriptions make it easier to operate efficiently and effectively. In this module you learned to:
- Apply encapsulation throughout your models and your process
- Apply cohesion and coupling throughout your models and your process
- Focus on responsibility to improve cohesion and coupling
- Refactor a process or model
- Apply some guidelines for assigning attributes and operations
Modeling is at the core of many disciplines, but it is especially important in engineering because it facilitates communication and constructs complex things from smaller parts. Since the first object-oriented languages, many have viewed software development as the development and refinement of models. Models facilitate the understanding, simulation, and emulation of the artifacts under development. Depending on model paradigms and cognitive styles, engineers express models using diagrams, structured text, and storyboards of one form or another.
Software modelers depend on and use engineering analogies but often fail to understand them. Engineers realize that the models are not the product: they are abstractions of the product.
In fact, in most cases, the models are only partial abstractions of the product, used to highlight important aspects that the engineer should know about the product. The term executable specification is an oxymoron, if the specification were truly executable, it would actually be "the thing." Otherwise, it would merely model "the thing," which is by definition partial and incomplete.
- Refactoring: is a disciplined technique for restructuring an existing body of code by altering its internal structure without changing its external behavior.
- Abstraction: abstraction is a technique for managing complexity of computer systems
Model Refinement - Quiz
Click the Quiz link below to take a short multiple-choice quiz on the material covered in this module.
Model Refinement - Quiz