The Design Recovery Process (2)


© Faisal Bin Bashir
Articles in this Topic    Discussions in this Topic

Other questions that may arise for the program comprehension during its analysis will be discussed in this article. The other two steps that follow the step of program understanding in the process of design recovery will be discussed in the next article.

What are the key data items? Among the first questions an analyst ask are:

What are the important data items?

What abstract informal concepts do they relate to?

What are their relations to the modules just identified?

For example, in the multitasking window example (you may refer to the previous article for details), the analyst might find a process table containing entries that describe the processes currently running under the multitasker. The more experience the analyst has with multitasking systems, the richer the set of expectations that he or she will have about such a system.

What are the software engineering artifacts? The understanding process recreates the software engineering oriented design artifacts and expresses them wherever possible in terms of the module and data abstractions recovered earlier. The specific artifacts captured are determined to some extents by the process model adopted by the programming organization. For example, some companies will use a program description language, dataflow, module refinement, and a simple data dictionary. Others will depend on different design artifacts.

What are the other informal design abstractions? For the set of abstractions to be really effective, we need other information structures, many of which are not as well defined and formal as the software engineering-oriented design artifacts. For example, design rationale might be useful, perhaps stated in terms of issue-based information systems (IBIS) nets. Further, natural language prose is unavoidable if we want a really effective model of the design. Similarly, informal diagrams describing abstract views of the target systems are often quite useful. Thus we must expect to recover a wide variety of design artifacts that contain a mixture of formal and informal information.

What is the relation of the design abstractions to the code? After recovering the artifacts, we must preserve the relationships among them. That is, once we determine that a context switch is being performed within some dataflow diagram, we would like to know which chunk of code performs it. Code analysis of a concrete example is often required to answer questions that depend on low-level details abstracted out of the dataflow diagram. Once an engineer establishes this abstraction-to-code link, he or she will have an organized, "in head" framework (the abstraction) in which to put the code oriented details and, perhaps more importantly, a set of organized structures to help interpret those details. Thus, the engineer can understand the code in terms of the abstractions in the framework.

Go To Page: 1 2


Post this Article to facebook Add this Article to del.icio.us! Digg this Article furl this Article Add this Article to Reddit Add this Article to Technorati Add this Article to Newsvine Add this Article to Windows Live Add this Article to Yahoo Add this Article to StumbleUpon Add this Article to BlinkLists Add this Article to Spurl Add this Article to Google Add this Article to Ask Add this Article to Squidoo