Java软件工程与项目案例教程(四).ppt
《Java软件工程与项目案例教程(四).ppt》由会员分享,可在线阅读,更多相关《Java软件工程与项目案例教程(四).ppt(173页珍藏版)》请在三一文库上搜索。
1、Java软件工程与项目案例教程 (四),主要内容,1、软件的架构设计 2、软件的详细设计,第4章 系统分析设计,在完成需求分析之后,下一步是系统分析设计。系统分析设计的输入是需求分析所提供的需求规格说明书,输出是概要设计说明书和详细设计说明书。在一般情况下,概要设计说明书由系统设计师负责;详细设计说明书则由高级程序员负责。 这两种设计说明书的差异是:,概要设计说明书既要覆盖需求规格说明书的全部内容,又要作为指导详细设计的依据。因此,它注重于框架上的设计,包括软件系统的总体结构设计、全局数据库(包括数据结构)设计、外部接口设计、功能部件分配设计、部件之间的内部接口设计,它要覆盖需求规格说明书中的
2、功能点列表、性能点列表、接口列表。若为C/S或B/A/S结构设计,则要说明部件运行在网络中的哪一个节点上。,第4章 系统分析设计,详细设计说明书既要覆盖概要设计说明书的全部内容,又要作为指导程序设计和编码的依据。因此,它注重于微观上和框架内的设计,包括各子系统的公用部件实现设计、专用部件实现设计、存储过程实现设计、触发器实现设计、外部接口实现设计、部门角色授权设计、其他详细设计等部件。其他设计包括:登录注册模块设计、信息发布模块设计、菜单模块设计、录入修改模块设计、查询统计模块设计、业务逻辑处理模块设计、报表输出模块设计、前台网站模块设计、后台数据处理模块设计、数据传输与接收模块设计等。 对于
3、简单或熟悉的系统,概要设计和详细设计可以合二而一,形成一份文档(称为设计说明书),进行一次评审,实现一个里程碑,确立一条基线。对于复杂或生疏的系统,概要设计和详细设计必须分开,形成两份文档,进行两次评审,实现两个里程碑,确立两条基线。,4.1软件架构设计(软件概要设计),当对象、类、构件、组件等概念出现并成熟之后,传统意义上的软件概要设计(又叫软件总体设计或软件系统设计)就逐渐改名为软件架构设计。所以说,软件架构设计就是软件概要设计。软件架构设计工作由架构师来完成,架构师是主导系统全局分析设计和实施、负责软件构架和关键技术决策的角色,他的具体职责为: 领导与协调整个项目中的技术活动(分析、设计
4、与实施等); 推动主要的技术决策,并最终表达为软件构架描述; 确定和文档化系统中对构架而言意义重大的方面,包括系统的需求、设计、实施和部署等“视图”; 确定设计元素的划分,以及这些主要分组之间的接口; 为技术决策提供规则,平衡各类涉众的不同关注点,化解技术风险,并保证相关决定被有效传达和贯彻; 理解、评价并接收系统需求; 评价和确认软件架构的实现。,4.1软件架构设计(软件概要设计),软件架构建模 软件架构建模是与软件架构的定义和管理相关的分析、设计、文档化、评审及其他活动。 软件架构建模的目的: (1)捕获早期的设计决策。软件架构是最早的设计决策,它将影响到后续设计、开发和部署,对后期维护和
5、演变也有很大的影响。 (2)捕获软件运行时的环境。 (3)为底层实现提供限制条件。 (4)为开发团队的结构组成提供依据。 (5)设计系统满足可靠性、可维护性及性能等方面的要求。 (6)方便开发团队之间的交流。,4.4.1 软件架构设计基本概念 1软件架构定义 系统是部件的集合,完成一个特定的功能或完成一个功能集合。架构是系统的基本组织形式,描述系统中部件间及部件与环境间的相互关系。架构是指导系统设计和深化的原则。 系统架构是实体、实体属性及实体关系的集合。 软件架构是软件部件、部件属性及客观实体之间相互作用的集合,描述软件系统的基本属性和限制条件。,4.1软件架构设计(软件概要设计),各种角色
6、的人员都可以使用架构,如项目经理、开发经理、技术总监、系统架构师、测试人员及开发人员。针对不同角色的人员,架构应提供适当的信息,其详细程度也不同。 软件架构的构建是软件设计的基础,它关心的是软件系统中大的方面,如子系统和部件,而不是类和对象。 软件架构应描述以下问题: (1)软件系统中包含了哪些子系统和部件。 (2)每个子系统和部件都完成哪些功能。 (3)子系统和部件对外提供或使用外部的哪些功能。 (4)子系统和部件间的依赖关系,以及对实现和测试的影响。 (5)系统是如何部署的。,软件架构不包括硬件、网格及物理平台的设计。软件架构只描述创建软件所需要的各种环境,而不是详细描述整个系统。,4.1
7、软件架构设计(软件概要设计),3软件架构视图 架构视图是指从一个特定的视角对系统或系统的一部分进行的描述。架构可以用不同的架构视图进行描述,如逻辑视图用于描述系统功能,进程视图用于描述系统并发,物理视图用于描述系统部署。 架构视图包含名称、涉众、关注点、建模分析规则等信息,描述如何创建和使用架构视图。架构视图描述见图4-1和表4-1。,图4-1 RUP的4+1视图 表4-1 RUP的4+1视图,4.1软件架构设计(软件概要设计),4.1软件架构设计(软件概要设计),(2)考察用户界面部署约束 用户界面的部署约束可概括为以下几种: 经常要离线工作的移动电脑; 手持设备(例如PDA、Java手机)
8、; 支持Interner上的任何一种浏览器(包括低速的拨号上网方式和老版本浏览器); 支持Internet上的较新版本浏览器; 支持内部网上的较新版本浏览器; 支持内部网上的特定浏览器; 内部网上的专用工作站(传统C/S架构的客户端软件)。,4.1.2 软件架构设计步骤 1确定影响整体技术方案的因素 (1)考察用户界面复杂度 用户界面的复杂度可概括为以下几种: 简单数据输入(Simple Data Input)(例如登入界面); 数据的静态视图(Static View)(例如商品报价列表); 可定制视图(Customizable View)(例如可自定义查询报告界面); 数据的动态视图(Dyn
9、amic View)(例如实时运行监控视窗); 交互式图形(例如CAD系统)。,4.1软件架构设计(软件概要设计),(3)考察用户的数量和类型 用户的数量和类型可概括为以下几种: 少数的专业用户:关注功能强大,期望量身定制,乐于学习新特性,例如图形制作系统的用户; 组织内的日常使用者:主流用户,关注便利和易用,例如考勤系统用户; 大量的爱好者:对系统的功能有执着的兴趣,有意愿克服使用时遇到各种困难,包括软件本身的缺陷,例如游戏软件的用户; 数量巨大的消费型用户:关注速度和服务感受,例如商业网站的用户。,(4)考察系统接口类型 系统接口类型可概括为以下几种: 数据传输:仅仅为了满足系统间交换数据
10、的需要,例如电子数据交换EDI接口、数据库同步等; 通过协议提供服务:系统依照协议向外提供特定的服务,例如HTTP协议、SOAP(Web Services)协议等; 直接访问系统服务:按照类似于系统内部调用的方式,直接使用系统的方法,例如RPC远程调用/RMI/Corba等。,4.1软件架构设计(软件概要设计),(5)考察性能和可伸缩性 性能和可伸缩性方面可概括为以下几种: 只读:只有对数据浏览和查询操作,例如股票行情分析系统; 独立的数据更新:有对数据的修改操作,但各用户的修改完全隔离,相互间不存在任何潜在的冲突,例如网上商店各顾客对自己账单的管理; 并发的数据更新:并发用户对数据的修改将相
11、互影响,或者就是更改了同一数据,例如多个用户同时使用航班预定系统预定同一航班的座位。 对于eGov电子政务系统,它的主要特性如下: 用户界面的复杂度:数据的静态显示/可定制视图(Customizable View); 用户界面的部署约束:基于独立的桌面电脑或专用工作站的浏览器; 用户的数量和类型:组织内的日常使用者,总共几百人; 系统接口类型:通过HTTP协议提供服务,未来可以使用SOAP的SOA技术; 性能:主要是独立的数据更新,有少量并发处理。,4.1软件架构设计(软件概要设计),2选择软件构架样式(风格) 所谓软件构架样式(风格),是指关于一组软件元素及其关系的元模型(Meta-mode
12、l),这些元素及其关系将基于不同的风格(被元模型所定义)被用来描述目标系统本身。 上述这些元素通常表示为构件(Component)和连接器(Connection),而它们之间的关系则表达为如何组合构件、连接器的约束条件。 传统的软件构架风格可概括为以下几种: (1)数据流系统(Dataflow Systems) 批处理(Batch Sequential) 管道过滤器(Pipes and Filters) (2)调用与返回系统(Call and Return Systems) 主程序与子程序(Main Program andSubroutine) 对象系统(00 Systems) 分层体系系统(
13、Hierarchical Layers),4.1软件架构设计(软件概要设计),(3)独立的构件(Independent Components) 通信交互的进程(Communicating Processes) 事件(驱动)系统(Event Systems) 实时系统(Capsule Port Protocol) 在eGov电子政务系统概要设计中,使用分层架构模式。分层模式是一种将系统的行为或功能以层为首要的组织单位来进行分配(划分)的结构模式。一层内的元素只信赖于当前层和之下的相邻层中的其他元素(注意:这并非绝对的要求)。,4.1软件架构设计(软件概要设计),(1)逻辑层次(Layer) 通常
14、在逻辑上进行垂直的层次(Layer)划分; 关注的是如何将软件构件组织成一种合理的结构,以减少依赖,从而便于管理(支持协同开发); 逻辑层次划分的标准基于包的设计原则。 (2)物理层级(Tier) 在物理上则进行水平的层级(Tier)划分 关注软件运行时刻的性能及其伸缩性,还有系统级的操作需求(Operational Requirement); 管理、安全等; 物理层级划分的目标在于确定若干能够满足不同类型软件运行时对系统资源要求的标准配置,各构件部署在这些配置下将获得最优的性能。 我们将eGov电子政务系统应用在职责上至少分成4层:表示层(Presentation Layer)、持久层(Pe
15、rsistence Layer)、业务层(Business Layser)和域模块层(Domain Model Layer)。每个层在功能上都应该是十分明确的,而不应该与其他层混合。每个层要相互独立,通过接口而相互联系。,4.1软件架构设计(软件概要设计),(3)利用可重用资产 任何软件架构设计都不会从头开始,我们要尽量利用可重用资产。资产类型包括:领域模型,需求规格、构件、模式、Web Services、框架、模板等。我们首先必须理解对这些资产进行考察的上下文,即项目需求、系统的范围、普遍的功能和性能等,之后可以从组织级的资产库或业界资源中搜寻相关的资产,甚至是相似的产品或项目。 在eGov
16、电子政务系统中,使用了设计模式和框架。,(1)设计模式(Design Patterns) 设计模式概念 如果要问起近10年来在计算机软件工程领域所取得的重大成就,那么就不能不提到设计模式(Design Patterns)了。 什么是模式(Pattern)呢?并没有一个很严格的定义。一般说来,模式是指一种从一个一再出现的问题背景中抽象出来的解决问题的固定方案,而这个问题背景不应该是绝对的或者不固定的。很多时候看来不相关的问题,会有相同的问题背景,从而需要应用相同的模式来解决。,4.1软件架构设计(软件概要设计),模式的概念最开始时是出现在城市建筑领域的。Alexander的一本关于建筑的书中明确
17、地给出了模式的概念,用来解决建筑中的一些问题。后来,这个概念逐渐地被计算机科学所采纳,并在一本广为接受的经典书籍的推动下而流行起来。这本书就是Design Patterns: Elements of Reusable Object-Oriented Software(设计模式:可复用面向对象软件元素),是由4位软件大师合写的(很多时候我们直接用GoF来意指这4位作者,GoF的意思是Gangs of Four,四人帮)。,设计模式是指在软件的建模和设计过程中运用到的模式。设计模式中有很多种方法其实很早就出现了,并且应用得也比较多。但是直到GoF的书出来之前,并没有一种统一的认识。或者说,那时候并
18、没有对模式形成一个概念。这些方法还仅仅是处在经验阶段,并没有能够被系统地整理,形成一种理论。,每一个设计模式都系统地命名,解释和评价了面向对象系统中的一个重要和重复出现的设计。这样,我们只要搞清楚这些设计模式,就可以完全或者说在很大程度上吸收了那些蕴含在模式中的宝贵经验,对面向对象的系统能够有更为完善的了解。更为重要的是,这些模式都可以直接用来指导面向对象系统中至关重要的对象建模问题。如果有相同的问题背景,那么很简单,直接套用这些模式就可以了。这可以省去你很多的工作。,4.1软件架构设计(软件概要设计), 常用设计模式 在Design Patterns:Elements of Reusable
19、 Object-Orient Software一书中涉及23个模式,被分类为创建型模式、结构型模式和行为模式,分别从对象的创建、对象和对象间的结构组合及对象交互这3个方面为面向对象系统建模方法给予了解析和指导,几乎可以说是包罗万象了。之后,有很多模式陆续出现,比如分析模式、体系结构模式等。 主要的23个设计模式概述如下:,4.1软件架构设计(软件概要设计),Abstract Fractory 提供一个创建一系列相关或相互依赖对象的接口,而无须制定具体的类。 Adapter 将一个类的接口转换成客户所希望的另外一个接口。Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作
20、。 Bridge 将抽象部分与它的实现部分分离,使它们都可以独立地变化。 Builder 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的 表示。 Chain of Responsibility 解除请求的发送者和接收者之间的耦合,从而使多个对象都有机会处理这个请求。将这些对象连接成一条链来传递该请求,直到有一个对象处理它。 Command 将一个请求封装为一个对象,从而可以使用不同的请求对客户进行参数化,对请求排队或者记录请求日志,以及支持取消操作。 Composite 将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得客户对单个对象和复合对象的使
21、用具有一致性。 Decorator 动态地给一个对象添加一些额外的职责。,4.1软件架构设计(软件概要设计),Facade 为子系统中的一组接口提供一个一致的界面。 Factory Method 定义一个用于创建对象的接口,让子类决定将哪个类实例化。 Flyweight 运用共享技术有效地支持大量细粒度(fine grained)的对象。 Interpreter 给定一个语言,定义它的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子。 Iterator 提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示。 Mediator 用一个中介对象来封装一系列的对象
22、交互。 Memento 在不破坏封装性的前提下,捕捉一个对象的内部状态,并在该对象之外保存这个状态。,4.1软件架构设计(软件概要设计),Observer 定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖它的对象都得到通知并自动刷新。 Prototype 用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。 Proxy 为其他对象提供一个代理以控制对这个对象的访问。 Singleton 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 State 允许一个对象在其内部状态改变时改变它的行为。 Strategy 定义一系列算法,把它们一个个封装起来,
23、并且使它们可相互替换。,4.1软件架构设计(软件概要设计),Template Method 定义一个操作中的算法框架,而将一些步骤延迟到子类中。 Visitor 表示一个作用于某对象结构中各元素的操作。 (2)软件框架 接下来我们介绍软件框架概念。在介绍软件框架(Framework)之前,首先要明确什么是框架和为什么要使用框架。这要从企业级软件项目面临的挑战谈起,见图4-2。,图4-2 企业级软件项目面临的挑战,4.1软件架构设计(软件概要设计),我们可以看到,随着项目的规模和复杂性的提高,企业面临着前所未有的各个方面的挑战。根据优先级排序,主要包括高可靠性(High Availability
24、)、低成本(Cost Effective)、可扩展性(Scalability)、投放市场快速性(Time to Market)、安全性(Secure)、性能(Good Performance)、可集成性(Ability to Integrate)及多平台支持(Multi-channel)等。那么,如何面对并且解决这些挑战呢?这需要采用通用的、灵活的、开放的、可扩展的软件框架,由框架来帮助我们解决这些挑战,然后在框架基础之上开发具体的应用系统,如图4-3所示。,图4-3 框架和应用的关系,这种基于框架的软件开发方式和传统的汽车生产方式是很类似的,如图4-4所示。,4.1软件架构设计(软件概要设计
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 软件工程 项目 案例 教程
链接地址:https://www.31doc.com/p-2844167.html