Software Engineering — Introduction (Part 1)

A general introduction to software engineering.

Omar Elgabry
OmarElgabry's Blog
3 min readMar 17, 2017

--

The world can’t operate without software. Industries are controlled by software systems, such as financial systems, scientific labs, infrastructures and utilities, games, film, television, and the list goes on.

“So, what’s a software anyway?” …

Software

A software is a computer program along with the associated documents and the configuration data that make these programs operate correctly.

A program is a set of instructions (written in form of human-readable code) that performs a specific task.

Types of Software Systems

There are many different types of software systems from simple to complex systems. These systems may be developed for a particular customer, like systems to support a particular business process, or developed for a general purpose, like any software for our computers such as word processors.

Many systems are now being built with a generic product as a base, which is then adapted to suit the requirements of a customer such as SAP system.

Successful Software System

A good software should deliver the main required functionality.

Another set of attributes — called quality or non-functional — should be also delivered. Examples of these attributes are, the software is written in a way that can be adapted to changes, response time, performance (less use of resources such as memory and processor time), usable; acceptable for the type of the user it’s built for, reliable, secure, safe, …etc.

Software Engineering

Software engineering is an engineering discipline that’s applied to the development of software in a systematic approach (called a software process).

It’s the application of theories, methods, and tools to design and build a software that meets the specifications efficiently, cost-effectively, and ensures quality.

It’s not only concerned with the technical process of building a software, it also includes activities to manage the project, develop tools, methods, and theories that support the software production.

Not applying software engineering methods results in more expensive, less reliable software, and it can be vital on the long term, as the changes come in, the costs will dramatically increase.

Different methods and techniques of software engineering are appropriate for different types of systems. For example, games should be developed using a series of prototypes, while critical control systems require a complete analyzable specification to be developed.

Computer Science Vs Software Engineering

Computer science focuses on the theory and fundamentals, like algorithms, programming languages, theories of computing, artificial intelligence, and hardware design, while software engineering is concerned with the activities of developing and managing a software.

Software Engineers

The job of a software engineer is difficult. It has to balance between different people involved, such as:

  • Dealing with users: Users don’t know what to expect exactly from the software. The concern is always about the ease of use and response time.
  • Dealing with technical people: Developers are more technically inclined people so they think more of database terms, functionality, etc.
  • Dealing with management: They are concerned with the return on their investment and meeting the schedule.

For success in large software developments, it is important to follow an engineering approach, consisting of a well-defined process. That’s what we’re going to explore next in the “Software Processes”.

--

--

Omar Elgabry
OmarElgabry's Blog

Software Engineer. Going to the moon 🌑. When I die, turn my blog into a story. @https://www.linkedin.com/in/omarelgabry