100% found this document useful (1 vote)
129 views9 pages

Software Engineering - Legacy Software

Legacy software may be defined informally as "software we don't know what to do with, but it's still performing a useful job" these programs were developed years ago using early programming languages such as Cobol and Fortran. There is an urgent need to find ways to make legacy systems more maintainable.

Uploaded by

santhoshthefun
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
129 views9 pages

Software Engineering - Legacy Software

Legacy software may be defined informally as "software we don't know what to do with, but it's still performing a useful job" these programs were developed years ago using early programming languages such as Cobol and Fortran. There is an urgent need to find ways to make legacy systems more maintainable.

Uploaded by

santhoshthefun
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOC, PDF, TXT or read online on Scribd

What is Legacy Software?

Legacy software may be defined informally as "software we don't know what to do with, but it's
still performing a useful job." Legacy software systems are programs that are critical to the
operation of companies, but that were developed years ago using early programming languages
such as Cobol and Fortran. These programs have been maintained for many years by hundreds of
programmers, and while many changes have been made to the software, the supporting
documentation may not be current. These factors contribute to the staggering cost of maintaining
legacy systems. Consequently, there is an urgent need to find ways to make these programs more
maintainable without disrupting the operation of the company.

The Need to Re-engineer

The implication is that the preferred solution is to discard the software completely, and start
again with a new system. This may not be appropriate in all cases, for example:

1. The software represents years of accumulated experience, which is not represented elsewhere,
so discarding the software will also discard this knowledge, however inconveniently it is
represented.

2. The manual system that was replaced by the software no longer exists, so system analysis
must be undertaken on the software itself.

3. The software may actually work well, and its behavior may be well understood. A new
replacement system may perform much more badly, at least in the early days. Hence it may be
worth recovering some of the good features of the legacy system.

4. A typical large legacy software system has many users, who typically have exploited
undocumented "features" and side effects in the software. It may not be acceptable to demand
that users undertake a substantial rewrite for no discernable benefit. Therefore, it may be
important to retain the interfaces and exact functionality of the legacy code, both explicit and
implicit.

5. Users may prefer an evolutionary rather than a revolutionary approach.


Capability Maturity Model Integration
Capability Maturity Model Integration (CMMI) is a process improvement approach that
provides organizations with the essential elements of effective processes that ultimately improve
their performance. CMMI can be used to guide process improvement across a project, a division,
or an entire organization
CMMI in software engineering and organizational development is a trademarked process
improvement approach that provides organizations with the essential elements for effective
process improvement.

CMMI according to the Software Engineering Institute (SEI, 2008), helps "integrate traditionally
separate organizational functions, set process improvement goals and priorities, provide guidance
for quality processes, and provide a point of reference for appraising current processes."[2]

Overview

CMMI currently addresses three areas of interest:

(1) Product and service development — CMMI for Development (CMMI-DEV),


(2) Service establishment, management, and delivery — CMMI for Services (CMMI-
SVC), and
(3) Product and service acquisition — CMMI for Acquisition (CMMI-ACQ).

CMMI was developed by a group of experts from industry, government, and the Software
Engineering Institute (SEI) at Carnegie Mellon University. CMMI models provide guidance for
developing or improving processes that meet the business goals of an organization. A CMMI
model may also be used as a framework for appraising the process maturity of the organization.[1]

CMMI originated in software engineering but has been highly generalised over the years to
embrace other areas of interest, such as the development of hardware products, the delivery of all
kinds of services, and the acquisition of products and services. The word "software" does not
appear in definitions of CMMI. This generalization of improvement concepts makes CMMI
extremely abstract. It is not as specific to software engineering as its predecessor, the Software
CMM (CMM, see below)...

History

CMMI was developed by the CMMI project, which aimed to improve the usability of maturity
models by integrating many different models into one framework. The project consisted of
members of industry, government and the Carnegie Mellon Software Engineering Institute (SEI).
The main sponsors included the Office of the Secretary of Defense (OSD) and the National
Defense Industrial Association.

