UNIT 5 Risk Management
UNIT 5 Risk Management
A software project can be concerned with a large variety of risks. In order to be adept to
systematically identify the significant risks which might affect a software project, it is
essential to classify risks into different classes. The project manager can then check which
risks from each class are relevant to the project.
There are three main classifications of risks which can affect a software project:
   1. Project risks
   2. Technical risks
   3. 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. 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.
   1. 1. Known risks: Those risks that can be uncovered after careful assessment of the
       project program, the business and technical environment in which the plan is being
       developed, and more reliable data sources (e.g., unrealistic delivery date)
   2. 2. Predictable risks: Those risks that are hypothesized from previous project
       experience (e.g., past turnover)
   3. 3. Unpredictable risks: Those risks that can and do occur, but are extremely tough to
       identify in advance.
Principle of Risk Management
    1. Global Perspective: In this, we review the bigger system description, design, and
        implementation. We look at the chance and the impact the risk is going to have.
    2. Take a forward-looking view: Consider the threat which may appear in the future
        and create future plans for directing the next events.
    3. Open Communication: This is to allow the free flow of communications between the
        client and the team members so that they have certainty about the risks.
    4. Integrated management: In this method risk management is made an integral part of
        project management.
    5. Continuous process: In this phase, the risks are tracked continuously throughout the
        risk management paradigm.
Risk Assessment
The objective of risk assessment is to division the risks in the condition of their loss, causing
potential. For risk assessment, first, every risk should be rated in two methods:
2
    o   The consequence of the issues relates to that risk (denoted as s).
Based on these two methods, the priority of each risk can be estimated:
p=r*s
Where p is the priority with which the risk must be controlled, r is the probability of the risk
becoming true, and s is the severity of loss caused due to the risk becoming true. If all
identified risks are set up, then the most likely and damaging risks can be controlled first, and
more comprehensive risk abatement methods can be designed for these risks.
1. Risk Identification: The project organizer needs to anticipate the risk in the project as
early as possible so that the impact of risk can be reduced by making effective risk
management planning.
A project can be of use by a large variety of risk. To identify the significant risk, this might
affect a project. It is necessary to categories into the different risk of classes.
There are different types of risks which can affect a software project:
    1. Technology risks: Risks that assume from the software or hardware technologies that
        are used to develop the system.
    2. People risks: Risks that are connected with the person in the development team.
    3. Organizational risks: Risks that assume from the organizational environment where
        the software is being developed.
    4. Tools risks: Risks that assume from the software tools and other support software
        used to create the system.
    5. Requirement risks: Risks that assume from the changes to the customer requirement
        and the process of managing the requirements change.
    6. Estimation risks: Risks that assume from the management estimates of the resources
        required to build the system
2. Risk Analysis: During the risk analysis process, you have to consider every identified risk
and make a perception of the probability and seriousness of that risk.
There is no simple way to do this. You have to rely on your perception and experience of
previous projects and the problems that arise in them.
It is not possible to make an exact, the numerical estimate of the probability and seriousness
of each risk. Instead, you should authorize the risk to one of several bands:
    1. The probability of the risk might be determined as very low (0-10%), low (10-25%),
        moderate (25-50%), high (50-75%) or very high (+75%).
3
     2. The effect of the risk might be determined as catastrophic (threaten the survival of the
        plan), serious (would cause significant delays), tolerable (delays are within allowed
        contingency), or insignificant.
Risk Control
It is the process of managing risks to achieve desired outcomes. After all, the identified risks
of a plan are determined; the project must be made to include the most harmful and the most
likely risks. Different risks need different containment methods. In fact, most risks need
ingenuity on the part of the project manager in tackling the risk.
     1. Avoid the risk: This may take several ways such as discussing with the client to
        change the requirements to decrease the scope of the work, giving incentives to the
        engineers to avoid the risk of human resources turnover, etc.
     2. Transfer the risk: This method involves getting the risky element developed by a
        third party, buying insurance cover, etc.
     3. Risk reduction: This means planning method to include the loss due to risk. For
        instance, if there is a risk that some key personnel might leave, new recruitment can
        be planned.
