软件架构要设计到的程度

前面讲了软件架构设计的内容与思想、成功架构的标准关键与策略,现在大家迫切需要知道的是,按照前面的内容已开始了软件架构的设计之旅,但软件架构究竟需要设计到什么样的程度才是符合要求的呢?

在讨论这个问题前先看看困扰我们这个问题的软件架构现状是怎么设计出来的。拿到软件需求后,经过一翻囫囵吞枣式的通读(而且是一边看一边脑子里飞速的转达:这块按我的经验应该如何实现),然后打开建模工具,根据需求上提到的几块功能模块要求,画上几个用例与时序图;再从需求中摘下几个事物建立类,填上类的属性,又从时序图中分出几个函数方法,最后(基本上想也不用想)根据经验,依MVC分几层,套用已有的示例将最近新学的几个流行的框架添加上去。这就完成了架构,不过公司要求写架构设计文档,所以又翻出架构设计文档模板,发现还少了几部分内容。不要紧,一边写一边看别人的文档是怎么写的,依葫芦画瓢。评审了,打开文档或模型,指着用例图、时序图几乎是按需求文档解释了一遍:你看系统包括这些功能,每个功能是这样一步步完成的。什么?这就是软件需求文档拷贝过来的?你没有看到系统分层了吗?不是选择了框架吗?什么?这一层/模块与下一层模块是怎样通讯的、有什么参数、按什么格式?这不是到了伪代码级了吗?不是还有详细设计吗?架构设计把这些都定义出来,还要详细设计做什么?架构设计需要详细到这种地步吗?你们是评审员,你说的不管对不对都有理,按你说的我进行改一下。评审员,你看一下文档改得符合你的要求吗?哪儿不行你说,我按你说的写,或者你写一篇样板我仿着写?几经周折,评审人员疲备了,老板急了,怎么架构设计超时这么久了还在改?架构人员诉苦:我都架构设计完成了,评审人员老说不行,我以前本来没有这么规范过,又不知道评审人员心中的架构文档究竟应写到什么程度才算合格。老板找到评审人员:你看工期这么紧,他们也没有写过这么规范的文档,只要架构设计完成了就行了,或者一边开发一边补文档?结果许多影响全局的设计决策本应由架构设计来完成,却纺统统留到了后边,最终到了大规模并行开发时才发现,不得不由程序员临时碰头决定"将就一下"。

大家不要笑,说我过于夸张了。这是我在一家公司负责过程改进与质量保证时的真实情况。我个人认为,软件架构必须设计达到以下四个必须、一个不一定:

首先,软件架构是用来沟通的,软件架构必须满足软件项目所有步众代表都有自己立场与视角的模型、文档说明,且这些模型文档说明仅清晰包含自己立场与视角关注与有关的事物,不能有任何遗漏,也最好不要有多余

其次,软件架构的每一步都是决策过程,而且关键需求决定架构,软件架构必须充分清楚地表达出这些决策与决策理由。众多的需求中为什么这些需求是关键需求?为满足这些关键需求,采用了什么样的关键机制、核心技术与第三方框架?什么选择这些关键机制、核心技术与第三方框架而不选用其它的?为什么说它们是可行的?

再则,软件架构必须为以后的开发提供足够的指导与限制,因此软件架构必须确定系统各元素间的关系、职责、交互接口与协作机制。仅仅划出几个层与层中包含的元素而不约束它们间的关系、职责、交互接口与协作机制,就如同一个公司,它的组织结构图就挂在墙上——再清晰不过了,但如果接口不清、机制不明,来了任务、出了事情不清楚找谁、如何汇报、怎样处理。

然后,软件架构必须突出强调通信机制、持久化机制和消息机制等公用模块的深入设计。通信机制、持久化机制和消息机制等公用模块较多的涉及软件的不同部分之间的交互,对系统的功能实现、非功能满足等成功因素起着举足轻重的作用。

最后,由于软件项目的不同、开发组织结构的不同、开发团队情况的不同,软件架构的设计粒度是不一定的。比如,航天航空领域中的软件系统对系统的可靠性等质量属性要求非常高甚至可以认为是荷刻,这种情况下对架构的设计详细程度的要求也会比较高;象IBM这样的大的团队中又有小的团队共同开发,架构的设计粒度到子系统级就足够了,各个小团队精通的技术各不相同,可以让其对子系统采用敏捷开发,对缩短工期、人尽其材有好处;有类似项目经验或项目团队所有成员整体技术水平较高的团队架构粒度可适当粗犷,而分布团队或涉及外包的情况则更强调架构的明确性。总之,架构设计对软件的不同部分的设计程度不应是整齐划一的,特别是具体的业务功能模块在架构设计中往往设计程度不深。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件架构设计是指在开发软件过程中,通过对软件系统的各个元素进行组织和规划,以满足系统的需求并在技术层面上实现系统的可靠性、可扩展性和可维护性。在软件架构设计中,Word模板是一种常用的工具,用于规范和统一文档格式。 在设计Word模板的软件架构时,需要考虑以下几个方面: 1. 功能需求:首先需明确Word模板的功能需求,比如模板中需要包含哪些内容、需要支持哪些格式和功能。如何实现这些功能需求,可以根据模板的复杂程度来选择适当的技术来实现,比如使用VBA宏来实现一些自动化的功能。 2. 数据结构和数据流:Word模板可能需要通过数据库或者其他数据源来填充内容,因此在设计软件架构时需要考虑到数据的结构和流动方式。可以采用一些数据交换格式(如XML)来描述数据结构,并使用数据处理的技术来控制数据的流动和填充。 3. 用户界面设计:Word模板作为一个用户界面,需要设计友好、易用的界面。在软件架构设计中,需要考虑到用户界面的布局和交互方式,以及相应的技术实现。 4. 可扩展性和可维护性:在软件架构设计中,需要考虑到模板的可扩展性和可维护性。模板应该设计成模块化的结构,方便后续对功能的扩展和修改。 总之,软件架构设计的Word模板需要充分考虑功能需求、数据结构和数据流、用户界面设计以及可扩展性和可维护性等因素。只有在合理的架构设计下,Word模板才能更好地满足用户需求,并为软件开发提供良好的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值