Talking About System Design
A scientist investigates the world around us to produce discoveries and methods for reasoning about a discovery. An engineer builds mechanisms, machines, devices and systems from raw materials based on scientific discoveries and methods as well as past engineering experience. Electricity and electronics along with advancements in measurement, manufacturing and mathematics all led to the invention of a universal computing machine called the computer.
A computer performs work by executing code. A computer executes code to transform data inputs into data outputs and actions.
A computer and code is an efficient and easy to use mechanism within a machine, device or system. They are a core element of an ever increasing variety of products and systems.
The understanding of code and devised uses have led to code only mechanisms referred to as software. A loader, assembler, compiler, linker, real time executive, operating system, Internet, RDBMS, Web, Cloud and Analytics are a few of the software mechanisms behind the changing world. These software mechanisms are all devised within the span of a single lifetime.
The Internet of Things is just starting to transform the world in profound ways. It is built from newly invented hardware and software mechanisms, devices and systems.
Software Design and Systems Engineering are the human practices and disciplines used to devise software mechanisms and real world systems. They are a necessary response to the increasing usefulness and complexity of software and hardware mechanisms.
A software company must create or enhance software mechanisms and products to stay in business. The trend to off the shelf software components, open source software and agile software development have made it easier to skip over the need for architecture and design. It seems like a software engineer must produce a salable product in an ever decreasing amount of time.
The pressure to create is not new. This is how a human organization of managers and workers push each other in the same direction toward a common end. Experienced software engineers and designers must push back against this pressure to talk about and create architecture and design of the mechanisms and systems being built.
A language is needed to talk and reason about the architecture and design of software mechanisms and systems. The following documents are a beginning of this conversation. Please join in through what ever means possible such as sending comments to SoftEcoSDK@gmail.com, writing papers and articles, or starting a blog or online magazine. If this conversation is already happening, then please send an email as to where and how to join.
Still under construction. Articles to be added over time.