This article may be regarded as an introduction to Software Engineering. The author presents his thoughts on the subject in relation to the practice of using its methods.
To define Software Engineering you must first define Software Engineering itself.
The word Engineering appears in the definition of many disciplines. We have for example Civil Engineering, Environmental Engineering, Medical Engineering, Environmental Engineering and many, many more. What does the magic word “Engineering” mean? Well, it is a term for the activity of designing, constructing, maintaining effective solutions based on scientific and technical knowledge.
It should also be emphasized that engineering refers to practical activities, scientific theory can only be a source of knowledge for it.
Developing this idea one can say that an engineer, as a man who deals with engineering is a practitioner, has not only theoretical knowledge but can use it in practice.
Let’s go to Software Engineering. We already know what Software Engineering is, and what is Software Engineering? Well, it is Software Engineering. So it will deal with the design, development and maintenance of software.
It should be emphasized that software engineering is not only the art of programming. It covers a much wider range of issues related to software development. Among others, such as:
- specification of requirements for software
- software design
- software quality
- software testing
- software implementations
- conducting IT projects
Software engineering as a practical discipline uses a number of methods developed either by theoreticians or proven in practice during the implementation of IT projects.
Speaking of Software Engineering, it is difficult not to refer it to its apprentices, i.e. to engineers – most often IT engineers.
What features should such an engineer have and what knowledge should he have in order to find himself in Software Engineering.
Software as such is created for some specific purpose. In the vast majority of cases, it is designed to improve certain processes. Sometimes only for entertainment. Most software orders come from business. It is supposed to improve business processes to make the organization work better, more efficiently, cheaper.
And what does the programmer say? Programming skills alone will not allow you to write software for accounting. You need to know a little or maybe even quite a lot about this accounting. Similarly to other elements of business.
Even if you were to make specialized software, e.g. for designing bridges. Then you need to have knowledge about bridge design.
Some software engineering tools are created to translate a business issue into a language understood by computer scientists. They are undoubtedly a help, however, in the author’s opinion, which he has made while working with programmers in software development, will not replace understanding and knowledge of the problem.
Even the most perfect project will not allow people who have no idea about the issue they are programming to write good software. And the consequences associated with the failure of such a project will obviously fall on the designer.
IT specialist: To design an algorithm you need to know the problem it is supposed to solve.
So you can say that a real software engineer must have a broad knowledge of other engineering, he must have a broad technical knowledge, though not just technical, and above all, he must be open to knowledge.
A good IT engineer is interested in everything and is constantly wondering how it can all be improved with the use of IT.
You should also know that software engineering is not the same as computer science. Computer science deals with, among other things:
- algorithms,
- the complexity of the calculation,
- data structures.
Software engineering, on the other hand, represents a practical approach: how to design, write, implement a good program.
As a practical discipline, Software Engineering is difficult to systematize. However, due to the fact that people have been dealing with it for some time now, numerous techniques and methods have been developed that allow a systematic and disciplined approach to software development, operation and maintenance.
Software engineering is an ever-living and developing discipline. Some techniques or methods developed, say, 20 years ago are no longer used at all or their usefulness is negligible. Instead, completely new ones appear. These changes are caused by various factors, e.g. changes in programming paradigms, tool development, but also by different trends in project management.