Software
A software
is a collection of:
- The program
(the source
code).
- The data
on which the program
runs.
- The documentation
.
Benefits
- It is being used in
business-decision-making
through analysis. - scientific processes are now easier to do, such as astronomy and bio-informatics involves DNA decoding etc.
- Computer Games.
- Embedded systems like micro-controller has been employed in our cars, microwave ovens and other gadgets.
- Other fields like IT automation, Education, Banking etc.
Computer Science Vs Software Engineering
computer-science is the knowledge meanwhile software-engineering is the science of putting that knowledge to practical use in productive way to create software.
Software System Vs other Systems
software does not suffer from phenomena of wear and tear
like other mechanical systems do such as a car, a TV etc.
As time passes, these systems might start to malfunction but a software system doesn't go through this issue.
The only issue which persists is a bug
(if not handled).
software companies goes through changing the whole system constantly unlike like a car company where changes are very minor after the main system (the car itself) is done.
Hence this is about constant evolution.
Software Crisis
In 1960, the term software-engineering was introduced to tackle the issue of software crisis which meant that complex systems cannot be built reliably with old techniques.
Definition
“All aspects of software production’ Software engineering is not just concerned with the
technical processes of software development but also with activities such as software
project management and with the development of tools, methods and theories to support
software production".
Software Engineering Composition
It can be composed of: - Programming Language - Programming language Design - Software Design techniques - Testing - Development - Maintenance
One of the famous techniques used now a days is object-oriented-programming.
Software Engineer's Responsibility
A software engineer is responsible for making things: - reliable - cost-effective - maintainable - User friendly
But sometimes, we may also run into conflicts such as Efficiency vs UI, Cost vs Efficiency etc.
Law of Diminishing
This can be explained through an example.
Imagine trying to dissolve sugar into water.
The sweetness of water will improve slowly but at a certain point of saturation, sugar will stop dissolving even if you add it.
Similarly, when the reasonable quality of software is done then investing more money, effort and time won't return back as much more quality as it might had returned in the past (when the system was completely a mess).
the coding itself is about 10% of the effort in putting the software together.