The document discusses key aspects of software engineering. It defines software and explains why it has become so important, driving business and enabling modern science and engineering. The document outlines the steps to develop software, including applying a systematic process to build high-quality products that meet user needs. It distinguishes between generic and custom software and defines software engineering as the discipline of producing reliable, efficient software using sound engineering principles. The document also covers the four Ps of successful projects, characteristics unique to software like its logical nature and lack of wear, different types of software applications, and tools that support the software development process.
1. Software Engineering (Notes)
1) Introduction to Software ?
Ans) Software can be defined as :- Computer Software is the product that software engineers
design and build. It encompasses programs that execute within a computer of any size and
architecture, documents that encompass hard copy and virtual forms and data.
2) Why is it so important ?
Ans) Computer software has become a driving force. It is the engine that drives business
decision making. It serves as the basis for modern scientific investigation and engineering
problem solving. It is used in :- transportation, medical, telecommunications, military, industrial
processes, entertainment, office……etc
3) What are the steps of developing a software ?
Ans) It is built like any successful product by applying a process that leads to a high-quality result
that meets the needs of the people who will use the product. Software engineering approach is
applied.
4) Software Products may be of two types :-
a) Generic :- developed to be sold to a range of customers e.g:- PC Software such as Word,
Excel etc.
b) Custom :- Developed for a single customer according to their specification.
5) What is Software Engineering ?
Ans) Software engineering is the establishment and use of sound engineering principles in
order to obtain economically software that is reliable and works efficiently on real machines
Software engineering is an engineering discipline that is concerned with all aspects
of software production. Software engineers should adopt a systematic and organized
approach to their work and use appropriate tools and techniques depending on the problems to be
solved, the development constraints and the resources available.
6) Difference between Programs and Software Products :-
Programs Software Products
Developed by individuals for personal use. Developed by a group of engineers working in
a team.
Small in size and have limited functionality. Large in size.
Lack of good interface and proper Have good interface, proper user’s manuals and
documentation. good documentation support.
Consists only the program code Consists program code, associated documents
such as requirements specification document,
the design document, the test document, the
user’s manual etc
Author of a program uses and maintains his Has large no. of users, it is systematically
programs. designed, carefully implemented and
Dolon Mukherjee…(Lecturer…George College of Management and Science…Kolkata) 1
2. Software Engineering (Notes)
thoroughly tested.
7) The 4 P’s
People — the most important element of a successful project
Product — the software to be built
Process — the set of framework activities and software engineering tasks to get the job
done
Project — all work required to make the product a reality
8) Software Characteristics
Ans) Software is logical rather than a physical system element. Therefore, Software has
characteristics that are considerably different than those of hardware:
i) Software is developed or engineered, it is not manufactured in the
classical sense. Software development and hardware manufacture are similar in
some respects but the two activities are fundamentally different. The manufacturing
phase for hardware can introduce quality problems that are nonexistent ( or easily
corrected) for software.
ii) Software doesn’t wear out :-
infant
mortality wear
out
failure rate
time
Failure curve for hardware
Dolon Mukherjee…(Lecturer…George College of Management and Science…Kolkata) 2
3. Software Engineering (Notes)
The above figure depicts failure rate as a function of time for hardware. The relationship, often
called the “bathtub curve,” indicates that hardware exhibits relatively high failure rates early in its
life (these failures are often attributable to design or manufacturing defects); defects are corrected
and the failure rate drops to a steady-state level (ideally, quite low) for some period of time. As
time passes, however, the failure rate rises again as hardware components suffer from the
cumulative effects of dust, vibration, abuses, temperature extremes, and many other
environmental maladies. Stated simply, the hardware begins to wear out.
defect
removal
failure rate
residual
defects
(~constant
time
Software Failure Curve (Ideal)
Software is not susceptible to the environmental maladies that cause hardware to wear out. In
theory, therefore, the failure rate curve for software should take the form of the “idealized curve”
shown…
Undiscovered defects will cause high failure rates early in the life of a program. However, these
are corrected (ideally, without introducing other errors) and the curve flattens as shown.
Dolon Mukherjee…(Lecturer…George College of Management and Science…Kolkata) 3
4. Software Engineering (Notes)
failure rate
time
Software Failure Curve (~Actual)
During its life, software will undergo change (maintenance). As changes are made, it is likely
that some new defects will be introduced, causing the failure rate curve to spike…Before the
curve can return to the original steady-state failure rate, another change is requested, causing the
curve to spike again. Slowly, the minimum failure rate level begins to rise – the software is
deteriorating due to change.
What causes these spikes?
Over time we change the requirements for the software. Let’s say you create a word processing
program with some basic functionality. You finally get the bugs out and it’s working pretty good.
Then you decide that you need a spell checker. Your requirements have changed and you have to
make changes to the software. Initially, you introduce more bugs, and then the majority of these
are eliminated. The next big change is when you want to incorporate hyperlinks in a document.
Another change, another spike.
You keep adding functionality to a product, or keep changing your requirements in some other
way. This keeps adding to or changing your software. Notice how you keep adding more bugs
but then you don’t eliminate all of them. Eventually you could end up with a piece of software
with a very high failure rate. This could be caused by conflicts between functions that you’ve
added.
iii) Spare Parts:- when hardware breaks down or wears out, just replace the part!
software has no spare parts!
9) Software Applications
Dolon Mukherjee…(Lecturer…George College of Management and Science…Kolkata) 4
5. Software Engineering (Notes)
System Software- A collection of programs written to service other programs at system level.
For example, compiler, operating systems.
Real-time Software- Programs that monitor/analyze/control real world events as they occur.
Business Software- Programs that access, analyze and process business information.
Engineering and Scientific Software - Software using “number crunching” (to process data or numbers at high spee
Embedded Software- Embedded software resides in read-only memory and is used to control products and systems fo
Artificial Intelligence (AI) Software- Programs make use of AI techniques and methods to solve complex problems.
Internet Software - Programs that support internet accesses and applications. For example, search engine, browser,
Software Tools and CASE environment - Tools and programs that help the construction of application software and
*********
Dolon Mukherjee…(Lecturer…George College of Management and Science…Kolkata) 5