Software System Design
Software System Design lies between the intersection of Software Design and Systems Engineering. There are many books and courses about the latter two topics while little has been written or taught about the former. Software system design is the design process used to create things like the Internet, RDBMS, RPC, Web, CORBA, and Cloud. These are the critical mechanisms used to build any distributed system.
An understanding of software system design is needed to properly analyze and use mechanisms to build a system. The Internet took decades and tens of thousands of engineers to reach the current state of maturity. A mechanism like an RDBMS embeds network technology into how it accomplishes work.
The Web is perhaps the most important technology since the printing press. The Web started from one or a few visionaries but took more than a decade and thousands of engineers to become what is in use today.
An RDBMS is an optimal way to persist data in a relational format. An RDBMS is often used as an easy method to exchange messages between programs within a system. A middleware such as CORBA provides much higher performance than an RDBMS to exchange messages. However, CORBA is only used when high performance is needed as it is much harder to use.
The purpose of learning about software system design is build a better system. A designer needs is to know about available mechanisms and their advantages and disadvantages. A good design combines existing and new mechanisms to achieve an efficient and elegant solution to a problem.