《软件工程》教案_第1页
《软件工程》教案_第2页
免费预览已结束,剩余137页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGE教案 学年学期:2014—2015学年第二学期院部:计算科学与信息工程学院专业:计算机科学与技术教研室:计算机教研室课程名称:软件工程年级:2012级授课教师:臧丽职称:助教PAGE138《软件工程》教案课程性质必修课程类型专业课总学时/学分67/3学时分配理论51授课时间周一3,4周三1,2授课层次本科实践16本课程教学目的和要求本课程是计算机软件与应用专业的主干课程。通过本课程的学习,使得学生不仅了解软件需求分析、设计、实现和测试等软件开发全过程的相关原理和概念,掌握当前UML建模等主流软件开发方法和技术,而且具备使用ROSE等主流建模工具进行实际软件项目开发的能力。本课程教学重点、难点重点:能用软件工程的方法参与软件项目的分析、设计、实现和维护难点:需求分析、软件测试教材和参考书软件工程——原理、方法和工具《软件工程》教案内容授课章节及内容第一章软件危机、软件工程第1节软件工程的发展史第2节软件危机主要表现形式第3节产生软件危机的原因及解决途径课时数2授课时间周一3,4周三1,2授课班级12级计算机科学与技术专业复习旧课要点复习前几学期学习的相关软件与程序知识新课教学目的1.掌握软件工程的基本概念(如软件和软件工程的定义等);2.理解软件危机的表现形式、产生的原因及消除的途径。本章节重点难点重点:1.掌握软件工程的基本概念(如软件和软件工程的定义等)。难点:1.理解软件危机的表现形式、产生的原因及消除的途径。教学方法多媒体教学教学过程设计启发式和讨论式教学授课内容:第1节软件工程的发展史1.1.1程序设计时代1.1.2程序系统时代1.1.3软件工程时代第2节软件危机主要表现形式软件危机:在计算机软件的开发和维护过程中所遇到的一系列严重问题。软件危机主要包含两方面的问题:一是如何开发软件以满足多软件日益增长的需求;二是如何维护数量不断增长的已有软件。第3节产生软件危机的原因及解决途径1.3.1产生软件危机的原因软件是计算机系统中的逻辑部件,软件产品往往规模庞大,结构复杂软件开发的管理困难软件开发费用不断增加,维护费用急剧上升软件开发技术落后生产方式落后开发工具落后,生产效率提高缓慢1.3.2解决软件危机途径应该对计算机软件有一个正确的认识,彻底清除“软件就是程序”的错误观念。要使用并且不断研究探索更好、更有效的技术和方法要有良好的组织、严密的管理应该开发和使用好的软件工具作业布置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软件生存周期定义:软件生存周期是指某一软件项目被提出来并着手实现开始直到该软件报废或停止使用为止。阶段划分:一般分为软件计划、软件开发和软件运行三个时期。软件计划时期一般有问题定义和可行性研究两个阶段;开发时期有需求分析、软件设计(包括概要设计、详细设计)、编码和测试四个阶段;运行时期主要是维护阶段。1.6.2.软件开发模型瀑布模型快速原型模型增量模型螺旋模型作业布置1.什么是软件工程?怎样利用软件工程消除软件危机?2.简述度量软件质量的六个特性,在软件开发中如何保证软件质量?3.说明文档和复审对于软件质量控制的作用。4.什么是软件生存周期模型?试比较本章介绍的四种模型的优缺点,5.说明每种模型的使用范围。教学反思本章节对计算机软件工程学作了一个简短的概述。首先通过计算机系统发展简史,说明开发软件的一些错误方法和观念是怎样形成的。然后列举了这些错误方法带来的软件危机,澄清了一些糊涂观念。为了计算机系统的进一步发展,需要认真研究开发和维护软件的科学技术。就总结计算机软件的历史经验教训,借鉴其他工程领域的管理技术,逐步使软件工程这门新兴学科发展和完善起来。教研室主任签字:

《软件工程》教案内容授课章节及内容第二章可行性研究第1节可行性研究的目的与任务第2节可行性研究的步骤第3节系统流程图课时数2授课时间周一3,4周三1,2授课班级12级计算机科学与技术专业复习旧课要点复习前节课讲述的软件工程的相关知识。新课教学目的1.了解软件工程的基本原理、方法学;2.掌握软件的生存期;3.掌握几种主要的软件开发模型。本章节重点难点重点:1.理解可行性研究的必要性。2.掌握可行性研究的任务、过程。难点:1.掌握系统流程图、数据流程图、数据字典概念。教学方法多媒体教学教学过程设计启发式和讨论式教学授课内容:第1节可行性研究的目的与任务可行性研究的目的:就是用最小的代价在尽可能短的时间内确定问题是否能够解决。可行性研究的操作步骤:经济可行性技术可行性操作可行性法律可行性第2节可行性研究的步骤复查并确定系统规模和目标研究目前正在使用的系统建立新系统的高层逻辑模型导出和评价各种方案推荐可行方案草拟初步的开发计划编写可行性研究报告提交审查第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节可行性研究报告的主要内容引言可行性研究前提对现有系统的分析对所建设系统的分析其他与设计有关选择方案其他与设计有关的专门问题结论意见作业布置1.成本-效益分析可用哪些指标进行度量?2.为方便旅客,某航空公司拟开发一个飞机票预定系统。旅游公司把预定机票的旅客信息(姓名、年龄、工作单位、身份证号码、旅游时间、旅游目的地等)输入进该系统,系统为旅客安排航班,打印出取票通知和帐单,旅客在飞机起飞前的三天之内凭取票通知和账单交款取机票,系统校对无误即给打印出飞机票给旅客。3.请写出开发此系统的问题定义,并通过可行性研究,分析此系统的可行性。4.试为第5题写可行性研究报告的主要内容。教学反思本章节对成本-效益分析和可行性研究报告的主要内容作了一个简短的概述。通过学习学生可以学会撰写可行性分析报告。教研室主任签字:

《软件工程》教案内容授课章节及内容第三章软件需求分析第1节需求分析的任务和步骤第2节需求获取的常用方法课时数2授课时间周一3,4周三1,2授课班级12级计算机科学与技术专业复习旧课要点复习前节课讲述的系统流程图的画法。新课教学目的1.掌握需求分析的任务,需求分析的步骤;2.掌握需求获取的常用方法。本章节重点难点重点:1.掌握需求分析的任务,需求分析的步骤。难点:1.掌握需求获取的常用方法。教学方法多媒体教学教学过程设计启发式和讨论式教学授课内容:第1节需求分析的任务和步骤软件需求分析是软件生存周期中重要的一步,也是最关键的一步。只有通过软件需求分析,才能把软件功能和性能研究清楚,并将其描述为具体的软件需求规格说明,进而建立软件开发的基础。软件需求分析是一个不断认识和逐步细化的过程。在该过程中能将软件计划阶段所确定的软件范围逐步细化到可详细说明的程度。制定软件的需求规格说明不仅是软件开发者的任务,而且用户也起着极其重要的作用。首先用户必须对软件功能和性能提出初步的基本要求,并澄清一些模糊概念。然后软件分析人员了解用户的要求,认真细致地进行调查研究与分析,把用户要做什么的要求最终转换成一个完全的、细致的软件需求规格说明,准确地表达用户的要求,进而为概要设计做好准备工作。需求分析的任务就是借助于当前系统的逻辑模型导出目标系统的逻辑模型,解决目标系统的“做什么”的问题。3.1.2需求分析的步骤需求获取:调查研究需求提炼:分析建模需求描述:编写SRS需求验证需求分析的原则目前已出现许多分析方法。虽然各种分析方法都有独特的描述方法,但所有分析方法有共同的基本原则。1.能够表达和理解问题的数据域和功能域2.按自顶向下、逐层分解问题3.给出系统的逻辑视图和物理视图3.2需求获取的常用方法3.2.1需求获取的常用方法与用户沟通获取需求的方法访谈面向数据流自顶向下求精简易的应用规格说明技术快速建立软件原型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)外部实体外部实体是系统的“人-机”界面,也就是系统的数据流由外部实体流入,或者系统的数据向外部流出。主要内容:①外部实体的名称及编号②与外部实体有关的数据流为了更加清晰简洁起见,建议采用下列符号:=意思是等价于(或定义为);+意思是和(即,连接两个分量);[]意思是或(即,从方括号内列出的若干个分量中选择一个);{}意思是重复(即,重复花括号内的分量);()意思是可选(即,圆括号里的分量可有可无)。常常使用上限和下限进一步注释表示重复的花括号。四、加工逻辑的描述加工逻辑也称为“小说明”,是对数据流图中每个加工所作的说明。描述加工逻辑一般用结构化语言、判定表和判定树。结构化语言:介于自然语言和形式语言之间的一种半形式语言判定表:适用于加工逻辑包含多个条件,而不同的条件组合需做不同的动作一张判定表由4部分组成。左上部列出所有条件;左下部列出所有可能做的工作;右上部每一列表示出各种条件的一种可能组合,填入“T”表示条件成立,填入“F”表示条件不成立,空白表示条件成立与否不影响。所以所有列表示条件组合全部可能情况;右下部的每一列是和每一种条件组合相对应的工作,填入“×”表示在该列上部规定的条件下做该行左边列出的那项工作,空白表示不做该项工作。判定树:判定表的变种,它本质上与判定表是相同的,只是表示形式不同判定树是判定表的图形化表示,是判定表的变种。由于判定表不直观,需要仔细推敲才能看出它的含义。所以引入判定树后,可以很直观地看出各种复杂的条件组合与相应的动作之间的对应关系。作业布置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.2Warnier图Warnier图是法国科学家提出的表示层次或树形数据的工具。和层次方框图类似。图3-11是用Warnier图描绘一类软件产品的例子,它说明了这种图形工具的用法。图中的花括号用来区分数据结构的层次,在一个花括号中的所有名字都属于一类信息;异或信息⊕表明一类信息或者一个数据元素在一定条件下才出现,而且在这个符号上、下方的两个名字所代表的数据只能出现一个;在一个名字下面(或右边)的括号中的数字表明了这个名字所代表的信息类(或元素)在这个数据结构中重复出现的次数。3.5.3IPO图IPO(InputProcessOutput)图IPO图是输入/处理/输出图的简称,能够方便地描绘输入数据、对数据的处理和输出数据之间的关系。常用于对当前系统简单的算法描述。这种描述比较粗糙,隐含了详细的数据流。基本形式是:在左方框中列出输入数据,中间列出加工处理的条目,右方框中列出输出数据条目,各框之间用粗箭头表示数据通讯信息。图3-12是一个主文件更新的例子,通过此例可以加快理解IPO图的用法。第6节SA方法的应用1项目说明2数据流图3数据字典需求规格说明的主要内容软件需求规格说明作为分析结果,它是软件开发,软件验收和管理的依据。因此,必须特别重视这一项工作,否则将可能要付出很大代价。软件需求规格说明的一般格式如下。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节软件总体设计的目标和任务软件总体设计:解决“怎么做”.软件总体设计的任务:以软件需求规格说明书为依据,着手实现软件的需求,并将设计的结果反映在“设计规格说明书”文档中。软件总体设计的重要性:是软件开发阶段的第一步,最终影响软件实现的成败和软件维护的难易程度。第一阶段:概要设计(总体设计)根据软件需求,设计软件系统结构和数据结构,确定程序的组成模块及模块之间的相互关系。回答“概括地说,系统应该如何实现?”。第二阶段:详细设计(过程设计)确定模块内部的算法和数据结构;选定某种过程的表达形式来描述各种算法;产生精确描述各模块程序过程的详细文档,并进行评审。将需求分析模型转换为软件总体设计软件结构设计以需求分析中得到的数据流图为基础而进行。第一个阶段总体设计的任务①制定规范②设计软件系统结构(简称软件结构)③处理方式设计④数据结构及数据库设计⑤可靠性设计⑥编写概要设计文档⑦概要设计评审设计的过程软件设计的概念和原理4.2.1模块和模块化模块:又称构件,是能够单独命名并独立地完成一定功能的程序语句的集合。模块化:就是指把一个待开发的软件系统分解成若干小的部分,即将一个大的问题分成若干小的问题逐一解决。4.2.2抽象抽象就是抽出事物的本质特性而暂时忽略其他不重要、存在差异的细节。什么是抽象思想?在认识事物、分析和解决问题的过程中,忽略那些与当前研究目标不相关的部分,以便将注意力集中于与当前目标相关的方面。软件开发实际上就是一个从高层次抽象到低层次抽象逐步过渡的过程。逐步求精:在软件开发的过程中,每前进一步实际上就是对软件解法抽象层次的进一步细化,即为我们所说的逐步求精。或者说逐步求精即为抽象的细化过程。逐步求精是一种自顶向下的设计策略,按这种设计策略,程序的体系结构是通过逐步精化处理过程的层次而设计出来的。4.2.3信息隐蔽和局部化信息隐蔽:在设计和确定模块时,使得一个模块内包含的信息(过程或数据),不允许其它不需要这些信息的模块访问,独立的模块间仅仅交换为完成系统功能而必须交换的信息。信息隐蔽的思想主要是强调模块的独立特性及其信息的隐蔽,即对于一个整体的程序划分为若干模块,而每个模块隐藏、封装一定功能的程序成分,并尽可能少地显露其内部实现细节。局部化则是指把一些关系密切的软件元素彼此间靠近,使关系密切的元素位于同一局部范围之内。4.2.4模块独立性及其度量模块的独立性是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其它的模块的接口尽可能简单。模块的独立性是软件质量好的关键。模块独立性的度量:一般采用两个准则度量模块独立性。即模块间的耦合性和模块的内聚性。耦合性也称块间的联系是模块之间互相连接的紧密程度的度量。模块之间的连接越紧密,联系越多,耦合性就越高,而其独立性就越弱。内聚性是一个模块内部各个元素彼此结合的紧密程度的度量。一个模块内部各个元素之间的联系越紧密,则它的内聚性就越高,相对地,它与其它模块之间的耦合性就会减低,而模块独立性就越强。模块独立性比较强的模块应是高内聚低耦合的模块。模块的耦合性有以下几种类型:无直接耦合两个模块没有直接关系,模块独立性最强。数据耦合属松散耦合。一模块访问另一模块时,通过数据参数交换输入、输出信息。标记耦合两个模块通过传递数据结构加以联系,或都与一个数据结构有关系,则称这两个模块间存在特征耦合。可能出现的情况:当把整个数据结构作为参数传递时,被调用的模块虽然只需要使用其中的一部分数据元素,但实际可以使用的数据多于它真正需要的数据,这将导致对数据访问失去控制。控制耦合模块之间传递的是控制信息(如开关、标志、名字等),控制被调用模块的内部逻辑。公共环境耦合一组模块引用同一个公用数据区(也称全局数据区、公共数据环境)。公共数据区指:全局数据结构。共享通讯区。内存公共覆盖区等。内容耦合有下列情况之一的。是最不好的耦合形式!模块内聚性:又称块内联系内聚。是描述一个模块内各个元素之间关系的一个概念,是对各元素彼此结合的紧密程度的一种度量。模块的内聚性有以下几种类型:偶然内聚块内各组成成份在功能上是互不相关的。缺点:可理解性差,可修改性差逻辑内聚几个逻辑上相关的功能被放在同一模块中,则称为逻辑内聚。时间内聚模块完成的功能必须在同一时间内执行,这些功能只因时间因素关联在一起。通信内聚模块内各部分使用相同的输入数据,或产生相同的输出结果。顺序内聚如果一个模块内处理元素和同一功能密切相关,而且这些处理元素必须顺序执行,则称为顺序内聚。功能内聚模块中的各个程序段联合起来共同完成一个特定的具体的单一的功能,模块中各个部分都是完成该功能必不可少的部分,模块的各个部分协同工作、紧密联系、不可分割。内聚性最强。总结:耦合、内聚与模块独立性关系耦合与内聚都是模块独立性的定性标准,都反映模块独立性的良好程度。但耦合是直接的主导因素,内聚则辅助耦合共同对模块独立性进行衡量。设计要求:低耦合,高内聚作业布置课后习题1,2,3教学反思本节对软件总体设计的目标和任务做了一个简单的介绍,对软件设计的概念和原理进行了详细的讲解,着重讲解了模块和模块化,模块独立性及其度量的相关内容。通过本节课的学习,可以更好的设计出高质量的软件。教研室主任签字:

