Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Introduction To Software Engineering

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 15

Introduction to Software Engineering

Course Content

Nature of Software, Overview of Software Engineering, Professional


software development, Software engineering practice, Software
process structure, Software process models, Agile software
Development, Agile process models, Agile development techniques,
Requirements engineering process, Functional and non-functional
requirements, Context models, Interaction models, Structural
models, behavioral models, model driven engineering, Architectural
design, Design and implementation, UML diagrams, Design
patterns, Software testing and quality assurance, Software
evolution, Project management and project planning, configuration
management, Software Process improvement.
Reference Materials

1. software Engineering, Sommerville I., 10th Edition,

Pearson Inc., 2014

2. Software Engineering: A Practitioner’s Approach, Roger

S. Pressman, Bruce R. Maxim, 8th Ed, McGraw-Hill

Education, 2015.
Introduction to Software Engineering

The term software engineering is composed of two words, software and engineering.

⮥ Software in most general sense, is a set of instructions or programs instructing a computer


to do specific tasks. Software is considered to be a collection of executable programming code, associated
libraries and documentations.

⮥ 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.

 According to IEEE: Software Engineering is the application of a systematic, disciplined,


quantifiable approach to the development, operation and maintenance of software.
Issues in Software Development

▪ Final software doesn’t fulfill the needs of the customer

▪ More time & cost

▪ Bad documentation

▪ Frequent error

▪ Hard to extend and improve


Need for Software Engineering

The need of software engineering arises because of higher rate of change in user requirements and

environment on which the software is working.

▪ 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

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.
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

achieve a good quality software cost effectively.

⮥ 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

Techniques to reduce complexity problem:

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

the desired reduction in complexity will not be realized.


CHARACTERESTICS OF GOOD SOFTWARE

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

There are three main types of software:


▪ System Software
▪ Application Software
▪ Utility Software

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
…….

You might also like