level-a software
 
homeemailfeedback
 
 
 

 

Company Overview
about levelawhy outsource to usoutsourcing servicesreal-time embedded expertise

 

Resources
 software engineering
 embedded overview
 software design methods
 cost estimation techniques
 development life cycles
 testing and qualification
 
 

Software Design

History

The terms "object" and "attribute" date back to Artificial Intelligence work performed in the 50's. However, the precursor to modern object oriented design dates to 1966 with the introduction of encapsulation in the Simula language. Today, object oriented design is as popular as structured design was in the 70's.

Methods

Software design methods can be broken down into 4 classification: data oriented, function oriented, object oriented and formal methods. All methods share the same goal - to transform a set of data processing requirements into a computer program.

Data oriented design is also known as information engineering. Analysis is performed on a system's data entities to extract data requirements. The data requirements then drive the program design.

Function oriented design is also known as structured analysis. Process decomposition is used to extract a system's process requirements. The process requirements then drive the program design.

The development of object oriented (OO) methods, like virtually all concepts in computer science was evolutionary. OO methods are a hybrid of data oriented and function oriented design. OO methods break a system down into objects, which are cohesive units of related methods and attributes.

Formal methods use a formal language to describe a software artifact, such as a specification, design, or source code. The language enables the application of formal proofs to assess the correctness of an artifact.

Learn

All methods share the same goal - to transform a set of data processing requirements into a computer program. One of the shortcomings of mainstream design methods is that they are process based and not a rigorous science - there is no mathematical proof of correctness. The quality of a design is primarily influenced by the designer's intuition and experience.

Object Oriented Methods

OO methods use an iterative and incremental layered approach to develop an object model of a system. Different techniques are used to design the elements of each layer in the object model. All OO methods are similar in that their goal is to transform a set of requirements into an object model. However, they differ in terminology and the number of layers and components in the object model. Generally, the object model can be divided into 3 layers: domain model, interface model and implementation model. The domain model is the top layer, the interface model is the middle layer and the implementation model is the bottom layer. Generally, design begins at the domain layer, then the interface layer, followed by the implementation layer.

Domain Model

The domain model is the most abstract layer of the object model. This is perhaps the most critical layer because design and requirement errors introduced here will propagate throughout the entire object model. In the domain model, high level interactions among classes are elucidated by using inheritance, collaboration and interface relationships.

Interface Model

The interface model utilizes the domain model to create more detailed abstract and concrete classes. New inheritance and collaboration relationships may also be developed during this phase.

Implementation Model

During the implementation phase, objects are created from the class diagrams developed in the previous 2 steps. The structural composition of the methods and attributes is defined. Process driven design concepts are used to develop the methods. Data driven design concepts are used to develop the attributes.

Data Oriented Methods

In data oriented design, a system's data requirements drive the design. Entities are determined for each sub-system, then entity inter-relationships are examined to develop the additional entities needed to support the relationships. The process iterates until the entity relationships can no longer be expanded.

Function Oriented Methods

In function oriented design, a system's process requirements drive the design. Process functions are identified, then allocated to physical groups, and then reorganized for efficient program implementation. The design of data parameters is addressed after the process modules are fully decomposed.

Formal Methods

Formal methods, also known as the "clean-room approach", use the language of discrete mathematics to prove a programs correctness. Requirements and programs are translated into mathematical notation where they can be analyzed with tools called formal methods.

Evaluate

Data oriented design is useful for systems that process lots of data and that will be programmed using a procedural language such as COBOL. e.g. database and banking applications

Function oriented design is useful for process intensive systems that will be programmed using a procedural language such as FORTRAN.

OO methods are useful for any system that will be programmed using an object oriented language such as C++. However, they are particularly well suited to developing large software systems.

Formal methods are considered to be an alternative to OO and classical design methods, but their use is expensive and claims of reduced errors remain unproven. However, the ability to formally validate the correctness of a software artifact is appealing and research on formal methods is ongoing. Formal methods were utilized to develop the most critical sections on an air-traffic control project for Britain's Civil Aviation Authority.

   
       
 
 
 


Home | Feedback |
Privacy Commitment |

Best if viewed with Netscape 4.7 or later, and Internet Explorer 5.0 or later
©2005 LevelA.com - All Rights Reserved