collected papers
, David L. Parnas sets out different architectures, the classes of design and the
advantages of modular design. Historically, software and indeed hardware architectures and hierarchical systems have
employed graph theory, modular design, the concept of parameterization, data and control ow techniques all aiming at
a structure that is the optimum from a functional view and optimum from a development view.
In this short speed blog, we aim to highlight that software architecture, your blueprint for development if you will, is as
critical to design as correct version control or ensuring code is well commented. Our end message is one of education
both from a bottom-up (developer-lead) and top-down (supervisor-lead) manner.
Together with other sustainable software concepts, we hope all our code can become sustainable for others and for our
future selves. “Better software, better research”, the Institute’s go-to raison d’être, can now become “better
architecture, better maintainability” and “better modularity, easier development”.
Software Architectures and Abstraction
A key concept within design in any eld, whether that be building design, mechanical engineering, electronics
engineering, software engineering or even management, economic or social systems engineering, is the concept of
design abstraction (
Herbert A. Simon, “The Sciences of the Arti cial
”). But what do we mean by design abstraction?
In essence, it is the wilful ignorance of the nitty gritty details, allowing us to view the bigger picture.
In software development, we might separate a design into layers, perhaps the abstraction of services or functionality,
perhaps the boundaries between sub-services or classes of functionality. Perhaps we abstract based on interfaces to
both the real world or the end user of the software. Let’s call this concept functional abstraction, the classic case being
an application with a GUI front end, where we may logically separate the functions and development of i) the GUI
graphical code, ii) the handling of data processes and sub- or low-level functions and iii) event handling such as user
mouse clicks on a GUI button or a hardware interrupt.
We can also separate a complex system based on the notion of an environment abstraction level. Hardware and the
electrons that ow within transistor logic circuits are naturally the lowest level of an abstraction stack, but we can
easily see that from hardware we can move up an abstraction stack of hardware, rmware, BIOS, low-level functions
and right up to the application layer software and the end-user. One of the best examples of abstraction based on
environment separation is the internet protocol
Do'stlaringiz bilan baham: |