Monday, February 27, 2012

Onion Structure in Computer Operating Systems

I found this article pretty fascinating. I thought it was a coincidence and then found out that Linux's structure is actually based on this onion structure.  

2.3.3.1 Onion structure


[onion structure]A typical structure for a software engineering environment is built around a layered system like an onion, where there are a number of layers of functionality provided by the different levels in the system. The model includes the following layers (see Figure "Onion Structure"): 1) Operating System 2) Database System 3) Object Management 4) Tools Interface 5) User Interface The Operating System is the innermost layer in the computer system. The outermost layer is the User Interface. (note to publisher: Please use my photo 7, or any of 4 through 8, of my `Sep 21' set).

Figure 19: "Onion Structure" This photo of a halved onion is accompanied by a drawing of the layers of a software engineering environment.
[operating system]While some software engineering environments use special-purpose operating systems tailored to software life cycle documents, the need for portability has meant that the most systems depend on a standard operating system for the innermost layer. More particularly, the majority of software engineering environments have been built on top of the UNIX operating system. UNIX is both widely available and has many functions that are well suited to managing the needs of software engineers.
[database system]The database layer provides a low-level model for all data. A database management system supports efficient storage and retrieval. Many people can simultaneously access or change the database without accidentally destroying data. The concerns of the database layer are not peculiar to the application of software engineering.
[object management]The object management layer recognizes the entities of the software life cycle. Broadly, the object management layer allows software documents to be named, to exist in a number of different versions, and for relationships to be recorded between documents. Its ability to keep track of the links among document components is one of the most critical functions of the software engineering environment.
[tools interface]The tools interface supports the tools which do specific things, such as retrieve the latest version of a document or create a new link between the software and the software documentation. The most integrated tools intimately exploit the abilities of the object management layer. A tool that is foreign to a particular software engineering environment was not built with that software engineering environment in mind. In order to work, this foreign tool must communicate directly with the operating system and the user interface.
[user interface]The final layer in the software engineering environment is the user interface layer. In an integrated system the tools communicate through the object management layer to the database and then to the operating system. It is equally important that the tools should be integrated at the user interface level, so that users are not faced with the daunting task of learning different tool interfaces. Each tool should have interface conventions which coincide with those of the other tools. For instance, if typing `?' brings help when one is trying to formulate a query to the retrieval tool, then typing `?' should also invoke help when one is trying to create a link with the authoring tool.

No comments:

Post a Comment