Risk Leverage: To choose between the various methods of handling risk, the project plan
must consider the amount of controlling the risk and the corresponding reduction of risk. For
this, the risk leverage of the various risks can be estimated.
Risk leverage is the variation in risk exposure divided by the amount of reducing the risk.
Risk leverage = (risk exposure before reduction - risk exposure after reduction) / (cost
of reduction)
 Risk planning: The risk planning method considers each of the key risks that have been
identified and develop ways to maintain these risks.
AD
For each of the risks, you have to think of the behavior that you may take to minimize the
disruption to the plan if the issue identified in the risk occurs.
You also should think about data that you might need to collect while monitoring the plan so
that issues can be anticipated.
Again, there is no easy process that can be followed for contingency planning. It rely on the
judgment and experience of the project manager.
4
Risk Monitoring: Risk monitoring is the method king that your assumption about the
product, process, and business risks has not changed.
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
Software failures may be due to bugs, ambiguities, oversights or misinterpretation of the
specification that the software is supposed to satisfy, carelessness or incompetence in writing
code, inadequate testing, incorrect or unexpected usage of the software or other unforeseen
problems.
    Hardware faults are mostly physical faults.               Software faults are design faults, which are tough
                                                              detect, and correct.
    Hardware components generally fail due to wear and        Software component fails due to bugs.
    tear.
    In hardware, design faults may also exist, but            In software, we can simply find a strict correspo
    physical faults generally dominate.                       "manufacturing" as the hardware manufacturing
                                                              action of uploading software modules into pla
                                                              Therefore, the quality of the software will not chan
                                                              into the storage and start running
    Hardware exhibits the failure features shown in the       Software reliability does not show the same feature
    following                                    figure:      A possible curve is shown in the
There are two significant differences between hardware and software curves are:
One difference is that in the last stage, the software does not have an increasing failure
rate as hardware does. In this phase, the software is approaching obsolescence; there are no
motivations for any upgrades or changes to the software. Therefore, the failure rate will not
change.
6
The second difference is that in the useful-life phase, the software will experience a radical
increase in failure rate each time an upgrade is made. The failure rate levels off gradually,
partly because of the defects create and fixed after the updates.
The upgrades in above figure signify feature upgrades, not upgrades for reliability. For
feature upgrades, the complexity of software is possible to be increased, since the
functionality of the software is enhanced. Even error fixes may be a reason for more software
failures if the bug fix induces other defects into the software. For reliability upgrades, it is
likely to incur a drop in software failure rate, if the objective of the upgrade is enhancing
software reliability, such as a redesign or reimplementation of some modules using better
engineering approaches, such as clean-room method.
A partial list of the distinct features of software compared to hardware is listed below:
Wear-out: Software does not have an energy-related wear-out phase. Bugs can arise without
warning.
7
Repairable system: Periodic restarts can help fix software queries.
Time dependency and life cycle: Software reliability is not a purpose of operational time.
AD
Environmental factors: Do not affect Software reliability, except it may affect program
inputs.
Reliability prediction: Software reliability cannot be predicted from any physical basis since
it depends entirely on human factors in design.
Redundancy: It cannot improve Software reliability if identical software elements are used.
Failure rate motivators: It is generally not predictable from analyses of separate statements.
AD
Built with standard components: Well-understood and extensively tested standard element
will help improve maintainability and reliability. But in the software industry, we have not
observed this trend. Code reuse has been around for some time but to a minimal extent. There
are no standard elements for software, except for some standardized logic structures.
Software Maintenance refers to the process of modifying and updating a software system
after it has been delivered to the customer. This can include fixing bugs, adding new
features, improving performance, or updating the software to work with new hardware or
software systems. The goal of software maintenance is to keep the software system working
correctly, efficiently, and securely, and to ensure that it continues to meet the needs of the
users.
Software maintenance is a continuous process that occurs throughout the entire life cycle of
the software system. It is important to have a well-defined maintenance process in place,
which includes testing and validation , version control, and communication with
stakeholders.
Several Key Aspects of Software Maintenance
         Bug Fixing: The process of finding and fixing errors and problems in the
            software.
         Enhancements: The process of adding new features or improving existing
            features to meet the evolving needs of the users.
         Performance Optimization: The process of improving the speed, efficiency,
            and reliability of the software.
