Thursday, June 25, 2009

Compatibility

              Compatibility is the ease of combining software elements with others.Compatibility is important because we do not develop software elements in a vacuum.they need to interact with each other. But they too often have trouble interacting because they make conflicting assumptions about the rest of the world. An example is the wide variety of incompatible file formats supported by many operating systems.

        A program can directly use another’s result as input only if the file formats are compatible.The key to compatibility lies in homogeneity of design, and in agreeing on standardized conventions for inter-program communication. Standardized file formats, as in the Unix system, where every text file is simply a sequence of characters.Standardized data structures, as in Lisp systems, where all data, and programs as well, are represented by binary trees.

          Standardized user interfaces, as on various versions of Windows, OS/2 and  macOS,where all tools rely on a single paradigm for communication with the user, based on standard components such as windows, icons, menus etc.More general solutions are obtained by defining standardized access protocols to all important entities manipulated by the software. This is the idea behind abstract data types and the object-oriented approach, as well as so-called middleware protocols such as CORBA and Microsoft’s OLE-COM (ActiveX).

        In particular typing and assertions, meant to help build software that is correct from the start rather than debugging it into correctness. Debugging and testing remain indispensable, of course, as a means of double-checking the result.It is possible to go further and take a completely formal approach to software construction. This book falls short of such a goal, as suggested by the somewhat timid terms “check”, “guarantee” and “ensure” used above in preference to the word “prove”.

No comments:

Post a Comment