Software System Engineering
The scope of the software projects has always been in an evolving state. Nowadays, it became so huge that we require new types of jobs just to handle it efficiently. Those people are called system engineers. But, what is system engineering? What do they do exactly?
As you can tell from the name itself, we are dealing with the systems. So like every system, it needs some order. Since it’s concerning about software, we can say our orders are; defining the problem, analyzing the solution, making the planning, controlling the process and evaluating the product. So basically, system engineers provide the baseline for the software projects. We can say that they are between project managers and software engineers. They need to know about the technical part and design the project according to it but they don’t code it, they manage it.
But after all, software system engineering is not a job description. It is just a process that many people do in the organization. It is also quite an important job since large scale systems really depend on the well-defined structure for scalability and maintainability. They also deal with the risk and cost estimation which may result in saving money on high-risk, low-income involving projects.
Before we talked briefly about the main points of the software systems engineering. Let’s examine them a bit more deeply.
Requirements analysis; in any project, this step is the first and fundamental step. After all, we do need to know what we are doing before we start doing it, right?
- We need to know about our functionality. What kind of features will our program have?
- Performance requirements. How frequently and how fast should our software work?
- What kind of hardware, databases or 3rd party software will be used? What are their relation and how they affect each other?
- Design requirements. What language will we use? What is coherent with the hardware?
- The Quality. What are our requirements for correctness and reliability? Maintainability and portability.
The process begins after the definition of the problem and determining the users of this solution. This requirements and definitions may change in the process but will definitely provide a solid baseline.
Software design; in this section, the goal is to determine the most efficient ways to our solution. “What should our architecture look like?“ and “Is it scalable?” kind of questions should be asked in this section. It consists two parts: Architectural design and detailed design. We can say one is the general system design and the other one is the component and module design.
Process planning; this is the part about planning the actions. We can narrow it down to determining what to do, how to do, when to do and who will do. Every part will be well defined and assigned. The strategies and policies will surely vary company to company.
Process control; this part takes place during the whole development stage and it measures the performance. Budget and the development schedule is constantly checked and made sure they are good looking. Also in this section, you should able to do actions in case of a fault. Those can be correcting it with right action, changing the plans or terminating the project.
Verification, validation, and testing; the verification, validation, and testing (VV&T) effort determines whether the engineering process is correct and the products are in compliance with their requirements . So we need to make sure everything is correct.
Verification: Did we fulfill the requirements? We can ask ourselves: “Did I build the product right?”.
Validation: We did the project and it works. But does it work correctly? So this time we can ask: “Did I build the right product?”
Testing: So we did build the right product in the right way. But we need to test possible inputs and their outputs. Testing is important about discovering “unwanted features” and should be done continually. We can say testing is also a part of validation.
- IEEE Std. 1012-1998, Standard for Software Verification and Validation, IEEE Press, Piscataway, N.J.,1998.