Introduction:
Systems engineers
and software engineers work together in the development of modern complex
systems.
The two
engineering cultures, the concepts, and the best practices have developed
independently over four decades.
The present
record of success for complex computer intensive systems is that for every six
systems put in operation two are canceled; on the average projects are 50% over
schedule; and three quarters are failures that do not function as intended
or are not used at all, (Gibbs 1994). Incomplete specifications,
ambiguous specifications, and misunderstood specifications are a major
contributor to these problems.
Applying system engineering principles specifically to the development of
large, complex software systems provides a powerful tool for process and
product management.
The application
of system engineering principles to the development of a computer software
system produces activities, tasks, and procedures called software system
engineering, or SwSE. Many practitioners consider SwSE to be a special case
of system engineering, and others consider it to be part of software
engineering. However, we can argue that SwSE is a distinct and powerful tool
for managing the technical development of large software projects.
The need for synergism
between systems engineering which develops specifications to meet user need and
software engineering is particularly important because software portions of
systems are increasingly complex and are often being coded in countries far
from the country where the system is defined and utilized.
1. Definitions:
Software Engineering:
Software
engineering is the application of science and mathematics by which
the capabilities of computer equipment are made useful to man via computer
programs, procedures, and associated documentation.
Software
engineering is the systematic application of methods, tools, and knowledge to achieve stated technical,
economic, and human objectives for a software-intensive system.
System Engineering:
Systems engineering is the
application of scientific and engineering efforts to
(a) transform operational need into a description of
system performance parameters and a system configuration through the use of an
iterating process of definition, synthesis, analysis, design, test, and
evaluation;
(b) integrate related technical parameters and
ensure compatibility of all physical, functional, and program interfaces in a manner that optimizes the total
system definition and design;
(c) integrate reliability, maintainability, safety,
survivability, human, and other such factors into the total engineering effort
to meet cost, schedule, and technical performance
objectives.
Another
definition: An iterative process of top down synthesis, development, and
operation of a real-world system that satisfies, in a near optimal manner, the full range of requirements for the
system. In fact, most definitions of systems engineering focus on the process by which operational needs and
specific requirements are converted into working systems against a backdrop of
cost, time and talent constraints.
Software
System Engineering:
Software engineering is
1. The practical application of computer science,
management, and other sciences to the analysis, design, construction, and
maintenance of software and its associated documentation;
2. An engineering science that applies the concepts of
analysis, design, coding, testing, documentation, and management to the
successful completion of large, custom-built computer programs under time and
budget constraints; and
3. The systematic application of methods, tools, and
techniques that achieve a stated requirement or objective for an effective and
efficient software system.
4. The establishment and use
of sound engineering principles in order to obtain
economically software that is reliable and works efficiently on real machines.
5. Software engineering is the
application of science and mathematics by which the capabilities of computer
equipment are made useful to man via computer
programs, procedures, and associated documentation.
Both SwSE and SwE are technical and management
processes, but SwE produces software components and their supporting
documentation.
Figure 2 illustrates the engineering relationships
between system engineering, SwSE, and SwE.
Traditional system engineering does initial analysis
and design as well as final system integration and testing.
During the initial stage of software development, SwSE
is responsible for software requirements analysis and architectural design.
SwSE also manages the final testing of the software system.
Finally, SwE manages what system engineers call component engineering.
2. My
Thoughts on the Relationship Between Software Engineering and System
Engineering
In the modern
world, complex systems are commonly required. Software intensive systems are
among the most complex systems and systems engineering is commonly used in
those systems. Both system engineering and software engineering address the
creating of complex software intensive systems from two different perspectives.
Software
engineering is not a deep discipline in some aspects and system engineering can
make some contributions for them. Creating software intensive systems require
both fields to cooperate.
Software
systems are usually designed, developed and maintained by professionals with
narrow disciplinary perspectives. Complex systems cannot be designed by one
person. System engineering is a horizontal field, not deep in one field but
wide in many fields. System engineering borrows from a wide range of areas and
formal disciplines. Without these contributions, the field cannot exist. Without the organizing systems engineering
life cycle, they remain uncoordinated expertise fields. Systems engineering is
also domain independent. The design and development principles are generic.
They can be applied to any problem.
So a system
engineer is probably the right person for creating complex systems. Software
engineering is deep in its field but not wide in other disciplines. In this
aspect, software systems engineering comes to play which joins systems
engineering and software engineering in creating complex software systems.
Comparison Involvement in a System’s Life
Cycle
In the lifecycle of a software system, Systems
engineering places relatively more interest on the front end requirements
analysis, modeling and validation processes. System analysis spend more time
spend much
more time and effort on requirements than software engineers. But it is
certainly true that software engineers
have begun to
appreciate the importance of needs analysis,
user requirements modeling, and organizational requirements profiling.
1.
Comparative advantages
Usually software engineers does not spent a great deal of time on
front-end system and user requirements identification, definition, or
validation. Instead, there is usually a desire to ‘get coding’ as soon as
possible.
Consequently, there are a large number of ‘failures’ that
can be traced directly to inadequate requirements analyses. Software engineers usually
avoid the systematic development and evaluation of alternative definitions and
designs throughout the software engineering process. Criteria-based alternative
design evaluation, for example, is seldom conducted by software engineers; nor is there much emphasis on prioritising
requirements with reference to constraints in formal (or even informal)
trade-off analyses. All such activity is automatic to systems engineering;
without such activity, software engineers risk proceeding prematurely to design and coding (as has often
been the case).
Software engineering needs an infusion from systems engineering of effectiveness measures, early formalized trade-off applied throughout the work, and sequential build and test. It needs consistent application of hierarchy.
Systems
engineering needs to receive from software engineering an infusion of rigorous
modeling and information hiding, the use of generators, and application of the classification
relationship in modeling. It is critical for reuse, for consistent definitions,
and for rigorous communication with software engineering.
The mutual
infusion of best practices from the other discipline strengthens both, and
ameliorates existing problems of providing specifications to software
engineering on large projects.



Hiç yorum yok:
Yorum Gönder