Suppose that the CEO of your company asks you to Website production 250 internal software developed by personnel shall be checked once to find out alternative functional components for building reusable component library, including design, code and test cases. How should you accomplish this task? Take the technical level around 2009 as an example. This task is not easy to accomplish. Among these 250 software applications, about 75 are small software with less than 1000 function points. They are likely to use agile development and use user stories as the main design description method. At the same time, they may also mix other description methods. For a single software application, user stories are very useful, but if you need to find the common points among multiple software applications, user stories are not so effective.
There may also be about 50 large commercial software with more than 5000 function points, which may use a variety of formal design description methods, or use UML methods to describe the requirements collected from the Joint Application Design (JAD) method. Although the UML method can help us build models for individual software applications, considering so many UML diagrams with different characteristics, it is still not an easy or quick job if you want to find out the common functions by reviewing the UML diagrams of a large number of projects (such as 50 projects).
Automated tools, such as static analysis tools, may find common models by analyzing the syntax structure of UML based meta languages, but this technology cannot be applied to practice around 2009. Among these 250 software applications, 25 may be scientific research project software or engineering project software, which may use state change diagrams, modeling languages (such as LePus3 language e, Express language.), "house of quality" charts established by the quality function deployment (QFD) method, and other architectural modeling meta languages.
The remaining 100 software applications may use multiple description methods. Including but not limited to use case, UML method, N-S diagram, Jackson Design, flow chart, decision table, data flow diagram, HIPO diagram and other various ways. Some of these methods may define the model, but it is not easy to scan and check even 100 entries.
To sum up, these 250 newly developed software applications use more than 50 different design languages and methods, and for most of them. It is very difficult to transform each other. At the same time, these language education and methods are difficult to deal with through automated verification tools and automated error checking tools.