项目三需求分析

上传人:pu****.1 文档编号:589788490 上传时间:2024-09-11 格式:PPT 页数:39 大小:3.22MB
返回 下载 相关 举报
项目三需求分析_第1页
第1页 / 共39页
项目三需求分析_第2页
第2页 / 共39页
项目三需求分析_第3页
第3页 / 共39页
项目三需求分析_第4页
第4页 / 共39页
项目三需求分析_第5页
第5页 / 共39页
点击查看更多>>
资源描述

《项目三需求分析》由会员分享,可在线阅读,更多相关《项目三需求分析(39页珍藏版)》请在金锄头文库上搜索。

1、第第1616讲讲 面向面向对对象的分析与象的分析与设计设计(2)(2)系统架构概念架构设计实践架构设计案例案例原理分析1.1 1.1 架构概念架构概念: :决决 策策 派派Booch、Rumbaugh和Jacobson的定义:-架构是一系列重要决策的集合,这些决策与以下内容有关:软件的组织,构成系统的及其接口的选择,这些元素在相互协作中明确表现出的行为,这些结构元素和行为元素进一步组合所构成的更大规模的子系统,以及指导这一组织-包括这些元素及其接口、它们的协作和它们的组合-架构风格;Eoin Woods的观点:-软件架构是一系列设计决策,如果作了不正确的决策,你的项目可能最终会被取消(Soft

2、ware architecture is the set of design decisions which, if made incorrectly, may cause your project to be cancelled)组组 成成 派派Garlan和Shaw的定义:-架构包括组件(Component)、连接件(Connector)和约束(Constrain)三大要素。组件可以是一组代码(例如程序模块),也可以是独立的程序(例如数据库服务器)。连接件可以是过程调用、管道和消息等,用于表示组件之间的相互关系。“约束”一般为组件连接时的条件;Perry和Wolf的定义:-软件架构是一组具

3、有特定形式的架构元素,这些元素分为三类:负责完成数据加工的处理元素(Processing Elements)、作为被加工信息的数据元素(Data Elements)及用于把架构的不同部分组合在一起的连接元素(Connecting Elements)1.11.1架构概念架构概念从以上不同研究者的观点看出,不论是组成派还是决策派,其本质思想是一样的,只是从不同的角度对这个概念进行描述;组成派的观点更关注软件,倾向于“组件+交互”的思想;决策派的观点更关注人,倾向于重大决策集合的思想,除了结构和行为,还关注一些非功能的因素。综上,我们可以给“架构”一个简单的定义:所谓“架构”,就是人们对一个结构内的

4、元素及元素间关系的一种主观映射的产物。1.21.2系统架构与软件架构系统架构与软件架构无论在哪个工程领域,从演化历史分析,都有其共同点: -人类的恐惧人类本能:对不确定的、感觉到威胁的事物具有强烈的不安全感。从而激发了人类尽量把这些恐惧的因素控制在最小范围内的愿望。因此,各工程学科在日记月累的发展历程中,逐步规范化、科学化、系列化以及统一化,最终保证人类在复杂环境中,不确定的因素存在时,依然能够进行有效的控制和协调。1.21.2系统架构与软件架构系统架构与软件架构1997年,Eberhardt Rechtin与MarkW Maier在其论著中,为计算机科学总结了系统架构方面的实践成果,从而奠定

5、了系统科学和系统架构在计算机科学中的基石:无论何种系统架构应用领域,目的都是一样的,即完整地、高一致性地、平衡各种利弊地、有技术和市场前瞻性地设计系统和实施系统。1.21.2系统架构与软件架构系统架构与软件架构比尔盖茨定义自己为:首席软件架构师因此带来的问题是:“系统架构”或“系统设计”与“软件架构”或“软件设计”的区别于联系是什么?1.21.2系统架构与软件架构系统架构与软件架构nCT机是现代医学诊断中不可缺少的设备。通过X线对人体的某一部分按一定厚度进行扫描,由于人体各组织的疏密程度不同,X线的穿透能力也不同,所以检测接收到的射线就有了差异。由此产生的信号转变为数字信息后由计算机进行处理,

6、并输出到显示屏上,显示出人体组织图像,以发现病变的相对空间位置、大小、数目等。1.21.2系统架构与软件架构系统架构与软件架构CT机的关键部分包括X线系统,高压发生器,检测器,成像系统,机架与床等,设计电子、机械、图像处理、计算机等多学科。针对CT机质量方面的系统级要求:安全性保密性可靠性健壮性可测试性可服务性可配置性可扩展性除了以上,CT机的非功能性要求包括:可用性有吸引力的图像界面快速的响应时间高质量的图像质量高精度计算运输和移动方便资源利用率高1.21.2系统架构与软件架构系统架构与软件架构对以上非功能性要求汇总可以发现,这些要求都是系统级的设计要求。这些要求,有些是与机械和电子设计相关

