Thursday, May 22, 2008
Software from a Systems (Engineering) Perspective
Are software and systems engineering ready for specialization?
No doubt about it. Software which used to be the b*** stepchild of systems, only given attention rudely, and when there was no other alternative, has now moved to a position of prominence in the system equation.
Why? Forces moving in two directions: (1) the capability of software to perform more and more complex tasks; (2) the heavy expense required to build ASICs to carry out tasks that software can perform. Add to this the complexity being demanded by customers, and software is now appearing as the only way to go.
Can MDA help? Yes it can. SE is moving away from imperative code to declarative code (viz. Flex and MXML) and looking to graphical modeling notations such as UML and SysML for help in working with components at a higher level of abstraction.
What's different when software is a system component?
The code is no longer the focus of attention. In the Royce iterative Waterfall Model, one needed code to keep things going. Now the big three (from SysML) are:
No doubt about it. Software which used to be the b*** stepchild of systems, only given attention rudely, and when there was no other alternative, has now moved to a position of prominence in the system equation.
Why? Forces moving in two directions: (1) the capability of software to perform more and more complex tasks; (2) the heavy expense required to build ASICs to carry out tasks that software can perform. Add to this the complexity being demanded by customers, and software is now appearing as the only way to go.
Can MDA help? Yes it can. SE is moving away from imperative code to declarative code (viz. Flex and MXML) and looking to graphical modeling notations such as UML and SysML for help in working with components at a higher level of abstraction.
What's different when software is a system component?
The code is no longer the focus of attention. In the Royce iterative Waterfall Model, one needed code to keep things going. Now the big three (from SysML) are:
- Requirements
- Tests that validate the requirements
- An implementation block (of either hardware or software)