OO Design Considerations



index
Disabled back button Next Section
printable version




Section 0: Module Objectives or Competencies
Course Objective or Competency Module Objectives or Competency
The student will be able to assess and apply Object-Oriented analysis and design methods like use cases to express user requirements, UML modeling, and other OO approaches. Understand the verification and validation of the analysis models.
Understand the transition from analysis to design.
Understand the use of factoring, partitions, and layers.


Section 1: Overview

The Design Process

From an enhanced Unified Process perspective, the process is moving from the analysis workflow to the design workflow, and moving further into the Elaboration phase and partially into the Construction phase. (diagram)

The major activity that takes place during design is evolving the set of analysis representations into design representations.

Design includes detailed design of the individual classes and methods that are used to map out the nuts and bolts of the system and how they are to be stored

Design also includes activities such as designing the user interface, system inputs, and system outputs, which involve the ways that the user interacts with the system.


Steps



Section 2: Verifying and Validating the Analysis Models

Before evolving the analysis representations into design representations, the analyst needs to verify and validate the current set of analysis models to ensure that they faithfully represent the problem domain under consideration.

The analyst must also ensure that the different models are consistent.



Section 3: Balancing
Analysis Models.

The process of ensuring the consistency among the intersections of the analysis models is known as balancing the models.

Balancing Functional and Behavioral Models


Balancing Behavioral and Structural Models


Balancing Structural and Functional Models



Section 4: Evolving the Analysis Models into Design Models

Analysis models focused on functional requirements.

Design models must include non-functional requirements as well.

The system must be maintainable and modifiable, and affordable, efficient and effective.


From an object-oriented perspective, system design models simply refine the system analysis models by adding system environment (or solution domain) details to them and refining the problem domain information already contained in the analysis models.


At this point, modifications are made to the problem domain models that will enhance the efficiency and effectiveness of the evolving system.

Approaches will include factoring, partitions and collaborations, and layers.



Section 5: Factoring and Partitioning

Factoring and partitioning are terms closely related to the thought process involved in developing structure charts, that is, design so that decision making and work are stratified. Similar topics include design decomposition or functional decomposition.


Factoring

Factoring is the process of separating out a module into a stand-alone module.

Example: appointment system

Factoring is not the same as refactoring.


Abstraction and Refinement

Abstraction and refinement are closely related to factoring.


Partitioning

Partitioning involves creating a sub-system of closely collaborating classes.

Creating a diagram that combines the class diagram with the communication diagrams can be very useful to show to what degree the classes are coupled.

Basic guidelines

As subsystems are defined (and designed), they should conform to the following design criteria:

Identifying partitions determines which classes should be grouped together.



Section 6: Layers

To successfully evolve the analysis model of the system into a design model of the system, we use layers to address the system environment information (data management, user interface, and physical architecture).

MVC

The Model–View–Controller (MVC) architecture is an application of the software engineering principle known as separation of concerns, which basically stated implies that it is best to segregate different types of functionality within an application as much as possible.

The idea of separating the different elements of the architecture into separate layers can be traced back to the MVC architecture.


Additional Layers

Since the advent of MVC, many different software layers have been proposed.

Layers and Sample Classes.

Foundation

The foundation layer contains classes that are necessary for any object-oriented application to exist such as those that represent fundamental data types (e.g., integers, real numbers, characters, strings), classes that represent fundamental data structures, sometimes referred to as container classes (e.g., lists, trees, graphs, sets, stacks, queues), and classes that represent useful abstractions, sometimes referred to as utility classes (e.g., date, time, money).

Problem Domain

The problem-domain layer deals with the specific system under development.

Data Management

The data management layer addresses the issues involving the persistence of the objects contained in the system.

Human–Computer Interaction

The human–computer interaction layer contains classes associated with the View and Controller idea from MVC.

Physical Architecture

The physical architecture layer addresses how the software will execute on specific computers and networks, and includes classes that deal with communication between the software and the computer’s operating system and the network.

X

Code Refactoring

Code refactoring is the process of restructuring existing computer code—changing the factoring—without changing its external behavior.

X UP diagram
pop