Apply Systems Engineering practices
Systems Engineering, defined as the practical application of scientific, engineering, and management skills required to transform a users need into a system configuration that satisfies the need, is much more a philosophy than an engineering discipline. Its basically an approach to solve complex problems.
As modern Systems Engineering largely grew out of NASA's high profile, high-risk projects such as Apollo in the 1960s and 1970s, the foundation is much older. It can be traced back to the late 19th century when traditional reductionism proved not work for biology and nuclear physics. The first formal statements on systems thinking is found in the German Gestalt Theory around 1910. The word gestalt mean an organized whole whose parts belong together.
So, how does this relate to software engineering practices in the 21th century? First of all, agile methods such as SCRUM are based on systems thinking and theory. To understand this, think of the development process as a system whose purpose is to create high quality working software under changing circumstances where learning is a key success criteria.
Secondly, what are the lessons learned in systems engineering that can be directly applied to improve software development practices? From Hitchins book advanced systems, thinking, engineering and management we find:
1. Systems engineering requires a clear singular mission and goal. 2. There should be a sound concept of operation from start to finish. 3. There should be an overall system design that addresses the whole mission from start to finish. 4. Overall system design can be partitioned into complementary interacting subsystems. Each subsystem should have its own clear mission and concept of operation. 5. Each subsystem might be developed independently and in parallel with the others, provided that fit, form, function, and interfaces are maintained. 7. Upon integration of the subsystems, the whole systems should be subject to tests and trials, real and simulated that exposes it to extremes of environment and to hazards such as might be experienced during mission.
Systems engineering (SE) is the practical application of scientific, engineering, and management skills required to transform a users need into a system configuration description that satisfies the need. The work products of systems engineering are documents, not technical artifacts.
Concepts of Operations (ConOps) is a key artifact in classical systems engineering. To be continued....
To be continued
By Einar Landre
This work is licensed under a Creative Commons Attribution 3
Back to 97 Things Every Software Architect Should Know home page