8
           Porting and Migration: The process of adapting the software to run on new
            hardware or software platforms.
          Re-Engineering: The process of improving the design and architecture of the
            software to make it more maintainable and scalable.
          Documentation: The process of creating, updating, and maintaining the
            documentation for the software, including user manuals, technical specifications,
            and design documents.
Software maintenance is a critical part of the software development life cycle (SDLC) and
is necessary to ensure that the software continues to meet the needs of the users over time.
It is also important to consider the cost and effort required for software maintenance when
planning and developing a software system.
Software maintenance is the process of modifying a software system after it has been
delivered to the customer. The goal of maintenance is to improve the system’s
functionality, performance, and reliability and to adapt it to changing requirements and
environments.
Several Types of Software Maintenance
          Corrective Maintenance: This involves fixing errors and bugs in the software
            system.
          Patching: It is an emergency fix implemented mainly due to pressure from
            management. Patching is done for corrective maintenance but it gives rise to
            unforeseen future errors due to lack of proper impact analysis.
          Adaptive Maintenance: This involves modifying the software system to adapt
            it to changes in the environment, such as changes in hardware or software,
            government policies, and business rules.
          Perfective Maintenance: This involves improving functionality, performance,
            and reliability, and restructuring the software system to improve changeability.
          Preventive Maintenance: This involves taking measures to prevent future
            problems, such as optimization, updating documentation, reviewing and testing
            the system, and implementing preventive measures such as backups.
It’s important to note that software maintenance can be costly and complex, especially for
large and complex systems. Therefore, the cost and effort of maintenance should be taken
into account during the planning and development phases of a software project. It’s also
important to have a clear and well-defined maintenance plan that includes regular
maintenance activities, such as testing, backup, and bug fixing.
Software Maintenance is the process of modifying a software product after it has been
delivered to the customer. The main purpose of software maintenance is to modify and
update software applications after delivery to correct faults and improve
performance. Maintenance can be categorized into proactive and reactive types. Proactive
maintenance involves taking preventive measures to avoid problems from occurring, while
reactive maintenance involves addressing problems that have already occurred.
Maintenance can be performed by different stakeholders, including the original
development team, an in-house maintenance team, or a third-party maintenance provider.
Maintenance activities can be planned or unplanned. Planned activities include regular
maintenance tasks that are scheduled in advance, such as updates and backups. Unplanned
activities are reactive and are triggered by unexpected events, such as system crashes or
security breaches. Software maintenance can involve modifying the software code, as well
as its documentation, user manuals, and training materials. This ensures that the software is
up-to-date and continues to meet the needs of its users.
Software maintenance can also involve upgrading the software to a new version or
platform. This can be necessary to keep up with changes in technology and to ensure that
9
the software remains compatible with other systems. The success of software maintenance
depends on effective communication with stakeholders, including users, developers, and
management. Regular updates and reports can help to keep stakeholders informed and
involved in the maintenance process.
Software maintenance is also an important part of the Software Development Life
Cycle(SDLC). To update the software application and do all modifications in software
application so as to improve performance is the main focus of software maintenance.
Software is a model that runs on the basis of the real world. so, whenever any change
requires in the software that means the need for real-world changes wherever possible.
Need for Maintenance
Software Maintenance must be performed in order to:
         Correct faults.
         Improve the design.
         Implement enhancements.
         Interface with other systems.
         Accommodate programs so that different hardware, software, system features,
            and telecommunications facilities can be used.
         Migrate legacy software.
         Retire software.
         Requirement of user changes.
         Run the code fast
