Software is
a program or set of programs containing instructions which provide desired
functionality
· Computer programs
· Data structure
· Documentation
Engineering
is the processes of designing and building something that serves a particular
purpose and find a cost effective solution to problems.
Software
Engineering is a systematic approach to the design, development, operation, and
maintenance of a software system.
or
Software engineering is an engineering branch associated with development of software product using well-defined scientific principles, methods and procedures. The outcome of software engineering is an efficient and reliable software product
Software engineering is an engineering branch associated with development of software product using well-defined scientific principles, methods and procedures. The outcome of software engineering is an efficient and reliable software product
Software
Evolution
The process of developing a software product
using software engineering principles and methods is referred to as software
evolution. This includes the initial development of software and its
maintenance and updates, till desired software product is developed, which
satisfies the expected requirements.
Evolution starts from the requirement
gathering process. After which developers create a prototype of the intended
software and show it to the users to get their feedback at the early stage of
software product development. The users suggest changes, on which several
consecutive updates and maintenance keep on changing too. This process changes
to the original software, till the desired software is accomplished.
Software Evolution Laws
Lehman has
given laws for software evolution. He divided the software into three different
categories:
S-type (static-type) - This is a software, which works
strictly according to defined specifications and solutions. The solution and
the method to achieve it, both are immediately understood before coding. The
s-type software is least subjected to changes hence this is the simplest of
all. For example, calculator program for mathematical computation.
P-type (practical-type) - This is a software with a collection
of procedures. This is defined by exactly what procedures can do. In this
software, the specifications can be described but the solution is not obvious
instantly. For example, gaming software.
Objectives
of Software Engineering:
1.Maintainability –It should be feasible for the
software to evolve to meet changing requirements.
2.Correctness –A software product is correct, if
the different requirements as specified in the SRS document have been correctly
implemented.
3.Reusability –A software product has good
reusability, if the different modules of the product can easily be reused to
develop new products.
4.Testability
–Here
software facilitates both the establishment of test criteria and the evaluation
of the software with respect to those criteria.
5.Reliability –It is an attribute of software quality.
The extent to which a program can be expected to perform its desired function,
over an arbitrary time period.
6.Portability –In this case, software can be
transferred from one computer system or environment to another.
7.Adaptability –In this case, software allows
differing system constraints and user needs to be satisfied by making changes
to the software.
Software
Paradigms
Software paradigms refer to the methods and
steps, which are taken while designing the software. There are many methods
proposed and are in work today, but we need to see where in the software
engineering these paradigms stand. These can be combined into various
categories, though each of them is contained in one another:
Programming paradigm is a subset of Software
design paradigm which is further a subset of Software development paradigm.
Software
Development Paradigm:
This
Paradigm is known as software engineering paradigms where all the engineering
concepts pertaining to the development of software are applied. It includes
various researches and requirement gathering which helps the software product
to build.
It consists
of
- ·
Requirement
gathering
- · Software design
- ·
Programming
Software Design Paradigm:
This
paradigm is a part of Software Development and it includes –
- ·
Design
- · Maintenance
- ·
Programming
Programming Paradigm:
This
paradigm is related closely to programming aspect of software development. This
includes –
- ·
Coding
- · Testing
- ·
Integration
Need of 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 -
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 he 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 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.
Goals
of software engineering
•To develop a software that satisfies user requirements
•To develop a software within the budget
•To develop a software within time limit
•To improve overall quality of the software
•To control and execute the cost of software
•To produce reliable and efficient software
•To produce proper document along with a software
•To develop a software that is to maintain ,modify and
debug