Why do we need a Software Engineering and explain the characteristics of a good Software ?
https://www.computersprofessor.com/2017/08/why-do-we-need-software-engineering-and.html
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. Following are some of the
needs stated:
·
Large software - It
is easier to build a wall than a house or building, likewise, as the size of
the software becomes 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, cost of the software remains high if
proper process is not adapted.
·
Dynamic Nature- Always
growing and adapting nature of the 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 the 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. This
software must satisfy on the following characteristics:
·
Operational
·
Transitional
·
Maintenance
Well-engineered
and crafted software is expected to have the following characteristics:
Operational :
This tells us
how well the 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 the software has the capabilities to maintain itself in
the ever-changing environment:
·
Modularity
·
Maintainability
·
Flexibility
Scalability