您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 电子科技大学软件工程---04系统设计(改)
软件工程授课教师:蓝天联系电话:13488929723电子邮箱:lantian1029@uestc.edu.cn第四章系统设计设计工程概要介绍1面向过程的系统设计4面向对象的系统设计5设计技术3设计过程和质量2小结6本章学习目标123能根据具体项目进行模块划分和软件架构设计掌握软件设计的主要技术、主要内容和主要方法理解软件设计和需求分析之间的相互关系设计工程概要介绍软件设计定义:在[IEEE610.12-90]中,软件设计定义为软件系统或组件的架构、构件、接口和其他特性的定义过程及该过程的结果。理念:功在平时,受益最后分析设计编码测试维护设计工程概要介绍•软件设计o软件工程生命周期中的一个活动o进行软件编码的基础o软件需求分析被转化为软件的内部结构o是连接用户需求和软件技术的桥梁用户需求软件技术设计工程活动•软件架构设计(有时称为顶层设计)o描述软件的顶层架构和组织,划分不同的组件•软件详细设计o详细描述各组件以便能够编码实现•注意:o软件设计主要为分解设计D-design(Decompositiondesign);o可以包括系列模式设计FP-design(FamilyPatterndesign);分解设计:将软件映射为各组件设计过程和质量•好的设计应该具有如下三个特点o设计必须实现在分析模型中包含的所有明确要求,必须满足客户所期望的所有隐含要求;o设计必须是对编码人员、测试人员及后续的维护人员必须是可读可理解的;o设计应提供该软件的完整视图,以从实现的角度解决数据、功能及行为等各领域方面的问题设计过程和质量•设计指导原则o设计应该是一种架构o设计应该是模块化的o设计应该包含数据、体系结构、接口和组件各个方面o应该设计出系统所用的数据结构o应该设计出展现独立功能特性的各组件o应该设计出各组件与外部环境连接的各接口o设计由软件需求分析过程中获得信息驱动,采用可重复使用的方法导出o设计应该采用正确清楚的表示法设计过程和质量•设计质量属性o功能性o易用性o可靠性o性能o可支持性•包含三个属性:扩展性、适应性、可维护性设计模型•模型输入o软件需求的数据模型、功能模型和行为模式•分类o数据设计o架构设计o接口设计o组件级设计分析模型到设计模型的转化基于场景的元素面向流的元素行为元素基于类的元素用例文本用例图活动图泳道图数据流图控制流图处理叙述状态图顺序图类图分析包CRC模型协作图分析模型设计模型体系结构设计数据/类设计接口设计构件级设计设计相关概念•信息隐藏•功能独立•细化•重构•抽象•体系结构•设计模式•模块化概念1.抽象•含义:是“忽略具体的信息将不同事物看成相同事物的过程”•抽象机制:参数化、规范化•规范化抽象o数据抽象:描述数据对象的冠名数据集合o过程抽象:具有明确和有限功能的指令序列门包含属性:门的类型、转动方向、开门机关、重量和尺寸等开一系列过程:走到门前,伸出手并抓住把手,转动把手并拉门,离开打开的门等概念2.体系结构•定义:软件的整体结构和这种结构为系统提供概念上完整性的方式•体系结构设计可以使用大量的一种或多种模型来表达o结构模型o框架模型o动态模型o过程模型o功能模型概念3.设计模式•含义o在给定上下文环境中一类共同问题的共同解决方案•微观结构o实体模式o结构模式o行为模式•《设计模式:可复用面向对象软件的基础》:面向对象的设计中精选出23个设计模式设计模式:可复用面向对象软件的基础ErichGammaRichardHelmJohnVlissidesRalphJohnson设计模式举例——抽象工厂提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。概念4.模块化•含义o软件被划分为命名和功能相对独立的多个组件(通常称为模块),通过这些组件的集成来满足问题的需求•软件的模块性o程序可被智能管理的单一属性•模块化的理论依据o基于人类解决问题观测数据模块化•模块化和软件成本}M最小代价区间模块个数成本/工作量模块成本集成成本总成本如何确定最小代价区间M??模块化•模块化设计标准o模块化的分解性:可分解为子问题o模块化的组合性:组装可重用的组件o模块化的可理解性:可作为独立单元理解o模块化的连续性:需求小变化只影响单个模块o模块化的保护:模块内异常只影响自身概念5.信息隐藏•模块化基本问题o如何分解软件系统以达最佳的模块划分•信息隐藏原则o模块应该具有彼此相互隐藏的特性o即:模块定义和设计时应当保证模块内的信息(过程和数据)不可以被不需要这些信息的其他模块访问•特点o抽象有助于定义构成软件的过程(或信息)实体。o信息隐藏原则定义和隐藏了模块内的过程细节和模块内的本地数据结构。概念6.功能独立•含义o每个模块只解决了需求中特定的子功能,并从程序结构的其他部分看该模块具有简单的接口•好处o易于开发:功能被划分,接口被简化o易于维护(和测试):次生影响有限,错误传递减少,模块重用•定性衡量标准o内聚性:模块的功能相对强度o耦合性:模块之间的相互依赖程度o模块独立性强=高内聚低耦合概念7.细化•含义o逐步求精的过程•与抽象的关系o抽象使设计师确定过程和数据,但不局限于底层细节o细化有助于设计者在设计过程中揭示底层细节概念8.重构•含义o不改变组件功能和行为条件下,简化组件设计(或代码)的一种重组技术•方法o检查现有设计的冗余情况、未使用的设计元素、无效或不必要的算法、较差的构建方式或不恰当的数据结构,或任何其他可更改并导致更好设计的错误数据设计•含义o数据设计(有时也被称为数据架构)构建高层抽象(客户/用户的数据视图)的数据模型、信息模型•相关概念o数据建模o数据结构o数据库o数据仓库计算机存储、组织数据的方式按照数据结构来组织、存储和管理数据的仓库数据字典、E-R图、类图组件级别的数据设计•设计原则①应用于功能和行为系统分析的原则也应适用于数据设计②所有的数据结构及其对应的操作都应该确定③建立数据字典并在数据定义和程序设计中应用④低层次的数据设计应该推迟到设计的后期过程⑤数据结构的表示应该只对直接使用数据结构中数据的模块可见⑥开发有用的数据结构及其对应操作的程序库⑦软件设计和编程语言应该支持抽象数据类型的定义与实现概念数据模型物理数据模型0..*10..11体系结构设计•含义及内容o系统需要执行的函数功能组件集(如数据库、计算模块)o组件之间通信、协同和合作的连接器o组件集成构成系统的约束o设计人员通过分析其组成部分的已知特性理解系统整体特性的语义模型分析风格和模式简要分类•数据中心架构客户端软件客户端软件客户端软件客户端软件客户端软件客户端软件客户端软件客户端软件数据存储(数据库和黑板)数据库系统;超文本系统;黑板系统风格和模式简要分类•数据流体系架构过滤器过滤器过滤器过滤器过滤器过滤器过滤器过滤器过滤器过滤器过滤器过滤器过滤器过滤器(a)管道和过滤器(b)批处理序列管道批处理序列;管道-过滤器风格和模式简要分类•调用和返回架构mabcdeklmtghnopqiir宽度深度扇出扇入主程序/子程序;分层风格和模式简要分类•面向对象架构o系统组件封装数据和处理该数据的操作。组件之间的通信和协作通过消息传递实现MVC架构风格和模式简要分类•层次架构核心层基础层应用层用户接口层组件体系结构组织与细化•两个基本问题o控制结构•在架构内部如何实现管理控制?是否有不同的控制架构存在?o数据传递•组件之间如何进行数据传递?数据流是否连续,或者传递给系统的数据对象是否零散?界面设计•高效用户界面设计有三条重要原则:o允许用户操作控制(用户为中心)o减少用户记忆负担o保持界面一致•环境分析确定了用户接口操作的物理结构和社会结构•推荐读物o《交互设计——超越人机交互》,电子工业出版社o《设计心理学》,唐纳德﹒A﹒诺曼o《情感化设计》,唐纳德·A·诺曼o《可用性工程》,尼尔森部署设计•以部署环境创建开始,在整个生命周期阶段中处于逻辑设计和技术需求阶段•部署环境包含整个解决方案的逻辑架构和服务质量(QoS)需求•部署架构设计是一个反复迭代的过程,通常需要多次查看QoS要求和多次检查先前的设计,需要考虑了服务质量QoS需求的相互关系,平衡取舍相关问题成本以实现最佳解决方案,最终满足项目的业务目标部署设计输出•部署架构•实施规范•实施计划o迁移计划o安装计划o用户管理计划o测试计划o滚动淘汰计划o灾难恢复计划o操作计划(运行书)o培训计划部署设计的影响因素•逻辑体系结构•服务质量要求•使用情况分析•用例•服务水平协议•总体拥有成本•业务目标部署设计方法•一般方法o估计处理器需求o估计安全传输的处理器需求o可用性和可扩展性的复制服务•设计分析o识别瓶颈o优化资源o管理风险设计实例(部分)•设计实例o在线招聘系统•体系结构在线招聘系统的模块设计网上招聘系统管理端客户端登录管理用户管理题库管理问卷管理职位管理简历管理面试管理在线招聘系统模块之间的关系图用户登录管理端页面用户管理题库管理问卷管理职位管理简历管理面试管理职位查询填写简历问卷回答客户端页面在线招聘系统中的表关系图小结•设计是软件工程技术核心•数据结构、体系结构、接口和软件组件的过程细节在设计中逐步细化、开发、评审和记录•模块化(包括程序和数据)和抽象概念能够使设计人员简化和重用软件组件•细化提供了详细表示各顺序功能层的机制•程序和数据结构有助于建立软件架构的整体视图,而过程提供了算法实现必要的细节•信息隐藏和功能独立为实现有效模块化提供了启发面向过程的系统设计结构化设计方法•首先研究、分析和审查数据流图。从软件的需求规格说明中弄清数据流加工的过程,对于发现的问题及时解决。•然后根据数据流图决定问题的类型。数据处理问题典型的类型有两种:变换型和事务型。针对两种不同的类型分别进行分析处理。•由数据流图推导出系统的初始结构图。•利用一些启发式原则来改进系统的初始结构图,直到得到符合要求的结构图为止。•修改和补充数据词典。•制定测试计划。在系统结构图中的模块•传入模块─从下属模块取得数据,经过某些处理,再将其传送给上级模块。它传送的数据流叫做逻辑输入数据流。•传出模块─从上级模块获得数据,进行某些处理,再将其传送给下属模块。它传送的数据流叫做逻辑输出数据流。•变换模块─它从上级模块取得数据,进行特定的处理,转换成其它形式,再传送回上级模块。它加工的数据流叫做变换数据流。•协调模块─对所有下属模块进行协调和管理的模块。变换型系统结构图•变换型数据处理问题的工作过程大致分为三步,即取得数据,变换数据和给出数据。•相应于取得数据、变换数据、给出数据,变换型系统结构图由输入、中心变换和输出等三部分组成。事务型系统结构图•它接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。•在事务型系统结构图中,事务中心模块按所接受的事务的类型,选择某一事务处理模块执行。各事务处理模块并列。每个事务处理模块可能要调用若干个操作模块,而操作模块又可能调用若干个细节模块。变换分析•变换分析方法由以下四步组成:o重画数据流图;o区分有效(逻辑)输入、有效(逻辑)输出和中心变换部分;o进行一级分解,设计上层模块;o进行二级分解,设计输入、输出和中心变换部分的中、下层模块。输入输出中心变换变换分析注意事项①在选择模块设计的次序时,必须对一个模块的全部直接下属模块都设计完成之后,才能转向另一个模块的下层模块的设计。②在设计下层模块时,应考虑模块的耦合和内聚问题,以提高初始结构图的质量。③使用“黑箱”技术:在设计当前模块时,先把这个模块的所有下层模块定义成“黑箱”,在设计中利用它们时,暂时不考虑其内部结构和实现。在这一步定义好的“黑箱”,在下一步就可以对它们进行设计和加工。这样,又会导致更多的“黑箱”。最后,全部“黑箱”的内容和结构应完全被确定。④在模块划分时,一个模块的直接下属模块一般在5个左右。如果直接下属模块超过10个,可设立中间层次。⑤如果出现了以下情况,就停止模块的功能分解:•当模块不能再细分为明显的子任务时;•当分解成用户提供的模块或程序库的子程序时;•当模块的界面是
本文标题:电子科技大学软件工程---04系统设计(改)
链接地址:https://www.777doc.com/doc-2211381 .html