As an engineer, my job is to develop some computers. But before designing, there should be have an idea and a specification of what you want to build, and it is components.
What is the Purples of Design
Design is handling complication. You have an idea of building an object. But firstly, you don’t know the detail of this object. However, you need to design it. Because of there is not this thing in the world. In software realm, abstract data type (ADT), is corresponding an object. In ADT, there are many attributes and many operations. If in huge software, the basic component is those ADT, actually, Class in C++ is analogous ADT, and provides more mechanism to support this idea in programming language level.
In Linux, it is built by a great many of ADT, and the connection of those ADT is managed by architecture, which is design by Linux Open Source Group.
By the way, Not only in software design ADT is needed, but also in hardware design, but in hardware design, we name it as Block.
The End-to-End system Design approach
End-to-End is a kind of ways in designing. We can see some wonderful character of this approach. Such as you just define the interface and then develop the level without concern with the other layers. It is an approach based on hierarchy design. Thus, it is very useful in designing Network Stack. But we can also extend the application, such as in information system, graphic interaction, and so on. I have develop a little operating system, indeed, it is not a OS, whereas a kernel of OS. It only has a switch of processing with TCB block.
Example of LyOS, a real-time process manager
How this OS, I say LyOS, using End-to-End system design approach? In this OS, I separate it into to part, one it is coding by C language, and the other is coding by ASM language. But the interface of them I call it as invisible function. Based on this invisible function designed ASM part and C part, can beautiful independence.