Professional Documents
Culture Documents
Unit 3
Unit 3
Unit 3
UNIT-III
School of CSA
Dr.Hemanth.K.S
UNIT -3: [13 HOURS]
What is Agile?
Able to move quickly and easily
Software Engineering
What is Agile?
Consistently the top reasons why companies and organizations adopt agile are to:
The Agile process is a methodology that emphasizes collaboration, flexibility, and continuous
improvement. Here are some of the benefits of using an Agile process:
• Increased Flexibility
• Enhanced Collaboration
• Faster Time-to-Market
• Increased Customer Satisfaction
• Greater Transparency
AGILE DEVELOPMENT
The agile process forces the development team to focus on software itself rather than
design and documentation.
AGILE DEVELOPMENT
AGILITY AND COST OF CHANGE
AGILE DEVELOPMENT
Agility Principles
1. Customer satisfaction: Customers need to be satisfied with the quick delivery of the product at the
earliest.
2. Welcome change: Even if the change is late in the development process, it needs to be addressed
and handled as soon as possible.
3. Deliver frequently: The focus must be on the continuous delivery of software in a shorter
timescale.
4. Work together: Business units and developers need to work in tandem throughout the project
lifespan.
5. Motivated team: The projects need to have motivated team members. They must also be trusted
to get the work done.
6. Face-to-face: Conversations that take place face-to-face have maximum efficiency and
AGILE DEVELOPMENT
Agility Principles
Working software: The primary measure of progress is evaluated based on the working software
created.
Constant pace: The agile process is greatly beneficial when it comes to sustainable development.
Good design: Focusing on technological excellence and good design can significantly affect agility.
Simplicity: The amount of work not being done needs to be reduced via simpler processes.
Self-organized: Self-organized teams end up providing the best architectures, designs, and
requirements.
Reflection and adjustment: The effectiveness can be significantly improved by regular reflection on it,
by the team.
AGILE DEVELOPMENT
Key Agile Concepts
• User Stories: The team divides the work into functional units known as "user stories" in consultation with
the client or product owner. Each user story must add something valuable to the final product.
• Daily Meeting: The team meets every day at the same time to update everyone on the information
necessary for coordination:
• Personas: When the project requires it, the team creates in-depth, fabricated biographies of hypothetical
users of the intended product.
• Team: A small group of individuals assigned to the same project or effort, almost all of whom work full-
time, is referred to as a "team" in the Agile context.
AGILE DEVELOPMENT
Key Agile Concepts
• Incremental Development: Agile teams prefer to use an incremental development strategy, which in an
Agile setting means that each iteration of the product improves on the one before it by including user-
visible functionality.
• Iterative development: Agile projects intentionally permit "repeating" software development activities
and the potential for "revisiting" the same work products, known as iterative development.
• Milestone Retrospective: After a project has been running for a while, the team dedicates one to three
days to examine the key moments.
AGILE DEVELOPMENT
How Does Agile Work?
Here is the working of Agile -
• Define the project: The team, along with the customer, defines the project's goals, objectives, and
requirements.
• Create a backlog: A backlog is a prioritized list of tasks that need to be completed. The customer, product
owner, and the team work together to create the backlog.
• Plan the sprint: The team plans the sprint by selecting the highest-priority tasks from the backlog and
determining how much work can be completed in the upcoming sprint.
• Execute the sprint: The team works on completing the tasks planned for the sprint, with daily meetings to
check progress and address any issues.
AGILE DEVELOPMENT
How Does Agile Work?
Here is the working of Agile -
• Review and demo: At the end of the sprint, the team demonstrates the completed work to the customer
and gets feedback.
• Retrospect: The team retrospects on the sprint, discussing what went well, what didn't, and what can be
improved for the next sprint.
• Repeat: The process is repeated for each sprint until the project is completed. The product is incrementally
developed and delivered to the customer in small chunks.
• Continuously improve: Agile methodologies focus on continuous improvement. The team reflects on its
progress and makes adjustments as necessary to improve processes, tools, and communication for the next
sprint.
AGILE DEVELOPMENT
How is Agile Different?
Agile is different from traditional project management
methodologies in several ways:
• Agile encourages the delivery of working software early and often rather than waiting until the end of the
project to deliver a final product.
Overall, Agile approaches focus on continuous delivery and improvement, adaptability and customer
involvement. In contrast, traditional project management approaches focus more on following a plan and
sticking to a budget and schedule.
AGILE DEVELOPMENT
When Should You Use Agile Project Management?
• Agile is a project management approach that is better suited for ongoing projects and projects
where specific details are unclear from the beginning because of its core principles, which
include continuous delivery, iteration, adaptability, and short time frames, among others.
• Therefore, an Agile approach is a good choice for a project lacking precise constraints,
deadlines, or resources.
AGILE DEVELOPMENT
AGILE DEVELOPMENT
What is SCRUM ?
• Scrum is a popular framework that enables teams to work together. Based on Agile principles, Scrum
enables the development, delivery, and sustenance of complex projects.
• It enables teams to hypothesize how they think something works, try it out, learn and reflect from
their experiences, and make appropriate changes.
AGILE DEVELOPMENT
SCRUM Principles
Advantages
• Quicker release
• Increased project control
• Greater ability to incorporate changes at any time
• Improved progress visibility and control
• Higher productivity
• Lower costs
• Higher customer satisfaction
AGILE DEVELOPMENT
SCRUM
Disadvantages
• The chances of project failure are high if individuals aren't very committed or cooperative.
• Daily meetings sometimes frustrate team members.
• The Scrum framework in large teams is challenging
• Mostly suited for small teams that have great cohesion and understanding.
• If a member of the team leaves the process during development, it has a negative impact on the project
development.
• With no deadline to deliver the product, it leads to scope creep
AGILE DEVELOPMENT
Extreme Programming (XP)
• XP is a lightweight, efficient, low-risk, flexible, predictable, scientific, and fun way to develop
a software.
• Extreme Programming is one of the Agile software development methodologies
• It shares all Agile principles including strong customer involvement in the software
development process, good communication inside of the teams, and iterative cycles of
development.
AGILE DEVELOPMENT
Extreme Programming (XP)
AGILE DEVELOPMENT
Extreme Programming (XP)
1. XP Design
• Follows the KIS principle (KEEP IT SIMPLE)
• Encourage the use of CRC cards
• Encourages “refactoring”—an iterative refinement of the internal program design
2. XP Coding
• Recommends the construction of a unit test for a store before coding commences
• Encourages “pair programming”
3. XP Testing
• All unit tests are executed daily
• “Acceptance tests” are defined by the customer and excuted to assess customer visible
functionality
AGILE DEVELOPMENT
Extreme Programming (XP)
• Applications of Extreme Programming (XP): Some of the projects that are suitable to
develop using XP model are given below:
• Small projects: XP model is very useful in small projects consisting of small teams as face to
face meeting is easier to achieve.
• Projects involving new technology or Research projects: This type of projects face
changing of requirements rapidly and technical problems. So XP model is used to complete
this type of projects.
AGILE DEVELOPMENT
Extreme Programming (XP)
Advantages
Disadvantages
• Some specialists say that Extreme Programming is focused on the code rather than on
design.
Poor planning: One of the biggest reasons why software engineering projects fail is because of
poor planning.
Lack of communication: Effective communication is crucial for the success of any project, and
this is particularly true for software engineering projects. When team members don't
communicate effectively, mistakes can be made, requirements can be misinterpreted, and
problems can go unnoticed until it's too late to fix them.
Technical challenges: Software engineering projects can be extremely complex, and there are
often technical challenges that need to be overcome.
PROJECT MANAGEMENT CONCEPTS
Why Do Major Engineering Undertakings Often Fail?
Changing requirements: It's not uncommon for requirements to change during the course of a
software engineering project.
Poor project management: Effective project management is essential for the success of any
software engineering project. This includes managing budgets, schedules, resources, and risks. If
project management is poor, it can lead to delays, cost overruns, and other problems.
Lack of testing: Testing is a critical part of any software engineering project. Without proper
testing, bugs and other issues can go undetected, leading to problems down the line.
Unrealistic expectations: Finally, it's not uncommon for software engineering projects to fail
because of unrealistic expectations.
PROJECT MANAGEMENT CONCEPTS
PROJECT MANAGEMENT CONCEPTS
Effective Software management encompasses three main areas:
• People
• Problem
• Process People Problem
Process
PROJECT MANAGEMENT CONCEPTS
People
❖ The Players -- It is important to recognize the different categories of people involved in a large
software project.
People
Team Leadership -- A Critical Item
❖ The Problem
❖ The best programmers often make poor team leaders.
❖ Different skills are required.
People
Team Organizational Models
❖ Democratic decentralized (DD). -- Does not have a defined leader. “Task Coordinators” are
appointed to assure that a particular job is to be executed. These are later replaced by other
“Task Coordinators” as new tasks arise.
❖ Controlled decentralized (CD) -- Has a defined leader who coordinates tasks, and secondary
leaders who carry out subtasks. Problem solving is done by the group, implementation is done by
subgroups.
❖ Controlled Centralized (CC) - Top-level problem solving and team coordination managed by the
team leader. The communication between the leader and members is vertical.
PROJECT MANAGEMENT CONCEPTS
People
Project Features Impacting Organization
People
Other Underlying Organizational Factors
• Matrix model
❖The organization has divisions organized by skills, e.g., engineering, safety and mission
assurance (SMA), human factors, etc.
❖Projects “rent” people from the divisions, as needed.
• Issues
❖ Who evaluates person for raises?
❖ Independence of reporting for safety & quality issues?
❖ Who is boss?
PROJECT MANAGEMENT CONCEPTS
People
How Do We Communicate?
Informally - Good phone/electronic service, a clear definition of group interdependencies and good
relationships help encourage communication
Meetings - Regular project meetings help alleviate minor misunderstandings
Workbook - a formal project workbook must be started from the beginning
PROJECT MANAGEMENT CONCEPTS
People
Project Coordination techniques
Formal, impersonal approaches - software engineering documents and deliverables, technical memos,
project milestones, schedules and control tools
Formal interpersonal procedures - quality assurance activities - reviews and design and code inspections
People
A Study on the Impact of
Coordination Techniques
PROJECT MANAGEMENT CONCEPTS
The Problem
❖ Project framework.
❖ Customer communication.
❖ Construction and release -- construct, test, install and provide user support.
• Software project management is an umbrella activity that continues throughout the life cycle of the
system.
• Software management includes people, the problem, and the process.
• The most critical element in all software system projects is the people. The team can have an number
of structures that effect the way work is accomplished.
• However, complete, consistent problem definition and an effective process are also essential
ingredients.
SOFTWARE PROJECT ESTIMATION
Software project estimation is the process of predicting the time, effort, and resources required to
complete a software development project.
Accurate estimation is essential for effective project planning, resource allocation, and budgeting.
SOFTWARE PROJECT ESTIMATION
Even though an estimation is not the final software cost but just a ballpark range of the project –
it’s essential to be as accurate as possible. To be transparent and fair, an estimate should take into
consideration the following points but doesn’t have to be limited to them:
The objective of software project planning is to provide a framework that enables the
manager to make reasonable estimates of resources, cost, and schedule.
RESOURCES
SOFTWARE PROJECT ESTIMATION
Software cost and effort estimation will never be an exact science. Too many variables—
human, technical, environmental, political—can affect the ultimate cost of software and
effort applied to develop it.
1. Delay estimation until late in the project (obviously, we can achieve 100 percent
accurate estimates after the project is complete!).
2. Base estimates on similar projects that have already been completed.
3. Use relatively simple decomposition techniques to generate project cost and effort
estimates.
4. Use one or more empirical models for software cost and effort estimation.
SOFTWARE PROJECT ESTIMATION
DECOMPOSITION TECHNIQUES
• Software project estimation is a form of problem solving, and in most cases, the
problem to be solved (i.e., developing a cost and effort estimate for a software project) is
too complex to be considered in one piece.
1. the degree to which you have properly estimated the size of the product to be built;
2. the ability to translate the size estimate into human effort, calendar time, and dollars
3. the degree to which the project plan reflects the abilities of the software team; and
4. the stability of product requirements and the environment that supports the software
engineering effort.
SOFTWARE PROJECT ESTIMATION
DECOMPOSITION TECHNIQUES
Software Sizing
Project estimate is only as good as the estimate of the size of the work to be accomplished,
sizing represents your first major challenge as a planner.
In the context of project planning, size refers to a quantifiable outcome of the software
project.
If a direct approach is taken, size can be measured in lines of code (LOC).
• Suppose 620 LOC/PM, and $8,000/PM, based upon historical data. Then,
Est. Cost = 33,200*$8,000/620 = $421,000
SOFTWARE PROJECT ESTIMATION
DECOMPOSITION TECHNIQUES
An Example of FP-Based Estimation
Based on an average burdened labor rate of $8000 per month, the total estimated
project cost is $368,000 and the estimated effort is 46 person-months. If desired,
labor rates could be associated with each framework activity or software engineering task and
computed separately.
SOFTWARE PROJECT ESTIMATION
DECOMPOSITION TECHNIQUES
Estimation with Use Cases
Use cases provide a software team with insight into software scope and requirements. However,
developing an estimation approach with use cases is problematic for the following reasons.
• Use cases are described using many different formats and styles—there is no standard form.
• Use cases represent an external view (the user’s view) of the software and can therefore be written at
many different levels of abstraction.
• Use cases do not address the complexity of the functions and features that are described.
• Use cases can describe complex behavior (e.g., interactions) that involve many functions and features.
SOFTWARE PROJECT ESTIMATION
DECOMPOSITION TECHNIQUES
Estimation with Use Cases
Using 620 LOC/pm as the average productivity for systems of this type and a burdened labor rate of
$8000 per month, the cost per line of code is approximately $13. Based on the use-case estimate and
the historical productivity data, the total estimated project cost is $552,000 and the estimated effort
is 68 person/months.
SOFTWARE PROJECT ESTIMATION
EMPIRICAL ESTIMATION MODELS
• Empirical estimation is a technique or model in which empirically derived formulas are used for
predicting the data that are a required and essential part of the software project planning step.
• These techniques are usually based on the data that is collected previously from a project and also based
on some guesses, prior experience with the development of similar types of projects, and assumptions.
A typical estimation model is derived using regression analysis on data collected from past software
projects. The overall structure of such models takes the form
E =A+ Bx(ev)C
A, B, and C are empirically derived constants, E is effort in person-months,
Some examples and ev is the estimation variable
E = 5.2×(KLOC)0.91 Walston-Felix Model
E = 5.5 + 0.73×(KLOC)1.16 Bailey-Basili Model
E = 3.2×(KLOC)1.05 Boehm simple model
E = 5.288×(KLOC)1.047 Doty model for KLOC > 9
E = -13.39 + 0.0545×FP Albrecht & Gaffney
E = 60.62 + 7.728×10-8FP3 Kemerer Model
E = 585.7 + 15.12×FP Albrecht & Gaffney
SOFTWARE PROJECT ESTIMATION
EMPIRICAL ESTIMATION MODELS
The COCOMO II Model (COnstructive COst MOdel)
• The original COCOMO model became one of the most widely used and discussed
software cost estimation models in the industry.
• Application composition model. Used during the early stages of software engineering, when prototyping
of user interfaces, consideration of software and system interaction, assessment of performance, and
evaluation of technology maturity are paramount.
• Early design stage model. Used once requirements have been stabilized and basic software architecture
has been established.
• Post-architecture-stage model. Used during the construction of the software
SOFTWARE PROJECT ESTIMATION
EMPIRICAL ESTIMATION MODELS
The COCOMO II Model (COnstructive COst MOdel)
Like all estimation models for software, the COCOMO II models require sizing information. Three different
sizing options are available as part of the model hierarchy: object points, function points, and lines of
source code.
The COCOMO II application composition model uses object points. The object point is an indirect
software measure that is computed using counts of the number of
(1) Screens (at the user interface),
(2) Reports, and
(3) Components likely to be required to build the application.
SOFTWARE PROJECT ESTIMATION
EMPIRICAL ESTIMATION MODELS
The COCOMO II Model (COnstructive COst MOdel)
The object point count is then determined by multiplying the original number of object instances by the
weighting factor in the figure and summing to obtain a total object point count.
When component-based development or general software reuse is to be applied, the percent of reuse
(%reuse) is estimated and the object point count is adjusted:
To derive an estimate of effort based on the computed NOP value, a “productivity rate” must be derived
Once the productivity rate has been determined, an estimate of project effort is computed using
In more advanced COCOMO II models,12 a variety of scale factors, cost drivers, and adjustment procedures
are required.
SOFTWARE PROJECT ESTIMATION
THE MAKE/BUY DECISION
In many software application areas, it is often more cost effective to acquire rather than develop computer
software.
Software engineering managers are faced with a make/ buy decision that can be further complicated by a
number of acquisition options:
(2) Will the cost of acquisition plus the cost of customization be less than the cost of
developing the software internally?
(3) Will the cost of outside support (e.g., a maintenance contract) be less than the cost of
internal support? These conditions apply for each of the acquisition options.
SOFTWARE PROJECT ESTIMATION
THE MAKE/BUY DECISION
Decision Tree
decision tree for a software based system X. In this case, the software engineering
organization can
(1) build system X from scratch,
(2) reuse existing partial-experience components to construct the system,
(3) buy an available software product and modify it to meet local needs,or
(4) contract the software development to an outside vendor.
SOFTWARE PROJECT ESTIMATION
THE MAKE/BUY DECISION
What is it?
• Selected an appropriate process model,
• identified the software engineering tasks that have to be performed,
• estimated the amount of work and the number of people, know the deadline, you’ve even
considered the risks.
That is, to create a network of software engineering tasks that will enable to get the job done on
time.
Once the network is created, have to assign responsibility for each task, make sure it gets done,
and adapt the network as risks become reality. In a nutshell, that’s software project scheduling
and tracking.
PROJECT SCHEDULING AND TRACKING
Basic problem -- Software is almost always late
• Offer incremental
PROJECT SCHEDULING AND TRACKING
Basic Principles
• Compartmentalization
• Identify task interdependencies
• Allocate time for each task
• Develop feasible schedule
• Define responsibilities
• Define outcomes
• Define milestones
PROJECT SCHEDULING AND TRACKING
Relation Between People vs. Effort
Decreasing the time to complete the project requires more people, but look at the
exponential nature of the relationship!
• Types of projects
– Concept development
– New application development projects
– Application enhancement projects
– Application maintenance projects
– Reengineering projects There can be a progression through these kinds of projects
These can be approached with different levels of rigor:
• casual
• Structured
• Strict
• Quick Reaction
PROJECT SCHEDULING AND TRACKING
Scheduling of a software project does not differ greatly from scheduling of any multitask engineering effort.
• Program evaluation and review technique (PERT) and the critical path method (CPM) are two project
scheduling methods that can be applied to software development.
• Both techniques are driven by information already developed in earlier project planning activities:
estimates of effort, a decomposition of the product function, the selection of the appropriate process
model and task set, and decomposition of the tasks that are selected.
• Interdependencies among tasks may be defined using a task network. Tasks, sometimes called the
project work breakdown structure (WBS), are defined for the product as a whole or for individual
functions.
Both PERT and CPM provide quantitative tools that allow you to
(1) determine the critical path—the chain of tasks that determines the duration of the project,
(2) Establish “most likely” time estimates for individual tasks by applying statistical models, and
(3) calculate “boundary times” that define a time “window” for a particular task.
PROJECT SCHEDULING AND TRACKING
Time-Line Charts
When creating a software project schedule, you begin with a set of tasks (the work breakdown structure). If
automated tools are used, the work breakdown is input as task network or task outline. Effort, duration, and
start date are then input for each task. In addition, tasks may be assigned to specific individuals.
time-line chart, also called a Gantt chart, is generated. A time-line chart can be developed for the
entire project.
PROJECT SCHEDULING AND TRACKING
Time-Line Charts
PROJECT SCHEDULING AND TRACKING
Time-Line Charts
PROJECT SCHEDULING AND TRACKING
What is it?
Risk analysis and management are actions that help a software team to understand and manage
uncertainty. Many problems can plague a software project. A risk is a potential problem—it might happen,
it might not. But, regardless of the outcome, it’s a really good idea to identify it, assess its probability of
occurrence, estimate its impact, and establish a contingency plan should the problem actually occur.
RISK MANAGEMENT
Reactive Risk Strategy: A reactive risk strategy involves responding to risks after they occur. In
this approach, organizations or individuals take actions to mitigate or address risks once they
have already materialized. Reactive strategies are often characterized by a "firefighting"
mentality, where efforts are focused on containing and minimizing the negative impacts of risks.
Proactive Risk Strategy: On the other hand, a proactive risk strategy involves anticipating and
addressing risks before they occur. This approach emphasizes preventive measures and proactive
planning to minimize the likelihood and potential impacts of risks. Proactive strategies aim to
identify and assess risks in advance, implement preventive controls, and develop contingency
plans to effectively manage and mitigate risks.
RISK MANAGEMENT
SOFTWARE RISKS
• Software risks refer to potential threats or uncertainties associated with the development, deployment,
and operation of software systems.
• These risks can arise from various factors, including technical complexities, inadequate planning, human
errors, external dependencies, or changing requirements.
• Managing software risks is crucial to ensure the successful delivery of software projects and the reliable
operation of software systems.
RISK MANAGEMENT
SOFTWARE RISKS
Some common types of software risks include:
Technical Risks: These risks are related to technical challenges and complexities in software development.
They may include issues with software architecture, integration problems, performance bottlenecks,
security vulnerabilities, or compatibility issues.
Requirements Risks: Risks associated with requirements include incomplete, ambiguous, or changing
requirements. Inadequate understanding of user needs and expectations can lead to software that does
not meet desired functionalities or fails to address user requirements effectively.
Schedule and Cost Risks: These risks involve project scheduling and budget constraints. Factors such as
inaccurate estimations, resource constraints, delays in development, or unexpected dependencies can lead
to project delays and cost overruns.
RISK MANAGEMENT
SOFTWARE RISKS
Some common types of software risks include:
Human Risks: Human-related risks encompass factors such as inadequate skills or experience of team
members, poor communication, lack of coordination, or mismanagement. These risks can impact the
quality and timely delivery of software projects.
External Risks: External risks are influenced by factors outside the direct control of the development team.
They may include changes in regulatory requirements, evolving technology standards, legal or compliance
issues, or dependencies on third-party components or services.
Security Risks: Security risks involve vulnerabilities or weaknesses in software systems that can be exploited
by attackers. These risks may lead to unauthorized access, data breaches, or other security incidents,
compromising the confidentiality, integrity, or availability of software and user data.
RISK MANAGEMENT
SOFTWARE RISKS
To manage software risks effectively, organizations employ risk management practices such as risk
identification, assessment, mitigation, and monitoring throughout the software development lifecycle.
This includes proactive measures such as conducting risk assessments, implementing preventive controls,
regularly reviewing and updating risk plans, and adopting best practices for software development, testing,
and security.
By addressing software risks proactively, organizations can minimize the negative impact on software
projects, enhance system reliability, and improve overall stakeholder satisfaction.
RISK MANAGEMENT
SOFTWARE RISKS
Risk identification
Risk identification is the process of systematically identifying and documenting potential risks
that may impact a project, organization, or specific activity.
It is an essential step in the risk management process and involves identifying both internal and
external risks that could affect the achievement of objectives or the successful completion of a
project.
There are two distinct types of risks for each of the categories generic risks and product-specific risks.
Generic risks are a potential threat to every software project.
Product-specific risks can be identified only by those with a clear understanding of the technology, the
people, and the environment that is specific to the software that is to be built.
RISK MANAGEMENT
SOFTWARE RISKS
RISK PROJECTION
Risk mitigation refers to the process of taking proactive measures to reduce or eliminate
potential risks and their impacts. It involves identifying, assessing, and implementing
strategies to minimize the likelihood or severity of risks. The goal of risk mitigation is to
enhance project or organizational resilience and ensure that potential risks are managed
effectively.
RISK MANAGEMENT
SOFTWARE RISKS
RISK MITIGATION, MONITORING, AND MANAGEMENT
Risk-monitoring activities - The project manager monitors factors that may provide an indication of
whether the risk is becoming more or less likely.
• Risk-monitoring activities are essential for effective risk management.
• They involve the ongoing assessment and tracking of identified risks throughout the lifecycle of a
project, process, or organization.
• The purpose of risk monitoring is to stay informed about the current status of risks, identify any
changes or new risks, and take appropriate actions to address them.
RISK MANAGEMENT
SOFTWARE RISKS
RISK MITIGATION, MONITORING, AND MANAGEMENT
Risk management and contingency planning assumes that mitigation efforts have failed and that the risk
has become a reality.
• It involves a systematic approach to understanding and addressing uncertainties that could affect
the achievement of project objectives or organizational goals
• risk management process, organizations can enhance their ability to identify and address potential
risks, minimize negative impacts, and make informed decisions that improve overall project success
and organizational resilience.
RISK MANAGEMENT
SOFTWARE RISKS
THE RMMM PLAN
A risk management strategy can be included in the software project plan, or the risk management steps
can be organized into a separate risk mitigation, monitoring, and management plan (RMMM).
The RMMM plan documents all work performed as part of risk analysis and is used by the project
manager as part of the overall project plan. Rather, each risk is documented individually using a risk
information sheet.
Once RMMM has been documented and the project has begun, risk mitigation and monitoring steps
commence. Risk mitigation is a problem avoidance activity. Risk monitoring is a project tracking activity
with three primary objectives:
(1) to assess whether predicted risks do, in fact, occur;
(2) to ensure that risk aversion steps defined for the risk are being properly applied; and
(3) to collect information that can be used for future risk analysis.
RISK MANAGEMENT
SOFTWARE RISKS
THE RMMM PLAN
MAINTENANCE & REENGINEERING
What is it?
Consider any technology product that has served well. Use it regularly, but it’s getting old. It
breaks too often, takes longer to repair than you’d like, and no longer represents the newest
technology.
What to do? For a time, try to fix it, patch it, even extend its functionality. That’s called
maintenance.
But maintenance becomes increasingly difficult as the years pass. There comes a time when
need to rebuild it. Create a product with added functionality, better performance and
reliability, and improved maintainability. That’s what we call reengineering.
MAINTENANCE & REENGINEERING
Software Maintenance
– Within days, bug reports filter back to the software engineering organization.
– Within weeks, one class of users indicates that the software must be changed so that it can
accommodate the special needs of their environment.
– Within months, another corporate group who wanted nothing to do with the software when
it was released, now recognizes that it may provide them with unexpected benefit.
What is maintainability?
Maintainable software exhibits effective modularity.
• It makes use of design patterns that allow ease of understanding. It has been constructed using well-
defined coding standards and conventions, leading to source code that is self-documenting and
understandable.
• It has undergone a variety of quality assurance techniques that have uncovered potential maintenance
problems before the software is released. It has been created by software engineers who recognize that
they may not be around when changes must be made.
• Therefore, the design and implementation of the software must “assist” the person who is making the
change.
MAINTENANCE & REENGINEERING
SOFTWARE SUPPORTABILITY
“The capability of supporting a software system over its whole product life.
This implies satisfying any necessary needs or requirements, but also the provision of equipment,
support infrastructure, additional software, facilities, manpower, or any other resource required to
maintain the software operational and capable of satisfying its function.
The software should contain facilities to assist support personnel when a defect is encountered in the
operational environment (and make no mistake, defects will be encountered).
MAINTENANCE & REENGINEERING
Reengineering
Reengineering, also known as software reengineering or software system reengineering, is the process of
analyzing and modifying an existing software system to improve its functionality, performance,
maintainability, or other attributes.
It involves making significant changes to the software's structure, architecture, or codebase while
retaining its original functionality and purpose.
Reengineering is typically done to address issues such as software aging, technological obsolescence,
poor maintainability, or evolving business requirements.
MAINTENANCE & REENGINEERING
Reengineering
Inventory analysis. Every software organization should have an inventory of all applications. The inventory
can be nothing more than a spreadsheet model containing information that provides a detailed
description (e.g., size, age, business criticality) of every active application.
By sorting this information according to business criticality, longevity, current maintainability and
supportability, and other locally important criteria, candidates for reengineering appear.
• It involves making changes to the document's headings, sections, paragraphs, formatting, and overall
flow to enhance readability and facilitate understanding.
• Document restructuring is often done to improve the document's logical structure, navigation, and
accessibility for the intended audience
• By restructuring a document, it becomes more organized, user-friendly, and effective in conveying
information to the intended audience.
• It improves readability, facilitates comprehension, and enhances the overall impact and usability of the
document.
MAINTENANCE & REENGINEERING
Reengineering
Reverse engineering
• Reverse engineering is the process of analyzing and understanding the design, structure, and
functionality of a product, system, or software by examining its components, behavior, and information
flow.
• It involves working backward from the end product to uncover its internal workings, often without
access to the original design documentation or source code.
• Reverse engineering is a process of design recovery.
• Reverse engineering tools extract data, architectural, and procedural design information from an existing
program.
MAINTENANCE & REENGINEERING
Reengineering
Code restructuring
• The most common type of reengineering (actually, the use of the term reengineering is questionable in
this case) is code restructuring.
• Some legacy systems have a relatively solid program architecture, but individual modules were coded
in a way that makes them difficult to understand, test, and maintain. In such cases, the code within the
suspect modules can be restructured.
• To accomplish this activity, the source code is analyzed using a restructuring tool.
• Violations of structured programming constructs are noted and code is then restructured (this can be
done automatically) or even rewritten in a more modern programming language.
• The resultant restructured code is reviewed and tested to ensure that no anomalies have been
introduced. Internal code documentation is updated.
MAINTENANCE & REENGINEERING
Reengineering
Data restructuring.
• A program with weak data architecture will be difficult to adapt and enhance. In fact, for many
applications, information architecture has more to do with the long-term viability of a program than the
source code itself.
• Data restructuring is a full-scale reengineering activity. In most cases, data restructuring begins with a
reverse engineering activity.
• Current data architecture is dissected, and necessary data models are defined. Data objects and
attributes are identified, and existing data structures are reviewed for quality.
• When data structure is weak the data are reengineered.
• Because data architecture has a strong influence on program architecture and the algorithms that
populate it, changes to the data will invariably result in either architectural or code-level changes.
MAINTENANCE & REENGINEERING
Reengineering
Forward engineering
• Forward engineering, also known as forward design, is the traditional process of designing, developing,
and implementing a new product, system, or software from scratch.
• It involves starting with a conceptual idea or set of requirements and then progressing through various
stages to create a final product that meets those requirements.
• Forward engineering not only recovers design information from existing software but uses this
information to alter or reconstitute the existing system in an effort to improve its overall quality.
• In most cases, reengineered software reimplements the function of the existing system and also adds
new functions and/or improves overall performance.
THANK YOU