0% found this document useful (0 votes)
12 views33 pages

Chapter 7 Maintainence and Quality

System Configuration Management (SCM) is essential for controlling changes in software systems, ensuring they meet evolving requirements while maintaining quality and stability. It involves processes such as identification, version control, change control, auditing, and reporting, which facilitate effective collaboration and risk management. The Capability Maturity Model (CMM) provides a framework for improving software development processes through five maturity levels, emphasizing resource optimization, quality management, and continuous improvement.

Uploaded by

yashkamra
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
12 views33 pages

Chapter 7 Maintainence and Quality

System Configuration Management (SCM) is essential for controlling changes in software systems, ensuring they meet evolving requirements while maintaining quality and stability. It involves processes such as identification, version control, change control, auditing, and reporting, which facilitate effective collaboration and risk management. The Capability Maturity Model (CMM) provides a framework for improving software development processes through five maturity levels, emphasizing resource optimization, quality management, and continuous improvement.

Uploaded by

yashkamra
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 33

System configuration management – Software Engineering

Whenever software is built, there is always scope for improvement and those
improvements bring picture changes. Changes may be required to modify or update
any existing solution or to create a new solution for a problem. Requirements keep
on changing daily so we need to keep on upgrading our systems based on the
current requirements and needs to meet desired outputs. Changes should be
analyzed before they are made to the existing system, recorded before they are
implemented, reported to have details of before and after, and controlled in a
manner that will improve quality and reduce error. This is where the need for
System Configuration Management comes. System Configuration Management
(SCM) is an arrangement of exercises that controls change by recognizing the items
for change, setting up connections between those things, making/characterizing
instruments for overseeing diverse variants, controlling the changes being executed
in the current framework, inspecting and revealing/reporting on the changes made.
It is essential to control the changes because if the changes are not checked
legitimately then they may wind up undermining a well-run programming. In this
way, SCM is a fundamental piece of all project management activities.
Processes involved in SCM – Configuration management provides a disciplined
environment for smooth control of work products. It involves the following activities:
1. Identification and Establishment – 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).
Establishing relationships among items, creating a mechanism to manage
multiple levels of control and procedure for the change management system.
2. Version control – Creating versions/specifications of the existing product to
build new products with the help of the SCM system. A description of the
version is given below:
Suppose after some changes, the version of the configuration object changes
from 1.0 to 1.1. Minor corrections and changes result in versions 1.1.1 and
1.1.2, which is followed by a major update that is object 1.2. The
development of object 1.0 continues through 1.3 and 1.4, but finally, a
noteworthy change to the object results in a new evolutionary path, version
2.0. Both versions are currently supported.
3. Change control – Controlling changes to Configuration items (CI). The
change control process is explained in Figure below:
A change request (CR) is submitted and evaluated to assess technical merit,
potential side effects, the overall impact on other configuration objects and
system functions, and the projected cost of the change. The results of the
evaluation are presented as a change report, which is used by a change
control board (CCB) —a person or group who makes a final decision on the
status and priority of the change. An engineering change Request (ECR) is
generated for each approved change. Also, CCB notifies the developer in case
the change is rejected with proper reason. The ECR describes the change to
be made, the constraints that must be respected, and the criteria for review
and audit. The object to be changed is “checked out” of the project database,
the change is made, and then the object is tested again. The object is then
“checked in” to the database and appropriate version control mechanisms
are used to create the next version of the software.
4. Configuration auditing – 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. The
audit confirms the completeness, correctness, and consistency of items in the
SCM system and tracks action items from the audit to closure.
5. Reporting – Providing accurate status and current configuration data to
developers, testers, end users, customers, and stakeholders through admin
guides, user guides, FAQs, Release notes, Memos, Installation Guide,
Configuration guides, etc.
System Configuration Management (SCM) is a software engineering practice that
focuses on managing the configuration of software systems and ensuring that
software components are properly controlled, tracked, and stored. It is a critical
aspect of software development, as it helps to ensure that changes made to a
software system are properly coordinated and that the system is always in a known
and stable state.
SCM involves a set of processes and tools that help to manage the different
components of a software system, including source code, documentation, and other
assets. It enables teams to track changes made to the software system, identify
when and why changes were made, and manage the integration of these changes
into the final product.
Importance of Software Configuration Management
1. Effective Bug Tracking: Linking code modifications to issues that have been
reported, makes bug tracking more effective.
2. Continuous Deployment and Integration: SCM combines with continuous
processes to automate deployment and testing, resulting in more dependable
and timely software delivery.
3. Risk management: SCM lowers the chance of introducing critical flaws by
assisting in the early detection and correction of problems.
4. Support for Big Projects: Source Code Control (SCM) offers an orderly method
to handle code modifications for big projects, fostering a well-organized
development process.
5. Reproducibility: By recording precise versions of code, libraries, and
dependencies, source code versioning (SCM) makes builds repeatable.
6. Parallel Development: SCM facilitates parallel development by enabling
several developers to collaborate on various branches at once.
Why need for System configuration management?
1. Replicability: Software version control (SCM) makes ensures that a software
system can be replicated at any stage of its development. This is necessary
for testing, debugging, and upholding consistent environments in production,
testing, and development.
2. Identification of Configuration: Source code, documentation, and executable
files are examples of configuration elements that SCM helps in locating and
labeling. The management of a system’s constituent parts and their
interactions depend on this identification.
3. Effective Process of Development: By automating monotonous processes like
managing dependencies, merging changes, and resolving disputes, SCM
simplifies the development process. Error risk is decreased and efficiency is
increased because of this automation.
Key objectives of SCM
1. Control the evolution of software systems: SCM helps to ensure that
changes to a software system are properly planned, tested, and integrated
into the final product.
2. Enable collaboration and coordination: SCM helps teams to collaborate
and coordinate their work, ensuring that changes are properly integrated and
that everyone is working from the same version of the software system.
3. Provide version control: SCM provides version control for software
systems, enabling teams to manage and track different versions of the
system and to revert to earlier versions if necessary.
4. Facilitate replication and distribution: SCM helps to ensure that software
systems can be easily replicated and distributed to other environments, such
as test, production, and customer sites.
5. SCM is a critical component of software development, and effective SCM
practices can help to improve the quality and reliability of software systems,
as well as increase efficiency and reduce the risk of errors.
The main advantages of SCM
1. Improved productivity and efficiency by reducing the time and effort required
to manage software changes.
2. Reduced risk of errors and defects by ensuring that all changes were properly
tested and validated.
3. Increased collaboration and communication among team members by
providing a central repository for software artifacts.
4. Improved quality and stability of software systems by ensuring that all
changes are properly controlled and managed.
The main disadvantages of SCM
1. Increased complexity and overhead, particularly in large software systems.
2. Difficulty in managing dependencies and ensuring that all changes are
properly integrated.
3. Potential for conflicts and delays, particularly in large development teams
with multiple contributors.
Capability Maturity Model (CMM) – Software Engineering
The Capability Maturity Model (CMM) is a tool used to improve and refine software
development processes. It provides a structured way for organizations to assess
their current practices and identify areas for improvement. CMM consists of five
maturity levels: initial, repeatable, defined, managed, and optimizing. By following
the CMM, organizations can systematically improve their software development
processes, leading to higher-quality products and more efficient project
management.
What is the Capability Maturity Model (CMM)
Capability Maturity Model (CMM) was developed by the Software Engineering
Institute (SEI) at Carnegie Mellon University in 1987. It is not a software process
model. It is a framework that is used to analyze the approach and techniques
followed by any organization to develop software products. It also provides
guidelines to enhance further the maturity of the process used to develop those
software products.
It is based on profound feedback and development practices adopted by the most
successful organizations worldwide. This model describes a strategy for software
process improvement that should be followed by moving through 5 different levels.
Each level of maturity shows a process capability level. All the levels except level 1
are further described by Key Process Areas (KPA).
Importance of Capability Maturity Model
 Optimization of Resources: CMM helps businesses make the best use of all
