Saturday, April 23, 2022

Software Risk Analysis and Management

Software Risk Analysis and Management:

Risk Analysis in project management is a sequence of processes to identify the factors that may affect a project's success. These processes include risk identification, analysis of risks, risk management and control, etc. Proper risk analysis helps to control possible future events that may harm the overall project. It is more of a pro-active than a reactive process.

Risk analysis and management are actions that help a software team to understand and manage uncertainty.  Many problems can plague a software project. Regardless of outcome, it’s a really good idea to identify the risk, assess its probability of occurrence and estimate its impact.

Types of Risks:

  • Project risk
  • Technical risk
  • Business risk
  • Known risks 
  • Predictable risks 
  • Unpredictable risk

Risk Management:

Risk management is concerned with identifying risks and drawing up plans to minimise their effect on a project.

A risk is a probability that some adverse circumstance will occur

Project risks affect schedule or resources;

Product risks affect the quality or performance of the software being developed;

Business risks affect the organisation developing or procuring the software.

Software Risks:

Risk identification

Identify project, product and business risks;

Risk identification is the process of determining risks that could potentially prevent the program, enterprise, or investment from achieving its objectives. It includes documenting and communicating the concern.

Risk analysis

Assess the likelihood and consequences of these risks;

A software risk analysis looks at code violations that present a threat to the stability, security, or performance of the code. Software risk is measured during testing by using code analyzers that can assess the code for both risks within the code itself and between units that must interact inside the application.

Risk planning

Draw up plans to avoid or minimise the effects of the risk;

Risk planning is the process of identifying, prioritizing, and managing risk.Risk events threaten the successful completion of these critical success factors. Thus, risk planning involves identifying the most important risk events in advance, prioritizing them, and developing the appropriate risk response plans.

Risk monitoring

Monitor the risks throughout the project;

Risk monitoring is the process which tracks and evaluates the levels of risk in an organisation.The findings which are produced by risk monitoring processes can be used to help to create new strategies and update older strategies which may have proved to be ineffective.

Labels: ,

Resource Allocation Models

Resource Allocation Models:

  • Resource allocation is the process of assigning and scheduling resources to project tasks
  • Resources are the life blood of project management
  • Resources are used to carry out the project, and are returned to their owners if not consumed by the project
  • A resource allocation model (RAM) is a methodology for determining where resources should be allocated within an organisation. 
  • Resources may include financial resources, technological resources and human resources.
  • Strategic investment decisions may, of course, impact on the actual allocation in any single year.

Labels: ,

Schedule/Duration

Schedule/Duration:

Schedule: The amount of time required to complete the work is directly proportional to the effort. It is measured in the unit of time, for example, months, and weeks. 

Constructive Cost Models (COCOMO):

The COCOMO model is based on LOC, i.e., the number of lines of code. This model can be classified into three categories: basic, intermediate, and detailed sub-models.

These are the essential parameter of COCOMO which is responsible for the quality of any software product:

Effort: The number of labor required to complete the work. It is measured in person-months units.

Schedule: The amount of time required to complete the work is directly proportional to the effort. It is measured in the unit of time, for example, months, and weeks. 

Various models of COCOMO have been introduced to predict cost estimates at different levels. All the models are applied to different projects according to the requirements. 

Software projects are classified into three categories:

  • Organic
  • Semi-detached
  • Embedded

Organic: In the organic type, the project deals with developing a well-understood application program; the team size is generally small. This category is for the small to medium size software product. In this type, team members have good experience and knowledge. 

Semi-detached: In the semi-detached type, the essential elements are team-size, experience, and knowledge of the multiple programming languages. The projects that come under the semi-detached are less familiar and hard to develop. It also requires better guidance, more experienced developers.

Embedded: 

In the embedded type, a software project requires the highest level of complexity, creativity, and experience. In this category, the larger team size is needed as compared to the previous models. 

Labels: ,

Estimation of Various Parameters such as Cost

Estimation of Various Parameters such as Cost: 

The cost estimation is a tool to estimate the planning, budgeting and resource utilization for the software projects.

  • Effort: The amount of effort required to complete the development of software projects in terms of Man-Months (MM).
  • Development Duration: The time duration required to complete the development of a software project i.e. total development time.
  • Resources: The number of Manpower required for a software project in terms of time to complete.

There are multiple SCE methods/models in terms of size or type of project or in a 

static nature with dependent factors (single parameter or multi parameters). Such as:

  1. COCOMO or Algorithmic Model

It is called the Constructive Cost Model, which is mainly used for software cost estimation i.e. it estimates/predicts the effort required for the project, total project cost and scheduled time for the project. This model depends on the number of lines of code for software product development. It also estimates the required number of Man-Months (MM) for the full development of software products.

  1. Wideband Delphi or expert Judgment Model

Expert Judgment is a technique in which judgment is provided based upon a specific set of criteria and/or expertise that has been acquired in a specific knowledge area, application area, or product area, a particular discipline, an industry, etc. Such expertise may be provided by any group or person with specialized education, knowledge, skill, experience, or training

  1. Static Single Variable Model

