软件设计与体系结构教案.doc
《软件设计与体系结构教案.doc》由会员分享,可在线阅读,更多相关《软件设计与体系结构教案.doc(29页珍藏版)》请在三一办公上搜索。
1、软件设计与体系结构课程教案第一章 软件工程与软件设计软件工程相关概念软件工程的目标和原则软件的生存期软件开发过程模型1.1 软件工程典型定义:1.软件工程将系统的、规范的、或度量的方法应用于软件的开发、运行和维护过程,以及对上述方法的研究。2.软件工程是用工程、科学、和数学的原则和方法,研制、维护计算机软件的有关技术及管理方法。软件工程是由方法、工具和过程三个要素组成软件工程的目标与原则一、软件工程设计的目标:可修改性 有效性 可靠性可理解性 可维护性 可利用性可适应性 可移植性 可追踪性二、软件设计的原则:抽象 信息隐藏 模块化局部化 一致性 完全性 可验证性1. 2 软件的生存周期需求分析
2、:文本,例如“.应用于将显示用户银行账户的收支余额设计:图表和文本,例如:“.设计将包含类CheckingAccount,SavingsAccount.”实现:源代码和目标代码,例如,“.测试用例:存款¥44.92/存款¥32.0/取款¥100,结果正确.”维护:修改设计,代码和文本,例如,错误纠正:“当余额不足又试图取款时程序出现异常.”;例如,功能增强:”允许使用Pesos进行操作“一、需求分析(回答“做什么?”):定义应用程序必须做什么1.需求分析的难点 : 使用通俗中、清晰折语言来表棕需求 非技术性的 从用户观点出发 将需求组织为逻辑分组 易于访问和改变 需求管理的安排 为了及时更新需
3、求分析必须提前开发的程序 谁、怎样和何时 2.需求举例详细需求2.1输入1)CustomFootnoter将接收收件人名字的前10 个字符,如下所示:请输入发送者的名字:abcd2)应用程序将以下面的格式接收和中间名字 的首写大字母:请输入发送者中间名字的首写大写字母M3)应用将接收和收件人姓氏的前10个字符,如下所示:请输入发送者的姓氏:Xyz4)应用程序将以1)2)和气)的相同方式接收发送者的名字2.2输出5)如果文本少于或者等于60个字符,那么CustomFootnoter将以下文本输出到控制台-To abcd M.Xyz from Eric J.Braude.(空格的数目和位置由此例指
4、出)否则,可以使用三个部分的首写大写字母,例如:-To A.M.X. form E.J.B.2.3用户界面:省略二、设计(回答“怎样做?”):定义每部分将是什么样和它们将如何协调三、实现(也称为“编码”):编写代码编码技巧: 只根据设计来编码 精确地描述第个方法所完成的操作 在提交编译之前,通达仔细地阅读代码来确定代码的正确性 “ 正确性” 是指定完成所要求的功能 即作者检测过程 每编写一部分代码,就保证这段代码的正确性 1. 首先,只新添加一部位分代码 2. 然后自己对代码进行检查,直到满意为止 3. 编译 4. 对新增加的代码进行测试 四、测试:以测试数据作为输入来执行应用于程序测试类型
5、非正式的开发者测试 由单独的开发者执行; 非正式地记录在他们的笔记中 单元测试 测试单元包括方法、类等 正式地记录 中间测试 在类的集合上测试,但不是在整个应用于程序上进行 系统测试 在整个应用程序上测试 完全记录 测试技巧: 尽早和 经常用地测试 使用极值进行测试 非常小或者非常大的数等 边界值 非法值 改变测试用例 不要在不同的测试中使用相同的测试数据,除非必须这样做 五、维护:修补缺陷和增强功能1.修补缺陷寻找并修正所有与需求文档之间的差异 2.功能增强 引入新的功能,或者改进己有的功能 一、瀑布模型(线性顺序模型)瀑布式模型包含以下活动:软件需求分析 设计 代码生成 测试 维护二、原型
6、模型(Cont.) 快速原型规格说明验证设计验证编码测试综合测试维护变化的需求验证维护过程开发过程三、旋模型(Cont.) 四、迭代模型(Cont.)PlanningRequirementsAnalysis & DesignImplementationDeploymentTestEvaluationManagementEnvironmentEach iteration results in an executable release.五、V模型六、X模型七、RUP特点1.RUP(Rational Unified Process,统一软件开发过程,统一软件过程)是一个面向对象且2.使用用例的好处
7、简明简单易理解 有助于不同模块内容的同步 1.4 软件设计一、.概念:可看做是”对软件将如何被开发出来的一种描述“,得到这种描述的活动或过程。二、重要性:需求的直接体现,为实现 提供直接依据,给出的相应方案,决定最终软件的质量,及早发现软件中的错误减少修复和维护的成本三、软件设计的特征:以问题为基础,解决方案的文档或模型,设计的可变性,可选择性,设计必须是满足约束的最佳方案,设计的演化性四、软件设计的要素:目的描述,设计约束,产品描述,设计原理 ,开发规划,使用描述五、软件设计过程、目标及任务软件设计基本概念(重点) 自顶向下,逐步细化 软件(总体)结构设计 程序结构 结构图 模块化 抽象化
8、信息隐蔽软件设计是后续开发步骤及软件维护工作的基础。如果没有设计,只能建立一个不稳定的系统结构六、模块化软件系统的模块化是指整个软件被划分成若干单独命名和可编址的部分,称之为模块。这些模块可以被组装起来以满足整个问题的需求。把问题子问题的分解与软件开发中的系统子系统或系统模块对应起来,就能够把一个大而复杂的软件系统划分成易于理解的比较单纯的模块结构。模块划分的目的: 进行功能分解,把复杂的大的功能划分成简单的小的子功能,尽量降低每个模块的成本。尽量使每个模块间的接口不能太多,太多会使接口成本增加。兼顾二者可取得最佳的划分状态,确保软件总成本最低。七、软件设计的方法1. 面向过程的开发方法2.
9、面向对象的方法3. 面向数据的方法1.5 软件体系结构一、软件体系结构的定义:1.软件包体系结构是软件系统的结构,包含软件元素、软件上元素外部可见的属性以及这些软件元素之间的关系。2.软件体系结构是软件系统的基本组织,包含构件,构件之间、构件与环境之间的关系, 以及相关的设计与演化原则二、软件体系结构的发展历程:三、软件体系结构的内容:软件体系结构的描述,软件体系结构的设计方法,软件体系结构的分析方法,软件体系结构的复用四、软件体系结构、软件架构,软件框架软件体系结构与软件架构的中文翻译都是英文Software Architecture。两者都使用一样的定义,如IEEE的“一个系统的基础组织,
10、包含各个构件、构件互相之间与环境的关系,还有指导其设计和演化的原则。” 在软件开发者和软件应用者来说,倾向于使用“软件架构”,在一定程度上接受“软件体系结构” ,对于学术界,普遍使用“软件体系结构” “软件体系结构”。首先,体系结构的中文定义完全符合IEEE等的定义。强调整体与部分,部分与部分的关系;研究系统构成的方法学;提倡多角度研究系统。其次,从学科地位讲,作为一门独立软件子学科,和硬件学科(计算机组织与体系结构)直接对应。从工程实践需要看,软件架构更能体现系统构成与相关技术。RUP过程或软件生产线关注的软件架构并不注重原理及表示,而是由结构和技术相结合的形成框架。对于一个应用的软件框架通
11、常称为应用程序框架(Application Framework)。框架是为了构建完整的应用而必须详细阐述的一种程序结构Johnson-88。框架在RUP和软件产品线开发过程中是一个非常重要的过程。RUP中框架是细化阶段的一个制品,软件产品生产线中是一组应用共享的程序框架。 如果你强调方法论,应使用软件体系结构。强调软件开发实践,应使用软件架构。 1.6 设计模式一、达到设计目标的方法: 可重用性、灵活性、可维护性 重用灵活的设计 使代码处于通用层上 最小化与其他类的相关性 健壮性 重用可靠的设计 重用健壮的部分 高效性和正确性 模块化设计 重用可信任的部分 二、设计模式的概念设计模式是类的联合
12、体以及与之相伴的算法,这些算法能够实现共同的设计目标。设计模式表达了一种思想而不仅仅是因定的联合体,相伴的算法表示模式的基本操作三、设计模式类型创建型:以灵活或者约束的方式创建对象结构型中:代表相关对象的集合,使用统一处理接口来表示诸如树这样的数据结构行为型:在对象集合中捕获行为四、描述模式的两种观点:静态:用类模型来说明,显示器了所包含的类以及它们的相互关系动态:用动态交互图来说明,将类的功能按照特定的顺序执行五、模式使用的三个角色模式的应用:设计模式本身的应用客户:使用此应用的代码建立:初始化或者改变设计模式应用的代码(”建立角色“)六、设计模式的形式:委托:通过一个类把功能委托给一个抽象
13、类的方法递归:模式的某部分在本质上也使用了自身第三章软件设计基础3.1 软件设计的基本概念一、抽象与逐步求精1. 过程的抽象在软件工程中,从系统定义到实现,每进展一步都可以看做是对软件解决方法的抽象化过程的一次细化。 在软件需求分析阶段,用“问题所处环境的为大家所熟悉的术语”来描述软件的解决方法。 在从概要设计到详细设计的过程中,抽象化的层次逐次降低。当产生源程序时到达最低抽象层次。2. 数据抽象在不同层次上描述数据对象的细节,定义与该数据对象相关的操作。例如,在CAD软件中,定义一个叫做drawing的数据对象。可将drawing规定为一个抽象数据类型,定义它的内部细节为:3.逐步求精:针对
14、某个功能的宏观描述用.逐步求精的方法不断地分解,.逐步确立过程细节,直至该功能用程序语言描述的算法实现为止。二、模块化与信息隐藏1. 软件系统的模块化是指整个软件被划分成若干单独命名和可编址的部分,称之为模块。把问题子问题的分解与软件开发中的系统子系统或系统模块对应起来,就能够把一个大而复杂的软件系统划分成易于理解的比较单纯的模块结构。2.模块划分的目的: 进行功能分解,把复杂的大的功能划分成简单的小的子功能,尽量降低每个模块的成本。尽量使每个模块间的接口不能太多,太多会使接口成本增加。兼顾二者可取得最佳的划分状态,确保软件总成本最低。3.信息隐蔽由 parnas 方法提倡的信息隐蔽是指,每个
15、模块的实现细节对于其它模块来说是隐蔽的。也就是说,模块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用。三、内聚与耦合1.耦合是模块之间的互相连接的紧密程度的度量(1)非直接耦合(Nondirect Coupling)两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。(2)非直接耦合的模块独立性最强。(3)数据耦合 (Data Coupling)一个模块访问另一个模块时,彼此之间是通过简单数据参数 (不是控制参数、公共数据结构或外部变量) 来交换输入、输出信息的。(4)标记耦合 (Stamp Coupling)一组模块通过参数表传递记录信息,就是标
16、记耦合。这个记录是某一数据结构的子结构,而不是简单变量。(5)外部耦合(External Coupling)一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递(6)公共耦合(Common Coupling)若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。(7)内容耦合 (Content Coupling)如果发生下列情形,两个模块之间就发生了内容耦合 (a) 一个模块直接访问另一个模块的内部数据; (b) 一个模块不通过正常入口转到另一模块内部; (c) 两个模块有一部分程序代码重
17、迭(只可能出现在汇编语言中); (d) 一个模块有多个入口。2. 内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。(1)功能内聚 (Functional Cohesion)一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有部分都是为了完成一项具体功能而协同工作,紧密联系,不可分割的。则称该模块为功能内聚模块。(2)信息内聚 (Informational Cohesion) 信息内聚模块可以看成是多个功能内聚模块的组合,并且达到信息的隐蔽。即把某个数据结构、资源或设备隐蔽在一个模块内,不为别的模块所知晓。(3)通信内聚 (Communication
18、Cohesion)如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为通信内聚模块。通常,通信内聚模块是通过数据流图来定义的(4)过程内聚 (Procedural Cohesion) 使用流程图做为工具设计程序时,把流程图中的某一部分划出组成模块,就得到过程内聚模块。例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。(5)时间内聚 (Classical Cohesion)时间内聚又称为经典内聚。这种模块大多为多功能模块,但模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。例如初始化模块和终止模块。(6)巧合
19、内聚 (偶然内聚)。当模块内各部分之间没有联系,或者即使有联系,这种联系也很松散,则称这种模块为巧合内聚模块,它是内聚程度最低的模块。32 软件设计过程一、软件设计的一般过程数据词典数据流图实体关系图状态转换图加工规格说明控制规格说明数据对象描述过程设计接口设计体系结构设计(总体)数据设计软件设计过程有:数据设计:将实体 关系图中描述的对象和关系,以及数据词典中描述的详细数据内容转化为数据结构的定义。总体结构(系统结构)设计:定义软件系统各主要成份之间的关系。 过程设计:把结构成份转换成软件的过程性描述。接口设计:接口设计根据数据流图定义软件内部各成份之间、软件与其它协同系统之间及软件与用户之
20、间的交互机制。二、软件设计的主要活动1.软件设计计划2.体系结构设计3.界面设计4.模块/子系统设计5.过程/算法设计6.数据模型设计33 软件设计的质量一、软件设计的质量要素,可用来对软件设计的质量进行综合评价1结构良好2充分性3可行性4简单性5实用性6灵活性7健壮性8可移植性9可复用性10标准化二、软件设计对最终软件产品质量产生的影响包括:1正确性2可靠性3运行效率4可移植性5可维护性6.可复用性三、软件设计对软件开发过程可能产生的影响包括:1.开发效率2.交会时间3.风险管理4.资源使用5.成本6.人员培训7.合法性34 软件体系结构设计一、软件设计体系结构设计方法概述1.软件体系结构的
21、多视图建军模(1)逻辑视图(2)进程视图(3)开发视图(4)物理视图(5)场景2.基于评估与转换的软件体系结构设计(1)基于场景的评估(2)仿真(3)数学建模(4)基于经验的推理3.模式驱动的软件体系结构设计4.领域特定的软件体系结构设计5.软件产品线方法二、软件体系结构设计的步骤1.开发软件顶层架构2.搜索并选取可用设计资产3.设计技术支撑方案4.确定设计元素5.开发软件部署模型6.设计并发机制7.构建软件体系结构模型8.评审软件体系结构模型35高可信软件设计一、可信软件的特点1.可靠性2.可靠安全性。(3)保密安全性(4)可生存性(5)实时性二、容错设计1.恢复块技术2.N-版本编程三、软
22、件失效模式和影响分析1.软件失效:泛指程序在运行中丧失了全部或部分功能、出现偏离预期的正常状态的事件2.软件失效模式:指软件失效的不同类型3.软件失效的影响:指软件失效模式对软件系统的运行、功能或状态等造成的后果四、软件故障树分析五、形式化方法六、净室方法净室软件工程的要点包括:1.在统计质量控制下的增量式开发。2.基于数原理的软件开发基于统计原理的软件测试七、嵌入式和实时软件设计1.嵌入式软件具有以下主要特征(1)一般用于间一任务(2)有多种类型的处理器体系结构支持(3)资源约束更加严格(4)需要更高的可靠性和安全性(5)对反应性和实时性要求很高(6)通常固化存储2.嵌入式系统中的软件一般包
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件设计 体系结构 教案
链接地址:https://www.31ppt.com/p-2368736.html