Introduction To Software Engineering
Introduction To Software Engineering
Introduction To Software Engineering
Course Content
Education, 2015.
Introduction to Software Engineering
The term software engineering is composed of two words, software and engineering.
⮥ Engineering on the other hand, is all about developing products, using well-defined,
scientific principles and methods.
⮥ Software engineering is the application of principles used in the field of engineering, which usually
deals with physical systems, to the design, development, testing, deployment and management
of software systems. The field of software engineering applies the disciplined, structured approach to
programming that is used in engineering to software development with the stated goal of improving the
quality, time and budget efficiency.
▪ Bad documentation
▪ Frequent error
The need of software engineering arises because of higher rate of change in user requirements and
▪ Large software 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
▪ 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
▪ 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.
Need for Software Engineering
▪ Quality Management Better process of software development provides better and quality software
product.
⮥ A small program can be written without using software engineering principles. But if one wants to
develop a large software product, then software engineering principles are absolutely necessary to
⮥ Without using software engineering principles it would be difficult to develop large programs. In industry
it is usually needed 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. Software engineering helps to reduce this programming
complexity.
Need for Software Engineering
Software engineering principles use two important techniques to reduce problem complexity.
▪ abstraction
▪ decomposition.
⮥ Abstraction:
The principle of abstraction implies that a problem can be simplified by omitting irrelevant details. In
other words, 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. Abstraction is a powerful way of reducing the complexity of the
problem.
Need for Software Engineering
⮥ Decomposition :
The other approach to tackle problem complexity is decomposition. In this technique, a complex
problem is divided into several smaller problems and then the smaller problems are solved one by one.
However, in this technique 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.
A good decomposition of a problem should minimize interactions among various components. If the
different subcomponents are interrelated, then the different components cannot be solved separately and
A software product can be judged by what it offers and how well it can be used. This software must satisfy on
the following grounds:
▪ Operational
▪ Transitional
▪ Maintenance
Operational
This tells us how well software works in operations. It can be measured on:
▪ Budget
▪ Usability
▪ Efficiency
▪ Correctness
▪ Functionality
▪ Dependability
▪ Security
▪ Safety
CHARACTERESTICS OF GOOD SOFTWARE
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
In short, 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
Software Types
System Software
The system software is a collection of programs designed to operate, control, and extend the processing
capabilities of the computer itself. System software is generally prepared by the computer manufacturers.
These software products comprise of programs written in low-level languages, which interact with the
hardware at a very basic level. System software serves as the interface between the hardware and the end
users. Some examples of system software are Operating System, Compilers, Interpreter, Assemblers, etc.
Some of the most prominent features of a system software are;
▪ Close to the system
▪ Fast in speed
▪ Difficult to design
▪ Difficult to understand
▪ Less interactive
▪ Generally written in low-level language
Software Types
Application Software
Application software products are designed to satisfy a particular need of a particular environment. All
software applications prepared in the computer lab can come under the category of Application software.
Application software may consist of a single program, such as Microsoft's notepad for writing and editing a
simple text. It may also consist of a collection of programs, often called a software package, which work
together to accomplish a task, such as a spreadsheet package. Some examples of application software are
payroll software, Microsoft word, Income Tax Software etc.
Some of the most prominent features of a system software are ;
▪ Close to the user
▪ Easy to design
▪ More interactive
▪ Slow in speed
▪ Generally written in high-level language
▪ Easy to understand
▪ Easy to manipulate and use
▪ Bigger in size and requires large storage space
Software Types
Utility Software
Application software that assist system software in doing their work is called utility software. Thus utility
software is actually a cross between system software and application software. Examples of utility software
include ;
▪ Antivirus software
▪ Disk management tools
▪ File management tools
▪ Compression tools
▪ Backup tools
Food for Thought
Motivation gets
you going,
But
Discipline keeps
you growing
…….