Software Architecture. This refers to the overall structure of the software. Data Design. This refers to the design and organization of data. It includes Interface Design. This refers to the design of the interaction of the system Component-level

J.E.D.I operations. Similar with analysis, there are five guiding design principles that are applied in this phase. 1. Linguistic modular units 2. Few interfaces 3. Small interfaces and weak coupling 4. Explicit interface 5. Information hiding Object-oriented Design Methodologies There are several methods that are used in object-oriented design, and they correspond to the methodologies that were enumerated in object-oriented analysis methodologies. They are briefly listed below.

1. Booch Method. Similar with his analysis methodology, it involves a micro-

development process and a macro-development process.

2. Coad and Yourdon Method. It addresses not only the application but also

the infrastructure for the application.

3. Jacobson Method. It emphasizes the traceability of the Object-oriented

Software Engineering analysis model.

4. Rambaugh Method. It encompasses a design activity that uses two different

levels of abstraction. Namely, they are system design which focuses on the layout for the components that are needed to complete the product, and object design which focuses on the detailed layout of objects.

5. Wirfs-Brock Method. It defines a continuous tasks in which analysis leads

seamlessly into design. All of these methodologies follow a common set of steps that are performed in the design. Each of these steps are elaborated as work products are produced in the Design Engineering chapter. STEP 1. Define the subsystems of the software by defining the data-related subsystems entity design, control-related subsystem controller design and human interaction-related subsystems boundary design. This should be guided by the software architecture of choice. STEP 2. Define Class and Object Design. STEP 3. Define Message Design. OO Design Main Work Products There are several work products that are developed during this phase. They are briefly introduced below. Collectively, they are called the design model. Their development will be elaborated in the Design Engineering chapter.

1. Software Architecture. This refers to the overall structure of the software.

It also includes the ways in which the structure provides conceptual integrity Software Engineering 46 J.E.D.I for a system. It is modeled using the package diagrams.

2. Data Design. This refers to the design and organization of data. It includes

code design and persistent design for the database. It uses the class diagrams and sequence diagrams.

3. Interface Design. This refers to the design of the interaction of the system

with its environment, particularly, the human-interaction aspects. It includes the dialog and screen designs. Report and form layouts are also included. It uses the class diagrams and state transition diagrams.

4. Component-level Design. This refers to the elaboration and design of

control classes. This is the most important design because the functional requirements are represented by the control classes. It uses the class diagrams, activity diagrams and state transition diagrams.

5. Deployment-level Design. This refers to the design of how the software will

be deployed for operational use. It uses the deployment diagram. Software Engineering 47 J.E.D.I

2.4 Unified Modeling Language UML

The Unified Modeling Language UML is the standard language for specifying, visualizing, constructing, and documenting all the work products or artifacts of a software system. In the earlier days, UML has different terminologies as shown in Table 3. UML Class Association Generalization Aggregation Booch Class Uses Inherits Containing Coad Class Object Instance Connection Gen-Spec Part-whole Jacobson Object Acquaintance Association Inherits Consists of Odell Object Type Relationship Subtype Composition Rambaugh Class Association Generalization Aggregation ShlaerMellor Object Relationship Subtype na Table 3 Different UML Terminologies However, its notation was unified by Booch, Rambaugh and Jacobson. The Object Management Group maintains a set of standards for using UML for technical exchange of models and design. Now, other contributors augments the definition of UML. UML is not a method or methodology. It does not indicate a particular process. It is not a programming language. It is basically a standard set of modeling tool used to develop work products of the software, which most of it will be models.

2.4.1 Modeling Activity

Software development is a complex activity; it is extremely difficult to carry out the necessary task if all details are in ones memory. In any development project that aims to produce useful work products, the main focus of both analysis and design activities is on models. A model is a pattern of something to be made. It is both abstract and visible. Software is not tangible for the users and by nature, are abstracts. However, it is constructed by a developing team who need to see each others model. A model is a representation of something in the real world. They are useful in a variety of ways because they differ from the things that they represent. Particularly, they are: • built quicker and easier than the real objects they represent. • used in simulation to better understand the thing they represent. • modified to evolve as one learns about a task or problem. Software Engineering 48