7、的,但绝大多数是与软件架构和设计相联系的。这意味着,一个完整的CT机系统的非功能性指标是由多个子系统和多种技术结合在一起才得以实现,即一个系统往往是软硬结合的。架构案例:模型-视图-控制器(MVC)当应用程序的用户界面非常复杂,且关于用户界面的需求很容易变化时,我们可以把交互类型的软件抽象成模型、视图和控制器这三类组件单元,这种抽象可以很好地分离用户界面和业务逻辑,适应变化的需求。大多数现代交互软件都在一定程度上符合这一架构模型的特点。MVC模式最吸引人之处在于它迫使用户必须抽象自己的代码,把项目分为表示、逻辑和控制三部分,每部分间的关联较小。以MVC模式构造软件,可以使得软件结构灵活、重用性

8、好、扩展性佳。模型视图控制器交互的示意图模型:视图:控制器模型:模型表示应用的数据及操作这些数据的逻辑方法。任何和整个应用有关的持久性数据都应该放在模型中。对于模型,它所提供的API不能只针对某一个专门的视图或控制器,应该更一般化以适应不同客户的需求。视图:视图将模型的当前状态展示给用户,具体的显示方法由视图负责,因此一个模型可以适用多个不同的视图。在模型状态改变后,通过模型和视图之间的协议,视图得知这种改变并修改自己的显示。对于用户的输入,视图将它们交给控制器处理。控制器:控制器负责交互和将用户输入的数据导入模型,它还利用用户的输入将应用转向其他视图。一些非持久的临时数据也应该在视图中存取。

9、采用MVC的好处显示、逻辑和数据分开,这样一方面的改变不会影响另一方面。更新视图:如原来用的是CLI (Command Line Interface)的,后来要改成GUI,只要了解原来的模型和控制器的接口,然后构造GUI,把它按过去的协议和模型关联起来就可以了,这样做增加了组件的重用性和灵活性。复用视图:假设针对某个模型数据开发了一套View,那么在其他访问该模型数据的地方,完全可以再次使用该套件或将现在的View组合成一个复合视图。每个单视图有自己和模型的连接协议和自己的响应控制器,这样开发就仅仅变成了简单的组合。更新控制器:以在不更改视图显示的情况下,更改控制器,以达到更改视图与用户交互的

10、响应模式的目的。在Java Web应用中的惯用法模型:模型的构建方式可以随应用成本的不同而不同。在两层结构的应用中,Web层直接和持久数据层交互,此时的模型通常是一系列的Java对象。这些对象可能是从关系型数据库中通过查询得到的,或者是通过关系对象映射框架得到的。N层体系比较复杂,比如Web层和EJB服务器通信。虽然在EJB2.0规范中,通过本地接口来提高实体Bean访问效率,但Web层直接访问实体Bean仍然是效率比较低的,因此在一般情况下,Web层访问有由会话Bean返回的JavaBeans,这被称为值对象模式( Value Obiect) 。162 架构设计实践2.1静态设计2.2模块间

11、的通信及耦合设计2.3动态设计2.4模块调整172.1静态设计1、按层+高内聚低耦合的原则进行模块划分1)高内聚低耦合原则(GRASP:高内聚低耦合)2)按功能分解3)按业务进行分解4)以数据转换为中心分解5)实际运用中的折中2、划分层次(架构风格)1)将模块划入对应的层2)分层与分区3)逻辑模块与实体组件的对应关系182.1静态设计(续)3、为模块进行职责分配1)信息专家+控制者2)隔离关注面(GRASP:保护变量、间接模式)3)低耦合原则4)适当采用设计模式4、用设计模式优化核心结构1)用策略/桥接模式作为中心骨架(多态模式)2)用工厂/抽象工厂模式进行组装。(创建者模式)3)用命令模式处

12、理事务192.1静态设计(续)5、模块结构的常用形式1) 容器模块+ 控制者+ 功能模块+ 临时构建的小类。(纯虚构模式)a) 单例模式b) 命令模式2) 核心模块的接口设计a) 外观模式b) 适配器模式c) 代理模式d) 调停者模式3) 变换型模块结构4) 事务型模块结构202.2模块间的通信及耦合设计1、组件式程序设计通常一个领域的专用资产要应用到不相关的领域是比较困难的,组件式开发的首要工作是领域工程,在这个领域内提取可被复用的系统对象,创建可复用资产,开发复用组件。面向对象技术的特点是通过对象之间的职责分工和高度协作来完成任务。这样的好处是代码量较少,系统布局合理,重用程度高,但是当对

