Automation Technology, Custom Application Software Development Company Header
Rational Software Architect
EAI Framework, EAI Architecture
Software Development Planning
Software Architecture Consulting
EAI Model, EAI Framework
OOAD Mentoring, OOAD Consulting
OOAD Mentoring, OOAD Consulting

Construction

ATC endorses an iterative approach to building software systems. Each iteration satisfies a sub-set of the requirements (Use Cases) of the project. Analysis, design, coding, testing, and integration are performed for the requirements assigned to the iteration.

The resulting software may or may not be delivered to the end-user. It may only be delivered to a sub-set of the user community or simply to the development team. The deliverables that are produced during construction are not simply the source code and associated software executables but also the various analysis and design artifacts that were required to produce the software.

The analysis and design artifacts are strategic to the construction of software product. The artifacts are like the blueprints that are required to construct a building.

At ATC, we typically produce the following analysis and design artifacts:

a) Analysis Classes and Diagrams - Analysis classes represent an early conceptual model for things in the system, which have responsibilities and behavior. The analysis model describes the realization of use cases. The analysis classes are typically refined to produce the design classes.

b) Analysis Sequence Diagrams - A sequence diagram describes how groups of objects collaborate in some behavior. Typically, a sequence diagram captures the behavior of a single use case. Each sequence diagram shows a number of example objects and the messages that are passed between these objects within the use case.

Business Software System Development

c) Design Classes and Diagrams - A class is a description of a set of objects that share the same responsibilities, relationships, operations, attributes, and semantics. The associated class diagram is a visual representation of the class that shows the attributes, operations, and static relationships (associations, subtypes) of a class. Once modeled, most modeling tools such as Rational Rose will provide the capability to generate the attribute and method signature code as well as the associated documentation into the source code. Beyond this capability, Rational Rose provides the ability to read the design model and generate body code into the methods. When new classes are built based upon various development frameworks (e.g., Java Development Kits such as JDK, JSDK, EJB), many of the methods that are implemented in every class can be code-generated based upon the design specification contained in the model. This strategic step will reduce the time required to code, unit test, and code review each class.

d) Sequence Diagrams - Because the goal of object-oriented design is to produce very small cohesive methods in well-defined classes, it can be difficult at times to understand the interaction between various objects and their corresponding methods. Sequence diagrams are valuable to visually communicate the interaction between the various objects.

e) State Diagrams - A state diagram describes the dynamic behavior of objects in terms of state transitions. They are particularly important to designers and to the person that unit tests the modeled object.

f) Data Model - The data model describes the logical and physical representation of persistent data in the system. Tables, columns, and keys are included in the model. Once modeled, most modeling tools such as Rational Rose will provide a mechanism to create the tables in the database.

g) System Test Plan - A test model or plan delineates what is to be tested and the target of the test (entire system or part of the system). The role of the test model is to communicate what is to be tested and how to test it. The test model includes a collection of test cases. Test cases define a collection of inputs, execution conditions and expected results. The majority of the test cases are derived from use cases, scenarios, or use-case realizations, and correspond to an execution of a use case as it traverses the test target.

The cornerstone of the iterative construction process is reuse. Reuse is the process of designing and implementing software components using existing software assets. Reuse can be achieved in various areas including the reuse of development processes, design models, design patterns, development frameworks, and code.

Reuse is an integral part of software engineering and enables organizations to reduce the development time and risk.

Reuse Example

If you need to develop a new business class called Order, what kind of software reuse can be achieved? If the order must be persisted to a back-end database and a persistence framework was available to provide services to retrieve and maintain objects, then the first source of reuse would be to define the new Order class based upon the Persist class (inherit from it). The Persist class would define common data and operations for all objects of this type. Whatever services the Persist class offered would be reused by the derived class (Order class). Because the new Order class is built based upon the foundation class, we are achieving both design and code reuse.

Since other application classes have been built based upon the Persist class, the class diagram for the Order class can easily be created by coping the model from another business class such as the Customer class. The Customer class is a design pattern for defining the new Order class.

Benefits of Reuse

When new components are built on proven foundation frameworks, design, coding, and unit testing can be significantly reduced.

Software reuse provides a basis for dramatic improvements in quality, reliability, and reduced costs for software development and maintenance.

Because reuse is a by-product of good software engineering practices, the risks associated with new development are significantly reduced.

Architecture Definition | Development Frameworks | Planning
Requirements | Construction | Training | Mentoring