您的位置:首页>软件开发>软件架构>

软件架构解读与架构师角色培养――希赛嘉宾聊天实录[2]

[ 来源:www.csai.cn | 更新日期:2007-7-15 20:16:17 | 评论 0 条 | 我要投稿 ]
【希赛嘉宾/温昱】这位网友的说法很有代表性,此文:http://51cmm.csai.cn/ANALYZE/200702011428471882.htm就是针对此而写。
  软件架构至今没有统一的定义。我推荐:将定义分类。毕竟,软件架构的定义太多太乱,但“推崇一个否定其它”会遗失精华,我们作为软件业界的实践者必须学会兼收并蓄。
  下面和大家分享我的分类方式。“组成派”定义的核心是:架构=组件 交互。“决策派”定义的核心:架构=重要决策集。
  (组件 交互)其实完整的架构实践是综合体现两者,我在《软件架构设计》中归纳为:所谓软件架构就是关于如何构建软件的一些最重要的设计决策,这些决策往往是围绕将系统分为哪些部分、各部分之间如何交互展开的。

【希赛主持人】网友[nail.wu] 说: 软件架构具体做什么工作?输出的文档是什么?

【希赛嘉宾/温昱】架构师要深入理解需求,进行架构分析,设计架构,验证架构方案的可行性等。
输出文档:《软件架构设计文档》。同时,推荐的做法是还要提交可运行和测试的架构原型。

【希赛主持人】网友[zbstar] 说: 我看了网上一些资料,对架构有时称为“构架”,是一回事吗? 字串1

【希赛嘉宾/温昱】架构对应的英文词汇是“Architecture”,国内叫法有架构、构架、体系结构等。
  现在最流行的叫法是架构。

【希赛主持人】温顾问,能举一些具体的例子来解释软件架构吗?为什么在开发时需对软件架构进行设计?

【希赛嘉宾/温昱】好的。架构的例子很多,比如编译器包含词法分析器、语法分析器、代码生成器等部分,并明确它们直接交互的方式和数据格式,就可以“分而治之”了。
  至于为什么设计架构,简单说,架构设计的意义在于“一攻一守”。所谓守,是软件规模大了复杂性高了,不进行“超越算法和数据结构一级的架构设计”就没办法搞定了。所谓攻,指软件架构可以作为大规模团队开发的基础、提高软件质量的手段等。
  Brooks的著名论断大家知道的:软件开发的本质问题在于软件本身的复杂性。

【希赛主持人】网友[jlinux] 说: 架构大家谈概念的多,实际应用到具体软件开发中的少。请问,如何把架构的思想及实践经验推广到大家的项目中去?
字串3

【希赛嘉宾/温昱】是的,为理论而理论没有意义,反而搞的开发人员和架构师“合不来”。
  至于如何运用架构思想,我谈谈我的经验。
  真正成功的架构设计,必须关注四个现实问题:是否遗漏了至关重要的非功能需求,能否驯服数量巨大且频繁变化的需求, 能否从容设计软件架构的不同方面(因为架构也很复杂),是否及早验证架构方案并做出了调整。
所以我推荐,要在“架构设计过程”一级真正贯穿一些根本原则。我推荐的软件架构设计流程为“六步法”(在即将出版的《软件架构设计》一书中有系统论述):需求分析,领域建模,确定关键需求,概念性架构设计,细化架构设计,架构验证。
  很多人都在设计架构,但结果有的成功有的失败,为什么?四个策略很关键。
  1. 全面认识需求
  2. 关键需求决定架构(以应对需求变更)
  3. 多视图探寻架构
  4. 尽早验证架构

Tags:
责任编辑:
您的评论
用户名: 新注册) 密码: 匿名评论 [所有评论]

·用户发表意见仅代表其个人意见,并且承担一切因发表内容引起的纠纷和责任
·本站管理人员有权在不通知用户的情况下删除不符合规定的评论信息或留做证据
·请客观的评价您所看到的资讯,提倡就事论事,杜绝漫骂和人身攻击等不文明行为