CMMI is the successor of the capability maturity model (CMM) or software CMM. The CMM
was developed from 1987 until 1997. In 2002, CMMI Version 1.1 was released. Version 1.2
followed in August 2006.
[edit] CMMI topics

[edit] CMMI representation

CMMI exists in two representations: continuous and staged.[1] The continuous representation is
designed to allow the user to focus on the specific processes that are considered important for the
organization's immediate business objectives, or those to which the organization assigns a high
degree of risk. The staged representation is designed to provide a standard sequence of
improvements, and can serve as a basis for comparing the maturity of different projects and
organizations. The staged representation also provides for an easy migration from the SW-CMM
to CMMI.[1]

[edit] CMMI model framework


For more details on this topic, see Process area (CMMI).

Depending on the CMMI constellation (acquisition, services, development) used, the process
areas it contains will vary. Key process areas are the areas that will be covered by the
organization's processes. The table below lists the process areas that are present in all CMMI
constellations. This collection of sixteen process areas is called the CMMI Model Framework, or
CMF.

Capability Maturity Model Integration (CMMI) Model Framework (CMF)

Abbreviat Maturity
Name Area
ion Level

REQM Requirements Management Engineering 2

Project
PMC Project Monitoring and Control 2
Management

Project
PP Project Planning 2
Management

CM Configuration Management Support 2

MA Measurement and Analysis Support 2

Process and Product Quality


PPQA Support 2
Assurance

Organizational Process Process


OPD 3
Definition Management

CAR Causal Analysis Support 5


[edit] CMMI models

CMMI best practices are published in documents called models, each of which addresses a
different area of interest. The current release of CMMI, version 1.2, provides models for three
areas of interest: development, acquisition, and services.

• CMMI for Development (CMMI-DEV

), v1.2 was released in August 2006. It addresses product and service


development processes.

• CMMI for Acquisition (CMMI-ACQ

), v1.2 was released in November 2007. It addresses supply chain


management, acquisition, and outsourcing processes in government and
industry.

• CMMI for Services (CMMI-SVC

), v1.2 was released in February 2009. It addresses guidance for delivering


services within an organization and to external customers.

• CMMI Product Suite (includes Development, Acquisition, and Services), v1.3 is


expected to be released in 2010. CMMI Version 1.3—Plans for the Next
Version

Regardless of which model an organization chooses, CMMI best practices should be adapted by
an organization according to its business objectives.

[edit] Appraisal

An organization cannot be certified in CMMI; instead, an organization is appraised. Depending


on the type of appraisal, the organization can be awarded a maturity level rating (1-5) or a
capability level achievement profile.

Many organizations find value in measuring their progress by conducting an appraisal.


Appraisals are typically conducted for one or more of the following reasons:
1. To determine how well the organization’s processes compare to CMMI best
practices, and to identify areas where improvement can be made
2. To inform external customers and suppliers of how well the organization’s
processes compare to CMMI best practices
3. To meet the contractual requirements of one or more customers

Appraisals of organizations using a CMMI model[3] must conform to the requirements defined in
the Appraisal Requirements for CMMI (ARC) document. There are three classes of appraisals,
A, B and C, which focus on identifying improvement opportunities and comparing the
organization’s processes to CMMI best practices. Appraisal teams use a CMMI model and ARC-
conformant appraisal method to guide their evaluation of the organization and their reporting of
conclusions. The appraisal results can then be used (e.g., by a process group) to plan
improvements for the organization.

The Standard CMMI Appraisal Method for Process Improvement (SCAMPI) is an appraisal
method that meets all of the ARC requirements.[4]

A class A appraisal is more formal and is the only one that can result in a level rating. Results of
an appraisal may be published (if the appraised organization approves) on the CMMI Web site of
the SEI: Published SCAMPI Appraisal Results

. SCAMPI also supports the conduct of ISO/IEC 15504, also known as SPICE
(Software Process Improvement and Capability Determination), assessments etc.

[edit] Achieving CMMI compliance

