Software Unit1
Software Unit1
What is a Software?
Software is a collection of instructions, data, or computer programs that are
used to run machines and carry out particular activities. It is the antithesis of
hardware, which refers to a computer’s external components. A device’s
running programs, scripts, and applications are collectively referred to as
“software” in this context.
Characterstics of software➔
The characteristics of the software include:
• It is intangible, meaning it cannot be seen or touched.
• It is non-perishable, meaning it does not degrade over time.
• It is easy to replicate, meaning it can be copied and distributed easily.
• It can be complex, meaning it can have many interrelated parts and
features.
• It can be difficult to understand and modify, especially for large and
complex systems.
• It can be affected by changing requirements, meaning it may need to be
updated or modified as the needs of users change.
• It can be impacted by bugs and other issues, meaning it may need to be
tested and debugged to ensure it works as intended.
Software process➔
Software process is a set of sequence activities used to produce a software
product. If the activities are performed properly in accordance with the
ordering constraints, the desired result is produced. This desired result is
high quality software at low cost. The main purpose of the process is to
improve the quality of product.
Software engineering➔
Software engineering is the engineering whose goal is to develop cost
effective system software.
Software Engineering is the process of designing, developing, testing, and
maintaining software. It is a systematic and disciplined approach to software
development that aims to create high-quality, reliable, and maintainable
software.
Software engineering includes a variety of techniques, tools, and
methodologies, including requirements analysis, design, testing, and
maintenance.
By following the principles of software engineering and using the appropriate
tools and methodologies, software developers can create high-quality,
reliable, and maintainable software that meets the needs of its users.
Software Engineering is mainly used for large projects based on software
systems rather than single programs or applications.
The main goal of Software Engineering is to develop software applications
for improving quality, budget, and time efficiency.
Software Engineering ensures that the software that has to be built should
be consistent, correct, also on budget, on time, and within the required
requirements.
Software crisis➔
Software Crisis is a term used in early days of 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 arise because existing
methods were insufficient.
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.
• At that time Software was never delivered.
• Non-optimal resource utilization.
• Challenging to alter, debug, and enhance.
• The software complexity is harder to change.
• Lack of communication between the software developers and its users.
•
6. Maintenance:
Maintenance is the most important phase of a software life cycle. The effort
spent on maintenance is 60% of the total effort spent to develop a full software.
There are three types of maintenance.
• Corrective Maintenance: This type of maintenance is carried out to
correct errors that were not discovered during the product development
phase.
• Perfective Maintenance: This type of maintenance is carried out to
enhance the functionalities of the system based on the customer’s
request.
• Adaptive Maintenance: Adaptive maintenance is usually required for
porting the software to work in a new environment such as working on a
new computer platform or with a new operating system.
Advantages of the SDLC Waterfall Model
Prototype model➔
The Prototyping Model is one of the most popularly used Software
Development Life Cycle Models (SDLC models). This model is used when
the customers do not know the exact project requirements beforehand. In
this model, a prototype of the end product is first developed, tested, and
refined as per customer feedback repeatedly till a final acceptable prototype
is achieved which forms the basis for developing the final product.
Incremental Model
Incremental Model is a process of software development where requirements divided into
multiple standalone modules of the software development cycle. In this model, each module
goes through the requirements, design, implementation and testing phases. Every subsequent
release of the module adds function to the previous release. The process continues until the
complete system achieved.
The various phases of incremental model are as
follows:
1. Requirement analysis: In the first phase of the incremental model, the product analysis
expertise identifies the requirements. And the system functional requirements are understood
by the requirement analysis team. To develop the software under the incremental model, this
phase performs a crucial role.
2. Design & Development: In this phase of the Incremental model of SDLC, the design of
the system functionality and the development method are finished with success. When
software develops new practicality, the incremental model uses style and development phase.
3. Testing: In the incremental model, the testing phase checks the performance of each
existing function as well as additional functionality. In the testing phase, the various methods
are used to test the behavior of each task.