For example: If someone wants to travel from Punjab to Delhi. There are two approaches one can follow to achieve the same result:
- The normal approach is just to go out and catch the bus/train that is available.
- A systematic approach is constructed as Firstly check on Google Maps about distance and after analyzing the timing of trains and buses online and after that, match user’s preference suppose user have some work till 4:00 PM and trains slot are: 1:00 PM, 6:00 PM then the user will choose 6:00 PM time slot and reach Delhi.
From the above situation, one can easily analyze that Creating a systematic Approach is more optimal and time and cost-effective as compared to a normal approach. This will same occur while designing Software. So in Software Engineering working on an Engineering or a Systematic approach is more beneficial.
Is Software Engineering A Science Or An Art?
Most people think that writing a good quality program is an Art. So let’s discuss it as an Art or Science. Like other engineering, branches suppose Mechanical engineering. It is based on Science where there are specific rules and names for each component, technique, and working principle related to it and before they are standardized the experience is marked as their thumb rule and on the basis of it, the rules are standardized by various organizations. Similarly, in Software Engineering there is heavy use of knowledge which is gathered from the experience of practitioners. Thus, various Organizations or Researchers’s made systematically organized the experience of practitioners in the theoretical form. Before these are standardized, the experience act as Thumb Rule. Thus, like every other Engineering Discipline, Software Engineering is a Science that is transformed from an Art.
Software Engineering Evolution From An Art To Engineering Discipline:
Software Engineering principles have evolved over the last sixty years with the contributions of various researchers and software professionals. From the beginning period Software Engineering acts as an Art after that with time, it transformed into a craft and finally to Engineering Discipline.
Initially, Programmers used an Ad Hoc programming style. Ad Hoc programming is an approachable solution in an unplanned or unorganized manner. In this type of Programming Style, no plan is created on how to create Structure and Steps to complete the programming task but without having any systematic approach the problem needs to be solved in the required time. This style is now referred to as exploratory, build and fix, and code and fix styles.
Like in today’s world various researchers and scientists working on those things which are not even necessary but during the initial period, Programmers worked on those things which are really needed. But as time fleet the Ad Hoc Programming will cause various problems which results in less efficiency and another approach i.e. systematic approach is adopted.
Let us get started with the detailed step-by-step process of the evolution of software engineering. The following steps are discussed:
- Software engineering as an art
- Software engineering transition from art to craft
- Software engineering transition from craft to an engineering discipline
1. Software Engineering As An Art:
Software Engineering as an Art means, this can be only learned by specific people and other people’s are not allowed to work on them.
For Example: In ancient times only a few people know Gold Ornaments making. Those who know Gold Ornaments making kept it as a secret and will reveal to his genetic generation. So at this time, this is known as Art and during that time accuracy was very less.
The same in Software Development, only a few people know about Software designing and coding and at that time there is no set of rules or instruction for software designing. And those who are able to write code efficiently and essentially fix bugs are considered proficient and those who are not good at programming and didn’t know about that were left wondering that how they could effortlessly write elegant and correct code each time.
Like Gold Ornaments are not efficiently designed in the same way Program Coding is not efficiently done due to this various issues cause which degrades the efficiency of Software but at time efficiency is not considered as an important aspect.
2. Software Engineering Transition from Art to Craft:
Software Engineering transformed from Art to Craft when the area of people who know Software Designing and Coding will increase.
For Example: When the secret of Gold Ornaments making is revealed to the only generation after generation which will increase the number of people in that Art and will convert art into a craft where accuracy is increased.
The same in Software Engineering, the Specific Degree and P.H.D were introduced in the Universities and some specific people will go further to learn and there is a certain rule which must be fulfilled to take that degree. So the number of people which increases in that area, and they start researching about it and create Standards and Styles for Coding and Software Development which must be followed and these Standards will help to create a less error-free software.
Like gold, ornaments are taking decent shapes and become efficient. In the same way, Program Writing has also become efficient in terms of Code reusability and efficiency but still, it is at times, efficiency is not considered an important aspect.
3. Software Engineering Transition From Craft To Engineering Discipline:
In today’s world Software Engineering acts as an Engineering Discipline when everyone can learn Software designing and coding irrespective of that they are pursuing a degree or not.
For example: In today’s world everyone can learn Gold Ornament making and accuracy has much more increased with the help of various machines. Also, it is converted into a Professional study where people will learn about how? Why? The science behind it etc.
The same in software engineering occur where everyone can learn about Software Development with or without pursuing any Professional Studies and accuracy of Software Development increased with the help of Standards and improved rules created by researchers.
Software engineering principles are now widely used in industry and new principles are still continuing to emerge at a very rapid rate.