上文我们提到了软件架构在创建时会有哪些需要关注,那么作为架构师应该如何处理这些关注点呢?
架构师的主要关注点就是对系统进行组织,让每种结构有助于解答一个关注点所定义的问题。关键的结构决定将产品划分为组建,并定义了这些组建之间的关系。对于任何产品,都有许多结构需要设计。每种结构都必须单独设计,这样它就表现为一个独立的关注点。接下来我们探讨一些结构。
信息隐藏结构
在这种结构里的主要组件是一些“信息隐藏模块”,每个模块都是针对一组开发人员的工作指派,每个模块都包含了一种设计决定。如果一项决定可以改变,同时又不影响任何其他模块,我们就说这项设计决定是一个模块的秘密。模块间最基本的关系是“整体-部分”关系。信息隐藏结构是面向对象设计方法的基础。如果一个信息隐藏模块设计为一个类,这个类的公有方法就属于该模块的接口。这种结构可以满足的关注点是:可变性、模块化和可构建性的要求。
使用结构
“使用结构”的组建是一些可以单独调用的程序,请注意,程序是可以相互调用,或被硬件调用,调用也可能来自与不同命名空间的程序,如操作系统例程或远程。而且,调用发生的时间可以是任何时候,从编译时要运行时。
使用结构确定了我们可以构建并测试怎样的工作子集。在软件系统的使用结构中,期望的属性是它定义了一种层次结构,这意味这其中不出现环。如果在使用关系中出现了环,那么环中所有程序都必须存在且正常工作,才能让其他的程序正常工作。由于也许不能构建完全没有环的使用关系,架构师可能讲使用环中的所有程序作为单一的程序,一这种方法来创建子集,子集必须要么包含全部程序,要么都不包含。通常大型的软件系统包含了太多的程序,这让程序减使用关系的描述不太容易理解。在这种情况下,使用关系可以用于程序的组合。如模块、类或包。这种结构可以满足的关注点是:产品化和生态系统。
进程结构
信息隐藏模块结构和使用结构是静态的结构,存在与设计时和编码时,而进程结构是运行时的结构。参与进程结构的组建是进程。进程是运行时的时间序列,有程序控制。每一个程序都作为一个或多个进程的一部分执行。一个进程中的时间序列的执行独立于另一进程中的时间序列,除非这两个进程彼此同步。进程的几种不同关系中的组建。
一个进程可能会创建工作,该项工作必须有其他进程完成。这种结构在确定法确定系统是否死锁时是很重要的。满足的关注点是:性能和容量。
在动态分配资源的系统中,一个进程可能控制由另一个进程使用的资源,后者必须请求并归还这些资源。因为发起请求的进程可能从几个控制器里请求资源,所以每项资源可能都有一个不同的控制进程。满足的关注点是:性能和容量。
两个进程可能共享资源,如打印机、内存或端口等。如果两个进程共享一项资源,就需要通过同步来防止使用冲突。每一种资源可能有不同的关系。满足的关注点是:性能和容量。
每个进程有一个程序控制,每个程序包含在一个模块中。因此我们可以认为进程包含在模块中。满足的关注点是:性能和容量。
访问结构
系统中的数据可能划分成具有属性的段,如果程序对段中的任何数据拥有访问权,就对该段中的所有数据拥有了访问权。请注意,为了简化描述,我们应该让段的规模最大化,具体做法是添加一个条件,即如果两个段被同一组程序访问,这两个段就应该合并。数据访问结构包含两种类型的组建:程序和段。这种关系被命名“有权访问”,它是程序和数据段之间的关系。如果这种结构让程序访问的权限最小化,并严格执行,我们就认为系统更安全。所以这种结构满足的关注点是:安全性。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!