of their resources, including money, labor, and time. Organizations can
improve the effectiveness of resource allocation by recognizing and getting
rid of unproductive practices.
 Comparing and Evaluating: A formal framework for benchmarking and
self-evaluation is offered by CMM. Businesses can assess their maturity
levels, pinpoint their advantages and disadvantages, and compare their
performance to industry best practices.
 Management of Quality: CMM emphasizes quality management heavily.
The framework helps businesses apply best practices for quality assurance
and control, which raises the quality of their goods and services.
 Enhancement of Process: CMM gives businesses a methodical approach to
evaluate and enhance their operations. It provides a road map for gradually
improving processes, which raises productivity and usefulness.
 Increased Output: CMM seeks to boost productivity by simplifying and
optimizing processes. Organizations can increase output and efficiency
without compromising quality as they go through the CMM levels.
Principles of Capability Maturity Model (CMM)
 People’s capability is a competitive issue. Competition arises when different
organizations are performing the same task (such as software development).
In such a case, the people of an organization are sources of strategy and
skills, which in turn results in better performance of the organization.
 The people’s capability should be defined by the business objectives of the
organization.
 An organization should invest in improving the capabilities and skills of the
people as they are important for its success.
 The management should be responsible for enhancing the capability of the
people in the organization.
 The improvement in the capability of people should be done as a process.