Challenges in Software Maintenance
The various challenges in software maintenance are given below:
         The popular age of any software program is taken into consideration up to ten to
            fifteen years. As software program renovation is open-ended and might maintain
            for decades making it very expensive.
         Older software programs, which had been intended to paint on sluggish
            machines with much less reminiscence and garage ability can not maintain
            themselves tough in opposition to newly coming more advantageous software
            programs on contemporary-day hardware.
         Changes are frequently left undocumented which can also additionally reason
            greater conflicts in the future.
         As the era advances, it turns into high prices to preserve vintage software
            programs.
         Often adjustments made can without problems harm the authentic shape of the
            software program, making it difficult for any next adjustments.
         There is a lack of Code Comments.
         Lack of documentation: Poorly documented systems can make it difficult to
            understand how the system works, making it difficult to identify and fix
            problems.
         Legacy code: Maintaining older systems with outdated technologies can be
            difficult, as it may require specialized knowledge and skills.
         Complexity: Large and complex systems can be difficult to understand and
            modify, making it difficult to identify and fix problems.
         Changing requirements: As user requirements change over time, the software
            system may need to be modified to meet these new requirements, which can be
            difficult and time-consuming.
         Interoperability issues: Systems that need to work with other systems or
            software can be difficult to maintain, as changes to one system can affect the
            other systems.
10
           Lack of test coverage: Systems that have not been thoroughly tested can be
            difficult to maintain as it can be hard to identify and fix problems without
            knowing how the system behaves in different scenarios.
         Lack of personnel: A lack of personnel with the necessary skills and knowledge
            to maintain the system can make it difficult to keep the system up-to-date and
            running smoothly.
         High-Cost: The cost of maintenance can be high, especially for large and
            complex systems, which can be difficult to budget for and manage.
To overcome these challenges, it is important to have a well-defined maintenance process
in place, which includes testing and validation, version control, and communication with
stakeholders. It is also important to have a clear and well-defined maintenance plan that
includes regular maintenance activities, such as testing, backup, and bug fixing.
Additionally, it is important to have personnel with the necessary skills and knowledge to
maintain the system.
Categories of Software Maintenance
Maintenance can be divided into the following categories.
         Corrective maintenance: Corrective maintenance of a software product may be
            essential either to rectify some bugs observed while the system is in use, or to
            enhance the performance of the system.
         Adaptive maintenance: This includes modifications and updations when the
            customers need the product to run on new platforms, on new operating systems,
            or when they need the product to interface with new hardware and software.
         Perfective maintenance: A software product needs maintenance to support the
            new features that the users want or to change different types of functionalities of
            the system according to the customer’s demands.
         Preventive maintenance: This type of maintenance includes modifications and
            updations to prevent future problems with the software. It goals to attend to
            problems, which are not significant at this moment but may cause serious issues
            in the future.
Reverse Engineering
Reverse Engineering is the process of extracting knowledge or design information from
anything man-made and reproducing it based on the extracted information. It is also called
back engineering. The main objective of reverse engineering is to check out how the system
works. There are many reasons to perform reverse engineering. Reverse engineering is used
to know how the thing works. Also, reverse engineering is to recreate the object by adding
some enhancements.
Software Reverse Engineering
Software Reverse Engineering is the process of recovering the design and the requirements
specification of a product from an analysis of its code. Reverse Engineering is becoming
important, since several existing software products, lack proper documentation, are highly
unstructured, or their structure has degraded through a series of maintenance efforts.
Why Reverse Engineering?
         Providing proper system documentation.
         Recovery of lost information.
         Assisting with maintenance.
         The facility of software reuse.
         Discovering unexpected flaws or faults.
         Implements innovative processes for specific use.
         Easy to document the things how efficiency and power can be improved.
Uses of Software Reverse Engineering
11
        Software Reverse Engineering is used in software design, reverse engineering
         enables the developer or programmer to add new features to the existing
         software with or without knowing the source code.
      Reverse engineering is also useful in software testing, it helps the testers to
         study or detect the virus and other malware code.
      Software reverse engineering is the process of analyzing and understanding the
         internal structure and design of a software system. It is often used to improve the
         understanding of a software system, to recover lost or inaccessible source code,
         and to analyze the behavior of a system for security or compliance purposes.
      Malware analysis: Reverse engineering is used to understand how malware
         works and to identify the vulnerabilities it exploits, in order to develop
         countermeasures.
      Legacy systems: Reverse engineering can be used to understand and maintain
         legacy systems that are no longer supported by the original developer.
      Intellectual property protection: Reverse engineering can be used to detect and
         prevent intellectual property theft by identifying and preventing the
         unauthorized use of code or other assets.
      Security: Reverse engineering is used to identify security vulnerabilities in a
         system, such as backdoors, weak encryption, and other weaknesses.
      Compliance: Reverse engineering is used to ensure that a system meets
         compliance standards, such as those for accessibility, security, and privacy.
      Reverse-engineering of proprietary software: To understand how a software
         works, to improve the software, or to create new software with similar features.
      Reverse-engineering of software to create a competing product: To create a
         product that functions similarly or to identify the features that are missing in a
         product and create a new product that incorporates those features.
      It’s important to note that reverse engineering can be a complex and time-
         consuming process, and it is important to have the necessary skills, tools, and
         knowledge to perform it effectively. Additionally, it is important to consider the
         legal and ethical implications of reverse engineering, as it may be illegal or
         restricted in some jurisdictions.
