Notes on Software Engineering Goals
A class is an encapsulation of information and behavior (or data and
functions acting on that data).
An object is an instantiation of a class.
Creating classes and methods divides a large complex problem into
smaller parts. This allows the designer and programmer to implement smaller, more
manageable parts of the program at a time. The division into parts is recursive. The
challenge is to select the most appropriate division of the problem.
Software Engineering Goals
- Abstraction Simplifying the description of a read-world entity to its essentials.
- A named, tangible representation of the attributes and behavior relevant to modeling a
given entity for some particular purpose.
- Properties of a good abstraction:
- Well Named
- Coherent the abstraction should contain a related set of attributes and behaviors
that makes sense from the viewpoint of the modeler.
- Accurate the abstraction should contain only attributes and behavior that are
displayed by the entity being modeled. Dont endow the abstraction with powers and
ability beyond the actual entity.
- Minimal only the data necessary.
- Complete the abstraction should contain all of the attributes and behavior
necessary to manipulate the abstraction for its intended purpose.
- Separation treating the what and how independently. The
specification of the interface should be independent of the implementation. Data
- A single interface can have multiple implementations.
- Several interfaces can share implementations.
- Composition Building complex "whole" systems by assembling simpler
- Aggregation Only the whole is visible and accessible. Example: coke machine.
- Association A collection of interacting parts that are externally visible.
- Generalization Identifying common elements among different entities.