This process should incorporate appropriate practices and procedures.
 The organization should be responsible for providing improvement
opportunities so that people can take advantage of them.
 Since new technologies and organizational practices emerge rapidly,
organizations should continually improve their practices and develop the
abilities of people.
Shortcomings of the Capability Maturity Model (CMM)
 It encourages the achievement of a higher maturity level in some cases by
displacing the true mission, which is improving the process and overall
software quality.
 It only helps if it is put into place early in the software development process.
 It has no formal theoretical basis and in fact, is based on the experience of
very knowledgeable people.
 It does not have good empirical support and this same empirical support
could also be constructed to support other models.
 Difficulty in measuring process improvement: The SEI/CMM model may not
provide an accurate measure of process improvement, as it relies on self-
assessment by the organization and may not capture all aspects of the
development process.
 Focus on documentation rather than outcomes: The SEI/CMM model may
focus too much on documentation and adherence to procedures, rather than
on actual outcomes such as software quality and customer satisfaction.
 May not be suitable for all types of organizations: The SEI/CMM model may
not be suitable for all kinds of organizations, particularly those with smaller
development teams or those with less structured development processes.
 May not keep up with rapidly evolving technologies: The SEI/CMM model may
not be able to keep up with rapidly evolving technologies and development
methodologies, which could limit its usefulness in certain contexts.
 Lack of agility: The SEI/CMM model may not be agile enough to respond
quickly to changing business needs or customer requirements, which could
limit its usefulness in dynamic and rapidly changing environments.
Key Process Areas (KPA)
Each of these KPA (Key Process Areas) defines the basic requirements that should
be met by a software process to satisfy the KPA and achieve that level of maturity.
Conceptually, key process areas form the basis for management control of the
software project and establish a context in which technical methods are applied,
work products like models, documents, data, reports, etc. are produced, milestones
are established, quality is ensured and change is properly managed.
Levels of Capability Maturity Model (CMM)
There are 5 levels of Capability Maturity Models. We will discuss each one of them in
detail.
CMM
Level-1: Initial
 No KPIs defined.
 Processes followed are Adhoc and immature and are not well defined.
 Unstable environment for software development.
 No basis for predicting product quality, time for completion, etc.
 Limited project management capabilities, such as no systematic tracking of
schedules, budgets, or progress.
 We have limited communication and coordination among team members and
stakeholders.
 No formal training or orientation for new team members.
 Little or no use of software development tools or automation.
 Highly dependent on individual skills and knowledge rather than standardized
processes.
 High risk of project failure or delays due to a lack of process control and
stability.
Level-2: Repeatable
 Focuses on establishing basic project management policies.
 Experience with earlier projects is used for managing new similar-natured
projects.
 Project Planning- It includes defining resources required, goals, constraints,
etc. for the project. It presents a detailed plan to be followed systematically
for the successful completion of good-quality software.
 Configuration Management- The focus is on maintaining the performance
of the software product, including all its components, for the entire lifecycle.
 Requirements Management- It includes the management of customer
reviews and feedback which result in some changes in the requirement set. It
also consists of accommodation of those modified requirements.
 Subcontract Management- It focuses on the effective management of
qualified software contractors i.e. it manages the parts of the software
developed by third parties.
 Software Quality Assurance- It guarantees a good quality software
product by following certain rules and quality standard guidelines while
developing.
Level-3: Defined
 At this level, documentation of the standard guidelines and procedures takes
place.
 It is a well-defined integrated set of project-specific software engineering and
management processes.
 Peer Reviews: In this method, defects are removed by using several review
methods like walkthroughs, inspections, buddy checks, etc.
 Intergroup Coordination: It consists of planned interactions between
different development teams to ensure efficient and proper fulfillment of
customer needs.
 Organization Process Definition: Its key focus is on the development and
maintenance of standard development processes.
 Organization Process Focus: It includes activities and practices that