《软件工程》教案内容授课章节及内容4.3软件结构设计准则4.4软件结构设计的图形工具课时数2授课时间周一3,4周三1,2授课班级12级计算机科学与技术专业复习旧课要点复习前节课讲述的软件总体设计的相关知识。新课教学目的1.了解软件结构设计准则;2.掌握软件结构设计的图形工具:软件结构图、层次图和HIPO图。本章节重点难点重点:1.了解软件结构设计准则;2.掌握软件结构设计的图形工具:软件结构图、层次图和HIPO图。难点:1.掌握软件结构设计的图形工具:软件结构图、层次图和HIPO图。教学方法多媒体教学教学过程设计启发式和讨论式教学授课内容:4.3软件结构设计准则软件结构设计准则:改进原则:高内聚、低耦合①改进软件结构,提高模块独立性通过模块分解或合并,降低耦合提高内聚②深度、宽度、扇出和扇入适中③将模块的影响限制在控制范围内作用域是指受模块内一个判定影响的所有模块的集合控制域是指这个模块本身及其所有的下属模块的集合④降低模块接口的复杂性接口传递信息应简单且和模块功能一致。模块的接口要简单、清晰、含义明确,便于理解,易于实现、测试与维护。⑤模块功能可预测单一的模块具有高内聚。但模块功能过分局限,可使用范围将过分狭窄,缺乏灵活性和扩充性。⑥模块规模适中模块过大:可理解程度下降模块过小:开销大于有效操作系统接口复杂⑦设计单入口单出口的模块不要使模块间出现内容耦合。4.4软件结构设计的图形工具在总体设计阶段可能会用到以下几种图形工具:软件结构图、层次图和HIPO图。4.4.1软件结构图软件结构图的主要内容有:模块:用方框表示,方框中写上模块的名字,模块名最好能反映模块功能;模块的调用关系:两个模块之间用单向箭头或直线连接起来表示它们的调用关系;辅助符号:弧形箭头表示循环调用;菱形表示选择或者条件调用;主要成分说明:一个方框表示一个模块;一个模块指向另一个模块的箭头或直线,表示前一模块对后一模块的调用;调用直线边的小箭头,表示调用时从一个模块传给另一个模块的数据,也指出了传送方向。软件结构图的基本符号4.4.2层次图描述软件的层次结构。层次图中,一个方框代表一个模块,方框间的连线表示调用关系。4.4.3HIPO图HIPO图=层次图+IPO图作业布置1.某电器集团公司下属的厂包括技术科、生产科等基层单位。现在想建立一个计算机辅助企业管理系统,其中:生产科的任务是:1)根据销售公司转来的内部合同制定车间月生产计划。2)根据车间实际生产日报表、周报表调整月生产计划。3)以月生产计划产生组装计划以及产生产品装配图给生产科,制定产品设计(结构、工艺)及产品组装月计划。4)将产品的组装计划传达到各科,将组装月计划分解为周计划,下达给车间。技术科的任务是:1)根据生产科转来的组装计划进行产品结构设计,产生产品装配图给生产科,产生外购需求计划给供应科,并产生产品自制物料清单。2)根据组装计划进行产品工艺设计,根据产品自制物料清单产生工艺流程图给零件厂。试写出以上系统中生产科和技术科处理的软件结构图。教学反思本节对软件结构设计准则进行了简单的介绍,详细讲解了软件结构设计的图形工具:软件结构图、层次图和HIPO图,通过本节课的学习,可以对某一软件的结构设计进行作图,从而设计出高质量的软件。教研室主任签字:

