- Software modernization
Software Modernization is the process of understanding and evolving existing
software assets. [cite book| author=Object management Group| title=Why do we need standards for the modernization of existing systems| url= http://www.kdmanalytics.com/kdm/ADM_whitepaper.pdf|Object Management Group |date=July 15, 2003] This can mean moving off of a legacy hardware platform, replacing a system with a package, or leveraging existing legacy business rules to re-architecture it to a new environment all together. It is important to separate the process of modernization from modernization itself. One can modernize a Cobol system and still remain in Cobol.There is a vast amount of highly functional, operational software with enormous commercial value deployed in organizations around the globe. To be precise, existing systems are defined as any production-enabled software, regardless of the platform it runs on, the language it is written in, and how long it has been in production. [cite book| author=William Ulrich| title=Legacy Systems: Transformation Strategies| url= http://www.amazon.com/Legacy-Systems-Transformation-William-Ulrich/dp/013044927X|date=June 15, 2002]
An existing system often resists evolution for reasons not exclusively related to its functionality, for instance:
* it cannot be understood or maintained cost-effectively
* it cannot interoperate
* it is dependent on undesired technologies or architectures.Modernization scenarios
Typical software modernization scenarios include:
* Software improvement
* Modifications
*Interoperability
*Refactoring
* Restructuring
* Reuse
*Porting
* Migration
* Translation
* Integration
*Service-oriented architecture deployment
*Business rule miningModernization can enhance the value of an existing system by improving it to address changing business requirements which existing IT practices cannot cope with.
Software Modernization and Knowledge Discovery
Software modernization is closely related to
software mining which is a form ofknowledge discovery . The key to modernization is "understanding" the existing software system. In order to understand the existing system one must understand:* individual statements and variables("program level")
*design pattern level
* call graph level (individual procedures and their relationships)
* architectural level (subsystems and their interfaces)
* data level (individual columns and attributes of data stores)
* application level (key data items and their flow through the applications)
* business level (domain concepts, business rules and their implementation in code)Knowledge discovery in software is related to a concept of
reverse engineering . Knowledge discovery from existing software systems, also known as software mining is closely related todata mining . Knowledge Discovery from software systems addresses structure, behavior as well as the data processed by the software system. Instead of mining individualdata set s, software mining focuses onmetadata , such as database schemas. OMGKnowledge Discovery Metamodel provides an integrated representation to capturing applicationmetadata . Another OMG specification, theCommon Warehouse Metamodel focuses entirely on mining applicationmetadata .Architecture-Driven Modernization
Modernization, within the context of the ADM initiative of the
Object Management Group [ [http://adm.omg.org/ OMG ADM website] ] , is "architecture-driven" when there is the need to capture and retool various architectural aspects of existing application environments. This does not preclude source-to-source migrations, but encourages user organizations to consider modernization from an analysis and design based perspective. In doing so, project teams will ensure that obsolete concepts or designs are not propagated into modern languages and platforms. The bottom-line results deliver modernized systems that conform more effectively to current business practices and strategic requirements.Knowledge Discovery Metamodel
Usually the knowledge obtained from existing software is presented in the form of models to which specific queries can be made when necessary. An
entity relationship is a frequent format of representing knowledge obtained from existing software.Object Management Group (OMG) developed specificationKnowledge Discovery Metamodel (KDM) which defines an ontology for the software assets and their relationships for the purpose of performing knowledge discovery of existing code. Company KDM Analytics is maintaining open Portal for the Knowledge Discovery Metamodel [ [http://www.kdmanalytics.com/kdm KDM Portal] )] .Automated Migration
Also known as, source-to-source migrations, automated migration looks to leverage tooling to highly automate a language translation. Tools can parse one language and translate that to another language. Most commercially available tools will also do some level of code improvement like dead code elimination or light re factoring. The core essence of the code base does not change it's programming paradigm, however. For example, COBOL to Java using automated migration will yield largely procedural Java, albeit with classes and methods. This is highly automated, and gives a one to one functional equivalence from the source system.
Platform Migration
External links
* [http://adm.omg.org OMG Architecture-Driven Modernization Task Force website]
* [http://www.systemtransformation.com/ System Transformation Portal]
* [http://www.kdmanalytics.com/kdm Knowledge Discovery Metamodel Portal]
* [http://www.mainframemigration.org Mainframe Migration Alliance Microsoft]
* [http://www.oracle.com/goto/oma Oracle Modernization Alliance]References
Wikimedia Foundation. 2010.