You are on page 1of 12

Software Engineering

Lecture – 1
By
Dr. Priyambada Subudhi
Assistant Professor
IIIT, Kottayam
What is a Software??
 Are software and program same ??

 Software is

 instructions or computer programs that when executed provide desired features,

function, and performance

 data structures that enable the programs to adequately manipulate information.

 descriptive information in both hard copy and virtual forms that describes the operation

and use of the programs


 User manuals

 Design manuals
Difference between a program and a
software
Program Software

1. Are small in size. 1. Are large in size.


2. Programmer is the sole user. 2. Most users are not involved in
3. Single developer is involved. development.
4. User interface may not be 3. A large number of developers
important. are involved.
5. Very little documentation is 4. User interface must be
expected. carefully designed.
6. Can be developed according to 5. It must be well documented.
programmer’s style. 6. Must be developed using
accepted style of programming.
Types of Software
• System Software
• a collection of programs written to service other programs.
• e.g.: Operating system, Compilers, Editors etc.
• Application Software
• stand-alone programs that solve a specific personal, educational, and business
need.
• e.g. Payroll system, inventory management system, Sales analysis system
• Engineering/scientific software
• has been characterized by “number crunching” algorithms and used for solving
scientific problems
• e.g.:Matlab, Auto CAD etc.
• Embedded software
• resides within a product or system and is used to implement and control features
and functions for the end user and for the system itself.
• digital functions in an automobile such as fuel control, dashboard displays, and
braking systems
• Product-line software
• designed to provide a specific capability for use by many different
customers.
• e.g.: Word processing software, spreadsheets, multimedia software
• Web applications
• application software that runs on a web server and is accessed by
the user through a web browser with an active network connection.
• e.g.: web-mail, online retail sales, online banking
• Artificial intelligence software
• capable of intelligent behavior and involves simulating a number of
capabilities, including reasoning, learning, problem solving,
perception, knowledge representation.
• e.g.: Google assistant, voice and image recognition software
What is Engineering ?
• It is the branch of science and technology concerned with
the design, building and use of products using well-defined
scientific principles and methods.
• In simple terms, engineers identify a problem, and come up
with a solution, often creating something completely new in
the process.
• How engineering have helped us in our daily life ?
• Fly through the air to any place – commercial aircrafts
• Cook your meal in just 3 min. – microwave oven
• Gain access to any information almost instantly - Google
What is Software Engineering ?
• It is just another engineering branch
• associated with the development of software product using well-defined
scientific principles, methods and procedures.
• The outcome of software engineering is an efficient and reliable software
product.
• A software product can either be
• Generic product : They are marketed and sold to any customer who want to buy
them.
• E.g. Photo shop, MS Office, Tally, Auto CAD etc.
• Customized product : Software that is commissioned by a specific customer to meet
their own needs
• E.g. Banking system, railway ticket booking system etc.
Need of Software Engineering
Principles
• Without using software engineering principles it would be difficult to
develop large programs to accommodate multiple functions.
• A problem with developing such large commercial programs is that
the complexity and difficulty levels of the programs increase
exponentially with their sizes.
• Example: a program of size 1,000 lines of code has some complexity. But a
program with 10,000 LOC is not just 10 times more difficult to develop, but
may as well turn out to be 100 times more difficult unless software
engineering principles are used.
• Software engineering helps to reduce the programming complexity.
• Software engineering principles use two important techniques to reduce
problem complexity:
• Abstraction:
• It implies that a problem can be simplified by omitting irrelevant details.
• The main purpose of abstraction is to consider only those aspects of the problem
that are relevant for certain purpose and suppress other aspects that are not
relevant for the given purpose.
• Once the simpler problem is solved, then the omitted details can be taken into
consideration to solve the next lower level abstraction, and so on.
• Decomposition:
• A complex problem is divided into several smaller problems and then the smaller
problems are solved one by one.
• Any random decomposition of a problem into smaller parts will not help.
• The problem has to be decomposed such that each component of the decomposed
problem can be solved independently and then the solution of the different
components can be combined to get the full solution.
• There are some key points which demonstrate the necessity of the
software engineering principles. These are
• Large software - It is easier to build a wall than to a house or building, likewise, as
the size of software become large engineering has to step to give it a scientific
process.
• Scalability- If the software process were not based on scientific and engineering
concepts, it would be easier to re-create new software than to scale an existing one.
• Cost- As hardware industry has shown its skills and huge manufacturing has lower
down the price of computer and electronic hardware. But the cost of software
remains high if proper process is not adapted.
• Dynamic Nature- The always growing and adapting nature of software hugely
depends upon the environment in which the user works. If the nature of software is
always changing, new enhancements need to be done in the existing one. This is
where software engineering plays a good role.
• Quality Management- Better process of software development provides better and
quality software product.
Characteristics of Good Software
• A software product can be judged by what it offers and how well it can be
used. Well-engineered and crafted software is expected to have the
following characteristics:
• Operational
This tells us how well software works in operations. It can be measured on:
• Budget
• Usability
• Efficiency
• Correctness
• Functionality
• Dependability
• Security
• Safety
• Transitional
This aspect is important when the software is moved from one platform to another:
• Portability
• Interoperability
• Reusability
• Adaptability
• Maintenance
This aspect briefs about how well a software has the capabilities to maintain itself
in the ever changing environment:
• Modularity
• Maintainability
• Flexibility
• Scalability
• Software engineering is a branch of computer science, which uses well-defined
engineering concepts required to produce efficient, durable, scalable, in-budget
and on-time software products.

You might also like