should be followed to improve the process capabilities of an organization.
 Training Programs: It focuses on the enhancement of knowledge and skills
of the team members including the developers and ensuring an increase in
work efficiency.
Level-4: Managed
 At this stage, quantitative quality goals are set for the organization for
software products as well as software processes.
 The measurements made help the organization to predict the product and
process quality within some limits defined quantitatively.
 Software Quality Management: It includes the establishment of plans and
strategies to develop quantitative analysis and understanding of the
product’s quality.
 Quantitative Management: It focuses on controlling the project
performance quantitatively.
Level-5: Optimizing
 This is the highest level of process maturity in CMM and focuses on
continuous process improvement in the organization using quantitative
feedback.
 The use of new tools, techniques, and evaluation of software processes is
done to prevent the recurrence of known defects.
 Process Change Management: Its focus is on the continuous improvement
of the organization’s software processes to improve productivity, quality, and
cycle time for the software product.
 Technology Change Management: It consists of the identification and use
of new technologies to improve product quality and decrease product
development time.
 Defect Prevention It focuses on the identification of causes of defects and
prevents them from recurring in future projects by improving project-defined
processes.

What is Software Maintenance?


Software maintenance is a continuous process that occurs throughout the entire life
cycle of the software system.
 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.
 This can include fixing bugs, adding new features, improving performance, or
updating the software to work with new hardware or software systems.
 It is also important to consider the cost and effort required for software
maintenance when planning and developing a 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.
 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.
Several Key Aspects of Software Maintenance
1. Bug Fixing: The process of finding and fixing errors and problems in the
software.
2. Enhancements: The process of adding new features or improving existing
features to meet the evolving needs of the users.
3. Performance Optimization: The process of improving the speed, efficiency,
and reliability of the software.
4. Porting and Migration: The process of adapting the software to run on new
hardware or software platforms.
5. Re-Engineering: The process of improving the design and architecture of
the software to make it more maintainable and scalable.
6. Documentation: The process of creating, updating, and maintaining the
documentation for the software, including user manuals, technical
specifications, and design documents.
Several Types of Software Maintenance
1. Corrective Maintenance: This involves fixing errors and bugs in the
software system.
2. 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.
3. 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.
4. Perfective Maintenance: This involves improving functionality,
performance, and reliability, and restructuring the software system to
improve changeability.
5. 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.
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 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.
 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
 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.
 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.
Cost of software maintenance Include:
 Labor costs: This includes the cost of the personnel who perform the
maintenance, such as software developers, engineers, and technicians.
Hardware and software costs: This includes the cost of hardware and software
tools used for maintenance, such as servers, software licenses, and
development tools.
 Training costs: This includes the cost of training personnel to perform
maintenance tasks, such as software developers, engineers, and technicians.
The effort of software maintenance can include:
 Time and resources: This includes the time and resources required to
perform the maintenance, such as the time required to identify and fix the
problem, test the solution, and implement the solution.
 Communication and coordination: This includes the effort required to
communicate and coordinate with stakeholders, such as customers and other
teams.
 Testing and validation: This includes the effort required to test and
validate the solution to ensure that it is working correctly and that it does not
cause any new problems.
The cost and effort of software maintenance can be reduced by:
 Adopting a proactive maintenance strategy that includes regular testing,
monitoring, and updating of the system to prevent issues from occurring
Automating repetitive and routine tasks
 Using modern development methodologies such as Agile, DevOps and
Continuous Integration and Continuous Deployment (CI/CD)
 Using tools and technologies that can help to improve the efficiency of
maintenance tasks, such as automated testing tools and configuration
management tools
Having a clear and well-defined maintenance plan that includes regular
maintenance activities, such as testing, backup, and bug fixing.
 It’s important to note that software maintenance is an ongoing process, and
