软件架构训练基础教程之导语

时间:2021-11-15 17:03:41
本文是软件架构的基础训练,它介绍了有效的软件架构所需要的基本工具。在军事中,基础训练用于挑战和激发军官学校学生,并示范军事生涯的要求和奖赏。同样地,软件架构必须由个人来推动,这些人必须渴望对抗软件开发工作中的技术领先阶层的挑战。但是,这样的动机还是不够的。软件架构必须等同于认识架构全景的智力手段。

  本文提供了一条便利的方法,它不仅显示了行业中最好的架构经验,还提供了具体的现实例子和练习,以便把它提供的素材应用于整个软件行业的普通环境中。基本训练覆盖了软件技术的基本概念,它提供了软件架构的基础。软件技术已经向软件开发的很多趋势和可选的方法不断演化。目前,主流的软件实践从面向过程演化到面向对象,然后又演化到面向组件的开发(图1)。随着企业级Java和微软.Net不断采用,面向组件将成为下一个主要的范式。在共同开发中,大多数新开始的项目都采用了面向组件技术,因为它受到了多数商业开发环境的支持。本文的前面提到,面向对象的软件架构观念非常薄弱,这导致了一些严重的缺陷。正在形成中的面向组件的趋势正在利用架构设计的强大原理代替旧的方法。

软件架构训练基础教程之导语
1. 面向过程的技术( a )和面向对象的技术( b

  软件架构必须能够清晰地描述这些开发范式,同时允许技术适当地使用。在任何给定的项目中,折衷的混合的开发范式(包括关系数据库管理)对于获得最佳结果都是有用的。每个技术都提供了一些优点,包括成熟的开发工具。

  目前大多数组织会发现它们的技术技巧基于正在使用的三种主要的技术之一:面向过程的、面向对象的或面向组件的。每个范式对于某个组织和它全部职员的技能都是非常明确的。面向过程和面向对象的范式都被编程语言的选择紧紧地约束了,但是面向组件就不同了,它与下层构造的选择的关系更加紧密。

  面向过程的编程语言包括FORTRAN、COBOL、C、Pascal和BASIC。在面向过程的技术中,程序由执行不同算法的过程组成。过程与系统中的数据是分离的,而且过程通过直接访问操作(access operations)使用数据。这是存储过程编程系统的直接后果,而计算机技术就源于此。当程序和数据分离时,在程序的各部分之间存在很多潜在的内部依赖性。如果数据表现被改变了,程序的多个位置都可能受到冲击。

  数据-过程分离的一个例子是2000年问题,在这个例子中简单地给日期表现添加一些数字会对面向过程的软件产生灾难性的后果。不幸的是,因为主流的系统都是使用面向过程的技术建立的,对这些数据表现的依赖可能会引起系统范围的程序错误,并引起了逐行检查、修改程序的必要性。