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

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

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

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

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

最后,由于软件项目的不同、开发组织结构的不同、开发团队情况的不同,软件架构的设计粒度是不一定的。比如,航天航空领域中的软件系统对系统的可靠性等质量属性要求非常高甚至可以认为是荷刻,这种情况下对架构的设计详细程度的要求也会比较高;象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. 金蝶K/3 BOS产品培训教案
  2. 数据库与操作系统时区更改
  3. 15 年来, 程序员升级打怪的路上,这些书始终与你并肩作战
  4. 从算法到产品:NLP技术的应用演变
  5. awk对某个字段分割处理
  6. spring bean的初始化和销毁
  7. OOP面向对象编程(一)-------方法的重载
  8. Transactional ejb 事务陷阱
  9. C/C++二维数组的传参方法总结
  10. Java空字符串与null区别
  11. MySQL数据库基础教程(一)-简介
  12. Cocos Creator 自制小工具-小游戏场景地图编辑器
  13. 环绕声混响效果器-Acon Digital Verberate Immersive 2.2.1 WiN-MAC
  14. java毕业设计开题报告javaweb户籍管理系统|户口
  15. 如何隐藏电脑下方工具栏个别图标_怎么隐藏电脑任务栏右边的各种小图标 - 卡饭网...
  16. ipad上的html编辑器,iPad Pro变生产力工具,你还缺这个轻量级浏览器端代码编辑器...
  17. tikz 折线 箭头_这种箭头用LaTex怎么实现?
  18. html和css如何制作小球,雨林寒舍 | CSS3制作3D跳动的小球
  19. 解决力扣等国外网站打不开问题
  20. python表示整数的点称为整点_礼行天下 仪动职场智慧树网课答案

热门文章

  1. iOS开发之NSString和UTF-8间的转换
  2. Git版本管理工具Tower for Mac
  3. Parallels Desktop 17 for Mac虚拟机 v17.0.1 (51482)
  4. 如何通过系统信息查看 Mac 上的显示刷新率?
  5. 如何使用Tipard 3D Converter转换2D视频格式
  6. [JUC-1]并发包实现及线程状态
  7. 他说,编程的黄金时代已到
  8. MapReduce工作机制详解
  9. 全局替换字体,开源库更方便!!! 1
  10. 背水一战 Windows 10 (53) - 控件(集合类): ItemsControl 的布局控件 - ItemsStackPanel, ItemsWrapGrid...