Se Module 5
Se Module 5
We need to differentiate risks, as potential issues, from the current problems of the
project.
There are three main classifications of risks which can affect a software project:
Project risks
Technical risks
Business risks
1. Project risks: Project risks concern differ forms of budgetary, schedule,
personnel, resource, and customer-related problems. A vital project
risk is schedule slippage. Since the software is intangible, it is very
tough to monitor and control a software project. It is very tough to
control something which cannot be identified.
2. For any manufacturing program, such as the manufacturing of cars,
the plan executive can recognize the product taking shape.
3. Business risks: This type of risks contain risks of building an excellent product
that no one need, losing budgetary or personnel commitments, etc.
Each one needs to understand that if they want to solve or eliminate any problem, it
is essential to go to the root cause of the problem and then eliminate problems so
that they can reduce or control the reoccurrence of the problem. For organizations
that want to improve and grow continuously, it is very essential to identify the root
cause although it is tough to do so, it is essential. RCA can also be used to modify or
change core processes and issues in such way that prevents future problems.
Advantages :
Helps one to prioritize tasks according to its severity and then resolve it.
Increases teamwork and their knowledge.
Disadvantages :
Sometimes, resolving equipment after failure can be more costly than preventing
failure from an occurrence.
Failed equipment can cause greater damage to system and interrupts production
activities.
2. Proactive RCA :
The main question that arises in proactive RCA is “What could go wrong?”. RCA can
also be used proactively to mitigate failure or risk. The main importance of RCA can
be seen when it is applied to events that have not occurred yet. Proactive RCA is a
root cause analysis that is performed before any occurrence of failure or defect. It is
simply done to control, implemented to prevent defect from its occurrence. As both
reactive and proactive RCAs are is important, one should move from reactive to
proactive RCA.
It is better to prevent issues from its occurrence rather than correcting it after its
occurrence. In simple words, Prevention is better than correction. Here, prevention
action is considered as proactive and corrective action is considered as reactive. It
is also known as proactive risk management. It identifies the root cause of problem
to eliminate it from reoccurring. With help of proactive RCA, we can identify the
main root cause that leads to the occurrence of problem or failure, or defect. After
knowing this, we can take various measures and implement actions to prevent
these causes from the occurrence.
Advantages :
Sometimes, preventing equipment from failure can be more costly than resolving
failure after occurrence.
Many resources and tools required to prevent failure from an occurrence that can
affect the overall cost.
Requires highly skilled technicians to perform maintenance tasks.
5.3 Software risks
Software development is a multi stage approach of design, documentation,
programming, prototyping, testing etc which follows a Software Development Life
Cycle (SDLC) process. Different tasks are performed based on SDLC framework
during software development. Developing and Maintaining software project involves
risk in each step.
Most enterprises rely on software and ignoring the risks associated with any phase
needs to be identified and managed/solved otherwise it creates unforeseen
challenges for business. Before analyzing different risks involved in software
development, Let’s first understand what is actually risk and why risk management
is important for a business.
Schedule Risk :
Schedule related risks refers to time related risks or project delivery related
planning risks. The wrong schedule affects the project development and delivery.
These risks are mainly indicates to running behind time as a result project
development doesn’t progress timely and it directly impacts to delivery of project.
Finally if schedule risks are not managed properly it gives rise to project failure and
at last it affect to organization/company economy very badly.
Some reasons for Schedule risks –
Risk Mitigation :
It is an activity used to avoid problems (Risk Avoidance).
Steps for mitigating the risks as follows.
Example:
Let us understand RMMM with the help of an example of high staff turnover.
Risk Mitigation:
Meet the current staff to determine causes for turnover (e.g., poor working
conditions, low pay, competitive job market).
Mitigate those causes that are under our control before the project starts.
Once the project commences, assume turnover will occur and develop
techniques to ensure continuity when people leave.
Organize project teams so that information about each development activity
is widely dispersed.
Define documentation standards and establish mechanisms to ensure that
documents are developed in a timely manner.
Assign a backup staff member for every critical technologist.
Risk Monitoring:
As the project proceeds, risk monitoring activities commence. The project manager
monitors factors that may provide an indication of whether the risk is becoming
more or less likely. In the case of high staff turnover, the following factors can be
monitored:
Risk management and contingency planning assumes that mitigation efforts have
failed and that the risk has become a reality. Continuing the example, the project is
well underway, and a number of people announce that they will be leaving. If the
mitigation strategy has been followed, backup is available, information is
documented, and knowledge has been dispersed across the team. In addition, the
project manager may temporarily refocus resources (and readjust the project
schedule) to those functions that are fully staffed, enabling newcomers who must
be added to the team to “get up to the speed“.
Drawbacks of RMMM:
It incurs additional project costs.
It takes additional time.
For larger projects, implementing an RMMM may itself turn out to be another
tedious project.
RMMM does not guarantee a risk-free project, infact, risks may also come up
after the project is delivered.
5.5 software quality factors
The various factors, which influence the software, are termed as software factors.
They can be broadly divided into two categories. The first category of the factors is
of those that can be measured directly such as the number of logical errors, and the
second category clubs those factors which can be measured only indirectly. For
example, maintainability but each of the factors is to be measured to check for the
content and the quality control.
Several models of software quality factors and their categorization have been
suggested over the years. The classic model of software quality factors, suggested
by McCall, consists of 11 factors (McCall et al., 1977). Similarly, models consisting of
12 to 15 factors, were suggested by Deutsch and Willis (1988) and by Evans and
Marciniak (1987).
All these models do not differ substantially from McCall’s model. The McCall factor
model provides a practical, up-to-date method for classifying software requirements
(Pressman, 2000).
McCall’s Factor Model
This model classifies all software requirements into 11 software quality factors. The
11 factors are grouped into three categories – product operation, product revision,
and product transition factors.
Product operation factors − Correctness, Reliability, Efficiency,
Integrity, Usability.
Product revision factors − Maintainability, Flexibility, Testability.
Product transition factors − Portability, Reusability, Interoperability.
Product Operation Software Quality Factors
According to McCall’s model, product operation category includes five software
quality factors, which deal with the requirements that directly affect the daily
operation of the software. They are as follows −
Correctness
These requirements deal with the correctness of the output of the software system.
They include −
Output mission
The required accuracy of output that can be negatively affected by
inaccurate data or inaccurate calculations.
The completeness of the output information, which can be affected by
incomplete data.
The up-to-dateness of the information defined as the time between the
event and the response by the software system.
The availability of the information.
The standards for coding and documenting the software system.
Reliability
Reliability requirements deal with service failure. They determine the maximum
allowed failure rate of the software system, and can refer to the entire system or to
one or more of its separate functions.
Efficiency
It deals with the hardware resources needed to perform the different functions of
the software system. It includes processing capabilities (given in MHz), its storage
capacity (given in MB or GB) and the data communication capability (given in MBPS
or GBPS).
It also deals with the time between recharging of the system’s portable units, such
as, information system units located in portable computers, or meteorological units
placed outdoors.
Integrity
This factor deals with the software system security, that is, to prevent access to
unauthorized persons, also to distinguish between the group of people to be given
read as well as write permit.
Usability
Usability requirements deal with the staff resources needed to train a new
employee and to operate the software system.
Product Revision Quality Factors
According to McCall’s model, three software quality factors are included in the
product revision category. These factors are as follows −
Maintainability
This factor considers the efforts that will be needed by users and maintenance
personnel to identify the reasons for software failures, to correct the failures, and to
verify the success of the corrections.
Flexibility
This factor deals with the capabilities and efforts required to support adaptive
maintenance activities of the software. These include adapting the current software
to additional circumstances and customers without changing the software. This
factor’s requirements also support perfective maintenance activities, such as
changes and additions to the software in order to improve its service and to adapt it
to changes in the firm’s technical or commercial environment.
Testability
Testability requirements deal with the testing of the software system as well as with
its operation. It includes predefined intermediate results, log files, and also the
automatic diagnostics performed by the software system prior to starting the
system, to find out whether all components of the system are in working order and
to obtain a report about the detected faults. Another type of these requirements
deals with automatic diagnostic checks applied by the maintenance technicians to
detect the causes of software failures.
Product Transition Software Quality Factor
According to McCall’s model, three software quality factors are included in the
product transition category that deals with the adaptation of software to other
environments and its interaction with other software systems. These factors are as
follows −
Portability
Portability requirements tend to the adaptation of a software system to other
environments consisting of different hardware, different operating systems, and so
forth. The software should be possible to continue using the same basic software in
diverse situations.
Reusability
This factor deals with the use of software modules originally designed for one
project in a new software project currently being developed. They may also enable
future projects to make use of a given module or a group of modules of the
currently developed software. The reuse of software is expected to save
development resources, shorten the development period, and provide higher quality
modules.
Interoperability
Interoperability requirements focus on creating interfaces with other software
systems or with other equipment firmware. For example, the firmware of the
production machinery and testing equipment interfaces with the production control
software.
FTR
serves as a training ground
NOTE: FTR focuses on a specific (and small) part of the overall software.
o Individual who has developed the work product informs the project
leader that the work product is complete and that a review is required.
o The project leader contacts a review leader, who evaluates the product
for readiness, generates copies of product materials, and distributes
them to two or three reviewers for advance preparation.
o Each reviewer is expected to spend between one and two hours
reviewing the product, making notes, and otherwise becoming familiar
with the work. Concurrently, the review leader also reviews the product
and establishes an agenda for the review meeting, which is typically
scheduled for the next day.
o review leader
o all reviewers
o the producer.
o One reviewer takes on the role of the recorder; that is, the individual
who records (in writing) all important issues raised during the review.
1. The FTR begins with an introduction of the agenda and a brief introduction by
the producer.
2. The producer then proceeds to "walk through" the work product, explaining the
material, while reviewers raise issues based on their advance preparation.
3. When valid problems or errors are discovered, the recorder notes each.
4. At the end of the review, all attendees of the FTR must decide whether to
2. reject the product due to severe errors (once corrected, another review must
be performed)
3. accept the product provisionally (minor errors have been encountered and
must be corrected, but no additional review will be required).
Disadvantage of SQA:
There are a number of disadvantages of quality assurance. Some of them include
adding more resources, employing more workers to help maintain quality and so
much more.
5.9 software reliability
Software reliability is also defined as the probability that a software system fulfills
its assigned task in a given environment for a predefined number of input cases,
assuming that the hardware and the input are free of error.
For example, large next-generation aircraft will have over 1 million source lines of
software on-board; next-generation air traffic control systems will contain between
one and two million lines; the upcoming International Space Station will have over
two million lines on-board and over 10 million lines of ground support software;
several significant life-critical defense systems will have over 5 million source lines
of software. While the complexity of software is inversely associated with software
reliability, it is directly related to other vital factors in software quality, especially
functionality, capability, etc.
5.10 Reengineering
Software Re-engineering is a process of software development which is done to
improve the maintainability of a software system. Re-engineering is the
examination and alteration of a system to reconstitute it in a new form. This process
encompasses a combination of sub-processes like reverse engineering, forward
engineering, reconstructing etc.
Re-engineering is the reorganizing and modifying existing software systems to
make them more maintainable.
Objectives of Re-engineering:
To describe a cost-effective option for system evolution.
To describe the activities involved in the software maintenance process.
To distinguish between software and data re-engineering and to explain the
problems of data re-engineering.
Steps involved in Re-engineering:
Inventory Analysis
Document Reconstruction
Reverse Engineering
Code Reconstruction
Data Reconstruction
Forward Engineering
Fig:5.10 Reengineering
Re-engineering Cost Factors:
The quality of the software to be re-engineered
The tool support available for re-engineering
The extent of the required data conversion
The availability of expert staff for re-engineering
Advantages of Re-engineering:
Reduced Risk: As the software is already existing, the risk is less as compared
to new software development. Development problems, staffing problems and
specification problems are the lots of problems which may arise in new
software development.
Reduced Cost: The cost of re-engineering is less than the costs of developing
new software.
Revelation of Business Rules: As a system is re-engineered , business rules
that are embedded in the system are rediscovered.
Better use of Existing Staff: Existing staff expertise can be maintained and
extended accommodate new skills during re-engineering.
Disadvantages of Re-engineering:
Practical limits to the extent of re-engineering.
Major architectural changes or radical reorganizing of the systems data
management has to be done manually.
Re-engineered system is not likely to be as maintainable as a new system
developed using modern software Re-engineering methods.
BPR projects have failed sometimes to meet high expectations. Many unsuccessful
BPR attempts are due to the confusion surrounding BPR and how it should be
performed. It becomes the process of trial and error.
Phases of BPR :
According to Peter F. Drucker, ” Re-engineering is new, and it has to be done.”
There are 7 different phases for BPR. All the projects for BPR begin with the most
critical requirement i.e. communication throughout the organization.
Resistance
Tradition
Time requirements
Cost
Job losses
Advantages of BPR :
Following are the advantages of BPR :
It depends on various factors like size and availability of resources. So, it will not fit
for every business.
e) Saves time: As we stated above here that the product is developed from the
existing stage rather than the beginning stage so the time consumes in software
engineering is lesser.
1. Inventory Analysis:
Every software organisation should have an inventory of all the applications.
Inventory can be nothing more than a spreadsheet model containing information
that provides a detailed description of every active application.
By sorting this information according to business criticality, longevity, current
maintainability and other local important criteria, candidates for re-engineering
appear.
The resource can then be allocated to a candidate application for re-engineering
work.
2. Document reconstructing:
Documentation of a system either explains how it operates or how to use it.
Documentation must be updated.
It may not be necessary to fully document an application.
The system is business-critical and must be fully re-documented.
3. Reverse Engineering:
Reverse engineering is a process of design recovery. Reverse engineering tools
extract data, architectural and procedural design information from an existing
program.
4. Code Reconstructing:
To accomplish code reconstructing, the source code is analysed using a
reconstructing tool. Violations of structured programming construct are noted and
code is then reconstructed.
The resultant restructured code is reviewed and tested to ensure that no anomalies
have been introduced.
5. Data Restructuring:
5.13 restructuring
Software restructuring modifies source code and/or data in an effort to make it
amenable to future changes. In general, restructuring does not modify the overall
program architecture. It tends to focus on the design details of individual modules
and on local data structures defined within modules. If the restructuring effort
extends beyond module boundaries and encompasses the software architecture,
restructuring becomes forward engineering .
Code Restructuring
Code restructuring is performed to yield a design that produces the same function
but with higher quality than the original program. In general, code restructuring
techniques model program logic using Boolean algebra and then apply a series of
transformation rules that yield restructured logic. The objective is to take
"spaghetti-bowl" code and derive a procedural design that conforms to the
structured programming philosophy.
Other restructuring techniques have also been proposed for use with reengineering
tools. A resource exchange diagram maps each program module and the resources
(data types, procedures and variables) that are exchanged between it and other
modules. By creating representations of resource flow, the program architecture
can be restructured to achieve minimum coupling among modules.
Data Restructuring
Before data restructuring can begin, a reverse engineering activity called analysis of
source code must be conducted. All programming language statements that contain
data definitions, file descriptions, I/O, and interface descriptions are evaluated. The
intent is to extract data items and objects, to get information on data flow, and to
understand the existing data structures that have been implemented. This activity
is sometimes called data analysis .
Once data analysis has been completed, data redesign commences. In its simplest
form, a data record standardization step clarifies data definitions to achieve
consistency among data item names or physical record formats within an existing
data structure or file format. Another form of redesign, called data name
rationalization, ensures that all data naming conventions conform to local standards
and that aliases are eliminated as data flow through the system.
Generate documentation:
Finally, in this step, the complete documentation including SRS, design document,
history, overview, etc. are recorded for future use.
Reverse Engineering Tools:
Reverse engineering if done manually would consume lot of time and human labour
and hence must be supported by automated tools. Some of tools are given below:
CIAO and CIA: A graphical navigator for software and web repositories along with a
collection of Reverse Engineering tools.
Rigi: A visual software understanding tool.
Bunch: A software clustering/modularization tool.
GEN++: An application generator to support development of analysis tools for the
C++ language.
PBS: Software Bookshelf tools for extracting and visualizing the architecture of
programs.
Forward engineering is thus related to the term 'reverse engineering,’ where there
is an effort to build backward, from a coded set to a model, or to unravel the
process of how something was put together.
o Reverse engineering can extract design information from source code, but
the degree of abstraction, the thoroughness of the documentation, and the
degree to which tools and a human analyst work together.
o The process's directionality varies greatly.
o The sophistication of the design information that can be derived from the
source code is referred to as the abstraction level of a reverse engineering
process and the tools used to achieve it.
o Ideally, the abstraction level ought to be as high as is practical.
o The level of detail offered at an abstraction level is what is referred to as the
completeness of a reverse engineering process. The completeness typically
declines as the number of abstractions rises.
o An interaction refers to the degree to which a human is integrated with
automated technologies to produce successful reverse engineering.
o In many circumstances, interaction must rise as the abstraction level does or
completeness would suffer.
o The reverse engineering method has a one-way directionality: all knowledge
gleaned from the source code is sent to the software engineer for use in
future maintenance tasks.
o An example of backward engineering is research on Instruments etc.