Articles » Science and Technology » Concept » Understanding Software Engineering (SE)
Understanding Software Engineering (SE)

Understanding Software Engineering (SE)

Software engineering (SE) is crucial when it comes to developing information systems. That’s because an information system is made up of software, hardware, data, and people working together to give us useful info for making decisions. Let’s discuss about what SE means, its stages, and what it all means for us.

Introduction

Definition of software engineering

In short, software engineering (SE) is all processes related to developing, running, and maintaining software, in a way that’s organized and can be measured. This means the process involves designing, building, testing, and keeping it running smoothly.

Meanwhile, the software itself is just a bunch of computer programs that do something specific for people or other systems.

Implementation of SE

Software engineering (SE) is important because it increases data management efficiency and helps us get things done faster. Its application has covered many areas, from banking, e-commerce, transport, health, education, government, to entertainment. Some examples are:

  • Engineering and science. 
    Development of software that helps engineers and scientists do their jobs in specific fields. Think about MATLAB, AUTOCAD, PSPICE, and ORCAD. 
  • Cybersecurity. 
    Development of software that keeps our computer systems, networks, and programs safe from attacks or people trying to mess with them. This includes creating antivirus, firewalls, and encryption softwares.
  • Information Systems.
    Development of software that combines hardware, data, and people to give us useful info for making decisions. This includes things like database management, knowledge management, and decision support systems.
  • Video games.
    Designs, develops and tests video-game software to give players an awesome experience. Games like EVE Online, Motorsport Manager Racing, Rebel Galaxy, The Captain, and Infinite Lagrange are thanks to SE.

The importance of SE

Software engineering (SE) is crucial because it helps create high-quality, reliable, and secure software. When software is made using good SE practices, it’s easier to keep it up to date and can perform optimally.

Nowadays, we use software all the time in our daily lives. That’s why it’s important for software developers to know and use good SE principles. This way, they can create software that’s top-notch and dependable.

Software engineering vs. Programming

Software engineering (SE) and programming are different things.

Programming is about writing code in a specific language. It’s just part of SE and doesn’t cover everything.

SE is way bigger and more complicated than just programming. It means understanding what people want and need from a software. It also means analyzing, designing, building, testing and keeping software running smoothly while meeting certain standards.

Software engineering vs. computer science

Computer science and software engineering are related, but they are not the same thing.

Computer science is all about the science behind how computer software and hardware work together. It’s about analyzing data, managing databases and keeping networks safe.

On the other hand, software engineering is all about using engineering principles to design, build and test software. It’s about creating new software to solve real-life problems.

So, while computer science tries to solve problems in theory, software engineering tries to solve them in the real world.

Software quality characteristics

There are several characteristics that help measure how good a piece of software is. They also help ensure the software meets the needs and expectations of users and other stakeholders. Based on ISO/IEC 25010 the software quality characteristics are:

  • Functional suitability: How well the software does what it’s supposed to do. 
  • Performance efficiency: How well the software uses resources like time and memory. 
  • Compatibility: How well the software works with other software or systems. 
  • Usability: How easy it is for people to use the software and get what they want from it. 
  • Reliability: How often the software works without crashing or messing up. 
  • Security: How well the software keeps information and data safe from people who shouldn’t see it. 
  • Maintainability: How easy it is to fix or update the software when needed. 
  • Portability: How easy it is to move the software to a different computer or operating system. 

SE stages

By following the stages of software engineering (SE), developers can ensure that the software they build does what people want and is really good. The SE process helps avoid problems that could come up later on and makes sure the software works as well as it can.

Software engineering (SE) stages
Figure 1. Software engineering stages.

In a nutshell, there are 4 main steps in software engineering: 

  1. Requirement analysis.  
    The first step in SE is understanding what people need from the software. This is crucial so the software does what it’s supposed to do.
  2. Design.  
    The next step is designing how the software will work based on what people want. Developers need to do research to figure out things like what kind of computer, programming language, and development environment to use. 
  3. Development.  
    This is when developers actually write the code for the software based on the design. The development team also needs to test the software to ensure it works correctly. They check for things like the characteristics we discussed earlier. 
  4. Implementation and maintenance.  
    The last step is releasing the software and setting it up for people to use. After that, the software must be maintained to keep working well. 

SE methodology

There are many ways to develop software using the steps above. Some popular methods are Waterfall, Prototype, Spiral, RAD (Rapid Application Development), Scrum, and Agile.

Each method has its advantages and disadvantages. So it’s important for the developer to pick the right method for their project. This way, the software development process will go smoothly, and the final product will be great.

When picking a method, the development team must consider several things. For example, how complicated the project is, what people want from the software, what tools and resources they have, and what their goals are.

SE tools

Software engineering (SE) also uses technology and tools to make software development faster and easier. Some examples are IDEs (Integrated Development Environments), version control systems, and CI/CD (continuous integration and delivery).

Each step in SE has its own tools to help make the software development process more efficient.

Implications

Software engineering (SE) can have both positive and negative effects on different parts of our lives.

On the one hand, good software can help us do things more efficiently, come up with new ideas, and have a better experience. On the other hand, SE can also cause problems with things like ethics, privacy, security, copyright, and the environment.

So it’s important for software developers to be responsible and ethical when they create software. They need to think about how their software will affect people and the world around us. And they need to keep learning and adapting to new technology and what people need in the future.

Work prospect

More and more companies are using software to run their operations these days. This means there are some pretty cool job opportunities in software engineering like being a:

  • software engineer,
  • software developer,
  • quality assurance engineer,
  • data scientist, or
  • machine learning engineer.

Salaries can vary depending on things like your job title, experience, education and location. But they’re generally pretty high and competitive.

SE Challenge

Creating high-quality software that meets the needs of users isn’t always easy. There are a few challenges that can come up during the software engineering process. For example:

  • Compliance with specifications.
    Sometimes the software doesn’t meet the set specifications. That’s why it’s important for developers and clients to communicate and ensure everyone’s on the same page.
  • System complexity.
    Another challenge is that modern software can be complex with many different features. Developers must ensure all these features work together to create a stable and reliable system.
  • Project management.
    Managing a software development project can be tough. There are often multiple teams and stages involved, so ensuring everything gets done on time and within budget is a big challenge.
  • Change of requirements.
    Sometimes user requirements can change during the course of development. This can make it hard to stick to schedules and budgets. Developers and clients must discuss whether these changes should be made to the current project or saved for the next one.
  • Human error.
    Of course, everyone makes mistakes. Human errors like typos or code bugs can cause problems with the software. That’s why developers need to test it regularly to catch and fix any errors.
  • Security.
    Finally, security is crucial in today’s world. Developers must ensure their software is safe from cyber-attacks to protect user privacy.

Cover image by macrovector on freepik

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.