Before developing something, we should clarify “what we want to develop”. In the same context, we want clear requirement specification. But I am not saying about requirement specification. Subject of this article is “Clear description about outcome – not only final one but also intermediate and sub-module’s one”. In case of very short and simple program, required goal is also simple and clear. So we don’t need to worry about this. But, usually, size of software project is quite big.
Here is very big-size-software project. So, we divide a project into several sub-projects and assign these to sub-team; After developing each sub-project, we try to integrate them. But, as you know, integration is not an easy job. There may be conflicts between sub-module, interface mismatching and so on. Changing software design or algorithm may be required to resolve these integration issues, and usually, this kind of change is very expensive. How can we reduce this costs?.
Yes. I think everyone already knows the solution.To reduce this, we should clarify outcome of each sub-project.
Actually, changing software due to integration issues means “Requirement of that sub-project is changed”; Big Costs!. In this scenario, outcome of sub-project can be interface, data format and so on. In sub-teams’ point of view, “Knowing exactly about outcome of other module” means “Knowing exactly what we can use and what we can supports”. In my opinion, this is basic knowledge to reduce integration issues.