《软件工程》教案内容授课章节及内容4.5结构化设计方法课时数2授课时间周一3,4周三1,2授课班级12级计算机科学与技术专业复习旧课要点复习前节课讲述的软件结构设计的图形工具:软件结构图、层次图和HIPO图。新课教学目的1.了解结构化设计方法;2.掌握数据流图的类型;3.掌握变换型分析设计;4.掌握事务型分析设计。本章节重点难点重点:1.掌握数据流图的类型;2.掌握变换型分析设计。难点:1.掌握事务型分析设计。教学方法多媒体教学教学过程设计启发式和讨论式教学授课内容:4.5结构化设计方法结构化设计即SD(StructuredDesign)方法是一种把在需求分析阶段得到的数据流图如何映射为软件结构图的一种基于数据流的设计方法。又称面向数据流的设计方法。结构化设计的目标:将软件设计为多个结构合理、功能单一的模块,建立系统的模块结构图。它的主要表示方法是一种分层次的结构图。SD设计方法的主要思想:认为一个程序、一组程序或一个系统,是由一组功能模块来构成的。软件设计者首先必须无视程序、模块或过程的内部情况,而只对它们之间的关系进行分析。将系统看作是逻辑功能的抽象集合——功能模块的集合。描述工具:结构化设计方法提出了一种图形工具——结构图。结构图是精确表达程序结构的图形表示方法。它作为软件文档的一部分,清楚地反映出程序中模块之间的层次调用关系和联系。结构图的主要符号:1、模块:方框表示,并用名字标识该模块。2、模块的调用关系:用单向箭头或直线连接模块间的控制关系。3、模块间的信息传递:用带注释的短箭头表示模块间传递的信息。4、两个附加符号:弧形线表示循环调用,菱形表示选择调用。系统结构图中有4种类型的模块:1.传入模块:从下属模块取得数据,经过某些处理,再将其送给上级模块。它传送的数据叫做逻辑输入数据流。2、传出模块:从上级模块取得数据,进行某些处理后,传送给下属模块。它传送的数据流叫做逻辑输出数据流。3、变换模块:从上级模块取得数据,进行特定处理后,送回原上级模块。它加工的数据流叫做变换数据流。4、协调模块:对其下属模块进行控制和管理的模块。在一个好的系统结构图中,协调模块应在较高层出现。数据流图的类型SD方法是以数据流图为基础设计系统的模块结构的。不同类型的数据流图设计的过程以及所导出的初始的软件结构不同。不管系统的数据流图如何庞大和复杂,一般均可分为变换型、事务型和变换/事务混合型。⑴变换型(IPO型)变换型的数据流图是一个线性结构,由输入、变换和输出三部分组成。数据沿输入通路进入系统,同时数据由外部形式变换成内部形式。进入系统的数据通过变换中心经加工处理以后再沿输出通路变换成外部形式离开软件系统。⑵事务型事务型的数据流图中,数据沿输入通路到达一个加工处理(如下图中的C),这个处理将输入分为许多相互平行的加工路径,并根据输入数据的类型,选择某一加工路径。其中C为事务处理中心,其任务是得到输入数据(输入数据又称为事务)、分析每个事务以确定它的类型、根据事务类型选取一条活动通路。事务中心的任务:接受输入数据(事务)分析每个事务以确定它的类型。根据事务类型选取一条活动通路系统结构特征可归纳为两种典型形式综合设计在实际的软件系统中,数据流图往往是变换型和事务型的混合体。综合设计方法:一般以“变换分析”为主,“事务分析”为辅进行设计。即先找出子加工,设计出结构图的上层,然后根据数据流图的各个部分的结构特点适当地运用“变换分析”或“事务分析”进行处理,可得到初始的结构图。总结:面向数据流的设计过程作业布置1.如何区分数据流图的类型?试述“变换型数据流图”和“事务型数据流图”的设计步骤。2.试将下面的变换型数据流图转换成软件结构图。工资管理系统中的一个子系统有如下功能:由基本工资计算应扣除(例如水电气费等)的部分;根据职工的出勤情况计算奖金部分;根据输入的扣除额及奖金计算工资总额部分;由工资总额计算应扣除税金部分;根据计算总额部分和计算税金部分传递来的有关职工工资详细信息生成工资表。试根据需求画出该问题的数据流图,并将其转换为软件结构图。教学反思本节着重讲解了结构化设计方法的相关知识,讲解数据流图的类型,结构化设计方法的步骤,变换型分析设计和事务型分析设计。通过本节的讲解学生可以学会应用所学知识把在需求分析阶段得到的数据流图映射为软件结构图。教研室主任签字:

