初识软件架构

1、什么是软件架构

1、1 分2种:

1>、组成派:软件架构 = 组件+ 交互(接口,模块与模块之间交互);

2>、决策派:软件架构= 重要决策(决定重要的需求);

两者互相铺成;

1.12软件架构和子系统、框架之间的关系:

1>、复杂性是层次话;

2>、好的架构必须把变化有效的封装到系统的不同部分(关注点分开):

3>、软件单元粒度:

粒度最小的单元通常为类,也有人说是字段、属性,方法;

A类与其他类之间的协作,构成模块;

由一个或多个模块完成独立的功能,构成子系统;

由一个或多个子系统相互配合满足一个完整应用的需求,从而构成了软件“系统”;

一个大型的企业往往使用多套系统,多套系统相互操作形成“集成系统”,也有人说是WEB机群

注意:软件单元的粒度是相对的,同一个软件单元在不同的场景中我们会以不同的粒度看待他,软件架构不等于框架(2者有联系),框架是一种特殊的软件,框架也有架构;

可以通过架构框架化来达到“架构重用”的目的,如Log4net,SSH;

4>、软件架构的作用

如果一个项目的架构还未确定就不应该进行系统的全面开发;

一个充满缺陷的系统始终是一个充满缺陷的系统

软件架构是将现实世界与计算机世界的一座桥梁,要完成从面向业务到面向技术的转换

需求 —- >>> 架构设计—- >>> 软件架构 —- >>> 系统开发—- >>> 软件系统

a、软件架构对新系统起的作用:

b、软件架构对软件产品开发的作用:

固化核心知识;

提高可重用资源;

缩短推出产品的周期;

降低开发和维护成本;

提高产品质量;

支持批量定制;

软件产品线:是一组可管理的、公共特性的、软件密集性系统的集合这些系统满足特定市场的需求,并且按照预定义方式从一个公共的核心资产集开发得;
软件产品线架构:针对一个公司或组织的一系列产品而设计的通用架构;

2、软件架构方法

架构师应当为项目不同的角色而设计;

架构师要为客户负责,满足他们的业务目标和约束条件;

架构要为用户负责,满足他们的功能需求和运行期质量属性;

架构师必须为在一起工作的程序员着想;

架构师必须考虑到项目的管理人员,为他们进行分工管理,协调控制和评估监控等工作提供清晰的基础

五视图法:

逻辑架构:

逻辑架构关注功能;

开发架构:

运行架构:

物理架构:

数据架构:

从概念架构到实际架构:

架构设计中关键及解决策略:

关键要素

策略

是否遗落了巨大的功能需求

全面了解客户需求,多与客户沟通,发现隐藏的需求,提醒你客户需求

是否驯服了巨大平繁变化的需求

关键需求决定架构,每阶段的项目,客户需求中都会有一个或多个亮点,而这些他们自以为是的需求,

认为很好,很强大的功能,就要给了需要要,研发开搞,如果你遇到这种情况,请进行全面分析,时间,技术,有没有合理的开发人员,

需求不明白的地方问清楚;如果发现该需求在每次与客户沟通的时候他们也不能给出正确的业务需求,那么你一开始要跟他一起帮他分析这个需求

,到你1次2次3次在分析的时候发现这个需求关系到系统重要的架构变动,那么你要谨慎了(是否砍掉,你要“吼”住);呵呵

能否从容的设计软件架构的不同地方

多视图角度看架构(逻辑,数据、运行、开发、物理)

是否及早的验证架构并且做出调整

及早验证架构,现在开发项目是讲究的是团队,要发挥每个成员的作用,做出了架构找大家一起讨论该架构(测试,美工也可以参加);

这样好处是大家都到了提升,并且你会发现在讨论的过程多你会把自己的最初的架构不断的完善,直到所有人同意了你的架构设计(大家注意了你们在

讨论的时候可能遇到牛人,不要怕,如果是我会把这看成是个机会,我希望他指定一二,并且问清楚他为什么会这么想,至于有什么收获,你们懂的….

软件架构设计到什么程度:

软件架构设计到什么程度p>

软件架构设计的过程:

1、一般的软件设计阶段

1>需求分析:

需求捕获 需求分析 系统分析

软件需求类型:

按质量类型属性分累

1.1>运行质量属性:

1.2>开发期质量属性:

可copy性

2>领域建模:

3>确定关键的需求:

实现并验证软件架构

4>概念架构设计:

分3步: 鲁棒性分析、引入架构模式;

5>细化架构:

架构细化是基于五视图方法进行:

架构细化设计工作内容:

架构设计视图

设计任务

逻辑架构

细化功能单元

发现通用机制

细化领域模型

确定系统接口和交互机制

开发架构

确定开放或直接利用的程序包之间的依赖关系

确定采用那个技术

确定采用哪个框架等

确定验证方式、

确定缓存处理、系统异常处理、日志记录、权限验证、安全方面、服务接口、授权、认证等很多;

数据架构

确定数据持久方案;

数据传递、数据复制、数据同步的等策略(可选);

运行架构

确定引入哪些进程和线程;

确定主动对象、被动对象、以及控制对象;

处理进程线程的创建、销毁、通信机制、资源;

协议设计等;

物理架构

确定配置方案;

确定如何将目标程序映射到物理节点;

逻辑架构设计中“发现通用机制”是特别强调的

机制是模式的实例(设计模式啊)机制是特定上下文中重复出现的问题的特定的解决方案;

具有良好的架构的系统具备概念的完整性,它通过对系统架构建立一种清晰的认识来发现通用的机制和抽象;利用这种共性最终使系统更对简单;

6>验证架构的两种方法:

1>原型法: 它针对与项目式的开发中,即对一组架构设计决策在非公能需求方面满足程度的进行,该原型演进行,而不是抛弃型(在很多外包公司,他们就是包项目,或者是人力但都是针对不项目的,不是产品的,所以外包的弟兄在验证你的组织架构时不要紧张,不要认为这次你错了,别人就怎么看你,其实这是一个必须的过程(一般为3次 你讲 ,大家评审,确定);

2>框架法:一般用于产品公司,针对产品软件架构的验证,它有更多的优点,该方法采用框架的方式进行呈现,并且在上面进行评估,在框架实现以后,上面的部分功能也基本实现即可实现一个小的垂直原型,从而可以进行实际非功能的测试,与开放质量属性的评估;

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2016年5月18日
下一篇 2016年5月18日

相关推荐