A single variable is taken as a key element for calculating cost and time. In a dynamic model, all variables are interdependent, and there is no basic variable. The Software Engineering Laboratory established a model called SEL model, for estimating its software production.

  1. Static Multivariable Model

These models are also known as multivariable models. This model is often based on the first equation and actually depends on several variables representing different aspects of the software development environment.

  1. Estimation by Past Project Model

The software cost estimation is done for the new project by comparing the previous completed project estimation. Here the estimation cost should be reconsidered. Sometimes we manipulate estimation to win the Contract of project.

Labels: ,

An Overview of CASE Tools

An Overview of CASE Tools:

CASE stands for Computer Aided Software Engineering. It means, development and maintenance of software projects with help of various automated software tools.

  • CASE tools are a set of software application programs, which are used to automate SDLC activities. CASE tools are used by software project managers, analysts and engineers to develop software systems.
  • There are a number of CASE tools available to simplify various stages of Software Development Life Cycle such as Analysis tools, Design tools, Project management tools, Database Management tools, Documentation tools are to name a few.
  • Use of CASE tools accelerates the development of projects to produce desired results and helps to uncover flaws before moving ahead with the next stage in software development.

Upper Case Tools - Upper CASE tools are used in planning, analysis and design stages of SDLC. 

Lower Case Tools - Lower CASE tools are used in implementation, testing and maintenance. 

Integrated Case Tools - Integrated CASE tools are helpful in all the stages of SDLC, from Requirement gathering to Testing and documentation. 

CASE Tools:

  1. Configuration Management Tools
    1. Change Control Tools
    2. Programming Tools
    3. Web Development Tools
    4. Quality Assurance Tools
    5. Maintenance Tools
  2. Case Tool Types
    1. Diagram Tools
    2. Process Modelling Tools
    3. Project Management Tools
    4. Documentation Tools
    5. Analysis Tools
    6. Design Tools

Labels: ,

Software Configuration Management Activities

Software Configuration Management Activities: 

It is the discipline of managing the evolution of complex software systems. It  provides the capabilities of identification, control, status accounting, audit and review, manufacture, process management and teamwork.

SCM is concerned with managing evolving systems

CM should always be based on a set of standards which are applied within an organization

Should define how: 

– items are identified 

– changes are controlled 

– versions are managed

Should be based on an evolutionary process model rather than something like the waterfall model.

Software Configuration Management Tasks :

1.Identification – tracking multiple versions to enable efficient changes 

Risk identification involves brainstorming activities. it also involves preparation of risk list. Brainstorming is a group discussion technique where all the stakeholders meet together. this technique produces new ideas and promote creative thinking.

Identifying the configuration items from products that compose baselines at given points in time (a baseline is a set of mutually consistent Configuration Items, which has been formally reviewed and agreed upon, and serves as the basis of further development). 

2.Version control – control changes before and after release to customer. Combines procedures and tools to manage the different versions of configuration objects created during the software process. A variant is a different set of objects at the same revision level and coexists with other variants

Software version control (SVC), also called revision control, source control management, and versioning control, is a management strategy to track and store changes to a software development document or set of files that follow the development project from beginning to end-of-life.

3.Change control – authority to approve and prioritize changes

Change management is the discipline that guides how we Prepare, Equip, Support individuals to successfully adopt change. In order to drive organizational success and outcomes.

A change request (CR) is submitted and evaluated to assess technical merit, potential side effects, overall impact on other configuration objects and system functions, and the projected cost of the change.

4.Configuration auditing – ensure changes made properly

A software configuration audit complements the formal technical review of the process and product. It focuses on the technical correctness of the configuration object that has been modified. 

5.Reporting – tell others about changes made

Providing accurate status and current configuration data to developers, tester, end users, customers and stakeholders through admin guides, user guides, FAQs, Release notes, Memos, Installation Guide, Configuration guide etc

Labels: ,

Reverse Engineering

Reverse Engineering:

Software Reverse Engineering is the process of recovering the design and the requirements specification of a product from an analysis of it’s 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.

Aim:

The aim of reverse engineering is to improve the understandability of the system by helping the maintenance work and to generate the necessary legacy system documents.

Goals:

  • Complexity Co-Operation.
  • Recovering the Lost Information.
  • Determining the Side Effects.
  • Higher Abstraction Synthesis.
  • Providing the Facility for Reuse.

Need:

  • Recovery of lost information.
  • Assisting with maintenance.
  • Facility of software reuse.

Applications:

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.

Labels: ,

Software Re- Engineering

Software Re- Engineering:

The principles of Reengineering when applied to the software development process is called software re-engineering. It affects positively at software cost, quality, service to the customer and speed of delivery. In Software Re-engineering, we are improving the software to make it more efficient and effective.

It is a process of software development which is done to improve the maintainability of a software system. 

Technical Definition: Software 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 such as reverse engineering, restructuring, redocumentation, forward engineering, and retargeting 

The software reengineering is necessary for having-

a) Boost up productivity: Software reengineering increases productivity by optimizing the code and database so that processing gets faster.

b) Processes in continuity: The functionality of older software products can be still used while the testing or development of software.

c) Improvement opportunity: Meanwhile the process of software reengineering, not only software qualities, features and functionality but also your skills are refined, new ideas hit in your mind. 

Steps involved In Software Reengineering:

  1. Source Code Translation
  2. Reverse Engineering 
  3. Program Structure Improvement
  4. Program Modularisation
  5. Data Reengineering

Advantages:

  1. Reduced Risk-As the software is already existing,the risk is less as compared to developing a new software
  2. Reduced Cost-The cost of reengineering is significantly less than the costs of developing a new software.

Labels: ,

Cost of Maintenance

Cost of Maintenance:

The cost of system maintenance represents a large proportion of the budget of most organizations that use software systems. More than 65% of software lifecycle cost is expended in the maintenance activities. 

Cost of software maintenance can be controlled by postponing the. development opportunity of software maintenance but this will cause the following intangible cost: 

  • Customer dissatisfaction when requests for repair or modification cannot be addressed in a timely manner.
  • Reduction in overall software quality as a result of changes that introduce hidden errors in maintained software.

Key Factors affecting Cost are:

  1. Non Technical 
  2. Technical

Application Domain:

  • If the application of the program is defined and well understood, the system requirements may be definitive and maintenance due to changing needs minimized.

Staff Stability:

  • It is simple for the original writer of a program to understand and change an application rather than some other person who must understand the program by the study of the reports and code listing.

Program Lifetime:

  • Programs become obsolete when the program becomes obsolete, or their original hardware is replaced, and conversion costs exceed rewriting costs.

Dependence on External Environment:

  • Changes in a taxation system might need payroll, accounting, and stock control programs to be modified.
  • Taxation changes are nearly frequent, and maintenance costs for these programs are associated with the frequency of these changes.

Hardware Stability

  • If an application is designed to operate on a specific hardware configuration and that configuration does not change during the program's lifetime, no maintenance costs due to hardware changes will be incurred.
  • Hardware developments are so increased that this situation is rare.

 

Module Independence

It should be possible to change one program unit of a system without affecting any other unit.

Programming Language

Programs written in a high-level programming language are generally easier to understand than programs written in a low-level language.

Programming Style

The method in which a program is written contributes to its understandability and hence, the ease with which it can be modified.

Program Validation and Testing:

  • Maintenance costs due to bug's correction are governed by the type of fault to be repaired.
  • Coding errors are generally relatively cheap to correct, design errors are more expensive as they may include the rewriting of one or more program units.

Labels: ,

Categories of Maintenance

Categories of Maintenance: 

Preventive, Corrective and Perfective Maintenance, 

  1. Corrective Maintenance:Reactive modification of a software product performed after delivery to correct discovered problems.Corrective maintenance aims to correct any remaining errors regardless of where

They may cause specifications, design, coding, testing, and documentation, etc.Correct software maintenance addresses the errors and faults within software applications that could impact various parts of your software, including the design, logic, and code. These corrections usually come from bug reports that were created by users or customers – but corrective software maintenance can help to spot them before your customers do, which can help your brand’s reputation.

  1. Adaptive maintenance: Modification of a software product performed after delivery to keep a software product usable in a changed or changing environment.Adaptive software maintenance becomes important when the environment of your software changes. This can be brought on by changes to the operating system, hardware, software dependencies, Cloud storage, or even changes within the operating system. Sometimes, adaptive software maintenance reflects organizational policies or rules as well. Updating services, making modifications to vendors, or changing payment processors can all necessitate adaptive software maintenance.
  2. Preventive maintenance: Modification of a software product after delivery to detect and correct latent faults in the software product before they become effective faults.The focus of the type of maintenance is to prevent the deterioration of your software as it continues to adapt and change. These services can include optimizing code and updating documentation as needed.

Helps to reduce the risk associated with operating software for a long time, helping it to become more stable, understandable, and maintainable.

  1. Perfective maintenance: Modification of a software product after delivery to improve performance maintainability.Perfective software maintenance takes over some of the work, both adding features that can enhance user experience and removing features that are not effective and functional. This can include features that are not used or those that do not help you to meet your end goals.

Labels: ,

Software as an Evolutionary Entity

Software as an Evolutionary Entity:

In software engineering, software evolution is referred to as the process of developing, maintaining, and updating software for various reasons. Software changes are inevitable because there are many factors that change during the life cycle of a piece of software.

It is a product and, at the same time, the vehicle for delivering a product. As a product, it delivers the computing potential embodied by computer hardware or, more broadly, a network of computers that are accessible by local hardware.

Some of the factors include:

  • Requirement changes
  • Environment changes
  • Errors or security breaches
  • New equipment added or removed, and finally
  • Improvements to the system

Need for Maintenance: 

Need of maintenance occurs due to the following factors:

  • 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.

Purpose of Maintenance:

  • Failure Avoidance
  • Equipment Reliability
  • Least Operating Costs
  • Risk Reduction
  • Maximum Production
  • Defect Simulation

Labels: ,