1 Software Engineering
The term software engineering is the product of two words, software, and engineering. The software is
a collection of integrated programs. Software subsists of carefully-organized instructions and code
written by developers on any of various particular computer languages. Computer programs and related
documentation such as requirements, design models and user manuals. Engineering is the application
of scientific and practical knowledge to invent, design, build, maintain, and improve frameworks,
processes, etc.
Software Engineering is an engineering branch related to the evolution of software product using well-
defined scientific principles, techniques, and procedures. The result of software engineering is an
effective and reliable software product.
1.1 Need of Software Engineering
The necessity of software engineering appears because of a higher rate of progress in user requirements
and the environment on which the program is working.
o Huge Programming: It is simpler to manufacture a wall than to a house or building, similarly,
as the measure of programming become extensive engineering has to step to give it a scientific
process.
o Adaptability: If the software procedure were not based on scientific and engineering ideas, it
would be simpler to re-create new software than to scale an existing one.
o Cost: As the hardware industry has demonstrated its skills and huge manufacturing has let down
the cost of computer and electronic hardware. But the cost of programming remains high if the
proper process is not adapted.
o Dynamic Nature: The continually growing and adapting nature of programming hugely
depends upon the environment in which the client works. If the quality of the software is
continually changing, new upgrades need to be done in the existing one.
, o Quality Management: Better procedure of software development provides a better and quality
software product.
1.2 Need of Software Engineering
Reduces complexity: Big software is always complicated and challenging to progress. Software
engineering has a great solution to reduce the complication of any project. Software engineering
divides big problems into various small issues. And then start solving each small issue one by
one. All these small problems are solved independently to each other.
To minimize software cost: Software needs a lot of hard work and software engineers are highly
paid experts. A lot of manpower is required to develop software with a large number of codes.
But in software engineering, programmers project everything and decrease all those things that
are not needed. In turn, the cost for software productions becomes less as compared to any
software that does not use software engineering method.
To decrease time: Anything that is not made according to the project always wastes time. And
if you are making great software, then you may need to run many codes to get the definitive
running code. This is a very time-consuming procedure, and if it is not well handled, then this
can take a lot of time. So if you are making your software according to the software engineering
method, then it will decrease a lot of time.
Handling big projects: Big projects are not done in a couple of days, and they need lots of
patience, planning, and management. And to invest six and seven months of any company, it
requires heaps of planning, direction, testing, and maintenance. No one can say that he has given
four months of a company to the task, and the project is still in its first stage. Because the
company has provided many resources to the plan and it should be completed. So to handle a big
project without any problem, the company has to go for a software engineering method.
Reliable software: Software should be secure, means if you have delivered the software, then it
should work for at least its given time or subscription. And if any bugs come in the software, the
company is responsible for solving all these bugs. Because in software engineering, testing and
maintenance are given, so there is no worry of its reliability.
Effectiveness: Effectiveness comes if anything has made according to the standards. Software
standards are the big target of companies to make it more effective. So Software becomes more
effective in the act with the help of software engineering.
2 Software Crisis
Software Crisis is a term used in computer science for the difficulty of writing useful and efficient
computer programs in the required time. The software crisis was due to using the same workforce,
same methods, same tools even though rapidly increasing in software demand, the complexity of
software, and software challenges. With the increase in the complexity of software, many software
problems arise because existing methods were insufficient. If we will use the same workforce, same
methods, and same tools after the fast increase in software demand, software complexity, and software
challenges, then there arise some problems like software budget problems, software efficiency
,problems, software quality problems, software managing and delivering problem, etc. This condition
is called a software crisis.
Causes of Software Crisis:
The cost of owning and maintaining software was as expensive as developing the software
At that time Projects were running over-time
At that time Software was very inefficient
The quality of the software was low quality
Software often did not meet user requirements
The average software project overshoots its schedule by half
At that time Software was never delivered
Non-optimal resource utilization.
Difficult to alter, debug, and enhance.
The software complexity is harder to change.
Poor project management.
Lack of adequate training in software engineering.
Less skilled project members.
Low productivity improvements.
Solution of Software Crisis: There is no single solution to the crisis. One possible solution to a
software crisis is Software Engineering because software engineering is a systematic, disciplined, and
quantifiable approach. For preventing software crises, there are some guidelines:
Reduction in software over budget.
The quality of software must be high.
Less time is needed for a software project.
Experienced and skilled people working over the software project.
Software must be delivered.
, Software must meet user requirements.
3 Software Processes
Software is the set of instructions in the form of programs to govern the computer system and to
process the hardware components. To produce a software product the set of activities is used. This set
is called a software process.
There are four basic key process activities:
Software Specifications – In this process, detailed description of a software system to be
developed with its functional and non-functional requirements.
Software Development – In this process, designing, programming, documenting, testing, and
bug fixing is done.
Software Validation – In this process, evaluation software product is done to ensure that the
software meets the business requirements as well as the end user’s needs.
Software Evolution – It is a process of developing software initially, then timely updating it
for various reasons.
3.1 Software Process Model
A software process model is an abstraction of the actual process, which is being described. It can also
be defined as a simplified representation of a software process. Each model represents a process from
a specific perspective. Basic software process models on which different type of software process
models can be implemented:
A workflow Model – It is the sequential series of tasks and decisions that make up a business
process.
The Waterfall Model – It is a sequential design process in which progress is seen as flowing
steadily downwards. Phases in waterfall model:
i. Requirements Specification
ii. Software Design
iii. Implementation
iv. Testing
Dataflow Model – It is diagrammatic representation of the flow and exchange of information
within a system.
Evolutionary Development Model – Following activities are considered in this method:
i. Specification
ii. Development
iii. Validation
Role / Action Model – Roles of the people involved in the software process and the activities.
4 Software life cycle models