the cost and effort of maintenance will vary over time as the system evolves
and new requirements are added.
Categories of Software Maintenance:
1. Corrective Maintenance
2. Adaptive Maintenance
3. Perfective Maintenance
4. Preventive Maintenance
The cost of system maintenance represents a large proportion of the budget
of most organizations that use a software system. More than 65% of software
lifecycle cost is expanded 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.
Software maintenance cost factors:
The key factors that distinguish development and maintenance and which
lead to higher maintenance cost are divided into two subcategories Which are
Non-Technical factors and Technical factors.
1. Complexity of the software system: The more complex the software
system, the more effort and resources will be required to maintain it.
2. Size of the software system: The larger the software system, the more
effort and resources will be required to maintain it.
3. Number of users: The more users a software system has, the more effort
and resources will be required to maintain it.
4. Change rate of the software system: The more frequently the software
system changes, the more effort and resources will be required to maintain it.
5. Availability of personnel: The availability of personnel with the necessary
skills and experience to maintain the software system can affect the cost of
maintenance.
6. Tools and technologies: The cost of maintenance can be affected by the
tools and technologies used to maintain the software system, such as
automated testing tools and configuration management tools.
7. Maintenance plan: Having a clear and well-defined maintenance plan can
help to reduce the cost of maintenance by allowing for more efficient use of
resources.
8. Age of the software system: Older systems may require more effort to
maintain as the technology may be outdated.
9. Type of maintenance: The type of maintenance being performed can also
affect the cost, for example, corrective maintenance is typically less
expensive than perfective maintenance.
10.Location: The cost of maintenance can be affected by the location of the
system and the cost of labor in that area.
Non-Technical factors:
The Non-Technical factors include:
1. Application Domain
2. Staff stability
3. Program lifetime
4. Dependence on External Environment
5. Hardware stability
Technical factors:
Technical factors include the following:
1. module independence
2. Programming language
3. Programming style
4. Program validation and testing
5. Documentation
6. Configuration management techniques
Efforts expanded on maintenance may be divided into productivity activities
(for example analysis and evaluation, design and modification, coding). The
following expression provides a module of maintenance efforts:
M = P + Ke(C - D)
where,
M: Total effort expanded on the maintenance.
P: Productive effort.
K: An empirical constant.
C: A measure of complexity that can be attributed to a lack of good design
and documentation.
D: A measure of the degree of familiarity with the software.

Verification
Verification is the process of checking that software achieves its goal without any
bugs. It is the process to ensure whether the product that is developed is right or
not. It verifies whether the developed product fulfills the requirements that we have.
Verification is simply known as Static Testing.
Static Testing
Verification Testing is known as Static Testing and it can be simply termed as
checking whether we are developing the right product or not and also whether our
software is fulfilling the customer’s requirement or not. Here are some of the
activities that are involved in verification.
 Inspections
 Reviews
 Walkthroughs
 Desk-checking

Verification and Validation


Validation
Validation is the process of checking whether the software product is up to the mark
or in other words product has high-level requirements. It is the process of checking
the validation of the product i.e. it checks what we are developing is the right
product. it is a validation of actual and expected products. Validation is simply
known as Dynamic Testing.
Dynamic Testing
Validation Testing is known as Dynamic Testing in which we examine whether we
have developed the product right or not and also about the business needs of the
client. Here are some of the activities that are involved in Validation.
1. Black Box Testing
2. White Box Testing
3. Unit Testing
4. Integration Testing
What is Software Quality?
Software Quality shows how good and reliable a product is. To convey an associate
degree example, think about functionally correct software. It performs all functions
as laid out in the SRS document. But, it has an associate degree virtually unusable
program. even though it should be functionally correct, we tend not to think about it
to be a high-quality product.
Another example is also that of a product that will have everything that the users
need but has an associate degree virtually incomprehensible and not maintainable
code. Therefore, the normal construct of quality as “fitness of purpose” for code
merchandise isn’t satisfactory.
Factors of Software Quality
The modern read of high-quality associates with software many quality factors like
the following:
1. Portability: A software is claimed to be transportable, if it may be simply
created to figure in several package environments, in several machines, with
alternative code merchandise, etc.
2. Usability: A software has smart usability if completely different classes of
users (i.e. knowledgeable and novice users) will simply invoke the functions
of the merchandise.
3. Reusability: A software has smart reusability if completely different modules
of the merchandise will simply be reused to develop new merchandise.
4. Correctness: Software is correct if completely different needs as laid out in
the SRS document are properly enforced.
5. Maintainability: A software is reparable, if errors may be simply corrected
as and once they show up, new functions may be simply added to the
merchandise, and therefore the functionalities of the merchandise may be
simply changed, etc
6. Reliability: Software is more reliable if it has fewer failures. Since software
engineers do not deliberately plan for their software to fail, reliability depends
on the number and type of mistakes they make. Designers can improve
reliability by ensuring the software is easy to implement and change, by
testing it thoroughly, and also by ensuring that if failures occur, the system
can handle them or can recover easily.
7. Efficiency. The more efficient software is, the less it uses of CPU-time,
memory, disk space, network bandwidth, and other resources. This is
important to customers in order to reduce their costs of running the software,
although with today’s powerful computers, CPU time, memory and disk usage
are less of a concern than in years gone by.
Software Quality Management System
Software Quality Management System contains the methods that are used by the
authorities to develop products having the desired quality.
Some of the methods are:
 Managerial Structure: Quality System is responsible for managing the
