软件工程导论第四章
软件工程导论(第六版)张海藩 牟永敏课后习题答案.
第一章一、什么是软件危机?它有哪些典型表现?为什么会出现软件危机?软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。
它包括两方面:如何开发软件,已满足对软件日益增长的需求;如何维护数量不断增长的已有软件。
软件危机的典型表现:(1) 对软件开发成本和进度的估计常常很不准确。
常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象。
而为了赶进度和节约成本所采取的一些权宜之计又往往损害了软件产品的质量。
这些都降低了开发商的信誉,引起用户不满。
(2) 用户对已完成的软件不满意的现象时有发生。
(3) 软件产品的质量往往是靠不住的。
(4) 软件常常是不可维护的。
(5) 软件通常没有适当的文档资料。
文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。
(6) 软件成本、软件维护费在计算机系统总成本中所占比例逐年上升。
(7) 开发生产率提高的速度远跟不上计算机应用普及的需求。
软件危机出现的原因:(1) 来自软件自身的特点:是逻辑部件,缺乏可见性;规模庞大、复杂,修改、维护困难。
(2) 软件开发与维护的方法不当:忽视需求分析;认为软件开发等于程序编写;轻视软件维护。
(3) 供求矛盾将是一个永恒的主题:面对日益增长的软件需求,人们显得力不从心。
二、假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他?答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。
《软件工程导论》张海潘 第五版 清华 课后答案
WATCHING
THANKS FOR
实践应用:软件测试与质量保证
测试计划制定
根据软件需求和测试目标,制定详 细的测试计划,包括测试范围、测 试方法、测试资源以及测试进度等 方面的内容。
测试用例设计与执行
根据测试计划设计有效的测试用例, 并严格按照测试用例执行测试过程, 以确保软件的质量和稳定性。
缺陷管理与回归测试
建立缺陷管理机制,对测试过程中 发现的缺陷进行跟踪和管理,并进 行回归测试以确保缺陷得到修复并
软件工程的概念及基本原则
软件工程是一门研究计算机软件开发、维护和管理的科学。其基本原则包括强调需求分析、采用合 适的设计方法、实行严格的测试和维护等。
软件生命周期及各阶段任务
软件生命周期包括需求分析、设计、编码、测试和维护等阶段。各阶段的主要任务分别是明确用户 需求、设计系统结构、编写程序代码、测试软件功能和修复漏洞等。
案例分析三
某移动APP产品的敏捷开发实践。该案例以 敏捷开发方法为基础,介绍了产品迭代规划、 用户故事编写、任务分解以及站会等敏捷实 践活动的应用,对于理解敏捷开发方法的精 髓和实施具有很好的启示作用。
实践应用:软件开发项目管理
项目计划制定
根据项目需求和目标,制定详细的项目计划,包括任务分解、 资源分配、进度安排以及风险管理等方面的内容。
不再出现。
质量评估与改进
通过质量评估活动对软件的质量进 行全面评估,并根据评估结果制定 相应的质量改进措施,以提高软件
软件工程导论教学大纲-章程
《软件工程导论》教学大纲安徽大学计算机科学与技术学院2017 年 3 月《软件工程导论》教学大纲课程编号:ZJ36047课程名称:软件工程导论英文名称:Introduction to Software Engineering 学分/学时:2/34 课程性质:学科平台课程适用专业:软件工程先修课程:计算机导论开课单位:计算机科学与技术学院一、课程的教学目标与任务《软件工程导论》课程是软件工程专业高等教育的专业基础课程和学科平台课程,是“科研训练计划”教育课程。
《软件工程导论》以科学技术方法论为逻辑起点,结合部分管理方面的基本理论,讲授软件工程与方法论的联系,从而提高软件的质量和生产率。
本课程以软件工程专业本科二年级学生为讲授对象,是集理论性与应用性为一体的学科。
设置本课程的目的是:使学习者在全面了解软件工程发展历史、基本理论的基础上,系统掌握软件开发过程中的现代方法和管理手段,具备用工程化方法设计和构建规范软件的思想,从而为后续软件工程开发方法的系列课程奠定理论基础。
学习本课程的要求是:学习者应深刻认识软件危机产生的原因,纠正对软件开发的错误认识,掌握软件工程科学方法论的基本概念和基本原理,初步具备作为专业人员组织软件开发和设计工作的能力。
为检验掌握软件开发应遵循的原则和编写文档的基本方法的程度,最后的考核是通过考试进行,同时以加深对课程内容的理解。
二、课程具体内容及基本要求第一章软件工程的范畴 ( 2学时)基本内容包括:第一节历史方面一、定义软件(1)介绍软件的形式化定义。
结合经典教科书中关于软件的定义,介绍软件中所包含的三个要素:①指令的集合;②数据结构;③软件描述信息。
(2)阐述非形式化定义中软件具有的特性。
对比其他人工产品的特性,总结软件所具有的三个特性。
二、软件工程的发展历程和应用领域第二节经济方面结合例子阐述经济学原则在软件生产方面的重要性。
第三节维护性方面介绍软件生命周期模型和步骤,阐述维护工作在生命周期模型中的重要性和具体分类。
软件工程导论第四章 概要设计
模式4:共享数据模式
共享数据系统以一个或多个数据库 / 数据仓库为中心进行 组织,其它部件可以从中读写存储的数据。共享数据系统还 提供并发访问、容错处理、访问权限控制等功能。 典型的共享数据系统包括: a. 数据库 b. 知识库 c. 源代码控制程序
模式5:信息系统模式
现代信息系统平台模式,主要考虑B/S模式。 B/S模式的三层:表示层(presentation),业务 层(business),和数据存储层(data access) 。 B/S模式的优点: a. 架构简化了客户端。它无需象C/S模式那样在 不同的客户机上安装不同的客户应用程序,而只需安 装通用的浏览器软件。 b. 简化了系统的开发和维护。 c. 使用户的操作变得更简单。 d. 特别适用于网上信息发布 。
第四章 概要设计
•4.1软件体系结构 •4.2概要设计任务与步骤 •4.3软件设计的基本概念 •4.4面向数据流的设计方法 •4.5面向数据结构的分析设计方法 •4.6概要设计文档评审
概要设计
一是要覆盖《需求规格说明书》的全部内容, 二是要作为指导详细设计的依据。
概要设计注重于宏观上和框架上的设计,它是软 件系统的总体结构设计、全局数据库(包括数据结 构)设计、外部接口设计、功能部件分配设计、部 件之间的接口设计。 概要设计又称为架构设计。 • 用于描述系统最顶的结构和组织形式,标识出软 件的各个组成部分。
2.子系统和模块的区别 (1)一个子系统独立一个构成系统,不依赖 于其他子系统提供的服务。 (2)一个模块通常是一个能提供一个或多个 服务的系统组件。 3.体系结构设计的结果 体系结构设计过程的结果是一个体系结构 的设计文档。
4.1软件体系结构 4.1.1概述
4.体系结构模型 (1)静态结构模型 将子系统或组件作为一个个独立的单元来开发 (2)动态过程模型 给出系统在运行时的过程组成。它与静态模型不 同。 (3)接口模型 定义每个子系统从他们的公共接口能得到的服务。 (4)关系模型 关系模型给出子系统间的数据流的关系。
软件工程导论----张海藩(第五版)课后习题答案
《软件工程导论》课后习题答案第三章需求分析习题答案1.需求分析的描述工具有哪些?有数据流图、数据字典、判定表、判定树、结构化自然语言、层次方框图、Warnier 图、IPO图和需求描述语言等。
2.需求分析的基本任务是什么?准确定义未来系统的目标,确定为了满足用户的需要系统必须做什么。
3.怎样建立目标系统的逻辑模型?要经过哪些步骤?建立目标系统的逻辑模型的过程也就是数据流图的分解过程。
它的导出过程如图:10.某单位拟开发一个计算机房产管理系统,要求系统具有分房、调房、退房和查询统计等功能。
房产科将用户申请表输入系统后,系统首先检查申请表的合法性,对不合法的申请表,系统拒绝接收;对合法的申请表根据类型分别进行处理。
(1) 如果是分房申请,则根据申请者的情况(年龄、工龄、职称、职务、家庭人口等)计算其分数,当分数高于阀值分数时,按分数高低将申请单插到分房队列的适当位置。
在进行分房时,从空房文件中读出空房信息,如房号、面积、等级、单位面积房租等,把好房优先分给排在分房队列前面的符合该等级房条件的申请者;从空房文件中删掉这个房号的信息,并从分房队列中删掉该申请单,再把此房号的信息和住户信息一起写到住房文件中,输出住房分配单给住户,同时计算房租,并将算出的房租写到房租文件中。
(2) 如果是退房申请,则从住房文件和房租文件中删除有关信息,再把此房号的信息写到空房文件中。
(3) 如果是调房申请,则根据申请者的情况确定其住房等级,然后在空房文件中查找属于该等级的空房,退掉原住房,再进行与分房类似的处理。
(4) 住户可以向系统查询目前分房的阀值分数,居住某类房屋的条件,某房号的单位面积及房租等信息。
房产科可以要求系统打印住房情况的统计表,或更改某类房屋的居住条件、单位面积和房租等。
用数据流图描绘该系统的功能需求;在数据字典中给出主要的数据流、文件和加工说明。
第四章总体设计习题答案9. 比较层次方框图与结构图是的异同?(1) 层次方框图描绘数据的层次结构, 结构图描绘的是软件结构。
《软件工程导论》PPT课件-第4章-总体设计
(1)深度指软件结构中模块的层次数,它表示控制的层 数,一定意义上能粗略地反映系统的规模和复杂程度。
(2)宽度指同一层次中最大的模块个数,它表示控制的 总分布。
(3)扇出指一个模块直接调用的模块数目。经验证明, 良好的系统结构平均扇出数一般是3-4,不能超过5-9。
(4)扇入指有多少个上级模块直接调用它。
4.2 软件结构设计原理
4.2.2 抽象
抽出事物本质特性而不考虑细节
软件设计:从抽象概括到具体实现的过程
具体 抽象 具体
(系统功能) (建模) (程序代码)
4.2 软件结构设计原理
问题定义阶段: (具体)
用户给出对目标系统的实际需求。
系统定义阶段:(抽象)
软件可作为整个计算机系统的一个元素来看待。
一个功能,缺一不可。模块不能再分割。
4.2 软件结构设计原理
4.2.4 模块独立性
设计原则:
力争做到高内聚,并且能辨认出低内聚的模 块,通过修改设计提高模块的内聚程度并降低模 块间的耦合程度。
【注】耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分成模块时, 尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础。 但也有内聚性与耦合性发生矛盾的时候,为了提高内聚性而可能使耦合性变差。在 这种情况下,建议给予内聚性以更高的重视。
数据结构的设计采用逐步细化的方法。在需求分析 阶段可通过数据字典对数据的组成、操作约束和数据之 间的关系等方面进行描述,确定数据的结构特性。在总 体设计阶段要加以细化,详细设计阶段则规定具体的实 现细节。
4.1 总体设计的目标及任务
3.确定测试要求并制定测试计划
软件开发早期阶段考虑测试问题,能促使软件设计 人员在设计时注意提高软件的可测试性。
软件工程导论习题答案
2.需求分析的基本任务是什么?
准确定义未来系统的目标,确定为了满足用户的需要系统必须做什么。
3.怎样建立目标系统的逻辑模型?要经过哪些步骤?
建立目标系统的逻辑模型的过程也就是数据流图的分解过程。它的导出过程如图:
Hale Waihona Puke 4.什么是结构化分析?它的结构化体现在哪里?
结构化分析:使用数据流程图、数据字典、结构化英语、判定表和判定树等工具,来建立一种新的、称为结构化说明书的目标文档-需求规格说明书。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。
4.构成软件项目的最终产品:
应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。
5.什么是软件生存周期?
软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。
6.软件生存周期为什么划分成阶段?
(1) 任何一个阶段的具体任务不仅独立,而且简单,便于不同人员分工协作,从而降低整个软件开发工作的困难程度。
(2) 可以降低每个阶段任务的复杂程度,简化不同阶段的联系,有利于工程的组织管理,也便于采用良好的技术方法。
(3) 使软件开发的全过程以一种有条不紊的方式进行,保证软件的质量,特别是提高了软件的可维护性。
结构化体现在将软件系统抽象为一系列的逻辑加工单元,各单元之间以数据流发生关联。
5.软件需求规格说明书由哪些部分组成?
组成包括:
(1) 引言:编写目的、背景说明、术语定义及参考资料等。
(2) 概述主要功能、约束条件或特殊需求。
(3) 数据流图与数据字典。
(4) 用户接口、硬件接口及软件接口。
软件工程导论第1章(第4版)
软件工程导论 (第4版)
张海藩 编著
总目录
第1章 软件工程学概述 第8章 维护
第2章 可行性研究
第9章 面向对象方法学引论
第3章 需求分析
第10章 面向对象分析
第4章 形式化说明技术 第11章 面向对象设计
第5章 总体设计
第12章 面向对象实现
第6章 详细设计
第13章 软件项目管理
测试、综合测试又称为系统实现。 设计出实现目标系统的方案,设计程序的体系结构。 确定实现模块功能所需要的算法和数据结构; 设计出程序的详细规格说明; 用适当的程序设计语言写出正确的容易理解、容易维护的
程序模块并进行单元测试; 根据设计的软件结构,把各模块装配起来并进行测试; 通过对软件测试结果的分析预测软件的可靠性; 写出测试计划和详细测试方案并记录实际测试结果; 按照规格说明书的规定,由用户对目标系统进行验收。
第7章 实现
第1章 软件工程学概述
软件成为独立的商品 计算机应用的普及,促使人们对软件的品种、
数量、功能、质量等提出了越来越高的要求 在1970前,计算机硬件工程技术由于电子技术
的发展而建立 重视软件开发过程、方法、工具和环境的研
究—软件工程
1.1 软件危机 一.软件
1.软件的定义 软件是能够完成预定功能和性能的可执行的计算
2. 产生软件危机的原因
(1)软件开发个体化,采用了错误的方法和技术,无设计资 料留存; (2)软件规模的增长,使得软件的复杂度增加,软件的可靠 性随软件规模的增长而下降,质量保证越来越困难; (3)软件维护费用急剧上升。
据统计,软件维护费用大约占到软件总花费的2/3; (4)软件生产技术进步缓慢,是加剧软件危机的重要原因。
软件工程导论----张海藩(第五版)课后习(考研专用).doc
《软件工程导论》课后习题答案第一章软件工程概论1.什么是软件危机?软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
这些问题表现在以下几个方面:(1)用户对开发出的软件很难满意。
(2)软件产品的质量往往靠不住。
(3)一般软件很难维护。
(4)软件生产效率很低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。
2.为什么会产生软件危机?(1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。
造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。
(2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。
(3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。
3.怎样克服软件危机?(1) 充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。
在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。
(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。
(3) 根据不同的应用领域,开发更好的软件工具并使用这些工具。
将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。
总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。
4.构成软件项目的最终产品:应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。
5.什么是软件生存周期?软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。
软件工程导论课件之第4章 形式化说明技术(第五版)(张海藩编著)_百度文库
第4章 形式化说明技术
前言 4.1 概述 4.2 有穷状态机 4.3 Petri网 4.4 Z语言 4.5 小结
4.1 概述
4.1.1 非形式化方法的缺点
用自然语言(典型的非形式化方法)书写的系统规 格说明书,可能存在矛盾、二义性、含糊性、不完 整性及抽象层次混乱等问题。
矛盾是指一组相互冲突的陈述。
矛盾是指一组相互冲突的陈述。(不同系统分析员定义范围不同) 二义性是指读者可以用不同方式理解的陈述。 含糊性,例如:这样的需求:“系统界面应该是对 用户友好的。”实际上,这样笼统的陈述并没有给 出任何有用的信息。 不完整性可能是在系统规格说明中最常遇到的问题 之一。(如规格中没有考虑登录失败的转向的页面,即考虑问题不全面) 抽象层次混乱是指在非常抽象的陈述中混进了一些 关于细节的低层次陈述。(总体设计中混入了详细设计,分不清他们)
第4章 形式化说明技术
前言 4.1 概述 4.2 有穷状态机 4.3 Petri网 4.4 Z语言 4.5 小结
形式化说明技术=形式化方法,概念等同。
软件生命周期包括哪几个阶段?
可行性研究
需求分析 总体设计 详细设计
编码和单元测试 描述“系统规格说明书 ”的方法,有哪些? 需求规格说明书
总体设计规格说明书
状态
事件/输入
图4.1 保险箱的状态转换图
图4.1是一个有穷状态机的状态转换图。状态转换 并不一定要用图形方式描述,表4.1的表格形式也 可以表达同样的信息。
转换函数:当前状态+事件/输入下个状态
从上面这个简单例子可以看出,一个有穷状态机包 括下述5个部分:状态集J、输入集K、由当前状态 和当前输入确定下一个状态(次态)的转换函数T、 初始态S和终态集F。对于保险箱的例子,相应的 有穷状态机的各部分如下。 状态集J:{保险箱锁定,A,B,保险箱解锁,报 警}。 输入集K:{1L,1R,2L,2R,3L,3R}。 转换函数T:如表4.1所示。(当前状态+事件/输入下个状态) 初始态S:保险箱锁定。 终态集F:{保险箱解锁,报警}。
软件工程导论 张海藩(第五版)课后习题答案
《软件工程导论》课后习题答案第一章软件工程概论1.什么是软件危机?软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
这些问题表现在以下几个方面:(1)用户对开发出的软件很难满意。
(2)软件产品的质量往往靠不住。
(3)一般软件很难维护。
(4)软件生产效率很低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。
2.为什么会产生软件危机?(1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。
造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。
(2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。
(3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。
3.怎样克服软件危机?(1) 充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。
在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。
(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。
(3) 根据不同的应用领域,开发更好的软件工具并使用这些工具。
将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。
总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。
4.构成软件项目的最终产品:应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。
5.什么是软件生存周期?软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。
软件工程导论第四章
模块独立性
过程内聚
时间内聚 逻辑内聚 偶然内聚 内聚性
2017/12/18
26
偶然内聚
A B A B
C
2017/12/18
27
逻辑内聚
• 如果一个模块内部的各组成部分的处理动 作在逻辑上相似,但功能都彼此不同或无 关,则称为逻辑聚合。 • 一个逻辑聚合模块往往包括若干个逻辑相 似的动作,使用时可以选用一个或几个功 能。 • 例如:把编辑各种输入数据的功能放在一 个模块中。
2017/12/18
5
2017/12/18
6
4.2 软件设计的概念和原理
• 1)模块化
模块
• 模块或组件是指具有一定功能的可以用名字调用的 程序语句集合 • 例如,过程、函数、子程序和宏等都可作为模块。 面向对象范型中的对象是模块,对象内的方法也是 模块
模块化
• 把程序划分成独立命名且可独立访问的模块,每个 模块完成一个子功能
2017/12/18
24
耦合与模块独立性
数据耦合 模块独立性 特征耦合 控制耦合 公共环境耦合 内容耦合 耦合性
原则:尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,不用内容耦合
2017/12/18
25
内聚
• 内聚是一个模块内各个元素彼此结合的紧 密程度,好内聚的模块只做一件事情
功能内聚 顺序内聚 通信内聚
通常一个模块以30~60个语句行为宜
• 3)深度、宽度、扇出和扇入都应适当
深度是指软件结构中控制的层数 宽度是指软件结构中同一个层次上的模块总数 的最大值 扇出是指这个模块直接调用的下级模块数目 扇入是指直接调用这个模块的上级模块数目
2017/12/18 36
软件工程-第四章解读
在软件开发过程中使用数学,可以在不同的软件工程活动 之间平滑地过渡(系统规格说明、系统设计、程序代码) 提供了高层确认的手段
可以使用数学方法证明,设计符合规格说明,程序代码正确 地实现了设计结果
2018/11/29 5
4.1 概 述
4.1.3 应用形式化方法的准则
应该选用适当的表示方法,选择适用于当前项
当前状态〔菜单〕+事件〔所选择的项〕+谓词 =>
2018/11/29
13
4.2 有穷状态机(FSM/FSA)
在一幢m层的大厦中需要一套控制n部电梯的产品, 要求这n部电梯按照约束条件C1,C2和C3在楼层 间移动
C1:每部电梯内有m个按钮,每个按钮代表一个楼层。当 按下一个按钮时该按钮指示灯亮,同时电梯驶向相应的楼 层,到达按钮指定的楼层时指示灯熄灭 C2:除了大厦的最低层和最高层之外,每层楼都有两个 按钮分别请求电梯上行和下行。这两个按钮之一被按下时 相应的指示灯亮,当电梯到达此楼层时灯熄灭,电梯向要 求的方向移动 C3:当对电梯没有请求时,它关门并停在当前楼层
2018/11/29 8
4.2 有穷状态机(FSM/FSA)
state
transition condition transition
图4.1 保险箱的状态转换图
2018/11/29 9
State Transition Table
2018/11/29
10
FSM/FSA的数学模型
FSM可以表示为一个5元组(J,K,T,S,F)
软件工程导论
第四章 形式化说明技术 (Formal Description Technique,FDT)
4.1 概述 4.2 有穷状态机(FSM/FSA) 4.3 Petri网 (Petri Nets) 4.4 Z语言 (Z Notation) 4.5 小结
软件工程导论知识点总结(整理)
《软件工程导论》课后习题答案第一章软件工程概论1.什么是软件危机?软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
这些问题表现在以下几个方面:(1)用户对开发出的软件很难满意。
(2)软件产品的质量往往靠不住。
(3)一般软件很难维护。
(4)软件生产效率很低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。
2.为什么会产生软件危机?(1)开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。
造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。
(2)软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。
(3)尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。
3.怎样克服软件危机?(1)充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。
在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。
(2)推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。
(3)根据不同的应用领域,开发更好的软件工具并使用这些工具。
将软件开发各个阶段使用的软件工具集合成一个整体,形成一个很好的软件开发支环环境。
总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。
4.构成软件项目的最终产品:应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。
5.什么是软件生存周期?软件生存周期是指从软件定义、开发、使用、维护到淘汰的全过程。
《软件工程导论》课后习题详细答案
数字零=0 3位数字=3{数字}3 8位数字=非零数字+7位数字 7位数字=7{数字}7 数字=[0|1|2|3|4|5|6|7|8|9] 6. 可行性研究报告的主要内容? 可行性分析的结果是可行性研究报告,内容包括:(1) 系统概述:说明开发的系统名称,提出单位 和开发单位。 (2) 可行性研究的前提:系统目标; 要求; 约束和限制; 可行性研究的基本准则等。 (3) 对 现有系统的分析:处理流程,图示说明现有系统的处理流程和数据流程;现有系统存在的问题。 (4) 系统 需求:主要功能;主要性能及其要求;操作要求;信息要求;限制性要求。(5) 建议系统:系统目标;处理 流程;系统结构,功能,性能;系统技术可行性;投资和效益分析;操作可行性;法律可行性。(6) 其它可 选方案:与国内外同类型方案的比较; 提出一两个可行性方案供论证和探讨。 (7) 制定下一阶段的预算。 (8) 结论性意见:由用户方、设计方和投资方共同签署意见。 第三章 需求分析 习题答案 //3至3个数字
M 4080e 0.28(19851960) 4080e 7 4,474,263(字)
P 0.048 0.7219851974 4474263
5, 789(美元)
(2)如果一条指令的长度为一个字,则使存储器装满程序共需4474263条指令。 在1985年一名程序员每天可开发出10条指令,如果每月有20个工作日,则每人每月可开发出10×20条指 令。 为了开发出4474263条指令以装满存储器,需要的工作量是:
M 4080e 0.28(19951960)
73,577,679(字)
如果一条指令为一个字长,则为使存储器装满程序共需73,577,679条指令。
7,127(美元)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.1 概 述
4.1.3 应用形式化方法的准则
应该建立详尽的文档
用自然语言注释形式化的规格说明书
不应该放弃质量标准
形式化方法并不能完全确保软件的正确性
不应该盲目依赖形式化方法
无法用形式化方法证明从非形式化需求到形式化规格 说明的转换是正确的,因此,必须用其他方法(例如, 评审、测试)来验证软件正确性
缺点:
开发大系统时三元组的数量会迅速增长 无法处理定时需求(同步,竞争,死锁)
2010-11-11 liang@ 21
4.3 Petri网
4.3.1 概述 并发系统中遇到的一个主要问题是定时问 题: 同步、竞争、死锁 Petri网是一种用于确定系统中隐含的定时 问题的一种有效技术,可有效的描述并发 活动
在软件开发过程中使用数学,可以在不同的软件工程活动 之间平滑地过渡(系统规格说明、系统设计、程序代码) 提供了高层确认的手段
可以使用数学方法证明,设计符合规格说明,程序代码正确 地实现了设计结果
2010-11-11 liang@ 5
4.1 概 述
4.1.3 应用形式化方法的准则
应该选用适当的表示方法 应该形式化,但不要过分形式化
用形式化方外培训所带来的成本并将其编入预算
应该有形式化方法顾问随时提供咨询 不应该放弃传统的开发方法
形式化与SA和OOA结合,取长补短
2010-11-11 liang@ 6
是描述系统性质的基于数学的技术 即如果一种方法有坚实的数学基础,那么它就是形式化的
2010-11-11 liang@ 3
4.1 概 述
4.1.1 非形式化方法的缺点
矛盾:相互冲突的陈述 二义性:读者可以用不同的方式理解的陈述 含糊:笼统的陈述 不完整性:最常遇到的问题 抽象层次混乱:非常抽象的陈述中混进了一些关 于细节的低层次陈述
图4.3 楼层按钮的状态转换图
2010-11-11 liang@ 17
4.2 有穷状态机(FSM/FSA)
电梯 状态
M(d,e,f):电梯e正沿d方向移动,即将到达的是第f层 S( d,e,f ):电梯e停在f层,将朝d方向移动(尚未关门) W(e,f):电梯e在f层等待(已关门)
2010-11-11 liang@ 23
4.3 Petri网
transition
Input
place
arc weight
图4.5 Petri网的组成 网的组成
包含元素
位置P
Output
输入函数I
I( t1 )= {P2 ,P4} I( t2 )= {P2}
{P1 ,P2 ,P3 ,P4}
2010-11-11
liang@
10
FSM/FSA的数学模型
FSM可以表示为一个5元组(J,K,T,S,F)
状态集J (finite, non-empty set of states):{保险箱锁 定,A,B,保险箱解锁,报警} 输入集K (finite, non-empty set of input):{1L、1R、 2L、2R、3L、3R} 初始态S (initial state, an element of J, i.e. S∈J):保 险箱锁定 终态集F (final states, a (possibly empty) subset of J, F ⊆ J):{保险箱解锁,报警} 转换函数T (state-transition function, (J-F)*K J):如 表4.1所示
软件工程导论
梁文新
办公室:综合楼108 电 话: 87571625 wxliang@
第四章 形式化说明技术(Formal Description Technique,FDT)
4.1 概述 4.2 有穷状态机(FSM/FSA) 4.3 Petri网 (Petri Nets) Petri 4.4 Z语言 (Z Notation) 4.5 小结
谓词
2010-11-11
V (e,f):电梯e停在f层
liang@
14
4.2 有穷状态机(FSM/FSA)
EBOFF(e,f)+ EBP(e,f)+not V(e,f) ⇒ EBON(e,f)
EBON(e,f)+EAF(e,f) ⇒ EBOFF(e,f)
图4.2 电梯按钮的状态转换图
转换T
{t1,t2}
2010-11-11 liang@
输出函数O
O( t1 )= {P1} O( t2 )= {P3 ,P3}
24
4.3 Petri网
更形式化的Petri网结构,是一个四元组
C=(P,T,I,O) 其中,
P={P1,…,Pn}是一个有穷位置集,n>=0 T={t1,…,tm}是一个有穷转换集,m>=0,且T和P不相交。 I: → P ∞ 为输入函数,是由转换到位置无序单位组(bags) T 的映射。 O: → P ∞ 为输出函数,是由转换到位置无序单位组的映射。 T
2010-11-11
liang@
4
4.1 概 述
4.1.2 形式化方法的优点
把数学引入软件开发过程,形成基于数学的形式化方法
数学最有用的一个性质是,能够简洁准确地描述物理现象、 对象或动作的结果,因此是理想的建模工具。数学特别适合 于表示状态,也就是表示“做什么” 在理想情况下,分析员可以写出不含二义性的系统的数学规 格说明,并可用数学方法对其进行验证,以发现存在的矛盾 和不完整性,在这样的规格说明中完全没有含糊性 事实上复杂的软件系统通常难以用几个数学公式来描述
2010-11-11 liang@ 11
FSM/FSA的数学模型
加入谓词集P,把有穷状态机扩展为一个6 元组,其中每个谓词都是系统全局状态Y的 函数 则转换函数T:
(J-F)*K*P ⇒ J
2010-11-11
liang@
12
4.2 有穷状态机(FSM/FSA)
2010-11-11
liang@
2
4.1 概 述
按照形式化的程度,可以把软件工程使用的方法 划分成非形式化、半形式化和形式化三类 非形式化方法 (Informal)
用自然语言描述需求规格说明
半形式化方法 (Semi-formal)
用数据流图或实体-联系图建立模型
形式化方法 (Formal)
2010-11-11 liang@ 13
4.2 有穷状态机(FSM/FSA)
电梯按钮
EB(e,f):按下电梯e内的按钮并请求到f层去
状态:
EBON(e,f):电梯按钮(e,f)打开 EBOFF(e,f):电梯按钮(e,f)关闭
事件
EBP (e,f):电梯按钮(e,f)被按下 EAF (e,f):电梯到达f层
2010-11-11
应该测试、测试再测试 应该重用
liang@
7
4.2 有穷状态机 (FSM/FSA)
4.2.1 概念 FSM (Finite-State Machine)/FSA (Finite-State Automaton) is a model of behavior composed of a finite number of states, transitions between those states, and actions 一个保险箱上装了一个复合锁,锁有3个位置,分 别标记为1、2、3,转盘可向左(L)或向右(R) 转动 这样,任何时刻转盘都有6种可能的运动,即1L、 1R、2L、2R、3L、3R 保险箱的组合密码是1L、3R、2L,转盘的任何其 他运动都将引起报警
关门之时的规则
S(U,e,f)+DC(e,f) ⇒ M(U,e,f+1)
S(D,e,f)+DC(e,f) ⇒ M (D,e,f-1)
S(N,e,f)+DC(e,f) ⇒ W(e,f)
图4.4 电梯的状态转换图
2010-11-11 liang@ 19
思考题
定义开门状态O(e,f):电梯e在f层开门,则 如何由移动或等待进入这个状态?
2010-11-11 liang@ 8
4.2 有穷状态机(FSM/FSA)
state
transition condition transition
图4.1 保险箱的状态转换图
2010-11-11 liang@ 9
State Transition Table
2010-11-11 liang@ 15
4.2 有穷状态机(FSM/FSA)
楼层按钮
FB(d,f):f层请求电梯向d方向运动的按钮
状态:
FBON(d,f):楼层按钮(d,f)打开 FBOFF(d,f) :楼层按钮(d,f)关闭
事件
FBP (d,f):楼层按钮(d,f)被按下 EAF(1…n,f):电梯1或…或n到达f层
M ( d , e, f ) + ST (e, f ) + RL (e, f ) ⇒ O (e, f )
W (e, f ) + FBP ( d , f ) ⇒ O (e, f )
如何从等待进入到向上或向下移动状态?
W (e, f ) + RL(e, f ' ) ⇒ M (U , e, f + 1) ( f ' > f )
谓词
S(d,e,f):电梯e停在f层并且移动方向由d确定
2010-11-11 liang@ 16
4.2 有穷状态机(FSM/FSA)
FBOFF(d,f)+ FBP(d,f)+not S(d,1… n,f) ⇒ FBON(d,f)
FBON(d,f)+ EAF(1… n,f)+S(d,1… n,f) ⇒ FBOFF(d,f)
在一幢m层的大厦中需要一套控制n部电梯的产品, 要求这n部电梯按照约束条件C1,C2和C3在楼层 间移动