Implementation Recommendations

From EUDP
Jump to: navigation, search

What

Implementation recommendations

How

The dish

Implementation recommendations

Ingredients

  • All artefacts produced so far

Process

The objective of the Implementation phase is to construct a part of the system-to-be based on the models produced in the Design phase.

Typically, we will choose to work on a small set of use cases, modules, block or class for the current iteration or if it is hardware a small block or even just parts of a block.

During development minor changes to the architecture diagram may emerge and shall consequently be incorporated in the digram.


The sequence of implementation

There is no "correct" sequence of implementation, but nevertheless we will try to come up with some good advice. For any given block, including the diagrams showing the dynamics (activity, sequence, state machine, etc.), you can implement the interface to other blocks or user/system interfaces first and finally implement the functionality. In this way, it is possible to let interface experts focus on that part and let other developers focus on the "core" of the system-to-be.

Unit testing

It is a good idea to make testing an integrated part of the implementation process. Each time a developer has developed a version of a block, the developer should consider testing the block. This can be done by setting up automatic test outfits either in software or in hardware or both, that continuously can test the developed and thereby indicate to the developer if the task at hand are complete or not. If the block interact with other blocks where the corresponding blocks have not been constructed yet, dummys has to be programmed or stimulated by the test instrumentation.

Consistency

The models produced in earlier stages of the development process are the blueprints for the Implementation phase. It is important to check the consistency between the different models and the block implemented continuously. It is not unusual that you find another and better way to implement a block, which is not consistent with the blueprints, during the Implementation phase. In this case, you should discuss the situation in the development team and adjust the models to ensure consistency.

Why

Interface and functionality

If you split your block into these two parts, you only have to worry about how to communicate with the user when you design user interface blocks. Doing the functionality right will be your only concern when designing the functionality of the block.

The sequence of implementation

A consequence of the above-mentioned separation concern is that it is possible for the experts in user interfaces to work in parallel with the experts in the functionality.

Unit testing

It is very important to test the individual units before testing a collection of these units. If you skip unit testing and the collection does not perform as planned, you will face serious problems trying to find out where things went wrong.

Checking units continuously will also provide the developers with a sense of progress.

Some system development approaches recommends that you plan the test before programming the classes. The planning of the test process will help you understand the responsibility of the block, and consequently make the implementation easier.

Consistency

Different models presented in different diagram types represent different views on the system-to-be (static view, dynamic view, deployment view, etc.). If these views are not consistent you will get confused and developers will construct parts of the system that do not match each other.