13、象的个数大量增加的时候,对象之间的高度耦合的关系将会使得系统变得复杂,难以理解.2、通讯机制观察者模式本地SDK轮询212.2模块间的通信及耦合设计(续)3、解耦1)针对接口编程;(面向对象原则:接口单一原则)2)增加间接模块;(间接模式)3)依赖注入4、设计数据层1)数据结构选用的设计2)数据访问层的设计222.3动态设计1、抽象与统一不同的因素1)根据业务寻找关键因素2)向复杂的情况靠齐2、常用的流程抽象手段1)依赖注入/ 控制反转/ 依赖倒置(面向对象原则)2)表格法3)配置文件3、逻辑控制:1)控制者模式2)信息专家模式4、消息通知机制1)MVC模式2)观察者模式3)责任链模式4)中介

14、者模式232.4模块调整1、调整模块等级1) 适当封装:2) 把属性提升为类3) 将类降为属性4) 将类提升为组件2、类细化1) 李氏替换原则2) 避免脆弱基类等3、用设计模式优化,在主体框架上进行调整1)访问者模式2)装饰模式242.5模块调整(续)4、编码时构建适当的动态临时类1) 命令模式2) 事务处理类型3) 纯虚构5、效率的优化1) 效率与结构的折中2) 优化效率的3步骤3系统架构设计案例:3.1需求工程某公司需要某公司需要为客客户运用面向运用面向对象象软件工程开件工程开发问候机器人候机器人,它能用不同它能用不同语言言问候候。如如:英文英文(en):Hello UML OOSE!中文

15、中文(cn) :你好:你好 UML OOSE!日文日文(jp):uml大瀬大瀬!韩文文(ko):, uml !俄文俄文(ru): oose !和可能的其它和可能的其它语言的言的问候未定,候未定,以及未来新出以及未来新出现的的语言言问候。候。你好!3.2系统分析用例建模3.2系统分析类图谁,什么,数据,服务,系统3.2系统分析时序建模StarUML绘制时序图演示绘制时序图演示3.2系统分析时序建模ServerStarter对象、Server对象、PluginLoaderModule对象、PluginLoaderModule对象、PluginMenuModule对象、PluginClassLoad

16、er对象都相对独立,利用java的动态加载,实现零耦合,达到完全解耦3.3系统设计3.3系统设计HelloWorld10HostApp组件中件中ServerStarter类的的main启启动系系统; 通通过Class.forName(cn.edu.chzu.xxxy.umloose.server.Server).newInstance();反射启反射启动HelloWorld10PluginManager组件中的件中的Server类的的init方法初始化主框架,方法初始化主框架,完成系完成系统各各组成模成模块(包括宿主和客(包括宿主和客户的所有模的所有模块、插件和服、插件和服务)加)加载和启和启

17、动;系系统各各组件及演示件及演示实现的的HelloWorld10ENPlugin和和HelloWorld10RUPlugin插件各插件各自自实现IModule、IPlugin、IService接口。接口。3.3系统设计详细类图3.3系统设计主要类说明/细化3.3系统设计包图4 Java类加载器原理Java动态加载主要是classloader实现4.1 Java类加载器原理1.检测此Class是否载入过(即在cache中是否有此Class),如果有到8,如果没有到22.如果parent classloader不存在(没有parent,那parent一定是bootstrap classloader

18、了),到4 3.请求parent classloader载入,如果成功到8,不成功到5 4.请求jvm从bootstrap classloader中载入,如果成功到8 5.寻找Class文件(从与此classloader相关的类路径中寻找)。如果找不到则到7. 6.从文件中载入Class,到8. 7.抛出ClassNotFoundException. 8.返回Class. 其中5.6步可以通过覆盖ClassLoader的findClass方法来实现自己的载入策略,甚至覆盖loadClass方法来实现自己的载入过程。4.2系统实现加载功能插件类GreetingImpl_ru.javaimport

19、 cn.edu.chzu.xxxy.umloose.module.PluginMenuModule;import cn.edu.chzu.xxxy.umloose.plugin.IPlugin;import cn.edu.chzu.xxxy.umloose.server.Server;import cn.edu.chzu.xxxy.umloose.service.GreetTranslate;public class GreetingImpl_ru implements IPluginprivate PluginMenuModule module ; public String greet() return RU:Hello UML OOSE!;Overridepublic void start() module = Server.getInstance().getGreetModule();module.addMenu(ru,this);System.out.println(greet();GreetTranslate.GreetingTranslate();/hostapp的服务系统演示$!实验软件项目设计重点1: 类设计和系统时序图绘制重点2: 设计文档编写考虑使用插件框架或熟知框架

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号