《软件工程》教案内容授课章节及内容第五章软件详细设计5.1详细设计的目的与任务5.2结构化程序设计课时数2授课时间周一3,4周三1,2授课班级12级计算机科学与技术专业复习旧课要点复习前节课讲述的结构化设计方法的相关知识。新课教学目的1.了解详细设计的目的和任务;2.掌握结构化程序设计。本章节重点难点重点:1.了解详细设计的目的和任务;2.掌握结构化程序设计。难点:1.掌握结构化程序设计。教学方法多媒体教学教学过程设计启发式和讨论式教学授课内容:5.1详细设计的目的与任务详细设计的根本目的:就是确定应该怎样具体实现所要求的系统。详细设计是在总体设计的基础上确定每个模块的具体执行过程,是软件设计的第二步。详细设计每个模块,确定实现模块所需要的算法和数据结构,同时将设计出的模块进行组装。详细设计的任务还不是具体地编写程序,而是要设计出程序的“蓝图”,以后程序员将根据这个蓝图写出实际的程序代码。因此,过程设计的结果基本上决定了最终的程序代码的质量。主要任务:(1)确定每一模块的数据结构。(2)确定模块接口细节。(3)确定每个模块的算法,用工具表达算法的过程,写出模块的详细过程性描述。(4)编写详细设计说明书。详细设计是编码的先导。详细设计的过程在详细设计过程中,需要完成的工作是:①确定软件各个组成部分内的算法以及各部分的内部数据组织。②选定某种工具来描述各种算法。③进行详细设计评审。详细设计的原则由于详细设计是给程序员编码提供依据的,因而要求做到:①模块的逻辑描述正确可靠、清晰易懂。②采用结构化程序设计方法,改善控制结构,降低程序复杂度,从而提高程序的可读性、可测试性、可维护性。③选择恰当描述工具来描述各模块算法。5.2结构化程序设计详细设计的方法1.结构化程序设计方法结构程序设计是一种设计程序的技术,它采用自顶向下逐步求精的设计方法和单入口单出口的控制结构。(1)结构化程序设计的基本要点:①采用自顶向下、逐步求精的程序设计方法②使用三种基本控制结构构造程序。任何程序都可以由顺序、选择、重复(循环)三种基本控制结构构造,这三种基本结构的共同点是单入口、单出口。③主程序员组的组织形式。(2)使用结构程序设计技术的好处:①自顶向下逐步求精的方法符合人类解决复杂问题的普遍规律,可以显著提高软件开发的成功率和生产率。②先全局后局部、先整体后细节、先抽象后具体的逐步求精过程开发出的程序有清晰的层次结构。③使用单入口单出口的控制结构而不使用GOTO语句,使得程序的静态结构和它的动态执行情况比较一致。④控制结构有确定的逻辑模式,编写程序代码只限于使用很少几种直截了当的方式。⑤程序清晰和模块化使得在修改和重新设计一个软件时可以重用的代码量最大。⑥程序的逻辑结构清晰,有利于程序正确性证明。结构化程序设计所使用的结构有顺序、条件和重复三种。结构化程序设计采用自顶向下,逐步求精的设计方法和单入口单出口的控制结构。作业布置1.软件详细设计的基本任务是什么?有哪几种描述方法?2.结构化程序设计的基本要点是什么?教学反思本节对详细设计的目的任务和结构化程序设计做了系统的介绍,为后续的详细设计工具的讲解奠定基础。教研室主任签字:

《软件工程》教案内容授课章节及内容5.3详细设计工具6.1程序设计语言的分类课时数2授课时间周一3,4周三1,2授课班级12级计算机科学与技术专业复习旧课要点复习前节课讲述的结构化程序设计的相关知识。新课教学目的1.掌握程序流程图;2.掌握N-S图;3.掌握PAD图;4.掌握过程设计语言;5.了解程序设计语言的分类。本章节重点难点重点:1.掌握程序流程图;2.掌握N-S图;3.掌握PAD图。难点:1.掌握过程设计语言。教学方法多媒体教学教学过程设计启发式和讨论式教学授课内容:5.3详细设计工具描述程序处理过程的工具称为详细设计工具,可以分为图形、表格和语言三类。5.3.1程序流程图程序流程图也称为程序框图,程序流程图使用五种基本控制结构是:方框表示一个处理步骤,菱形代表一个逻辑条件,箭头表示控制流向。注意,程序流程图中使用的箭头代表控制流,而不是数据流。5.3.2N-S图用方框图代替传统的流程图,以保证结构化。N-S图的基本控制结构如图所示。N-S图有以下一些特点:①功能域(即某一个特定控制结构的作用域)有明确的规定,并且可以很直观地从N-S图上看出来;②它的控制转移不能任意规定,必须遵守结构化程序设计的要求;③很容易确定局部数据和全局数据的作用域;④很容易表现嵌套关系,也可以表示模块的层次结构。5.3.3PAD图5.3.4过程设计语言过程设计语言(ProcessDesignLanguage,简称PDL,也称为伪码,是一种用于描述模块算法设计和处理细节的语言。称为设计程序用语言。它是一种伪码。用PDL表示的程序结构除三种基本结构以外还有出口结构和扩充等。伪码的语法规则分为“外语法”和“内语法”。2.PDL程序结构(1)顺序结构采用自然语言描述顺序结构(2)选择结构1)IF-ELSE结构2)IF-ORIF-ELSE结构3)CASE结构(3)循环结构1)FOR结构2)WHILE结构3)UNTIL结构(5)出口结构1)ESCAPE结构(退出本层结构)2)CYCLE结构(循环内部进入循环的下一次)(6)扩充结构1)模块定义2)模块调用3)数据定义4)输入输出6.1程序设计语言的分类编码之前的一项重要工作就是选择一种适当的程序设计语言。1、程序设计语言的介绍现有的程序设计语言五花八门、品种繁多,基本上可以分为低级语言和高级语言。【高级语言】从软件工程的角度,编程语言可分为基础语言,结构化语言和面向对象语言三大类。6.1.1基础语言基础语言是通用语言,它的特点是适用性强,应用面广,历史悠久。FORTRAN,COBOL,BASIC和ALGOL都属于这类语言。6.1.2结构化语言结构化语言也是通用语言。特点是直接提供结构化的控制结构,具有很强的过程能力和数据结构能力。作为基础语言的ALGOL语言是结构化语言的基础,它衍生出了Pascal、C、Ada等结构化语言。6.1.3面向对象的语言C++语言:在C语言的基础上增加了数据抽象、继承、封装、多态性、消息传递等概念实现的机制。Java语言:是一种面向对象的,不依赖于特定平台的程序设计语言。编程语言按代划分可分为一代、二代、三代和四代。第一代:面向机器的。机器语言和汇编语言。第二代语言:主要代表是FORTRAN、ALGOL、COBOL和BASIC。第三代语言:也成现代编程语言,分三类:通用高级语言、面向对象语言和专用语言。Pacal、c、ada等和C++等以及Lisp、prolog第四代语言:delphi、VFP、VB等。作业布置1.使用流程图、PAD图、N-S图和PDL语言描述下列程序的算法:(1)在数据A(1)—A(10)式中求最小数和次小数。(2)输入三个正整数作为边长,判断由这三条边构成的三角形是直角、等腰或一般三角形。2.任选一种排序(从大到小)算法,分别用流程图、N-S图和PPL语言描述其详细过程。3.程序流程图、N-S图、PAD图和PDL语言的特点各是什么?你认为这四种详细设计工具哪一种最好?为什么?教学反思本节对程序流程图、N-S图、PAD图和过程设计语言做了详细的讲解,为软件工程的设计阶段做好保证;简单介绍了程序设计语言的分类,为后续软件编码做好铺垫。教研室主任签字:

