MML 1: Textual Specification
At MML 1, the software is specified by a natural language text (be it English or Chinese or something else), written down in one or more documents. This is the starting level for professional software development. At this level the user/customer is able to read the specification and comment on it, which is good. Because the specification is in text, it is ambiguous by definition and different interpretations usually result in confusion (or worse) amongst the different people involved, which is bad.
Another problem at this level is the actuality of the specification. Once people start writing code, the specification is usually not updated. After a while, the specification becomes completely outdated and loses its value.
For example, the following might satisfy as a basic textual specification for the Mailer application:
Build a system that allows the users to send messages to each other with the following features:
MML 2: Text with Models
- A user should be able to write a message and send it to another user.
- A user should be able to read messages that are addressed to him.
- The system should notify the user when the addressee does not exist.
- All users are known in advance (the members of our household). There is no need to add or remove users.
|Figure 1. The Specification on MML 2 of the Mailer: This is basically the same as the specification on MML 1. The text is enhanced with just one small diagram to show the main objects in the system.|
At MML 2, a textual specification is enhanced with several models to show some of the main structures of the system. The models often take the form of diagrams, with UML being the de facto standard for expressing these. The models at MML 2 are usually at a high level, and show the main parts, components, or objects of the system under development.
With respect to MML 1, the specification is easier to grasp through the diagrams. They play the role of a high-level map to the textual parts of the specification. The specification is still mainly textual, and the diagrams are not very precise. Therefore, the disadvantages of MML 1 (ambiguous and quickly outdated specs) are still present.
The specification on MML 2 of the Mailer is basically the same as the one on MML 1. The text is enhanced with just one small diagram to show the main objects in the system (see Figure 1).
As you can see, the model gives some insight in how the system should be build, but details of the model are still lacking. There are no attributes/fields, operations/methods, etc.