电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

软件工程——8.软件设计基础

197页
  • 卖家[上传人]:luoxia****01805
  • 文档编号:75495042
  • 上传时间:2019-01-31
  • 文档格式:PPT
  • 文档大小:2.01MB
  • / 197 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、软件工程,Software Engineering,(An Introduction),Foundation of Software Design,与SRA基础一章类似,在讲述具体的软件设计方法之前,本章先讨论一些与软件设计有关的基本问题和基本概念。这些问题和概念贯穿于软件的整个阶段。无论采用哪一种具体的软件设计方法,都无法回避这些问题,都将用到这些基本概念。因此,它们是每个软件设计人员必须理解和掌握的。软件设计的基本概念是从20世纪60年代陆续提出的。虽然经历了不同程度的发展和改变。但大都经受住了实践和时间的考验,成为软件设计人员应用软件方法进行软件设计的基础。,教学目标,掌握软件设计过程四个方面:总体结构设计、数据设计、过程设计和界面设计;可分为概要设计和详细设计两个阶段。 掌握软件设计中用到基本概念包括:抽象与逐步求精;模块化与信息隐藏;软件总体结构、数据结构与软件过程。 掌握流程图、盒图、判定表和了解PDL语言。,第8章 Foundation of Software Design,8.1 软件设计基本概念 8.1.1 软件设计过程 8.1.2 软件设计的基本问题 8.1.3 抽

      2、象与逐步求精 8.1.4 模块化与信息隐藏 8.1.5 软件总体结构设计 8.1.6 数据结构设计 8.1.7 软件设计的启发规则 8.1.8 软件过程设计 8.1.9 常用的设计方法 8.2 过程设计技术和工具 8.3 设计规格说明与评审 8.4 软件设计CASE工具,第8章 软件设计基础,软件设计阶段的工作是以需求分析阶段的成果为前提和基础的,即经过系统分析小组签字认可的需求规格说明书及有关技术文档。经过软件工程师们多年的努力,一些软件设计技术、质量评估标准和设计表示法逐步形成并用于软件工程实践。 软件设计是软件工程的重要阶段。软件设计过程是对程序结构、数据结构和过程细节逐步求精、复审并编制文档的过程,本章讨论与软件设计有关的主要概念。,8.1 软件设计基本概念 8.1.1 软件设计过程,软件开发阶段由设计、编码和测试三个基本活动组成,其中“设计”活动是获取高质量、低耗费、易维护软件的一个最重要环节。 需求分析阶段获得的需求规格说明书包括对将要实现的系统在信息、功能和行为等各个方面的描述,这是软件设计的基础。对此不论采用何种软件设计方法都将产生: 系统的总体结构设计(archite

      3、ctural design); 系统的数据设计(data design); 系统的过程设计(procedural design)。,8.1.1 软件设计过程,图8-1-1 开发阶段的信息流,程序 模块,总体结构设计,设计,编码,信息描述,功能描述,行为描述,其他需求,过程设计,数据设计,集成并确认的软件,测试,8.1.1 软件设计过程,软件设计也可看作将需求规格说明逐步转换为软件源代码的过程。 从工程管理的角度软件设计可分为概要(preliminary)设计和详细(detail)设计两大步骤。 概要设计是根据需求确定软件和数据的总体框架 详细设计是将其进一步精化成软件的算法表示和数据结构。 在技术上,概要设计和详细设计又由若干活动组成,除总体结构设计、数据结构设计和过程设计外,许多现代应用软件,还包括一个独立的界面设计活动。,8.1.2 软件设计的基本问题,软件设计的目标和任务 以SRS为依据,设计出能满足SRS中定下的各项需求的软件实现方案,并力求使方案达到最佳。该设计方案是后继阶段(编码实现)的依据。 (设计方案也将为问题的软件解solution或软件表示representatio

      4、n),8.1.2 软件设计的基本问题,具体工作 1概要设计:(1)data design; (2)architectural design; (3)HCI design;(4)修订用户手册;(5)制定初步的测试计划;(6)概要设计评审;(7)编写初步的操作手册。 2、详细设计:(1)确定程序结构中每个模块内部的详细数据结构和具体的算法;(2)把算法用某种表达工具描述出来;(3)详细设计评审。,8.1.2 软件设计的基本问题,工作结果,注:(1) SDS包括概要设计说明书和详细设计说明书(包括文件结构和全局数据描述,测试准备等) (2) 对数据密集的应用可能有独立的“数据库设计说明书”,软件设计是后续开发步骤及软件维护工作的基础。如果没有设计,只能建立一个不稳定的系统结构。,软件设计的作用,8.1.2 软件设计的基本问题,8.1.2 软件设计的基本问题,软件设计的基本原则 抽象与逐步求精 问题分解与模块化 信息隐藏 模块独立性 高内聚低耦合原则 软件设计的启发规则,8.1.3 抽象与逐步求精,抽象是控制复杂性的基本策略。“抽象” 要求人们将注意力集中在某一层次上考虑问题,而忽略那些低层次

      5、的细节。 软件设计过程应当是在不同抽象级别上考虑和处理问题的过程。 最初,应在最高抽象级别上,用面向问题域的语言叙述“问题”,概括“问题解”的形式; 而后不断地具体化,不断地用面向过程的语言描述问题; 最后,在最低的抽象级别上给出可直接实现的“问题解”,即程序。,8.1.3 抽象与逐步求精,软件工程过程的每一步都是对较高一级抽象的解作一次进一步具体化的描述。 在系统定义阶段,软件系统被描述为基于计算机的大系统的一个组成部分; 在软件规划和需求分析阶段,软件用问题域约定的习惯用语表达; 从概要设计过渡到详细设计时,抽象级再一次降低; 编码完成后达到了抽象的最低级。 在上述由高级抽象到低级抽象的转换过程中,伴随着一连串的过程抽象和数据抽象。 过程抽象把完成一个特定功能的动作序列抽象为一个过程名和参数表; 数据抽象把一个数据对象的定义(或描述)抽象为一个数据类型名。,【例8.1】考虑适用于低级CAD的图形软件包。,抽象 该CAD软件系统配有能与绘图员进行可视化通信的图形界面,能用鼠标代替绘图工具,画各种直线和曲线; 能完成所有几何计算以及所有截面视图和辅助视图的设计。 图形设计的结果存在图形

      6、文件中,图形文件可包含几何的、正文的和其他各种补充设计信息。 显而易见,在这一抽象级别上,用问题域本身的术语来描述问题的解。,【例8.1】考虑适用于低级CAD的图形软件包。,抽象 CAD软件任务; 用户界面子任务; 创建二维图形子任务; 显示图形子任务; 管理图形文件子任务; end CAD. 在这一抽象级别上,给出了组成CAD软件任务的所有主要子任务,尽管术语已与问题域有所不同,但仍然不是实现所用的语言。,【例8.1】考虑适用于低级CAD的图形软件包。,抽象(仅以“创建二维图形子任务”为例) PROCEDURE 创建二维图形 REPEAT UNTIL DO WHILE 数字仪接口任务; 判断作图请求: 线:画线任务; 圆:画圆任务; END;,【例8.1】考虑适用于低级CAD的图形软件包。,DO WHILE 键盘接口任务; 选择分析或计算: 辅助视图:辅助视图任务; 截面视图:截面视图任务; END; END REPEAT; END PROCEDURE.,【例8.1】考虑适用于低级CAD的图形软件包。,在这一抽象级别上,给出了初步的过程性表示,此时所有术语都是面向软件(比如采用dow

      7、hile结构)并且模块结构也开始明朗。求精过程还可继续下去,直至产生源代码。,数据抽象,数据抽象与过程抽象一样,能使设计者按不同的详细程度表示数据对象。 仍以CAD软件为例,我们可定义一个称为drawing(图)的数据对象: TYPE drawing IS STRUCTURE DEFINED number IS STRING LENTH(12); geometry DEFINED notes IS STRING LENTH(256); bom DEFINED END drawing TYPE;,数据抽象,在此,drawing被表示为一种结构,其各个组成部件本身又可为某种数据抽象,比如geometry(几何图形)和bom。 一旦抽象数据类型drawing定义完毕,即可用类型名直接说明数据对象,而不必涉及其内部构造的细节,例如,可用语句: blueprint IS INSTANCE OF drawing; 或 schematic IS INSTANCE OF drawing; 说明blueprint和schematic具有drawing的一切特性。 blueprint蓝图,schemati

      8、c简(略)图。,数据抽象,在抽象数据类型的定义中可以附加一组操作的定义,用以确定在此类数据对象上可进行的操作。以抽象数据类型drawing为例,可以定义擦除(erase)、存储(save)、分类(catalog)和拷贝(copy)等操作。 许多程序设计语言都提供了对抽象数据类型的支持,Ada 的程序包机制是对数据抽象和过程抽象的双重支持,过程求精与数据求精,因为求精的每一步都是用更为详细的描述替代上一层次的抽象描述,所以在整个设计过程中产生的,具有不同详细程度的各种描述,组成了系统的层次结构。层次结构的上一层是下一层的抽象,下一层是上一层的求精。 在过程求精的同时自然伴随着数据的求精,无论是过程还是数据,每一步细化都蕴涵着某些设计决策,因此设计人员必须掌握一些基本的准则,比较各种可能的候选方案。,第8章 Foundation of Software Design,8.1 软件设计基本概念 8.1.1 软件设计过程 8.1.2 软件设计的基本问题 8.1.3 抽象与逐步求精 8.1.4 模块化与信息隐藏 8.1.5 软件总体结构设计 8.1.6 数据结构设计 8.1.7 软件设计的启发规

      9、则 8.1.8 软件过程设计 8.1.9 常用的设计方法 8.2 过程设计技术和工具 8.3 设计规格说明与评审 8.4 软件设计CASE工具,8.1.4 模块化与信息隐藏,软件总体结构(下一节讨论)体现了模块化思想,即把软件划分为可独立命名和编制的部件,每个部件称为一个模块,当把所有模块组装到一起时,便可获得满足问题需要的一个解。 “模块化是唯一对软件中的程序进行智能化管理的一个属性”。,8.1.4 模块化与信息隐藏,假设: 函数C(X)问题X的复杂性; 函数E(X)求解问题X需要花费的工作量(时间); 对于问题P1和P2,如果 : C(P1)C(P2) 则有 : E(P1)E(P2) 结论:解决一个复杂问题总比解决一个简单问题耗费 更多的工作量。 同时 有:C(P1+P2)C(P1)+C(P2) 结论:由P1、P2组合而成的问题的复杂性往往比考虑 单个问题复杂性的和更大。 于是有: E(P1+P2)E(P1)+E(P2),8.1.4 模块化与信息隐藏,图8-1-2 模块与软件耗费,最小成本 区域M,O,软件总成本,用于接口的成本,每个模块成本,模块总数,成本或 工作量,模块化与信息隐藏,“分治法” 一个复杂问题分割成若干个可管理的小问题后更易于求解。 当模块总数增加时,每个模块的成本减少了,但模块接口所需代价随之增加。 如果模块数为M时将获得最小开发成本,那么模块数在M附近选择,就能避免模块分割过度和不足。,模块化与信息隐藏,怎样保证模块数“在M附近”? 依据什么标准划分模块?,1信息隐蔽,Information Hiding (Parnas, David. 1971) 信息隐蔽原理: 模块应该设计得使其所含信息(过程和数据)对于那些不需要这些信息的模块不可访问; 每个模块只完成一个相对独立的特定功能; 模块之间仅仅交换那些为完成系统功能必须交换的信息,即模块应该独立。 模块独立: 模块化、抽象、信息隐蔽和局部化等诸多概念的直接结果。,1信息隐蔽,信息隐蔽原理的好处 支持模块的并行开发; 可减少测试和后期维护的工作量。因为测试和维护阶段不可避免地要修改设计和代码,模块对大多数数据和过程处理细节的隐蔽可以减少错误向外

      《软件工程——8.软件设计基础》由会员luoxia****01805分享,可在线阅读,更多相关《软件工程——8.软件设计基础》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.