1、什么是软件架构
1、1 分2种:
1>、组成派:软件架构 = 组件+ 交互(接口,模块与模块之间交互);
2>、决策派:软件架构= 重要决策(决定重要的需求);
两者互相铺成;
1.12软件架构和子系统、框架之间的关系:
1>、复杂性是层次话;
2>、好的架构必须把变化有效的封装到系统的不同部分(关注点分开):
a、通过关注点分离,达到“系统中的一部分发生变化,不会引起另一部分的变化”。的目标(作为一名架构师应该能熟练的应用设计工具(UML建模,OOD/OOA,GRASP,领域模型,UP);
3>、软件单元粒度:
粒度最小的单元通常为类,也有人说是字段、属性,方法;
A类与其他类之间的协作,构成模块;
由一个或多个模块完成独立的功能,构成子系统;
由一个或多个子系统相互配合满足一个完整应用的需求,从而构成了软件“系统”;
一个大型的企业往往使用多套系统,多套系统相互操作形成“集成系统”,也有人说是WEB机群???
注意:软件单元的粒度是相对的,同一个软件单元在不同的场景中我们会以不同的粒度看待他,软件架构不等于框架(2者有联系),框架是一种特殊的软件,框架也有架构;
可以通过架构框架化来达到“架构重用”的目的,如Log4net,SSH;
4>、软件架构的作用
如果一个项目的架构还未确定就不应该进行系统的全面开发;
一个充满缺陷的系统始终是一个充满缺陷的系统
软件架构是将现实世界与计算机世界的一座桥梁,要完成从面向业务到面向技术的转换
需求 ---- >>> 架构设计---- >>> 软件架构 ---- >>> 系统开发---- >>> 软件系统
a、软件架构对新系统起的作用:
上承业务目标,下接技术决策;
控制复杂性;利于迭代开放和增量交付;提高质量;
b、软件架构对软件产品开发的作用:
固化核心知识;
提高可重用资源;
缩短推出产品的周期;
降低开发和维护成本;
提高产品质量;
支持批量定制;
软件产品线:是一组可管理的、公共特性的、软件密集性系统的集合这些系统满足特定市场的需求,并且按照预定义方式从一个公共的核心资产集开发得;
软件产品线架构:针对一个公司或组织的一系列产品而设计的通用架构;
2、软件架构方法
架构师应当为项目不同的角色而设计;
架构师要为客户负责,满足他们的业务目标和约束条件;
架构要为用户负责,满足他们的功能需求和运行期质量属性;
架构师必须为在一起工作的程序员着想;
架构师必须考虑到项目的管理人员,为他们进行分工管理,协调控制和评估监控等工作提供清晰的基础
五视图法:
逻辑架构:
逻辑架构关注功能;
开发架构: