《软件工程》教案.doc
教 案学年学期:20142015学年第二学期 院 部: 计算科学与信息工程学院 专 业: 计算机科学与技术 教研室: 计算机教研室 课程名称: 软件工程 年 级: 2012级 授课教师: 臧丽 职 称: 助教 软件工程教案课程性质必修课程类型专业课总学时/学分67/3学时分配理论51授课时间周一3,4周三1,2授课层次本科实践16本课程教学目的和要求本课程是计算机软件与应用专业的主干课程。通过本课程的学习,使得学生不仅了解软件需求分析、设计、实现和测试等软件开发全过程的相关原理和概念,掌握当前UML建模等主流软件开发方法和技术,而且具备使用ROSE等主流建模工具进行实际软件项目开发的能力。本课程教学重点、难点重点:l 能用软件工程的方法参与软件项目的分析、设计、实现和维护 难点:l 需求分析、软件测试教材和参考书软件工程原理、方法和工具软件工程教案内容授课章节及内容第一章 软件危机、软件工程第1节 软件工程的发展史 第2节 软件危机主要表现形式 第3节 产生软件危机的原因及解决途径课时数2授课时间周一3,4 周三1,2授课班级12级计算机科学与技术专业复习旧课要点复习前几学期学习的相关软件与程序知识新课教学目的1. 掌握软件工程的基本概念(如软件和软件工程的定义等); 2. 理解软件危机的表现形式、产生的原因及消除的途径。本章节重点难点重点:1. 掌握软件工程的基本概念(如软件和软件工程的定义等)。 难点:1. 理解软件危机的表现形式、产生的原因及消除的途径。教学方法多媒体教学教学过程设计启发式和讨论式教学 授课内容:第1节 软件工程的发展史 1.1.1 程序设计时代 1.1.2 程序系统时代 1.1.3 软件工程时代第2节 软件危机主要表现形式 l 软件危机:在计算机软件的开发和维护过程中所遇到的一系列严重问题。l 软件危机主要包含两方面的问题:一是如何开发软件以满足多软件日益增长的需求;二是如何维护数量不断增长的已有软件。第3节 产生软件危机的原因及解决途径1.3.1 产生软件危机的原因l 软件是计算机系统中的逻辑部件,软件产品往往规模庞大,结构复杂 l 软件开发的管理困难 l 软件开发费用不断增加,维护费用急剧上升 l 软件开发技术落后 l 生产方式落后 l 开发工具落后,生产效率提高缓慢1.3.2 解决软件危机途径l 应该对计算机软件有一个正确的认识,彻底清除“软件就是程序”的错误观念。 l 要使用并且不断研究探索更好、更有效的技术和方法 l 要有良好的组织、严密的管理 l 应该开发和使用好的软件工具作业布置1.什么是软件?软件和程序的区别是什么?2.什么是软件危机?它有哪些主要表现?为什么会产生软件危机?教学反思本章节对计算机软件工程学作了一个简短的概述。首先通过回顾计算机系统发展简史,说明开发软件的一些错误方法和观念是怎样形成的。然后列举了这些错误方法带来的严重弊病(软件危机),澄清了一些糊涂观念。为了计算机系统的进一步发展,需要认真研究开发和维护软件的科学技术。应总结计算机软件的历史经验教训,借鉴其他工程领域的管理技术,逐步使软件工程这门新学科发展和完善起来。教研室主任签字:软件工程教案内容授课章节及内容第一章 软件危机、软件工程 第4节 软件和软件工程第5节 软件质量第6节 软件的生存周期及开发模型课时数2授课时间周一3,4 周三1,2授课班级12级计算机科学与技术专业复习旧课要点复习前节课讲述的软件和软件危机的相关知识。新课教学目的1. 了解软件工程的基本原理、方法学;2. 掌握软件的生存期;3. 掌握几种主要的软件开发模型。本章节重点难点重点:1. 掌握软件工程的基本原理、方法学。难点:1. 掌握几种主要的软件开发模型。教学方法多媒体教学教学过程设计启发式和讨论式教学 授课内容:第4节 软件和软件工程1.4.1 软件定义一:软件是程序、数据以及开发、使用和维护程序需要的所有文档的完整集合。 定义二:软件是计算机程序、方法、规则、相关的文档资料以及在计算机上运行程序时所必须的数据。1.4.2 软件工程定义一:软件工程是指导计算机软件开发和维护的一门工程学科。软件工程采用工程的概念、原理、技术和方法来开发和维护软件。定义二:软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。 定义三:软件工程是: 是把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件; 研究中提到的途径。第5节 软件质量定义:软件质量是软件产品满足规定的和隐含的有关特征和特性的全体,或者说所有描述计算机软件优秀程度的特性的组合。软件质量的度量标准:功能性、可靠性、易用性、效率、可维护性、可移植性等。第6节 软件的生存周期及开发模型 1.6.1 软件生存周期定义:软件生存周期是指某一软件项目被提出来并着手实现开始直到该软件报废或停止使用为止。 阶段划分: 一般分为软件计划、软件开发和软件运行三个时期。 l 软件计划时期一般有问题定义和可行性研究两个阶段;l 开发时期有需求分析、软件设计(包括概要设计、详细设计)、编码和测试四个阶段;l 运行时期主要是维护阶段。 1.6.2. 软件开发模型l 瀑布模型 l 快速原型模型 l 增量模型 l 螺旋模型作业布置1.什么是软件工程?怎样利用软件工程消除软件危机?2.简述度量软件质量的六个特性,在软件开发中如何保证软件质量?3.说明文档和复审对于软件质量控制的作用。4.什么是软件生存周期模型?试比较本章介绍的四种模型的优缺点,5.说明每种模型的使用范围。教学反思本章节对计算机软件工程学作了一个简短的概述。首先通过计算机系统发展简史,说明开发软件的一些错误方法和观念是怎样形成的。然后列举了这些错误方法带来的软件危机,澄清了一些糊涂观念。为了计算机系统的进一步发展,需要认真研究开发和维护软件的科学技术。就总结计算机软件的历史经验教训,借鉴其他工程领域的管理技术,逐步使软件工程这门新兴学科发展和完善起来。教研室主任签字:软件工程教案内容授课章节及内容第二章 可行性研究 第1节 可行性研究的目的与任务 第2节 可行性研究的步骤 第3节 系统流程图课时数2授课时间周一3,4 周三1,2授课班级12级计算机科学与技术专业复习旧课要点复习前节课讲述的软件工程的相关知识。新课教学目的1. 了解软件工程的基本原理、方法学;2. 掌握软件的生存期;3. 掌握几种主要的软件开发模型。本章节重点难点重点:1. 理解可行性研究的必要性。2. 掌握可行性研究的任务、过程。难点:1. 掌握系统流程图、数据流程图、数据字典概念。教学方法多媒体教学教学过程设计启发式和讨论式教学 授课内容:第1节 可行性研究的目的与任务 可行性研究的目的:就是用最小的代价在尽可能短的时间内确定问题是否能够解决。可行性研究的操作步骤:l 经济可行性 l 技术可行性 l 操作可行性 l 法律可行性第2节 可行性研究的步骤 l 复查并确定系统规模和目标l 研究目前正在使用的系统l 建立新系统的高层逻辑模型l 导出和评价各种方案l 推荐可行方案 l 草拟初步的开发计划 l 编写可行性研究报告提交审查第3节 系统流程图系统流程图是描述物理系统的工具。 2.3.1 系统流程图的符号2.3.2 系统流程图示例作业布置1.在软件开发早期阶段为什么要进行可行性研究?可行性研究的任务是什么?应该从哪几个方面研究目标系统的可行性?2.有人认为,只懂技术的分析员不一定能圆满完成可行性研究的任务。你同意这种看法吗?为什么? 教学反思本章节着重理解可行性研究的必要性,以及它的基本任务和基本步骤,在此基础上再进一步学习具体方法和工具。教研室主任签字:软件工程教案内容授课章节及内容第二章 可行性研究 第4节 成本-效益分析第5节 可行性研究报告的主要内容课时数2授课时间周一3,4 周三1,2授课班级12级计算机科学与技术专业复习旧课要点复习前节课讲述的可行性研究和流程图的相关知识。新课教学目的1.掌握可行性研究的任务、过程、成本效益分析以及可行性研究报告的主要内容;2. 掌握系统流程图、数据流程图、数据字典概念以及项目开发计划的基本内容。本章节重点难点重点:1. 掌握成本效益分析以及可行性研究报告的主要内容。难点:1. 掌握项目开发计划的基本内容。教学方法多媒体教学教学过程设计启发式和讨论式教学 授课内容:第4节 成本-效益分析成本-效益分析的目的使从经济角度评价开发一个新的软件项目是否可行 2.4.1 货币的时间价值通常用利率的形式表示货币的时间价值。假设年利率为i,如果现在存入P元,则n年后可得到的钱数为F,若不记复利则:F = P *( 1 + n * i)这也就是P元钱在n年后的价值。反之,如果n年后能收入F元钱,那么这些钱现在的价值是:P = F /(1 + n * i)2.4.2 投资回收期投资回收期就是使累计的经济效益等于最初的投资费用所需要的时间。显然,投资回收期越短,就可以越快获得利润,因此该项目就越值得投资开发投资回收期仅仅是一项经济指标,为了衡量一个开发工程项目的价值,还应考虑其他经济指标。2.4.3 纯收入纯收入,就是在整个生存周期之内系统的累计经济效益(折合成现在值)与投资之差。这相当于投资开发一个软件系统和把钱存入银行中(或做其它用)两种方案的优劣比较。第5节 可行性研究报告的主要内容l 引言l 可行性研究前提 l 对现有系统的分析 l 对所建设系统的分析 l 其他与设计有关选择方案 l 其他与设计有关的专门问题 l 结论意见作业布置1.成本-效益分析可用哪些指标进行度量?2.为方便旅客,某航空公司拟开发一个飞机票预定系统。旅游公司把预定机票的旅客信息(姓名、年龄、工作单位、身份证号码、旅游时间、旅游目的地等)输入进该系统,系统为旅客安排航班,打印出取票通知和帐单,旅客在飞机起飞前的三天之内凭取票通知和账单交款取机票,系统校对无误即给打印出飞机票给旅客。3.请写出开发此系统的问题定义,并通过可行性研究,分析此系统的可行性。4.试为第5题写可行性研究报告的主要内容。教学反思本章节对成本-效益分析和可行性研究报告的主要内容作了一个简短的概述。通过学习学生可以学会撰写可行性分析报告。教研室主任签字:软件工程教案内容授课章节及内容第三章 软件需求分析 第1节 需求分析的任务和步骤第2节 需求获取的常用方法课时数2授课时间周一3,4 周三1,2授课班级12级计算机科学与技术专业复习旧课要点复习前节课讲述的系统流程图的画法。新课教学目的1. 掌握需求分析的任务,需求分析的步骤;2. 掌握需求获取的常用方法。本章节重点难点重点:1.掌握需求分析的任务,需求分析的步骤。难点:1. 掌握需求获取的常用方法。教学方法多媒体教学教学过程设计启发式和讨论式教学 授课内容:第1节 需求分析的任务和步骤软件需求分析是软件生存周期中重要的一步,也是最关键的一步。只有通过软件需求分析,才能把软件功能和性能研究清楚,并将其描述为具体的软件需求规格说明,进而建立软件开发的基础。 软件需求分析是一个不断认识和逐步细化的过程。在该过程中能将软件计划阶段所确定的软件范围逐步细化到可详细说明的程度。制定软件的需求规格说明不仅是软件开发者的任务,而且用户也起着极其重要的作用。首先用户必须对软件功能和性能提出初步的基本要求,并澄清一些模糊概念。然后软件分析人员了解用户的要求,认真细致地进行调查研究与分析,把用户要做什么的要求最终转换成一个完全的、细致的软件需求规格说明,准确地表达用户的要求,进而为概要设计做好准备工作。需求分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统的 “做什么” 的问题。3.1.2 需求分析的步骤需求获取:调查研究需求提炼:分析建模 需求描述:编写SRS 需求验证l 需求分析的原则目前已出现许多分析方法。虽然各种分析方法都有独特的描述方法,但所有分析方法有共同的基本原则。 1能够表达和理解问题的数据域和功能域 2按自顶向下、逐层分解问题 3给出系统的逻辑视图和物理视图3.2 需求获取的常用方法3.2.1 需求获取的常用方法 l 与用户沟通获取需求的方法访谈面向数据流自顶向下求精简易的应用规格说明技术快速建立软件原型3.2.2 快速建立软件原型模型来获取需求Andriole提出的以下6个问题,可用来帮助判断是否选择原型法来帮助获取需求:1. 需求已经建立,并且可以遇见是相当稳定吗?2. 软件开发人员和用户已经理解了目标系统的应用领域吗?3. 问题是否可被模型化?4. 用户能否清楚地确定基本的系统需求?5. 有任何需求是含糊的吗?6. 已知的需求中存在矛盾吗?作业布置1.为什么要进行需求分析?需求分析需要经过哪些步骤?2.需求分析的基本任务是什么? 教学反思本章节对对需求分析做了简介,强调需求分析是回答“要做什么”,而不是回答“怎么做”的问题。为后续需求分析的方法与图形工具的学习奠定基础。教研室主任签字:软件工程教案内容授课章节及内容第三章 软件需求分析 第3节 需求分析的方法第4节 结构化分析方法课时数2授课时间周一3,4 周三1,2授课班级12级计算机科学与技术专业复习旧课要点复习前节课讲述的需求分析的任务和步骤的相关知识。新课教学目的1. 掌握需求分析的相关方法;2. 掌握结构化分析方法;3. 掌握数据流图的画法;4. 掌握数据字典的描述。本章节重点难点重点:1. 掌握需求分析的相关方法;2. 掌握结构化分析方法。难点:1. 掌握数据流图的画法;2. 掌握数据字典的描述。教学方法多媒体教学教学过程设计启发式和讨论式教学 授课内容:第3节 需求分析的方法1. 需求分析方法: 是由对软件的数据域和功能域的系统分析过程及其表示方法组成。 包括:面向数据流,面向数据结构。 2. 不同的需求分析方法具有的共性: 1) 支持数据域分析的机制: 所有方法都直接或间接地涉及到数据流,数据内容或数据结构等数据域的属性。 2) 功能表示的方法: 一般用数据变换或加工来表示。 3) 接口的定义: 是数据表示和功能表示的直接产物。(功能间的接口数据流) 4) 问题分解的机制以及对抽象的支持: 在不同抽象层次上表示数据域和功能域,以逐层细化的手段建立分层结构。 5) 逻辑视图和物理视图: 6) 系统抽象模型: 是对现实世界中存在的有关实体和活动的抽象和精化。第4节 结构化分析方法一. 结构化分析方法: 是面向数据流进行需求分析的方法,是用抽象模型的概念,按软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。二 数据流图: 1. 数据流图(DFD): 是软件系统逻辑模型的一种图形表示,是从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程的工具。 2. 组成符号: 1) 基本符号: 箭头,表示数据流; 圆或椭圆,表示变换数据的处理; 方框,表示数据的三原点或终点; 双杠或单杠,表示数据存储(文件)。2)数据流与加工之间的关系其中星号“*”表示相邻的一对数据流同时出现,? 则表示相邻的两数据流只取其一。 数据流图加工关系3)分层的数据流图4.数据流图画法画数据流图的基本步骤概括地说,就是自外向内,自顶向下,逐层细化,完善求精。具体步骤如下:先找系统的数据源点与汇点。它们是外部实体,由它们确定系统与外界的接口。找出外部实体的输出数据流与输入数据流。在图的边上画出系统的外部实体。从外部实体的输出数据流(即系统的源点)出发,按照系统的逻辑需要,逐步画出一系列逻辑加工,直到找到外部实体所需的输入数据流(即系统的汇点),形成数据流的封闭。按照下述的原则进行检查和修改。按照上述步骤,再从各加工出发,画出所需的子图。数据流图的分层方法一个分层的数据流图由顶图、底图和中间层的数据流图所组成。顶图说明了系统的边界,即系统的输入和输出的数据流,顶图只有一张。底图由一些不必再分解的处理逻辑组成, 分层数据流图三、数据字典1数据字典的定义数据字典是关于数据的信息的集合,对数据流图中的各个元素作完整的定义与说明,是数据流图的补充工具。l)数据流在一个数据流图上,数据按数据流为单位传输。主要内容有; 数据流名称及其称号表示。数据流的来源:一个外部实体、处理逻辑、数据存贮。 数据流的去处:一个外部实体。数据流的组成:一个数据流可能包括若干个数据结构,若只有一个数据结构,就不需要专门定义。 数据流的流通量:单位时间的传输次数。 高峰时期的流通量:业务的频繁程度和时间有关。2)数据项数据项也称数据元素,是不可再分的数据最小组成单位,主要内容有:数据项名称及编号:数据项名称必须唯一地标识这个数据项,以区别于其他数据项;给数据项取名时,要反映该数据项的含义,易于他人理解与记忆。别名:同一数据项的名称可能不止一个,称为别名。 取值的范围和取值的含义 数据项的长度:指数据项所包含的字符或数字的位数。3)数据结构数据结构描述了某些数据项之间的关系。一个数据结构可以由若干个数据项组成,也可以由若干个数据组成,也可以由若干个数据项和数据结构组成。主要内容包括如下。 据结构的名称及其编号 数据结构的组成:如果是一个简单的数据结构,只要列出它所包含的数据项即可。如果是一个嵌套的数据结构,只需列出它所包含的数据结构名称,因为这些数据结构同样在数据字典中有定义。4)数据存贮数据存贮是数据结构停留或保存的场所。主要内容:数据存贮的名称及其编号:在数据流程图中对数据存贮给以命名,并编上一个唯一的编号。 流入、流出的数据流:流入的数据流指出其来源,流出的数据流指出其去向。 数据存贮的组成:指它所包含的数据项或数据结构。5)处理逻辑。主要内容:处理逻辑的名称及编号 简述:对处理逻辑的简明描述,其目的是使人了解这个处理逻辑是做什么用的。 处理逻辑的输入和输出。 处理逻辑的主要功能 处理逻辑的小说明(文档之一) 处理逻辑小说明对处理逻辑的功能作明确的描述,详细地描述其输入/输出的数据流,以及这些数据的基本转换路径和策略,它补充了数据字典的不足。 目前较流行的表达处理逻辑小说明的工具有:结构式语言、判断树、判断表等 。6)外部实体外部实体是系统的“人-机”界面,也就是系统的数据流由外部实体流入,或者系统的数据向外部流出。主要内容:外部实体的名称及编号 与外部实体有关的数据流为了更加清晰简洁起见,建议采用下列符号:= 意思是等价于(或定义为);+ 意思是和(即,连接两个分量); 意思是或(即,从方括号内列出的若干个分量中选择一个); 意思是重复(即,重复花括号内的分量);( )意思是可选(即,圆括号里的分量可有可无)。常常使用上限和下限进一步注释表示重复的花括号。四、加工逻辑的描述加工逻辑也称为“小说明”,是对数据流图中每个加工所作的说明。描述加工逻辑一般用结构化语言、判定表和判定树。 l 结构化语言:介于自然语言和形式语言之间的一种半形式语言l 判定表:适用于加工逻辑包含多个条件,而不同的条件组合需做不同的动作一张判定表由4部分组成。左上部列出所有条件;左下部列出所有可能做的工作;右上部每一列表示出各种条件的一种可能组合,填入“T”表示条件成立,填入“F”表示条件不成立,空白表示条件成立与否不影响。所以所有列表示条件组合全部可能情况;右下部的每一列是和每一种条件组合相对应的工作,填入“×”表示在该列上部规定的条件下做该行左边列出的那项工作,空白表示不做该项工作。l 判定树:判定表的变种,它本质上与判定表是相同的,只是表示形式不同判定树是判定表的图形化表示,是判定表的变种。由于判定表不直观,需要仔细推敲才能看出它的含义。所以引入判定树后,可以很直观地看出各种复杂的条件组合与相应的动作之间的对应关系。作业布置1.什么是结构化分析方法?该方法使用什么描述工具?2.什么是数据流图?其作用是什么?其中的基本符号各表示什么含义?3.画数据流图的步骤是什么?注意事项。4.什么是数据字典?其作用有哪些?有哪些条目?5.描述加工逻辑的工具有几种?各是什么?教学反思本章节对需求分析的方法和结构化分析的方法的相关内容作了介绍,着重讲解了数据流图、数据字典、判定表和判定树的相关知识,为后续的需求分析报告做铺垫。教研室主任签字:软件工程教案内容授课章节及内容第三章 软件需求分析 第5节 需求分析图形工具第6节 SA方法的应用课时数2授课时间周一3,4 周三1,2授课班级12级计算机科学与技术专业复习旧课要点复习前节课讲述的需求分析方法和结构化分析方法的相关知识。新课教学目的1. 掌握层次图、Warnier图和IPO图的画法;2. 掌握SA方法的应用。本章节重点难点重点:1. 掌握层次图、Warnier图和IPO图的画法。难点:1. 掌握SA方法的应用。教学方法多媒体教学教学过程设计启发式和讨论式教学 授课内容:第5节 需求分析图形工具3.5.1 层次方框图层次方框图是用树形结构的一系列多层次的矩形框描绘数据的层次结构树形结构的顶层是一个单独的矩形框,它代表完整的数据结构下面各层的矩形框代表这个数据的子集,最低层的各个框代表组成这个数据的实际数据元素(不可再分割)例如, 某计算机公司全部产品的数据结构如图3-10所示.这家公司的产品由硬件、软件和服务三类产品组成,软件产品又分为系统软件和应用软件,系统软件又进一步分为操作系统、编译程序和软件工具,.。3.5.2 Warnier图Warnier图是法国科学家提出的表示层次或树形数据的工具。和层次方框图类似。图3-11是用Warnier图描绘一类软件产品的例子,它说明了这种图形工具的用法。图中的花括号用来区分数据结构的层次,在一个花括号中的所有名字都属于一类信息;异或信息表明一类信息或者一个数据元素在一定条件下才出现,而且在这个符号上、下方的两个名字所代表的数据只能出现一个;在一个名字下面(或右边)的括号中的数字表明了这个名字所代表的信息类(或元素)在这个数据结构中重复出现的次数。3.5.3 IPO图IPO(Input Process Output)图IPO图是输入/处理/输出图的简称,能够方便地描绘输入数据、对数据的处理和输出数据之间的关系。常用于对当前系统简单的算法描述。这种描述比较粗糙,隐含了详细的数据流。基本形式是:在左方框中列出输入数据,中间列出加工处理的条目,右方框中列出输出数据条目,各框之间用粗箭头表示数据通讯信息。图3-12是一个主文件更新的例子,通过此例可以加快理解IPO图的用法。第6节 SA方法的应用1 项目说明2 数据流图3 数据字典l 需求规格说明的主要内容软件需求规格说明作为分析结果,它是软件开发,软件验收和管理的依据。因此,必须特别重视这一项工作,否则将可能要付出很大代价。软件需求规格说明的一般格式如下。 1引言1)编写目的(阐明编写需求说明书的目的,指明读者对象。)2)项目背景(应包括:项目的委托单位、开发单位和主管部门;该软件系统与其他系统的关系。)3)定义(列出文档中所用到的专门术语的定义和缩写词的原文。)4)参考资料(可包括:项目经核准的计划任务书、合同或上级机关的批文;项目开发计划;文档所引用的资料、标准和规范。列出这些资料的作者、标题、编号、发表日期、出版单位或资料来源。)2任务概述1)目标2)运行环境3)条件与限制3数据描述1)静态数据2)动态数据(包括输入数据和输出数据。)3)数据库描述(给出使用数据库的名称和类型。)4)数据词典5)数据采集4功能要求1)功能划分2)功能描述5性能需求1)数据精确度2)时间特性(如响应时间、更新处理时间、数据转换与传输时间、运行时间等。)3)适应性(在操作方式、运行环境、与其他软件的接口以及开发计划等发生变化时,应具有的适应能力。)6运行需求1)用户界面(如屏幕格式、报表格式、菜单格式、输入输出时间等。)2)硬件接口3)软件接口4)故障处理7其他要求:如可使用性、安全保密、可维护性、可移植性等8附录作业布置1根据下列描述,画出教材征订系统的第一层数据流图。学生入学后到教材科订书,教材科根据教材库存情况分析是否需要买书,如需购买,则向书店购买。各种资金往来通过学校的会计科办理。2图书馆的预定图书子系统有如下功能:(1)由供书部门提供书目给订购组;(2)订书组从各单位取得要订的书目;(3)根据供书目录和订书书目产生订书文档留底;(4)将订书信息(包括数目,数量等)反馈给供书单位;(5)将未订书目通知订书者;(6)对于重复订购的书目由系统自动检查,并把结果反馈给订书者。试根据要求画出该问题的数据流程图。教学反思本章节对需求分析的图形工具层次方框图、Warnier图和IPO图作了详细的讲解,并对SA的应用进行了举例说明,通过本次学习对后续的需求分析报告奠定基础。教研室主任签字:软件工程教案内容授课章节及内容第四章 软件总体设计 第1节 软件总体设计的目标和任务第2节 软件设计的概念和原理课时数2授课时间周一3,4 周三1,2授课班级12级计算机科学与技术专业复习旧课要点复习前节课讲述的软件需求分析的相关知识。新课教学目的1. 了解软件总体设计的目标和任务;2. 掌握模块和模块化;3. 掌握抽象/信息隐蔽和局部化/模块独立性及其度量。本章节重点难点重点:1. 掌握模块和模块化。难点:1. 掌握抽象/信息隐蔽和局部化/模块独立性及其度量。教学方法多媒体教学教学过程设计启发式和讨论式教学 授课内容:第1节 软件总体设计的目标和任务软件总体设计:解决“怎么做”软件总体设计的任务:以软件需求规格说明书为依据,着手实现软件的需求,并将设计的结果反映在“设计规格说明书”文档中。软件总体设计的重要性:是软件开发阶段的第一步,最终影响软件实现的成败和软件维护的难易程度。第一阶段:概要设计(总体设计)根据软件需求,设计软件系统结构和数据结构,确定程序的组成模块及模块之间的相互关系。回答“概括地说,系统应该如何实现?”。第二阶段:详细设计(过程设计)确定模块内部的算法和数据结构;选定某种过程的表达形式来描述各种算法;产生精确描述各模块程序过程的详细文档,并进行评审。将需求分析模型转换为软件总体设计软件结构设计以需求分析中得到的数据流图为基础而进行。l 第一个阶段总体设计的任务 制定规范 设计软件系统结构(简称软件结构) 处理方式设计数据结构及数据库设计 可靠性设计 编写概要设计文档 概要设计评审l 设计的过程第2节 软件设计的概念和原理 4.2.1 模块和模块化模块:又称构件,是能够单独命名并独立地完成一定功能的程序语句的集合。模块化:就是指把一个待开发的软件系统分解成若干小的部分,即将一个大的问题分成若干小的问题逐一解决。4.2.2 抽象抽象就是抽出事物的本质特性而暂时忽略其他不重要、存在差异的细节。 什么是抽象思想?在认识事物、分析和解决问题的过程中,忽略那些与当前研究目标不相关的部分, 以便将注意力集中于与当前目标相关的方面。软件开发实际上就是一个从高层次抽象到低层次 抽象逐步过渡的过程。逐步求精: 在软件开发的过程中,每前进一步实际上就是对软件解法抽象层次的进一步细化,即为我们所说的逐步求精。或者说逐步求精即为抽象的细化过程。逐步求精是一种自顶向下的设计策略,按这种设计策略,程序的体系结构是通过逐步精化处理过程的层次而设计出来的。4.2.3 信息隐蔽和局部化信息隐蔽:在设计和确定模块时,使得一个模块内包含的信息(过程或数据),不允许其它不需要这些信息的模块访问,独立的模块间仅仅交换为完成系统功能而必须交换的信息。信息隐蔽的思想主要是强调模块的独立特性及其信息的隐蔽,即对于一个整体的程序划分为若干模块,而每个模块隐藏、封装一定功能的程序成分,并尽可能少地显露其内部实现细节。局部化则是指把一些关系密切的软件元素彼此间靠近,使关系密切的元素位于同一局部范围之内。4.2.4 模块独立性及其度量模块的独立性是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其它的模块的接口尽可能简单。模块的独立性是软件质量好的关键。模块独立性的度量:一般采用两个准则度量模块独立性。即模块间的耦合性和模块的内聚性。v 耦合性也称块间的联系是模块之间互相连接的紧密程度的度量。模块之间的连接越紧密,联系越多,耦合性就越高,而其独立性就越弱。v 内聚性是一个模块内部各个元素彼此结合的紧密程度的度量。一个模块内部各个元素之间的联系越紧密,则它的内聚性就越高,相对地,它与其它模块之间的耦合性就会减低,而模块独立性就越强。模块独立性比较强的模块应是高内聚低耦合的模块。模块的耦合性有以下几种类型:v 无直接耦合两个模块没有直接关系,模块独立性最强。v 数据耦合属松散耦合。一模块访问另一模块时,通过数据参数交换输入、输出信息。v 标记耦合两个模块通过传递数据结构加以联系,或都与一个数据结构有关系,则称这两个模块间存在特征耦合。可能出现的情况:当把整个数据结构作为参数传递时,被调用的模块虽然只需要使用其中的一部分数据元素,但实际可以使用的数据多于它真正需要的数据,这将导致对数据访问失去控制。v 控制耦合模块之间传递的是控制信息(如开关、标志、名字等),控制被调用模块的内部逻辑。v 公共环境耦合一组模块引用同一个公用数据区(也称全局数据区、公共数据环境)。公共数据区指:全局数据结构。共享通讯区。内存公共覆盖区等。v 内容耦合有下列情况之一的。是最不好的耦合形式!模块内聚性: 又称块内联系内聚。是描述一个模块内各个元素之间关系的一个概念,是对各元素彼此结合的紧密程度的一种度量。 模块的内聚性有以下几种类型:v 偶然内聚块内各组成成份在功能上是互不相关的。缺点:可理解性差,可修改性差v 逻辑内聚几个逻辑上相关的功能被放在同一模块中,则称为逻辑内聚。v 时间内聚模块完成的功能必须在同一时间内执行,这些功能只因时间因素关联在一起。v 通信内聚模块内各部分使用相同的输入数据,或产生相同的输出结果。v 顺序内聚如果一个模块内处理元素和同一功能密切相关,而且这些处理元素必须顺序执行,则称为顺序内聚。v 功能内聚模块中的各个程序段联合起来共同完成一个特定的具体的单一的功能,模块中各个部分都是完成该功能必不可少的部分,模块的各个部分协同工作、紧密联系、不可分割。内聚性最强。总结:耦合、内聚与模块独立性关系耦合与内聚都是模块独立性的定性标准,都反映模块独立性的良好程度。但耦合是直接的主导因素,内聚则辅助耦合共同对模块独立性进行衡量。设计要求:低耦合,高内聚作业布置课后习题1,2,3教学反思本节对软件总体设计的目标和任务做了一个简单的介绍,对软件设计的概念和原理进行了详细的讲解,着重讲解了模块和模块化,模块独立性及其度量的相关内容。通过本节课的学习,可以更好的设计出高质量的软件。教研室主任签字:软件工程教案内容授课章节及内容4.3软件结构设计准则4.4软件结构设计的图形工具课时数2授课时间周一3,4 周三1,2授课班级12级计算机科学与技术专业复习旧课要点复习前节课讲述的软件总体设计的相关知识。新课教学目的1. 了解软件结构设计准则;2. 掌握软件结构设计的图形工具:软件结构图、层次图和HIPO图 。本章节重点难点重点:1. 了解软件结构设计准则;2. 掌握软件结构设计的图形工具:软件结构图、层次图和HIPO图 。难点:1.