structure as a whole. Every Organization has a managerial structure.
 Individual Responsibilities: Each individual present in the organization
must have some responsibilities that should be reviewed by the top
management and each individual present in the system must take this
seriously.
 Quality System Activities: The activities which each quality system must
have been
o Project Auditing.

o Review of the quality system.

o It helps in the development of methods and guidelines.

Evolution of Quality Management System


Quality Systems are basically evolved over the past some years. The evolution of a
Quality Management System is a four-step process.
1. Inception: Product inspection task provided an instrument for quality control
(QC).
2. Quality Control: The main task of quality control is to detect defective
devices, and it also helps in finding the cause that leads to the defect. It also
helps in the correction of bugs.
3. Quality Assurance: Quality Assurance helps an organization in making good
quality products. It also helps in improving the quality of the product by
passing the products through security checks.
4. Total Quality Management (TQM): Total Quality
Management(TQM) checks and assures that all the procedures must be
continuously improved regularly through process measurements.
Evolution of Quality Management System
What is ISO/IEC 9126?
ISO/IEC 9126 is an international standard proposed to make sure ‘quality of all
software-intensive products’ which includes a system like safety-critical where
in case of failure of software lives will be in
jeopardy. ISO i.e. International Organization for
Standardization and IEC i.e. International Electrotechnical Commission have
developed ISO/IEC 9126 standards for software engineering → Product Quality to
provide an all-inclusive specification and evaluation model for the quality of the
software product.
Parts of ISO/IEC 9126
The standard is divided into 4 parts as depicted in the following figure:
Parts of Standard
1. ISO/IEC 9126-1: Quality Model
2. ISO/IEC 9126-2: External Metrices
3. ISO/IEC 9126-3: Internal Metrices
4. ISO/IEC 9126-4: Quality in use Matrices
Quality Model
Quality Model describes the quality model framework which explains relationships
between different approaches to quality as well as identifying quality characteristics
and sub-characteristics of software products.
Classification of Quality Model
Furthermore, the first part i.e. the Quality model is concerned classified into two
categories as depicted in the following figure:

Characteristics of Quality Model


Internal External Quality Part
Internal External Quality Part determines the quality of a software product through
six characteristics which are Functionality, Reliability, Usability, Efficiency,
Maintainability, and Portability.
Functionality
The functions are those that will satisfy implied needs.
 Suitability
 Accuracy
 Interoperability
 Security
 Functionality Compliance
Reliability
A set of attributes that will bear on the capability of software to maintain the level of
performance.
 Maturity
 Fault Tolerance
 Recoverability
 Reliability Compliance
Usability
A set of attributes that bear on the effort needed for use by an implied set of users.
 Understandability
 Learnability
 Operability
 Attractiveness
 Usability Compliance
Efficiency
A set of attributes that bear on the relationship between the level of performance of
the software under stated conditions.
 Time Behavior
 Resource Utilization
 Efficiency Compliance
Maintainability
A set of attributes that bear on the effort needed to make specified modifications.
 Analyzability
 Changeability
 Stability
 Testability
 Maintainability Compliance
Portability
A set of attributes that bear on the ability of software to be transferred from one
environment to another.
 Adaptability
 Installability
 Co-existence
 Replaceability
 Portability Compliance
Quality in Use Model
It identifies the four quality characteristics.
 Effectiveness
 Productivity
 Safety
 Satisfaction
External Metrics
External Metrices is used to describe external metrics that are used to measure
characteristics and sub-characteristics which are identified in quality model.
Internal Metrics
Internal Metrices is used to describe internal metrics that are used to measure
characteristics and sub-characteristics which are identified in quality model.
Quality in use metrics
Quality in use metrices is used to identify metrics that are used to measure the
effects of combined quality characteristics for users.
History of ISO/IEC 9126
Below are some points related to history of ISO/IEC 9126
 Release date of ISO/IEC 9126: December 19, 1991.
 ISO/IEC 9126:2001 (four parts, 9126–1 to 9126–4) took the place of ISO/IEC
