Costa Concordia: The Goals of Software Architecture
With the tragedy of the Costa Concordia, design with the human in the control loop comes to mind. A cruise ship is a large system with many moving parts and error points.
In a large mechanical system like a ship have long used computers, in the past the computers might have been the sextant to determine position, the length and angle of a rope pulled by a rock for speed, as well as other analog types of tools. In some cases, though not many, analog computers can be faster and more accurate than digital computers. No matter what you use, what are the goals of Software Architecture?
So what is good Software Architecture?
- Good architecture reduces the business risks associated with building a technical solution.
- Source: https://msdn.microsoft.com/en-us/library/ee658098.aspx#GoalsofArchitecture
So with the command issues onboard the Costa Concordia, how do you design software for these kinds of systems, systems that must function safely? In this case you need to make sure at the beginning of design or if you are pulled in during the design or implementation phase that the software architecture has these goals in mind:
- Expose the structure of the system but hide the implementation details.
- Realize all of the use cases and scenarios.
- Try to address the requirements of various stakeholders.
- Handle both functional and quality requirements.
What do you do if one or more of these items are not met? Carefully work with the management to get these items into the design process. After all, you may not see the big picture, and it never hurts to ask about these items. If the questions are ask in a non-threatening method, most manager would be happy to answer these questions and feel that you are a good worker.
Like the captain of a ship, you need to have an overriding guidance, and these four items are part of the guiding ideas.
Here is an image of a generalized process of Software architecture, as you can see this fits with the simplest games to the most complicated systems like a Cruise ship.
More to come on the Software Architecture of complex systems
Comments
Anonymous
January 20, 2012
But how then can you build a complex computer system and hide all of the implementation details? That's kind of odd.Anonymous
January 21, 2012
The comment has been removedAnonymous
January 22, 2012
ah. I see it now. I keep forgetting that, for since I belong to the open source community, I tend to think of software only in terms of my own projects. I think it's my fault then. I should think more of the higher places in the world where software isn't at the top. My bad.Anonymous
January 23, 2012
cron22, Software isn't at the top outside of software. A surgeon doesn't care that the DeVinci robot that is using software or hydraulically implemented augmentation (which would be possible). The driver of a car doesn't care if you are using open source or paper clips. You and I provide a service, and it is a service that humanity only recently found a need for. It's fun to think we are on the top of the pack. But software is a service, and in this case I mean we are a servant to all of the other engineering systems. Sure with games we kind of look good, but even there, we are nothing without graphic artists.