Advantages of Software Maintenance
      Improved Software Quality: Regular software maintenance helps to ensure
         that the software is functioning correctly and efficiently and that it continues to
         meet the needs of the users.
      Enhanced Security: Maintenance can include security updates and patches,
         helping to ensure that the software is protected against potential threats and
         attacks.
      Increased User Satisfaction: Regular software maintenance helps to keep the
         software up-to-date and relevant, leading to increased user satisfaction and
         adoption.
      Extended Software Life: Proper software maintenance can extend the life of
         the software, allowing it to be used for longer periods of time and reducing the
         need for costly replacements.
      Cost Savings: Regular software maintenance can help to prevent larger, more
         expensive problems from occurring, reducing the overall cost of software
         ownership.
      Better Alignment with business goals: Regular software maintenance can help
         to ensure that the software remains aligned with the changing needs of the
         business. This can help to improve overall business efficiency and productivity.
12
        Competitive Advantage: Regular software maintenance can help to keep the
         software ahead of the competition by improving functionality, performance, and
         user experience.
       Compliance with Regulations: Software maintenance can help to ensure that
         the software complies with relevant regulations and standards. This is
         particularly important in industries such as healthcare, finance, and government,
         where compliance is critical.
       Improved Collaboration: Regular software maintenance can help to improve
         collaboration between different teams, such as developers, testers, and users.
         This can lead to better communication and more effective problem-solving.
       Reduced Downtime: Software maintenance can help to reduce downtime
         caused by system failures or errors. This can have a positive impact on business
         operations and reduce the risk of lost revenue or customers.
       Improved Scalability: Regular software maintenance can help to ensure that the
         software is scalable and can handle increased user demand. This can be
         particularly important for growing businesses or for software that is used by a
         large number of users.
Disadvantages of Software Maintenance
       Cost: Software maintenance can be time-consuming and expensive, and may
         require significant resources and expertise.
       Schedule disruptions: Maintenance can cause disruptions to the normal
         schedule and operations of the software, leading to potential downtime and
         inconvenience.
       Complexity: Maintaining and updating complex software systems can be
         challenging, requiring specialized knowledge and expertise.
       Risk of introducing new bugs: The process of fixing bugs or adding new features
         can introduce new bugs or problems, making it important to thoroughly test the
         software after maintenance.
       User resistance: Users may resist changes or updates to the software, leading to
         decreased satisfaction and adoption.
       Compatibility issues: Maintenance can sometimes cause compatibility issues
         with other software or hardware, leading to potential integration problems.
       Lack of documentation: Poor documentation or lack of documentation can
         make software maintenance more difficult and time-consuming, leading to
         potential errors or delays.
       Technical debt: Over time, software maintenance can lead to technical debt,
         where the cost of maintaining and updating the software becomes increasingly
         higher than the cost of developing a new system.
       Skill gaps: Maintaining software systems may require specialized skills or
         expertise that may not be available within the organization, leading to potential
         outsourcing or increased costs.
       Inadequate testing: Inadequate testing or incomplete testing after maintenance
         can lead to errors, bugs, and potential security vulnerabilities.
       End-of-life: Eventually, software systems may reach their end-of-life, making
         maintenance and updates no longer feasible or cost-effective. This can lead to
         the need for a complete system replacement, which can be costly and time-
         consuming.
13
 5.4     Unit End Question
Short Questions
Q2. What are the main classification and other categories of Risk?
Q6. What are the types of Software Maintenance & causes of Software
Maintenance problems?
Long Questions
14
Q1. Explain Risk Assessment?
15