All About Software Engineering, Part 1

Gamze Yılan
6 min readMar 26, 2021

In today’s world, the economy of any developed country depends on software. Every day more and more system is getting controlled by a piece of software.

Software engineering is about the theory, method and tools that you need in order to build better, more professional software. Many well-developed countries spare a huge percentage of national wealth on software development. Most of the time, the cost of the software development is higher than the cost of the hardware required to build an IT system. The cost of development for all the software within your laptop that you use currently is far higher than the cost of all the hardware on it. Not only that, but the maintenance cost of a software is often higher than the cost to create it from start. Especially for software pieces that are meant to be used for a long time, maintenance cost might be a few times more than the production cost. Software engineering holds it a goal to ensure that the software development is efficient and low-cost.

Software products can be studied under two topics;

  1. General Products
  • Independently built products that are sold to any customer that is interested in are called general products. Examples of these can be graphical programs, project management systems, computer supported design tools or even a dentist appointment program.
  • Product description, a short summary of what the product can achieve, is determined and the changes & updates on the software are planned by the software developer.

2. Personalized Products

  • These types of products are often ordered by a customer in order to cover their needs for a certain business. Examples of these can be embedded control systems, weather traffic control systems or a traffic observation systems.
  • Product description, a short summary of what the product can achieve is determined and the changes & updates on the software are planned by the customer.

Any computer program and relating documents are named a software. A good software should consist of the required performance and functionality by the user; it should allow maintenance, be safe and efficient to use. The discipline of engineering that works on all aspects of software development is called software engineering. The basics of software engineering includes software definition, software development, software verification and software evolution.

Computer Science focuses mostly on the theory and the basics of computers’ working mechanism, whereas software engineering focuses mainly on the practical matters such as the development of a useful piece of software and it’s delivery to the customer. System engineering, on the other hand, works on all systems that are computer based including hardware engineering, software engineering and process engineering.

The main hardships you’ll come across with software engineering include increasing variation and requirements for faster, safer results. The cost, on the other hand, will go to %60 for development and 40% for testing processes. For personalized products the cost for the changes and updates over a piece of software ends up often higher than the development cost of said software.

Different types of software systems will require different techniques in order to be developed and manages professionally. For example, games will require prototyping for development while control systems that require high levels of security will have to be analyzed throughout before production. For that reason we can’t really say which technique is better than the other for software development.

With the developments of the Web, any piece of software became far easier to get. Web based systems improved programming languages greatly and increased the re-usability of programs.

A good software should have the following qualities:

  • Sustainability & Maintenance: The software should be designed so that it will allow changes based on the needs of the customer. Since change is an unavoidable part of the work environment this step holds critical value.
  • Safety & Security: A safe, dependable software shouldn’t allow any bugs that might cause any physical or economical loss. Ill-meaning users shouldn’t be able to access the system and/or cause harm.
  • Efficiency: The software shouldn’t abuse memory or processing units. The efficiency concept includes other concepts such as answering time, processing time and memory usage efficiency.
  • Acceptability: The software should be acceptable by those who it’s built for, meaning the software should be easy to understand, useful and working well within the environment that the users already have installed.

Engineering discipline is the act of solving problems using the required techniques and theories, while considering the organizational and economical limitations. Therefore the development of a piece of software doesn’t include only the technical steps of the development process, but also the project management and development tools and techniques that support the technical development.

Each day we come across more and more people and groups needing high end software systems, and therefore, wee need to be able to develop those systems in an economical and quick manner.

Using software development techniques in order to develop a piece of software is proven to be cheaper than straight up coding as we do in our personal projects. A high percentage of the cost on a project often goes to the changes made after it’s in use.

Here is the skeleton of each step for developing a software system;

  • Software definition: This is the step where engineers and the customers get together in order to determine what the software to be developed will actually do and the limitations of it.
  • Software development: This is the step where the software is analyzed, designed and finally developed.
  • Software verification: This is the step where the customer studies the software and sees if it suits their needs.
  • Software evolution: This step includes the maintenance and the updates of the software. Depending on the customer request or the changing market requirements the software is changed.

Here are the basic topics that involve any software developed at any time:

  • Heterogeneity: The systems need to be able to work on different kinds of environments, computers and mobile devices.
  • Business-related and social changes: With the evolving economy and technology, the business world and the social life changes. Which brings the need to quickly change the existing software and/or develop new software.
  • Safety and security: Since all our lives are surrounded with the help of different pieces of software, it’s important for these to be safe and dependable.

While there are many different types of software systems, there isn’t one universal set of software techniques that can be applied to all. The tools and techniques of software engineering depend on the type of the software you are developing, the requirements of the customer and the skill level and experience of the software development team. All applications can be studied under eight topics;

  1. Stand-alone applications: These type of applications are designed to work on a single device. They have all the functionality they need and don’t require to be connected to a web.
  2. Interactive process based applications: These type of applications work on a remote computer and can be accessed by the user via a computer or a terminal. Web applications such as e-commerce applications can be considered examples of these type of applications.
  3. Embedded control systems: These are the software systems that control and manage hardware devices. Compared to any other type of applications listed here, the embedded control systems exceed others in numbers.
  4. Batch processing systems: These are the business systems that are designed to process huge amounts of data. They process huge numbers of input data in order to reach meaningful output data.
  5. Entertainment systems: These applications are mainly developed for personal goals and their purpose is to entertain users.
  6. Modelling and simulation systems: These are the systems that are developed by scientists and engineers in order to model physical facts and object interactions.
  7. Data collection systems: These types of systems collect data from their environments through the help of sensors and send these data to other systems for processing purposes.
  8. System systems: These are the systems that consist of multiple systems working together for a single purpose.

--

--