通过看《梦想改造家》这一节目,让我更深刻的认识了,建筑师和软件架构师在一些方面有着惊人的相似。建筑师是设计实体的建筑,软件架构师则是设计虚拟的软件。建筑的设计需要遵循一定的原则和方法,软件同样如此。

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

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

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

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

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

转载于:https://www.cnblogs.com/zuhaoran/p/6431207.html

软件体系架构课下作业01相关推荐

  1. 软件体系架构课下作业07

    1.MVC介绍 MVC(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本的部分:模型(model).视图(view)和控制器(controller). ...

  2. 《软件设计模式与体系架构》课后作业解答-深绿色封面

    <软件设计模式与体系架构>课后作业解答,是张玉山版本.深绿色封面那个 答案地址,详情请参考文档,绝不骗人!!!:https://gitee.com/roroldo/design-patte ...

  3. 课下作业(选做)第八周

    课下作业(选做)第八周 课上内容补做: 由于我的电脑之前始终不能连接上数据库,无法通过http://localhost来进入,总是显示服务器被拒绝,导致当时我没能做出.后来,查阅了许多资料并在王老师的 ...

  4. 软件体系结构测试定义,软件体系架构复习要点

    本文根据华南理工大学软件学院<软件体系架构>课程及相关教材<软件构架实践>总结,作复习回顾用. 很抽象的课程--不知道开给本科生干什么,而且是跟项目管理一起上的,安排很不科学. ...

  5. 【备份专题】备份软件体系架构解析

     备份软件体系架构解析 ICT架构师技术交流 从今天开始,我将陆续分享有关备份架构和特性系列知识,数据保护方案目前主要分了两大类,一类是备份,另一类是容灾.备份主要是对数据提供多副本冗余,当数据发 ...

  6. 20175221 MyCP(课下作业,必做)

    MyCP(课下作业,必做) 任务详情 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: - java MyCP -tx XXX1.txt XXX2 ...

  7. 2017-2018-1 20155321 《信息安全系统设计基础》课下作业3

    2017-2018-1 20155321 <信息安全系统设计基础>课下作业3 课堂练习第五题 因为虚拟机是64位的,所以先输入命令sudo apt-get install libc6-de ...

  8. MyCP(课下作业,必做)

    20175334 MyCP(课下作业,必做) 题目要求 编写MyCP.java 实现类似Linux下cp XXX1 XXX2的功能,要求MyCP支持两个参数: java MyCP -tx XXX1.t ...

  9. 2017-2018-1 20155320第十周课下作业-IPC

    2017-2018-1 20155320第十周课下作业-IPC 研究Linux下IPC机制:原理,优缺点,每种机制至少给一个示例,提交研究博客的链接 共享内存 管道 FIFO 信号 消息队列 共享内存 ...

  10. 20155212 2017-2018-1 《信息安全系统设计》第8周课下作业

    20155212 2017-2018-1 <信息安全系统设计>第8周课下作业 题目1 完成家庭作业4.47,4.48,4.49 相应代码反汇编成X86-64汇编 把上述X86-64汇编翻译 ...

最新文章

  1. zqgame《每日一言》
  2. 启动SystemServer的进程:启动各种系统服务
  3. free和top显示可用内存不一致
  4. poj 3522 Slim Span
  5. 抑制java对修饰符的检查_Java 7对抑制异常的支持
  6. Linux定时任务:crontab安装与检查
  7. to_char和to_date的用法详解
  8. [转]java面试笔试题大汇总 ~很全面
  9. android签名打包v1和v2的区别
  10. 网页后门危害大 网站安全狗帮助查杀
  11. 例题:最高响应比优先调度算法
  12. 基于单片机的智能饮水机控制系统设计(毕业设计资料)
  13. 微信客户管理SCRM系统SDK
  14. 南信大学生怎样看知网,看外文文献
  15. 期刊论文发表会有证书吗
  16. word页眉页脚,奇偶不同
  17. 沈航计算机考研专业课,2018年沈阳航空航天大学计算机学院811操作系统之计算机操作系统考研基础五套测试题...
  18. 用 Jupyter Notebook 爬取微博图片保存本地!
  19. 打印机上显示无法连接到服务器,服务器连接打印机无法连接到服务器
  20. MySQL学习15:子查询(一)

热门文章

  1. 如何修复 AirPods 无法连接到 Mac?
  2. 阿里云发布异构计算产品家族,你可以在上面模拟核爆炸
  3. hdu 4828 Grids(拓展欧几里得+卡特兰数)
  4. windows phone笔记
  5. IIS7中添加html对! #include 的引用
  6. XMarks 书签王者
  7. Redis 性能优化思路,写的非常好!
  8. 写出一手烂代码的 19 条准则!
  9. 哈哈,代码比较工具,好像就这5款比较顺手~~~
  10. 你这API设计的真”辣鸡“,简直没法看!