Software Engineering-1
Software Engineering-1
Sottware Components
What is Software
Program:A step by step instructions to perform a specific task on a computer in a programming language
is called program, i.e. set of instructions.
coding, testing) and user manuals which mainly includes installation guide and other manuals.
Software=Program+documentation
Software Components
>A program is a subset of software and it becomes software only if documentation and an operating
procedure manual are prepared.
>Program
>Documents
>Software documentation consist all the description, programs, graphics and instructions pertaining to
design, coding, testing and preparation of software.
Provides information about what software is how to work with it how to install it on your system and
how to control all the activities of the software.
Software Crisis
The major problem with current scenario in Software industry is, software usually overrun their
development cost, they exceed their development duration limits, are usually of poor quality.
As long as there were no machines, programming was no problem at all; when we had a few weak
computers, programming became a mild problem, and now we have gigantic computers, programming
has become an equally gigantic problem.- Edsger Dijkstra, The Humble Programmer (EWD340),
Communications of the ACM
In software industry we understand that there is an urgent need to use a proper strategies, process
and development cycles so that we can produce, or we can design quality products that are within
budget, with in time and must satisfy the requirement of their users.
Software engineering is the systematic application of engineering principles and methods to the
design, development, testing, and maintenance of software products. It involves the use of
various tools, techniques, and methodologies to manage the software development process and
ensure the quality, reliability, and maintainability of software products.
Characteristics of software
3. Custom-Built Nature:
2.It's often not just a combination of pre-existing components but requires unique coding and design.
4. Intangibility of Software:
Resistance to Change:
* Difference: Conventional engineering focuses on physical systems, while software engineering deals
with intangible software systems
* Difference: Software engineering allows for greater flexibility and ease of modification due to the non-
physical nature of software
* Similarity: Both processes emphasize the importance of testing and quality assurance to ensure
product performance and reliability
* Difference: Conventional engineering often involves physical testing of prototypes, while software
engineering relies on various types of software testing, such as unit, integration, and system testing
* Similarity: Both processes require effective project management, team collaboration, and
communication among stakeholders
* Difference: Software engineering projects may involve distributed teams and rely more heavily on
digital communication and collaboration tools
* Similarity: Both processes involve maintenance and support activities to ensure the ongoing
performance and reliability of the product
* Difference: Software engineering typically demands more frequent updates, patches, and evolution
due to the rapidly changing nature of technology and user requirements
* For hardware Same production cost every time, for software production cost only for the first time and
then only maintenance cost. This life cycle of the hardware follows the bath tub curve, while in the life
cycle of software failure intensity goes down with time
Correctness: The ability of the software to perform its intended tasks effectively and meet user
requirements.
Usability: The ease with which users can learn, operate, and navigate the software.
Reliability: The software's consistency in producing accurate results and maintaining performance
over time.
Efficiency: The optimal use of system resources, such as memory and processing power, to achieve
desired outcomes.
Maintainability: The ease of updating, modifying, and fixing the software to accommodate changing
requirements or fix issues.
Portability: The ability of the software to operate on different platforms or environments without
significant modifications.
Scalability: The software's capacity to handle increased workloads or user demands without
compromising performance.
Security: The software's ability to protect against unauthorized access, data breaches, and other
potential threats.
Modularity: The degree to which the software's components are organized into separate,
manageable units that can be independently developed or updated.
Reusability: The potential for the software's components to be used in other applications or contexts,
reducing development time and costs.
Testability: The ease with which the software can be tested to ensure it meets its requirements and
performs as expected.