The traditional approach that organizations often adopt to achieve compliance with the CMMI
involves the establishment of an Engineering Process Group (EPG) and Process Action Teams
(PATs) [5] This approach requires that members of the EPG and PATs be trained in the CMMI,
that an informal (SCAMPI C) appraisal be performed, and that process areas be prioritized for
improvement. More modern approaches that involve the deployment of commercially available,
CMMI-compliant processes, can significantly reduce the time to achieve compliance. SEI has
maintained statistics on the "time to move up" for organizations adopting the earlier Software
CMM and primarily using the traditional approach.[6] These statistics indicate that, since 1987,
the median times to move from Level 1 to Level 2 is 23 months, and from Level 2 to Level 3 is
an additional 20 months. These statistics have not been updated for the CMMI.

The Software Engineering Institute’s (SEI) Team Software Process methodology and the
Capability Maturity Modeling framework have been successfully employed to accelerate
progress from Maturity Level 1 to Maturity Level 4. They’ve demonstrated progressing from
Level 1 to Level 4 in 30 months, which is less than half of the average time it has taken
traditionally.[7]
[edit] Applications

The SEI published that 60 organizations measured increases of performance in the categories of
cost, schedule, productivity, quality and customer satisfaction.[8] The median increase in
performance varied between 14% (customer satisfaction) and 62% (productivity). However, the
CMMI model mostly deals with what processes should be implemented, and not so much with
how they can be implemented. These results do not guarantee that applying CMMI will increase
performance in every organization. A small company with few resources may be less likely to
benefit from CMMI; this view is supported by the process maturity profile

(page 10). Of the small organizations (<25 employees), 70.5% are assessed at level
2: Managed, while 52.8% of the organizations with 1001–2000 employees are rated
at the highest level (5: Optimizing).

Interestingly, Turner & Jain (2002) argue that although it is obvious there are large differences
between CMMI and agile methods, both approaches have much in common. They believe
neither way is the 'right' way to develop software, but that there are phases in a project where one
of the two is better suited. They suggest one should combine the different fragments of the
methods into a new hybrid method. Sutherland et al. (2007) assert that a combination of Scrum
and CMMI brings more adaptability and predictability than either one alone. David J. Anderson
(2005) gives hints on how to interpret CMMI in an agile manner. Other viewpoints about using
CMMI and Agile development are available on the SEI Web site

The combination of the project management technique earned value management (EVM) with
CMMI has been described (Solomon, 2002

). To conclude with a similar use of CMMI, Extreme Programming (XP), a software


engineering method, has been evaluated with CMM/CMMI (Nawrocki et al., 2002).
For example, the XP requirements management approach, (which relies on oral
communication), was evaluated as not compliant with CMMI.

CMMI can be appraised using two different approaches: staged and continuous. The staged
approach yields appraisal results as one of five maturity levels. The continuous approach yields
one of six capability levels. The differences in these approaches are felt only in the appraisal; the
best practices are equivalent and result in equivalent process improvement results.
A brief overview of Software Product & the characteristics a Software Product should
possess.

Software is subtle, it has no mass, no volume, no color, no odor-no material or physical


properties. The source code is simply a fixed image of a computer program and while effects
produced by a program are visible, the program itself is not.

As software has no physical properties it does not degrade with time as hardware does. Failures
in software are mainly caused by design and implementation errors and not by degradation.
Because software is intangible, extraordinary measures must be taken to determine the status of
software product which is in the development phase.

In short, the software engineer creates models of actual or physical situation in software. The
mapping between the model and the reality or real situation being modeled has been called the
“intellectual distance” between the problem and the computerized solution to the problem.

The basic principle of software engineering is to design software products that minimize the
intellectual distance between problem and solution. However, only creativity and clarity of
programmer limits the variety of approaches to software development.
Software product characteristics:

Successful software is one which provides functionality as per the requirement i.e. it fulfils all
the consumer’s needs and requirements. Software should be readily available for use and
presentable by real users. Software should function in a manner that needs to be predictable,
reliable and dependable. Software should utilize resources efficiently and should not have any
loop holes.

