# Solving Problem with Software

Engineering

This article is part of Proyek Perangkat Lunak (PPL) or Software Engineering Project Course. Any information written here may or may not be true. Please use it wisely and let me know if there is any wrong information in it.

Of course we have had problems in the real world and sometimes we are tired and fed up with these problems. Then why should we continue to work on it if machines can do it, that’s where software engineering is there to help us.

## What is Software Engineering?

Software engineering is defined as a process of analyzing user requirements and then designing, building, and testing software application which will satisfy those requirements.

Software engineers often encounter problems related to a computer or existing computer system but sometimes the underlying problem have nothing to do with computers.

Therefore, we must understand the nature of the problem first:

- Do not impose computing machinery or techniques on every problems.
- Solve the problem first and if needed we can use technology as a tool to implement our solution

## Solving Problem with Software Engineering

**Begin investigating a problem by analyzing it.**

- Break the problem in pieces that we understand and try to deal with.
- Understand the relationship between pieces that hold the problem.

**Once analyzed, construct the solution from the components that address the problem’s various aspects.**

•This reverse process is called synthesis: putting together of a large structure from small building

# The Essence of Practice

## Understand the Problem

- Who has a stake in the solution to the problem? That is, who are the stakeholders?
- What are the unknowns? What data, functions, and features are required to properly solve the problem?
- Can the problem be compartmentalized? Is it possible to represent smaller problems that may be easier to understand?
- Can the problem be represented graphically? Can an analysis model be created?

## Plan the Solution

- Have you seen similar problems before? Are there patterns that are recognizable in a potential solution? Is there existing software that implements the data, functions, and features that are required?
- Has a similar problem been solved? If so, are elements of the solution reusable?
- Can subproblems be defined? If so, are solutions readily apparent for the subproblems?

## Carry Out the Plan

- Does the solution conform to the plan? Is source code traceable to the design model?
- Is each component part of the solution provably correct? Has the design and code been reviewed, or better, have correctness proofs been applied to algorithm?

## Examine the Result

- Is it possible to test each component part of the solution? Has a reasonable testing strategy been implemented?
- Does the solution produce results that conform to the data, functions, and

features that are required? Has the software been validated against all stakeholder requirements?

## Case Example in PPL

In our current project (Sirclo Learning Lab) one of the current problems is contributors still **manually **created certificates **for each** student who completed the quiz. It will take a lot of time and energy, that’s why in this case we can use software engineering to solve the problem. This is an example of code we implemented so the contributors can take another activity and let the machine do the rest for them.

By some lines of code, it can save a lot of time, imagine if you need to create 100 certificates a day and each of them takes 3 minutes. You will spend 5 hours a day only to make those certificates. That’s why software engineering can save you energy and time if the problem is well defined and it is possible to do.

## Final Words

Software engineering is important because the specific problem has specific software implementation. It is needed in almost every industry, in every business, and for every function. It becomes more important as time goes on — if something breaks within your application portfolio, a quick, efficient, and effective fix needs to happen as soon as possible. It also can save many aspects of real-life problems.

Thanks for reading and don’t forget to be grateful!

“Walking on water and developing software from a specification are easy if both are frozen.”