From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.3 required=5.0 tests=BAYES_00, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,a248c6b13107021e,start X-Google-Attributes: gid103376,public From: dulman@ibm.net Subject: software modernization (leonid dulman) Date: 1996/08/21 Message-ID: <4ve0h9$15lc@news-s01.ny.us.ibm.net> X-Deja-AN: 175467311 reply-to: dulman@ibm.net newsgroups: comp.lang.ada Date: 1996-08-21T00:00:00+00:00 List-Id: SOFTWARE MODERNIZATION. ----------------------- by Leonid Dulman Computer programming is one of most conservative areas of engineering activity due to the high costs of innovation resulting from re-education, abandonment of software, and possible new errors. Thus new programming languages, methods and operating systems make their way to the important segments of the software market with great difficulty. Nobody wants to abandon cumulative software creation and to begin from "tabula rasa ". Thus many bugs pass from project to project. Software which was written 10-15 years ago more and more turns into "black boxes", because few of those who wrote it still work in the same job or even the same firm. Hence numerous corrections and modernizations written by various programmers have made program code non-readable and non-understandable even if the original code was elegant and well structured. If we consider the main purposes of software modernization, they can be separated into two groups: The first: Lending software a modern look and feel, ie a modern user interface. Examples are the transition of code and applications from DOS to WINDOWS or from UNIX to X-WINDOWS and X/Motif. This part of the work, before we had modern VISUAL SYSTEMs, was rather labour-consuming. It required much time and highly skilled programmers with a good knowledge of the operating system. Programming API interface and resources is a very complex problem. The second: New product and new versions creation , expanding the sales and application opportunity and correcting revealed errors. In industry the creation of new products likewise requires huge efforts for new technology development, special training, and special manufacturing equipment. But nevertheless, in competitive markets, we notice continued progress, with the continuing appearance of new items and retirement from production of old items. Today, since the occurrence of numerous and diverse VISUAL SYSTEMS, the creation of the user interface has become a much less labour-consuming problem. Main efforts are transferred to algorithm and problem solution areas. Programming via VISUAL TECHNOLOGY enables the programmer to react more easily to the system designer's efforts to market a system with the most elegant interface. Thus the programmer has more time to devote to the proper functioning of the application. The main challenge in continuing system modernization is to preserve the huge investment in installed software while creating the desired improvements and corrections at a modest cost relative to a clean slate approach. Thus we must face the question "so how shall we do it?" Even piecemeal rewriting of program modules from C to ADA 95 can reveal and correct many bugs during the recompilation stage. The most expensive part of such a modernization project is code debugging and testing. For debugging a complex project, it is necessary to develop and to write the required test programs. The system testing difficulty does not depend strongly on which language is used. However, the finding and correction of a "rare" bug in an assembly module can be a much more difficult problem than algorithm realization in a modern language. Another problem is finding and correcting probable compiler errors. They are very difficulty to find and they can appear at unexpected times, for example at the transition from one version operating system to another. After 10-15 years experience with the new modern programming languages and new software development technologies, I think that the heavily modified software will still be with us and we must continue to seek economic means to bring the benefits of the most modern technologies to it. In programming today, there is no sharp division into system analysts who draw block diagrams or write algorithms in some meta language and programmers who translate these meta programs to concrete program modules. Modern designing and programming permit partial mechanization of the conversion from interface specification packages, in which abstract data types are entered, to their further concretion. Thus the system designing is checked by the compiler. The software becomes highly structured, and code development can be accomplished by programmers or small teams working in parallel. A large project can utilize a large number of programmers with good assurance that their many independently created modules will operate successfully when all are combined into the final program. Soon new ADA 95 VISUAL SYSTEMs for UNIX, OS/2, and WINDOWS will allow the creation of reliable high-performance systems for firms that will be step up bravely and will proceed to modernize C, COBOL, and FORTRAN programs by utilizing ADA 95. These firms can enter into the 21'th century with software products suitable for the 21'th century.