软件设计与体系结构教案

上传人:枫** 文档编号:555285163 上传时间:2024-02-17 格式:DOC 页数:29 大小:338.47KB
返回 下载 相关 举报
软件设计与体系结构教案_第1页
第1页 / 共29页
软件设计与体系结构教案_第2页
第2页 / 共29页
软件设计与体系结构教案_第3页
第3页 / 共29页
软件设计与体系结构教案_第4页
第4页 / 共29页
软件设计与体系结构教案_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《软件设计与体系结构教案》由会员分享,可在线阅读,更多相关《软件设计与体系结构教案(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 方法提倡的信息隐蔽是指,每个模块的实现细节对于其它模块来说是隐蔽的。也就是说,模块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用。三、内聚与耦合1.耦合是模块之间的互相连接的紧密程度的度量(1)非直接耦合(Nondirect Coupling)两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。(2)非直接耦合的模块独立性最强。(3)数据耦合 (Da

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

最新文档


当前位置:首页 > 大杂烩/其它

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