Skip to content

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.