9126:1991 on June 15, 2001.
 ISO/IEC 25010:2011 Systems and software engineering – Systems and
software Quality Requirements and Evaluation (SQuaRE) – System and
software quality models took the role of ISO/IEC 9126 on March 1, 2011.
“Security” and “compatibility” were introduced as primary features in
comparison to 9126.
What is McCall’s Software Quality Model?
McCall’s Software Quality Model was introduced in 1977. This model is
incorporated with many attributes, termed software factors, which influence
software. The model distinguishes between two levels of quality attributes:
 Quality Factors
 Quality Criteria
Quality Factors: The higher-level quality attributes that can be accessed directly
are called quality factors. These attributes are external. The attributes at this level
are given more importance by the users and managers.
Quality Criteria: The lower or second-level quality attributes that can be accessed
either subjectively or objectively are called Quality Criteria. These attributes are
internal. Each quality factor has many second-level quality attributes or quality
criteria.
Example: The usability quality factor is divided into operability, training,
communicativeness, input/output volume, and input/output rate. This model
classifies all software requirements into 11 software quality factors. The 11 factors
are organized into three product quality factors: Product Operation, Product
Revision, and Product Transition.

McCall’s Software Quality Model Triangle


Factors of Product Quality
Below are the factors of Product Quality, that are discussed in detail.
 Product Operation
 Product Revision
 Product Transition
Factors of Product Quality
Product Operation
Product Operation includes five software quality factors, which are related to the
requirements that directly affect the operation of the software such as operational
performance, convenience, ease of usage, and correctness. These factors help in
providing a better user experience.
 Correctness: The extent to which software meets its requirements
specification.
 Efficiency: The number of hardware resources and code the software, needs
to perform a function.
 Integrity: The extent to which the software can control an unauthorized
person from accessing the data or software.
 Reliability: The extent to which software performs its intended functions
without failure.
 Usability: The extent of effort required to learn, operate, and understand the
functions of the software.
Product Revision
Product Revision includes three software quality factors, which are required for
testing and maintenance of the software. They provide ease of maintenance,
flexibility, and testing efforts to support the software to be functional according to
the needs and requirements of the user in the future.
 Maintainability: The effort required to detect and correct an error during
maintenance.
 Flexibility: The effort needed to improve an operational software program.
 Testability: The effort required to verify software to ensure that it meets the
specified requirements.
Product Transition
Product Transition includes three software quality factors, that allow the software to
adapt to the change of environments in the new platform or technology from the
previous.
 Portability: The effort required to transfer a program from one platform to
another.
 Re-usability: The extent to which the program’s code can be reused in other
applications.
 Interoperability: The effort required to integrate two systems.
What is Software Crisis?
Software Crisis is a term used in computer science for the difficulty of writing
useful and efficient computer programs in the required time. The software crisis was
due to using the same workforce, same methods, and same tools even though
rapidly increasing software demand, the complexity of software, and software
challenges. With the increase in software complexity, many software problems
arose because existing methods were insufficient.
Suppose we use the same workforce, same methods, and same tools after the fast
increase in software demand, software complexity, and software challenges. In that
case, there arise some issues like software budget problems, software efficiency
problems, software quality problems, software management, and delivery problems,
etc. This condition is called a Software Crisis.
Software Crisis
Causes of Software Crisis
Following are the causes of Software Crisis:
 The cost of owning and maintaining software was as expensive as developing
the software.
 At that time Projects were running overtime.
 At that time Software was very inefficient.
 The quality of the software was low quality.
 Software often did not meet user requirements.
 The average software project overshoots its schedule by half.
 At that time Software was never delivered.
 Non-optimal resource utilization.
 Challenging to alter, debug, and enhance.
 The software complexity is harder to change.
Factors Contributing to Software Crisis
Factor Contributing to Software Crisis are:
 Poor project management.
 Lack of adequate training in software engineering.
 Less skilled project members.
 Low productivity improvements.
Solution of Software Crisis:
There is no single solution to the crisis. One possible solution to a software crisis
is Software Engineering because software engineering is a systematic, disciplined,
and quantifiable approach. For preventing software crises, there are some
guidelines:
 Reduction in software over budget.
 The quality of the software must be high.
 Less time is needed for a software project.
 Experienced and skilled people working on the software project.
 Software must be delivered.
 Software must meet user requirements.

You might also like