The microcycle is an iterative, incremental development process. In the microcycle, the subsystem software team
begins with the specification of requirements and context. The team then selects functionality - organized around the
software subsystem use cases - to be developed. In the Analysis phase of the microcycle, the use cases to be added to
the prototype are identified and detailed, if necessary. Following this a domain analysis (also known as object
analysis) is done to identify the essential elements that must be in any acceptable software solution to the problem.
Following the analysis phase, the project enters the design phase.
Design is all about optimization of a system against the set of design criteria for the product. The design criteria is
a set of properties of the system that measure goodness of the design - properties such as worst case performance,
throughput, bandwidth, reliability, safety, security, time to market, complexity, maintainability, and so on. These
properties are weighted in order of their criticality. Design then proceeds by identifying design patterns that
optimize the most important design criteria at the expense of the least important criteria. It is during this stage
that technological solutions are adopted to achieve these design goals.
Following design, the code is produced that realizes the design. Depending on the tool environment, the code might
be entirely generated automatically from the UML design specification. With less capable tools, significant effort
must be expended to create the code and maintain the code in synch with the model. As an integral part of the
development of this code, we include unit-level test - mostly oriented around the important classes from the analysis
model - and, following successful unit test, peer review. Peer review of the model allows not only for other sets of
eyes to look at and find fault with the design, but also to disseminate information about parts of the design to other
team members.
Once the high-quality (i.e. tested and verified) architectural units (subsystems) are produced they are integrated
together (along with specific artifacts from other engineering disciplines) into a system prototype that is then
validated against the requirements of the prototype. These requirements are not only the new requirements added during
the current microcycle, but also requirements added in previous microcycles. This is what is known as regression
testing.
The system prototypes becomes increasingly complete as more of the remaining capabilities are added over time until the
system meets the entire set of requirements necessary for product release. At this point, the engineered system is
passed to final acceptance testing and released to the customer.
|