Software Engineering: UNIT-1
Software Engineering: UNIT-1
Software Engineering: UNIT-1
UNIT-1
•During the later 1990s, the internet became very popular and
lead to the development of web-based software systems. During
this time many sectors like banking, insurance, airlines etc. have
automated.
•Today, ubiquitous computing has created a
generation of information appliances that have
connectivity to the Web to provide a blanket of
connectedness over our homes, offices and
motorways.
Software is a set of
Instructions that when executed provide desired function and
performance,
Data Structures that enable the programs to manipulate
information,
Documents that describe the operation and use of the programs.
•These defects can be corrected and the failure rate drops to a steady-
state level (ideally, quite low) for some period of time.
•Figure 1.2 depicts failure rate curve of software and it takes the
form of “idealized curve”.
•Undiscovered defects will cause high failure rates early in the life of
a program. However, these are corrected and the curve flattens as
shown in Figure 1.2.
•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 as shown infig1.2
3. Although the industry is moving toward component-based
•The nature of software has changed a lot over the years. It has
changed from writing programs by individuals for their personal
use to writing very complex software to run a nuclear power
plant.
•Its nature mainly depends on the type of software used. Given
below are the different types of software being used in different
applications.
1. System Software
System Software is a collection of programs written to provide service
to other programs.
• It needs heavy interaction with computer hardware.
• It contains complex data structures and multiple external interfaces
Examples: Compilers, Editors, File Management Utilities, other
System Applications Drivers and Networking Software.
2. Application Software
•Application Software consists of standalone programs that are used to
solve specific business needs.
•It is used to process technical data/technical decisions and control
business functions in real time.
Examples: Conventional Data Processing Applications, Real-Time
Manufacturing Process Control, point-of-sale etc.
3. Engineering/Scientific Software
•It is characterized by conventional numerical algorithms.
•It is used to create interactive applications to take on real time.
Examples: Computer Aided Design(CAD/CAM), System Simulation,
Weather prediction system, Interactive Applications in Educational
Field.
4. Embedded Software
Software that resides within a product or system is called as
Embedded Software.
6. Web Applications
•It can be considered as a set of linked hypertext files.
•Web Application Software has grown relevant as E-Commerce & B2B
applications grow in importance.
Examples: E-commerce sites, Air line reservation system, IRCTC
etc.
7. Artificial Intelligence Software
This type of software uses Non-Numerical Algorithms to solve complex
problems.
Examples: Robotics, Expert Systems, Pattern Recognition(image and
voice), Artificial Neural Networks, Theorem Proving, Game Playing.
8. Open Source
Open Source Software refers to the software whose source code is
public to everyone to develop, test or improve.
Examples: Linux Operating System, Apache Web Server Application,
LibreOffice Application, GNU Image Manipulation Application.
3. Software myths
Are the false beliefs that managers, customers, and developers have
on the software development.
3.1 Management myths
Cost of software is measured based on its size. The size of the software
is measured in Lines of Code (LOC) or Thousand Lines of Code (KLOC).
As the main cost of producing software is the manpower employed, the
cost of developing software measured in terms of LOC (or) KLOC per
person-months.
Generally, software companies charge the client between $3000 -$15000
per person month.
For Example, assume that size of software is 50 million LOC and a
person can write 5000 LOC in a month. Let the company charging
$6000 per person month.
Then the cost of software can be calculated as
Person months required = 500,00,000/5000 = 10000
Cost = 10000X6000 = $6,00,00,000
Schedule
Besides cost and schedule, the other major factor driving software
engineering is quality.
Today, quality is one of the main mantras, and business strategies
are designed around it.
The international standard on software quality suggests six main
attributes of software quality as shown in the figure below.
Software quality attributes
These attributes can be defined as follows
Functionality: The capability to provide functions which meet stated
needs of software.
Reliability: The capability to provide failure-free service.
Usability: The capability to be understood, learned, and used.
Efficiency: The capability to provide appropriate performance relative
to the amount of resources used.
Maintainability: The capability to be modified for purposes of making
corrections, improvements, or adaptation.
Portability: The capability to be adapted for different specified
environments without applying actions.
One measure of quality is the number of defects in the delivered
software per unit size (generally taken to be thousands of lines of
code, or KLOC).
As an example, consider the problem of obtaining the opinion poll of people
in a room as well as across the country. It is obvious that, the methods used
for obtaining the opinion poll of people in a room will just not work for
obtaining the opinion poll of people across the country. A different set of
methods will have to be used for this and will require considerable
management, execution and validation.
Similarly, methods that one can use to develop programs of a few hundred
lines of code cannot work for the software consisting of hundred thousand
lines of code. A different set of methods must be used for developing such
large software.
Any software project involves the use of engineering and project
management. In small projects, informal methods for development and
management can be used. For large projects, more formal methods are
used. This is shown below.
As shown in the above figure, more formal methods are used for
developing large and complex projects to make sure that cost, schedule,
and quality are under control.
Change