Teradata White Papers

Software Value Realization model

Introduction

In an enterprise, change is constant, especially with IT. To deal with change we often need to upgrade the software from current version to the new version. The process of upgrading is called migration. Any migration project is critical and testing these projects needs expertise and a predefined approach. Every module or layer in IT needs to be upgraded and kept up to date with latest fix or versions available. This might be sometimes with the low underlying software layer, which is most often the operating system, to the most advance version of tools running on top of OS to match as per the market latest tools which are in use at any given time.

Currently there is a huge gap between the potential smooth progression and realization of an integrated business workflow model.

Due to large heterogeneous components and the scale of the complexity of interdependence of the components, timelines and business need, impede the progress at each and every stage of the process and migration stands a challenge.

IT companies needs to have a well tested model or a framework to be adopted for migration. Which can be used for optimization of the migration and realize value out of project. As migration happen frequently and one requirement leak could propagate the problem to multiple layers.  Care should be taken, identifying the required components phase by phase.


Main phases in process of migration
These are some of the main phases, which are, repeated for every agile project of a migration project. In any of the iteration, most of the time is consumed in Data segregation, Analysis, Coding and test phases. These are the phases for optimization; realize value and best candidate for innovation.

Ideally all SDLC phases are part of typical migration project.



Major tasks in process of migration
Tasks of the migration
·          Data collection
·         Data segregation
·         Requirement gathering 
·         Functional Specification
·         Technical specification
·         Details design – High Level Design
·         Details Design – Low Level Design
·         Migration document for support
·         Build, System Test, UAT, Production
·         Test Plan
·         Test cases
·         QTP (Automated test tools)
·         Manual testing
·          Status Reporting


A peep into value realization
Value realization can be described as the extracted value from project or from underlying processes. The dimensional elements should be applied at each and every phase of project or processes to extract value.

Let me introduce some of the dimensional elements which could invoke value as below.
·         Innovation
·         Optimization
·         Foresight
·         Increasing efficiency
·         Re-invent

Applying the dimension at each and every phase or process to analyze and realize the value. This process called as a model.
Value Realization Model




Value metrics analysis
The project estimation is normally done on the basis of the estimation models. If we can compare the estimated efforts post applying value realization model and do the analysis, the difference could be the value which is extracted.


Task transformation post value realization model
Analysis: The phase identifies the suitable streams, interfaces or components for the migration in one agile iteration process; this can be automated.

Coding: coding on demand, to fill the gaps to fit the new software version. This also could be automated to the highest level where possible.

Testing: The test process could be automated and identify the manual test cases which needs to be executed, so that the regression testing can be easily achieved in less time.

Data: One year data can be collected for testing, best practice is to collect sample of all possible data formats of input data. The phase can be diminished, or data collection and segregation can be automated.

*50 components  per quarter
*8hrs. Per day




Variables affecting value

The Architecture task:
Components, subjected for a change in the scope of migration. There will not be any existing data for testing.


Human Capability collaboration

    •   Like the challenge of resource retaining issues
    •   KT and the process from stage to stage
    •   Known issue database centralization


What next
The challenges include not just the obvious issues of scale, but also heterogeneity, lack of structure, error-handling, timeliness, and provenance, at all phases and stages of the analysis.These technical challenges are common, however these are cost-effective to address in the context of one domain alone. Furthermore, these challenges will require additive solutions, and can be addressed naturally by the next versions of products. Addressing, these technical challenges to achieve cost effective solutions can be done.


Self healing




Self healing is a buzz word, mostly used in information technology world. Right from the software engineers to the higher management, self healing is one of the software characteristics desired in the end product.

Taking software product as an example, ideally speaking we would be interested in a software, which is error free and run reliably, without breaking for what ever reasons. Building such an bug free product is the goal. Apart from being bug free, the product should be able to handle all the issues, related to run-time environment and should be able to, self heal and adapt to execute reliably, which is also described as fault tolerance.

This could be induced into any of the following
  • Pre-BIOS Phase
  • BIOS phases
  • Post BIOS phase
  • Operating system
  • Ghost software
  • Device drivers
  • Applications software

not only limited to the above, we can have modules pertaining to Infrastructure, platform, software, I have taken these names from cloud technology related layers. We could also plan extending self-healing to IAAS, PAAS, SAAS, DAAS services on cloud. If we dig into each layer to the granular level of software objects implementation, the self-healing can be applied to each and every object or collection of objects.

Whether it is object oriented programming, module oriented programming, data oriented programming, or procedure oriented programming, each piece of code, as defined by the programming paradigm, can be made self aware and self contained, this way it is made self secure too.

Taking analogy of a travelers example here for the sake of ease of analysis to all my readers.

Example:
If the traveler is aware what is there in the luggage, he is carrying at time t=0, he would be able to verify and confirm the luggage is perfect for all values of t=1,2,3...n.

What the example mean here is that, every extra object either attached or injected is easily identified verified and removed as applicable. So we can say that the traveler is self-aware of the baggage he carries. Since he is self aware, he can automatically , adapt to the changes and be able to retain to the changing conditions, which were there at the time t=0.

Below is the table with some of the characteristics and techniques, we can update the table with new characteristics and techniques, based on the readers comments and suggestion.




Characteristics to self-healing
Techniques to self-healing
1. Self awareness, self secure, self adaptable
1. verify the software for all values of “t” and make sure that it is equal to the state of t=0. If the state is other than t=0, the t=0 image is retained.






With the fast progression of the IOT, Cloud and Big data, these techniques will be useful for developing robust, dynamically changing solution.