Software Architecture

Software Architecture


Note: This tutorial is still work in progress. It will be updated bit by bit, until it reaches a more comprehensive and coherent state. However, you may still get something out of it already now.

Software architecture and software design are two aspects of the same topic. Both are about how software is structured in order to perform its tasks. The term "software architecture" typically refers to the bigger structures of a software system, whereas "software design" typically refers to the smaller structures.

Exactly where the boundary is between architecture and design is hard to say, since the architecture of a system also affects its design. The design of the bigger structures affect the design of the smaller structures. To set it somewhere meaningful (to decide what should be included and excluded in this tutorial), I have set the boundary at the process level. Software design is thus concerned with the internal design of a single software process, whereas software architecture is concerned with the design of how multiple software processes cooperate to carry out their tasks.


How does my definition of software architecture fit with the term "distributed systems" ? The way I see it, software architecture provides the basic structures on top of which the various distributed algorithms can run. Yes, there is a certain overlap between the two terms, but various different distributed algorithms can run on top of the same underlying architectures.

Software architecture is also influenced by the hardware architecture of the whole system (software + hardware). You may need different architectures (and thus design) depending on what hardware you are using. Or, you may choose different hardware depending on your architecture.

Common Software Architectures

There are many different types of architectures, but some architectural patterns occur more commonly than others. Here is a list of common software architecture patterns:

  • Single process.
  • Client / Server (2 processes collaborating).
  • 3 Tier systems (3 processes collaborating in chains).
  • N Tier systems (N processes collaborating in chains).
  • Service oriented architecture (lots of processes interacting with each other).
  • Peer-to-peer architecture (lots of processes interacting without a central server).
  • Hybrid architectures - combinations of the above architectures.

Here is a simple illustration of these architectures.


Process Communication Channels

Processes typically have three media through which they can communicate with each other. These are:

  • Network
  • Disk
  • Pipes

Processes can communicate with each other via computer networks. Through this medium a process can communicate with processes running on the same computer as itself, or with processes running on a different computer, provided that the two computers running the processes are connected with a computer network.

Processes running on the same computer can also communicate with each other via the computer's hard disk (or other disks like USB disks etc.). Processe A can write files to the disk which are processed by Process B. A reply can also be sent back from Process B in a file written to disk which Process A then reads.

Processes can also communicate via network storage, which is essentially a hard disk connected to the computer network. This way processes can also communicate with processes running on different computers, via the combination of network and disk communication.

Depending on the operating system the processes are running on, processes running on the same machine can also communicate with each other through pipes. Pipes are channels of communication provided by the operating systems for processes. The communication takes place like network communication, but the messages exchanged are kept internally in the RAM of the computer. Pipes can be faster than network communication, because a lot of network protocol overhead can be eliminated when the communicating processes run on the same computer.

Processes could also communicate via a RAM disk, which is a virtual hard disk allocated in the RAM of a computer. A RAM disk looks like a disk to the process, but is much faster than a disk because the data is only stored in RAM.

Process Communication Modes

Processes can communicate with each other in either:

  • Synchronous mode.
  • Asynchronous mode.

When a process A communicates with a process B synchronously, it means that process A sends a message to process B and waits for B to reply. Process A does not do anything until it gets a reply from process B.

When two processes communicates asynchronously, the processes sends messages to each other without waiting for each other to reply. Process A may send a message to process B and then continue with some other work. At some point process B sends a message back to process A, and process A processes that message when process A has time for it.

Synchronous and asynchronous communication has different advantages and use cases. You can use asynchronous communication to implement synchronous communication, or use synchronous communication to implement asynchronous communication.

The synchronous and asynchronous communication modes are illustrated here:

 

来源于:

http://tutorials.jenkov.com/software-architecture/index.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值