《软件工程》教案内容授课章节及内容第六章软件编码6.2设计语言的选择6.3程序设计风格课时数2授课时间周一3,4周三1,2授课班级12级计算机科学与技术专业复习旧课要点复习前节课讲述的程序设计语言的分类的相关知识。新课教学目的1.了解程序设计语言的选择;2.掌握程序设计风格。本章节重点难点重点:1.了解程序设计语言的选择;2.掌握程序设计风格。难点:1.掌握程序设计风格。教学方法多媒体教学教学过程设计启发式和讨论式教学授课内容:6.2程序设计语言的选择程序设计语言的特点软件工程的观点详细设计应能被直接地、容易地翻译成代码程序。源程序应具有可移植性。(3种解释)1)对源程序不做修改或少做修改就可以实现处理机上的移植或编译程序上的移植。2)即使程序的运行环境改变(例如,改用一个新版本的操作系统),源程序也不用改变。3)源程序的许多模块可以不做修改或少做修改就能集成为功能性和各种软件包,以适应不同的需要。可维护性。通常考虑的因素有:项目的应用范围;算法和计算的复杂性;软件执行的环境;性能上的考虑与实现的条件;数据结构的复杂性;软件开发人员的知识水平和心理因素等。其中,项目的应用范围是最关键的因素。实用标准从以下方面来说明:系统用户的要求、工程的规模、软件的运行环境、可以得到的软件开发工具、软件开发人员的知识、软件的可移植性要求、软件的应用领域。6.3程序设计风格我们将从以下几个方面来说明编码风格:内部文档、标识符的命名及说明、语句的构造及书写、输入/输出和效率。1)符号名的命名符号名即标识符,包括模块名、变量名、常量名、标号名、子程序名、数据区名以及缓冲区名等。这些名字应能反映它所代表的实际东西,应有一定实际意义。名字不是越长越好,应当选择精炼的意义明确的名字。必要时可使用缩写名字,但这时要注意缩写规则要一致,并且要给每一个名字加注释。同时,在一个程序中,一个变量只应用于一种用途。2)程序的注释夹在程序中的注释是程序员与日后的程序读者之间通信的重要手段。注释决不是可有可无的。一些正规的程序文本中,注释行的数量占到整个源程序的1/3到1/2,甚至更多。注释分为序言性注释和功能性注释。1)序言性注释通常置于每个程序模块的开头部分,它应当给出程序的整体说明,对于理解程序本身具有引导作用。有些软件开发部门对序言性注释做了明确而严格的规定,要求程序编制者逐项列出。有关项目包括:程序标题;有关本模块功能和目的的说明;主要算法;接口说明:包括调用形式,参数描述,子程序清单;有关数据描述:重要的变量及其用途,约束或限制条件,以及其它有关信息;模块位置:在哪一个源文件中,或隶属于哪一个软件包;开发简历:模块设计者,复审者,复审日期,修改日期及有关说明等。2)功能性注释功能性注释嵌在源程序体中,用以描述其后的语句或程序段是在做什么工作,或是执行了下面的语句会怎么样。而不要解释下面怎么做。6.3.2数据说明在设计阶段已经确定了数据结构的组织及其复杂性。在编写程序时,则需要注意数据说明的风格。为了使程序中数据说明更易于理解和维护,必须注意以下几点。数据说明的次序应当规范化说明语句中变量安排有序化使用注释说明复杂数据结构6.3.3语句结构(1)在一行内只写一条语句(2)程序编写首先应当考虑清晰性(3)程序要能直截了当地说明程序员的用意(4)除非对效率有特殊要求,程序编写要做到清晰第一,效率第二。不要为了追求效率而丧失了清晰性。程序效率的提高主要应通过选择高效的算法来实现。(5)首先要保证程序正确,然后才要求提高速度。(6)避免使用临时变量而使可读性下降。(7)让编译程序做简单的优化(8)尽可能使用库函数(9)避免不必要的转移。同时如果能保持程序可读性,则不必用GOTO语句。(10)尽量只采用三种基本的控制结构来编写程序(11)避免使用空的ELSE语句和IF…THENIF…的语句。(12)避免采用过于复杂的条件测试。(13)尽量减少使用“否定”条件的条件语句。(14)数据结构要有利于程序的简化。(15)尽可能用通俗易懂的伪码来描述程序的流程,然后再翻译成必须使用的语言。(16)要模块化,使模块功能尽可能单一化,模块间的耦合能够清晰可见。(17)利用信息隐蔽,确保每一个模块的独立性。(18)从数据出发去构造程序。(19)不要修补不好的程序,要重新编写。也不要一味地追求代码的复用,要重新组织。(20)对太大的程序,要分块编写、测试,然后再集成。(21)对递归定义的数据结构尽量使用递归过程。6.3.4输入和输出输入和输出信息是与用户的使用直接相关的。输入和输出的方式和格式应当尽可能方便用户的使用。一定要避免因设计不当给用户带来的麻烦。因此,在软件需求分析阶段和设计阶段,就应基本确定输入和输出的风格。系统能否被用户接受,有时就取决于输入和输出的风格。6.3.5程序效率程序的效率是指程序的执行速度及程序所需占用的内存的存储空间。(1)程序执行时间源程序的效率与详细设计阶段确定的算法的效率直接有关。在详细设计翻译转换成源程序代码后,算法效率反映为程序的执行速度和存储容量的要求。(2)存储器效率在大中型计算机系统中,存储限制不再是主要问题。在这种环境下,对内存采取基于操作系统的分页功能的虚拟存储管理。存储效率与操作系统的分页功能直接有关。采用结构化程序设计,将程序功能合理分块,使每个模块或一组密切相关模块的程序体积大小与每页的容量相匹配,可减少页面调度,减少内外存交换。(3)输入/输出效率输入/输出可分为两种类型:面向人(操作员)的输入/输出面向设备的输入/输出作业布置1.在软件项目开发时,选择程序设计语言通常考虑哪些因素?2.举例说明各种程序设计语言的特点及适用范围?3.什么是程序设计风格?为了具有良好的程序设计风格,应该注意哪些方面的问题?4.以下3个表达式表示的是同一个内容:(a)-6**A/3*B;(b)-(6**A/3)*B;(c)+(((6**A)/(-3))*x)(1)你认为哪一种可读性最好?哪一种最差?(2)如果让你列出几条关于书写表达式的指导原则,你对表达式中运算符的数量和圆满括号的层数将作何规定教学反思本节对程序设计语言的选择和设计风格做了一个全面的讲解,通过本节课的讲解可以使学生在日后的编程中能够选择合适的编程语言,根据合理的编程风格编写出合适的程序。教研室主任签字:

《软件工程》教案内容授课章节及内容第七章软件测试7.1软件测试的目标7.2软件测试的原则课时数2授课时间周一3,4周三1,2授课班级12级计算机科学与技术专业复习旧课要点复习前节课讲述的程序编码的相关知识。新课教学目的1.了解软件测试的目标;2.掌握软件测试的原则。本章节重点难点重点:1.掌握软件测试的原则。难点:1.掌握软件测试的原则。教学方法多媒体教学教学过程设计启发式和讨论式教学授课内容:7.1软件测试的目标GrenfordJ.Myers在《TheArtOfSoftwareTesting》一书中的观点常被许多人作为软件测试的目的或定义:软件测试是为了发现缺陷而执行程序的过程。测试是为了证明程序中有错误,而不是证明程序中无错误。一个好的测试用例指的是它可能发现至今尚未发现的缺陷。一次成功的测试指的是发现了新的软件缺陷的测试。测试的目的是想以最少的时间和人力找出软件中潜在的各种错误和缺陷。测试只能尽可能多的查找出程序中错误,而不能证明程序中没有错误。软件测试的范围并不只是对编码阶段的语法错、语义错、运行错进行查找的一系列活动。而是对软件计划、软件设计、软件编码进行查错和纠错的活动,它涉及到软件开发周期中各个阶段的错误,并分析错误的性质与位置而加以纠正。纠正过程可能涉及到改正或重新设计相关的文档活动。找错的活动称软件测试,纠错的活动称软件调试。软件测试的概念1.错误(error)、缺陷(fault)和故障(failure)人们在进行软件开发的过程中犯了一个错,则称为一个错误(error)。应用到测试过程时,有两种不同的使用方式。在第—种使用方式中,错误是指一个实际测量值与理论预期值之间的差异,这种差异就是错误;第二种使用方式中,错误是指一些人的行为引起的软件中的某种故障,通常这些故障是由软件错误造成的。缺陷(fault)常被称为bug,它是导致软件失败的一个条件。当开发人员犯了一个错,就会在软件中引人一个或多个缺陷。故障(failure)又称失效,它是指软件不能按软件规格说明要求执行,从而引起软件行为与用户需求的不一致现象。失效可能发生在测试阶段,也可能发生在软件交付之后的运行阶段和维护阶段。缺陷是开发人员所看到的软件系统的内部问题,而故障是用户从外部观察到的软件行为与软件需求的偏差。并不是每个软件缺陷都一定会导致软件发生故障,缺陷只有在满足某种条件的情况下才会导致软件故障。7.2软件测试的原则测试用例既要有输入数据,又要有对应的输出结果测试用例不仅要选用合理的输入数据,还应选择不合理的输入数据除了检查程序是否做了它应该做的工作,还应该检查程序是否做了它不应该做的工作应该远在测试开始之前就制定测试计划测试计划、测试用例、测试报告必须作为文档长期保存Pareto原理说明,测试发现的错误中80%很可能是由程序中20%的模块造成的为了达到最佳的测试效果,程序员应该避免测试自己的程序不完全原则:不完全原则表明测试是不完全的,穷举测试是不可能的。免疫性原则:软件缺陷具有免疫性,测试人员完成的测试越多,其免疫能力就越强,寻找更多软件缺陷也就更加困难。全程测试原则:全程测试原则要求软件测试不仅存在于完成程序之后,而应该跨越整个软件开发流程。80/20原则:80/20原则是指80%的软件缺陷存在于软件20%的空间里,软件缺陷具有空间聚集性。作业布置1.软件测试的基本任务是什么?简述测试的目标和基本原则。教学反思本节对计算机软件测试的目标和原则进行了详细的讲解,通过本节的学习,为以后进行软件测试做好铺垫。教研室主任签字:《软件工程》教案内容授课章节及内容第七章软件测试7.3软件测试方法7.4软件测试用例的设计课时数2授课时间周一3,4周三1,2授课班级12级计算机科学与技术专业复习旧课要点复习前节课讲述的软件测试的相关知识。新课教学目的1.掌握软件测试的分类;2.掌握静态测试与动态测试;3.掌握黑盒测试法与白盒测试法;4.掌握白盒技术和黑盒技术。本章节重点难点重点:1.掌握软件测试的分类;2.掌握黑盒测试法与白盒测试法。难点:1.掌握白盒技术和黑盒技术。教学方法多媒体教学教学过程设计启发式和讨论式教学授课内容:7.3软件测试方法黑盒测试:把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。黑盒测试又叫做功能测试或数据驱动测试。白盒测试:把测试对象看做一个透明的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。不论黑盒还是白盒测试都不能进行穷尽测试,所以软件测试不可能发现程序中存在的所有错误,因此需精心设计测试方案,力争尽可能少的次数,测出尽可能多的错误。7.4软件测试用例的设计白盒法:常用的白盒测试方法有逻辑覆盖法、基本路径覆盖法、数据流测试和循环测试等。1.逻辑覆盖法逻辑覆盖主要考察使用测试数据运行被测程序时对程序逻辑的覆盖程度。通常希望选择最少的测试用例来满足所需的覆盖标准。(1)语句覆盖(2)判定覆盖(3)条件覆盖(4)判定/条件覆盖(5)条件组合覆盖(6)路径覆盖(7)点覆盖(8)边覆盖2.基本路径测试法3.判定结构分析4.循环结构分析黑盒法:黑盒测试是依据软件的需求规约,检查程序的功能是否符合需求规约的要求。主要的黑盒测试方法有等价类划分、边界值分析、错误猜测、比较测试和因果图等方法。作业布置1.简述静态测试与动态测试的含义。它们之间有什么不同点和相同点。2.白盒测试用例和黑盒测试用例设计的基本方法。教学反思本节对软件测试方法和软件测试用例的设计进行了详细的讲解,通过本节的学习,为以后进行软件测试做好铺垫。教研室主任签字:

