0% found this document useful (0 votes)
9 views3 pages

Understanding Software Types and Maintenance

Software is a set of instructions that enables computers to perform tasks and can be categorized into system and application software. High-quality software possesses qualities such as correctness, reliability, efficiency, usability, maintainability, portability, scalability, reusability, security, and robustness. Software maintenance is crucial for correcting faults and adapting to changes, and it includes corrective, adaptive, perfective, and preventive maintenance, while requirements specification and testing ensure that software meets user needs and performs as intended.

Uploaded by

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

Understanding Software Types and Maintenance

Software is a set of instructions that enables computers to perform tasks and can be categorized into system and application software. High-quality software possesses qualities such as correctness, reliability, efficiency, usability, maintainability, portability, scalability, reusability, security, and robustness. Software maintenance is crucial for correcting faults and adapting to changes, and it includes corrective, adaptive, perfective, and preventive maintenance, while requirements specification and testing ensure that software meets user needs and performs as intended.

Uploaded by

Debadatta Dash
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Software is a set of instructions, data, or programs used to operate computers and perform specific tasks.

It is the
non-tangible component of a computer system that enables hardware to function and helps users interact with the
machine effectively. Software can be categorized into system software, which manages the system resources and
hardware (like operating systems), and application software, which helps users perform tasks (like word processors
and web browsers).

Good software possesses several important qualities. Firstly, correctness ensures that the software performs its
intended functions accurately. Reliability means the software operates consistently and produces stable results
even under unexpected conditions. Efficiency refers to the optimal use of system resources such as memory and
processing power. A software must also have usability, meaning it should have an intuitive and user-friendly
interface. Maintainability is crucial as it allows the software to be easily updated or modified when requirements
change or issues arise. Furthermore, portability ensures that the software can run on different platforms with
minimal adjustments. Scalability allows the software to handle growing amounts of work or expand in functionality
without needing a complete redesign. Reusability indicates that components of the software can be used in other
programs, saving time and effort in future development. Security is essential to protect the software and user data
from threats and unauthorized access. Lastly, robustness ensures the software can handle incorrect or unexpected
inputs gracefully without crashing. All these qualities contribute to the development of high-quality, reliable, and
user-centered software.

A program is a set of instructions written in a programming language to perform a specific task or solve a particular
problem. It is usually developed for individual or internal use and often has a limited scope. Programs are typically
simple, created by a single developer or a small team, and may not include detailed documentation or user
interfaces. Testing in programs is often minimal, and they may lack features like error handling or security measures.
Programs are not generally intended for public release, and they usually do not receive regular updates or customer
support.

A product, on the other hand, is a complete, polished software application developed for use by a broad audience
or for commercial purposes. It includes not just the core functionality, but also user interfaces, thorough
documentation, installation support, and often customer service. Products are built with quality, performance, and
user experience in mind. They undergo extensive testing and are designed to meet the needs of multiple users or
businesses. Unlike simple programs, software products are maintained regularly, with updates, bug fixes, and new
features added over time to improve performance and user satisfaction.

Definition of Software Maintenance:

Software maintenance is the process of modifying and updating software applications after delivery to correct
faults, improve performance, or adapt the product to a changed environment. It ensures that the software
continues to function correctly and efficiently over time.

Software maintenance is a critical phase in the software development life cycle (SDLC) and typically consumes more
effort and cost than the initial development.

Types of Software Maintenance::- Corrective Maintenance:-This involves fixing errors or bugs that are discovered
in the software after it has been deployed. These issues may be functional errors, logic errors, or design flaws that
affect the normal operation of the [Link]: Fixing a login error where the system does not accept valid
user credentials due to incorrect validation [Link] Maintenance:-Adaptive maintenance is carried out to
make the software compatible with changing environments such as new operating systems, hardware, or third-
party [Link]: Updating a desktop application to run properly on the latest version of Windows or
integrating it with a new database system.

1. Perfective Maintenance:-This involves making enhancements or improvements to the software to increase


performance or maintainability, without changing its core functionality. These updates are usually based on
user feedback.
Example: Improving the user interface (UI) of a mobile app to make it more user-friendly or optimizing code
to make the application run faster.

2. Preventive Maintenance
Preventive maintenance includes changes made to prevent future problems. It aims to detect and correct
latent faults in the software before they become serious issues.
Example: Refactoring the code to improve readability and reduce complexity, making it easier to manage
and less prone to future errors.

*Requirements Specification Document, requirements are typically categorized into different types to
clearly define what the software must achieve. The main types of requirements include functional
requirements, non-functional requirements, and domain requirements.

*Functional requirements describe the specific behavior or functions of the software. They detail what the
system should do, such as tasks, calculations, data processing, and interactions with users or other systems.
For example, a functional requirement for an online shopping application could be that users must be able to
add items to their shopping cart and proceed to checkout.

*Non-functional requirements, on the other hand, specify the quality attributes or constraints of the system.
These include performance, usability, reliability, security, and scalability. Non-functional requirements
define how the system performs its functions rather than what it does. For instance, the software may need to
handle 1000 simultaneous users or respond to user actions within two seconds.

Lastly, domain requirements are those that arise from the specific domain or industry where the software
will be used. These are constraints or regulations that the software must adhere to, based on the business
environment. For example, software designed for healthcare might need to comply with data privacy laws
such as HIPAA.

Together, these types of requirements provide a comprehensive understanding of what the software must do,
how well it must perform, and the constraints it must operate within, ensuring that developers and
stakeholders have a clear and shared vision for the project.

*Validation testing is the process of evaluating software during or at the end of development to ensure that it
meets the specified requirements and fulfills its intended purpose. The goal of validation testing is to confirm that
the software product is built correctly according to the user’s needs and expectations. It answers the question, "Are
we building the right product?" This type of testing typically involves checking the software against the
requirements document and may include activities like user acceptance testing (UAT), where actual users test the
software in real-world scenarios.

*System testing, on the other hand, is a level of testing where the complete and integrated software system is
tested as a whole to verify that it functions correctly and meets the specified requirements. It is performed after
integration testing and before acceptance testing. System testing evaluates the software’s compliance with the
functional and non-functional requirements, including performance, security, and usability. It ensures that all
components work together as expected and that the software behaves properly in its intended environment.

*Umbrella activities are essential ongoing tasks that support the entire software development process. Project
management involves planning and controlling the project to meet deadlines and budgets. Configuration
management tracks and controls changes to software and documents. Quality assurance ensures the software
meets set standards and requirements. Verification and validation check that the software is built correctly and
fulfills user needs. Documentation involves creating and maintaining necessary project documents. Risk
management identifies and mitigates potential problems that could affect the project. Measurement collects data
to monitor progress and quality, while process improvement focuses on refining development methods for better
efficiency and results. These activities help ensure the project stays on track and delivers a quality product.

* The five key process framework activities in software development begin with communication, which involves
gathering requirements and understanding the needs of stakeholders through effective interaction. Next is
planning, where the project scope, schedule, resources, and risks are defined to organize the development process.
Modeling follows, creating abstract representations like designs or diagrams to specify the system’s structure and
behavior. After modeling, the construction phase involves writing, compiling, and testing the actual code to build
the software product. Finally, deployment delivers the completed software to users and provides support for
installation and usage. These activities together form a structured approach to software development from start to
finish.

You might also like