It is ideal that software should be usable for a lifetime, which is not the case in many types of
software as demands, need for information, and processing information techniques keep varying.

Software should provide a user-friendly or easy-to-use, understandable & clear and appropriate
user interface. The software should be accompanied by proper documentation i.e. user manuals,
copyrights summary, debugging, etc. The software should be portable and at the same time free
of maintenance or should be easily maintained by end-users.

Common questions

Powered by AI

CMMI assists organizations in optimizing their processes by providing a structured framework to integrate various organizational functions and set improvement priorities . This framework helps establish effective production and service delivery processes aligned with business goals . The expected benefits include increased productivity, improved quality, reduced costs, and enhanced customer satisfaction, as organizations are able to address inefficiencies and elevate their service or product offerings .

Agile methodologies and CMMI can align by focusing on improving processes with flexibility and adaptability. Agile emphasizes iterative, customer-centric development, which can benefit from CMMI's structured process management and improvement frameworks . However, conflicts arise as CMMI traditionally entails more documentation and process formalization, contrasting with Agile's preference for minimal documentation and flexible adaptation . Successful integration often requires tailoring each methodology’s strengths to specific project needs, potentially forming a hybrid model .

Organizations might prefer re-engineering their legacy systems instead of developing a new system because re-engineering preserves the accumulated knowledge and functionalities of existing systems . Discarding a system that is well-understood and operational could lead to significant disruptions, especially when new systems introduce inefficiencies initially . Additionally, users may resist changes if it means losing familiar features and benefits entrenched in the legacy system, making a gradual, evolutionary approach more acceptable .

Replacing legacy software outright can result in the loss of valuable accumulated knowledge embedded in the old systems . Additionally, new systems may introduce initial performance issues, and the organization's existing users might resist changes due to their dependency on undocumented features of the legacy software . The absence of previous manual systems demands analysis based solely on the software itself, which complicates the transition .

Organizations can achieve a quicker transition to higher maturity levels in CMMI by employing commercially available, compliant processes and methodologies that already incorporate CMMI best practices, thus reducing the time for compliance . Leveraging teams focused on process consistency and targeted appraisals can streamline efforts, helping highlight specific process improvements faster . Employing process models like Team Software Process can accelerate progress by focusing on systematic, foundational improvements .

CMMI supports organizational maturity by integrating various process improvement models into a unified framework, which helps in addressing broader areas beyond just software engineering . Unlike the Software CMM, which focused specifically on software processes, CMMI's generalization allows for its application in hardware development, service delivery, and acquisition processes . This broader scope enables organizations to address a wider range of functions and achieve higher maturity levels across different domains .

The continuous and staged representations of CMMI differ primarily in their flexibility and evaluation focus. The continuous representation allows organizations to prioritize specific processes based on immediate business objectives or risks, fostering targeted improvements . In contrast, the staged representation provides a standard sequence of improvements, allowing for comparisons of maturity across projects or organizations . While the continuous model emphasizes an organization's specific needs, the staged model focuses on a higher-level, structured maturity progression .

Modernizing legacy systems poses challenges such as preserving the system's accumulated knowledge and functionalities while updating the outdated technology . Documentation might be obsolete, making it difficult to understand the system's intricacies, and changes may introduce new bugs, impacting operations and costs . Additionally, training and changes required for users can lead to increased maintenance and operation costs if not managed appropriately .

CMMI enhances compatibility with Agile methodologies by allowing organizations to use CMMI best practices as a framework while tailoring them to support Agile's adaptability . Although Agile focuses on flexibility and rapid iteration, both methodologies strive for process improvement and project success . Experts suggest utilizing Agile methods during phases where they are more effective while employing CMMI for more structured process improvements to achieve a balanced approach .

Appraisals in CMMI implementations provide organizations with insights into how their processes align with CMMI best practices, thus identifying areas for improvement . These appraisals are crucial for establishing a baseline against which future improvements can be measured, creating alignment with organizational performance goals . Appraisals can also provide external validation to customers and suppliers regarding the maturity and capability of the organization's processes, boosting stakeholder confidence .

You might also like