《软件工程》教案内容授课章节及内容第七章软件测试7.5软件测试过程7.6调试课时数2授课时间周一3,4周三1,2授课班级12级计算机科学与技术专业复习旧课要点复习前节课讲述的软件测试的相关知识。新课教学目的1.掌握单元测试、集成测试、确认测试、系统测试;2.掌握调试的执行步骤;3.掌握排错策略方法。本章节重点难点重点:1.掌握单元测试、集成测试、确认测试、系统测试。难点:1.掌握排错策略方法。教学方法多媒体教学教学过程设计启发式和讨论式教学授课内容:7.5软件测试过程软件测试步骤分为4步,即单元测试、集成测试、确认测试、系统测试。单元测试:检验每个模块能否单独工作。集成测试:检验概要设计中模块接口设计问题(可分子系统和系统)。确认测试:以需求规格说明书为检验尺度(可分内部确认和验收)。系统测试:综合检验软件与整个计算机系统。广义的测试可视为分析、设计、编码三个阶段的最终复审,以保证软件质量。7.5.1单元测试1.单元测试的内容主要对模块的五个基本特性进行评价:2.单元测试的方法单元测试一般为编码步骤的附属部分.模块不是独立的程序,自己不能运行,要靠其它部分来调用和驱动,要为每个单元测试开发两个软件:(1)驱动模块(驱动程序):相当于主模块。(2)桩模块(测试存根、连接程序):代替所测模块调用的子模块。7.5.2集成测试1.集成测试策略通常采用黑盒测试技术实施策略:非渐增式测试,渐增式测试。7.5.3确认测试确认测试是根据软件需求规约对集成的软件进行确认。7.5.4系统测试常用的系统测试包括:恢复测试(recoverytesting)安全测试(securitytesting)压力测试(stresstesting)性能测试(performancetesting)7.6调试(纠错技术)排错策略方法:1.蛮干法(强行排错)2.回溯法(跟踪法)3.消去原因作业布置1.测试用例设计、组织和测试过程组织之间的关系和实践过程。2.简述测试和调试的含义,它们之间有什么区别?3.软件测试要经过哪些步骤?这些测试与软件开发各阶段之间有什么关系?4.什么是单元测试,什么是集成测试,什么是确认测试?教学反思本节对软件测试过程和调试进行了详细的讲解,通过本节的学习,为以后进行软件测试做好铺垫。教研室主任签字:

《软件工程》教案内容授课章节及内容第八章软件维护8.1软件维护的分类8.2软件维护的特点课时数2授课时间周一3,4周三1,2授课班级12级计算机科学与技术专业复习旧课要点复习前节课讲述的软件测试的相关知识。新课教学目的1.掌握单元测试、集成测试、确认测试、系统测试;2.掌握调试的执行步骤;3.掌握排错策略方法。本章节重点难点重点:1.掌握单元测试、集成测试、确认测试、系统测试。难点:1.掌握排错策略方法。教学方法多媒体教学教学过程设计启发式和讨论式教学授课内容:8.1软件维护的分类软件维护的分类比较复杂,角度不同,分类的方法也不同,分类的结果也就不一样。传统软件维护一般分为四大类:改正性维护在软件交付使用后,因开发时测试的不彻底、不完全,必然会有部分隐藏的错误遗留到运行阶段。这些隐藏下来的错误在某些特定的使用环境下就会暴露出来。为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程就叫做改正性维护。适应性维护在使用过程中,外部环境(新的硬、软件配置),数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化。为使软件适应这种变化,而去修改软件的过程就叫做适应性维护。完善性维护在软件的使用过程中,用户往往会对软件提出新的功能与性能要求。为了满足这些要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。这种情况下进行的维护活动叫做完善性维护。预防性维护。预防性维护是为了提高软件的可维护性、可靠性等,为以后进一步改进软件打下良好基础。预防性维护定义为:采用先进的软件工程方法对需要维护的软件或软件中的某一部分(重新)进行设计、编制和测试。8.2软件维护的特点1.非结构化维护与结构化维护(1)非结构化维护因为只有源程序,而文档很少或没有文档,维护活动只能从阅读、理解、分析源程序开始。这是软件工程时代以前进行维护的情况。(2)结构化维护用软件工程思想开发的软件具有各阶段的文档,这对于理解和掌握软件功能、性能、系统结构、数据结构、系统接口和设计约束有很大作用。这种维护对减少精力、减少花费、提高软件维护效率有很大的作用。影响维护工作量的因素:系统大小程序设计语言系统年龄数据库技术的应用先进的软件开发技术作业布置为什么软件需要维护?维护有哪几种类型?简述它们的维护过程。教学反思本节对软件维护的分类和软件维护的特点进行了详细的讲解,通过本节的学习,为以后进行软件维护

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论