软件工程导论张海藩编著考试范围及各章重点
张海藩《软件工程导论》(第6版)(章节题库 第6章 详细设计)【圣才出品】

十万种考研考证电子书、题库视频学习平台
第 6 章 详细设计
一、选择题 1.在软件开发过程中,以下说法正确的是( )。 A.程序流程图是逐步求精的好工具 B.N-S 图不可能任意转移控制,符合结构化原则 C.判定表是一种通用的设计工具 D.程序流程图和 N-S 图都不易表达模块的层次结构 【答案】B 【解析】程序流程图本质上不是逐步求精的好工具,它会使程序员过早地考虑程序的控 制流程,而不去考虑程序的全局结构;判定表不是一种通用的设计工具,没有一种简单的方 法使用它能同时清晰地表示顺序和循环等结构;程序流程图不易表示模块的层次结构,N- S 图则可以表示模块的层次结构。
11.程序控制一般分为( )、分支、循环三种基本结构。 A.分块 B.顺序 C.循环 D.分支 【答案】B 【解析】程序控制一般分为顺序结构、分支结构也成选择结构、循环结构三种基本结构, 任何一种结构都能由这三种结构组成。
12.Jackson 方法根据( )来导出程序结构。 A.数据结构 B.数据间的控制结构
4 / 14
圣才电子书 十万种考研考证电子书、题库视频学习平台
10.对于详细设计,下面说法错误的是( )。 A.详细设计是具体地编写程序 B.详细设计是细化成很容易地从中产生程序图纸 C.详细设计的结果基本决定了最终程序的质量 D.详细设计中采用的典型方法是结构化程序设计方法 【答案】A 【解析】详细设计阶段,主要对模块内的算法和模块内的数据结构进行设计,具体编写 程序属于编码阶段的任务。
8.( )工具在软件详细设计过程中不采用。 A.判定表 B.IPO 图 C.PDL D.DFD 图 【答案】D 【解析】DFD 图(数据流图)是软件需求阶段过程中采用的工具,用于描述系统的分 解,即描述系统由哪几个部分组成,各部分之间有什么联系等等。
张海藩《软件工程导论》(考研用)辅导书(总体设计)【圣才出品】

第5章总体设计5.1 复习笔记一、设计过程1.目的总体设计的基本目的就是回答“系统应该如何实现”这个问题。
2.主要任务(1)划分出组成系统的物理元素——程序、文件、数据库、人工过程和文档等。
(2)确定系统中每个程序是由哪些模块组成的,以及这些模块相互间的关系。
【注意】每个物理元素的具体实现是详细阶段的任务。
3.必要性可以站在全局高度上,以较少的成本选出最佳方案和最合理的软件结构并开发出较高质量的软件系统。
4.组成阶段(1)系统设计阶段,确定系统的具体实现方案。
(2)结构设计阶段,确定软件结构。
5.典型的总体设计过程(略)二、设计原理1.模块化(1)定义模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。
(2)优点①使软件结构清晰,不仅容易设计也容易阅读和理解。
②使软件容易测试和调试,有助于提高软件的可靠性。
③提高软件的可修改性。
④有助于软件开发工程的组织管理。
【注意】模块是构成程序的基本构件。
2.抽象(1)定义抽象就是抽出事物的本质特性而暂时不考虑它们的细节。
(2)优点①简化了软件的设计和实现;②提高了软件的可理解性和可测试性;③使得软件更容易维护。
3.逐步求精(1)定义定义为:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。
(2)原理①逐步求精是一种自顶向下的设计策略。
②求精实际上是细化过程。
4.信息隐藏和局部化(1)局部化定义指把一些关系密切的软件元素物理地放得彼此靠近。
(2)信息隐藏原理使得一个模块内包含的信息(主要是实现细节)对于不需要这些信息的模块来说,是不能访问的。
5.模块独立(1)定义开发的模块具有独立功能而且和其他模块之间没有过多的相互作用的模块,就可以做到模块独立。
(2)两个度量标准:耦合和内聚。
(3)耦合①定义耦合是对一个软件结构内不同模块之间互连程度的度量。
②分类a .完全独立;b .数据耦合;c .控制耦合;d .特征耦合;e .公共环境耦合;f .内容耦合。
张海藩《软件工程导论》(第6版,清华大学出版社)(考研用)辅导书 第(10-13)章【圣才出品】

十万种考研考证电子书、题库视频学习平台
第 10 章 面向对象分析
10.1 复习笔记
一、面向对象分析的基本过程 1.概述 (1)定义 面向对象分析,就是抽取和整理用户需求并建立问题域精确模型的过程。 (2)过程 ①分析陈述用户需求的文件; ②深入理解用户需求,抽象出目标系统的本质属性; ③用模型准确地表示。 (3)目的 全面深入地理解问题域和用户的真实需求,建立问题域的精确模型。
2.信息来源 需求陈述、应用领域的专业知识、客观世界的常识是建立对象模型时的主要信息来源。
3.建立对象模型的步骤 (1)确定类与对象。 ①找出候选的类与对象; ②筛选出正确的类与对象。 (2)确定关联。 【注意】在分析确定关联的过程中,不必花过多的精力去区分关联和聚集,聚集是一种 特殊的关联。 (3)划分主题。 (4)确定属性。 (5)识别继承关系。 (6)反复修改。
5.画状态图 (1)定义 状态图描绘事件与对象状态的关系,它确定了由事件序列引出的状态序列。 (2)方法 ①仅考虑事件跟踪图中指向某条竖线的那些箭头线。把这些事件作为状态图中的有向 边,边上标以事件名。 ②给每个状态取个有意义的名字。 ③根据一张事件跟踪图画出状态图后,再把其他脚本的事件跟踪图合并到该图中。 ④考虑完正常事件后再考虑边界情况和特殊情况,包括在不适当时候发生的事件。
十万种考研考证电子书、题库视频学习平台
复杂问题的对象模型由 5 个层次组成,如图 10-1 所示。
图 10-1 复杂问题的对象模型的 5 个层次
二、需求陈述 1.内容 (1)阐明“做什么”而不是“怎样做”。 (2)描述用户的需求而不是提出解决问题的方法。 (3)指出哪些是系统必要的性质,哪些是任选的性质。 (4)避免对设计策略施加过多的约束,不描述系统的内部结构。
(完整版)《软件工程导论》第五版张海藩编著总结

总结重点:❖∙Unit1❖∙软件危机包含两方面的问题:一是如何开发软件,怎样满足人们对软件日益增长的需求?二是如何维护软件,使它们持久地满足人们的要求。
❖∙软件工程学定义:把软件当作一种工业产品,采用工程学的原理来管理和组织软件的开发和维护,称为软件工程。
❖∙软件是指程序、数据和文档三者共同构成的配置。
❖∙包含与数据处理系统操作有关的程序、规程、规则以及相关文档的智力创作称为软件。
文档是描述程序开发过程的,是智力创作的真实记录,是创作活动的历史档案和结晶。
❖∙软件的描述性定义:软件由计算机程序,数据结构和文档组成。
❖∙软件质量定义为“与软件产品满足规定的和隐含的需求能力有关的特征和特性的全体”具体来说: 1)软件产品中能满足给定需求的性质和特性的总体;2)软件具有所期望的各种属性的组合程度。
❖∙将软件质量属性划分为六个特性(功能性、可靠性、易用性、效率、维护性和可移植性),这六个属性是面向用户的观点——面向管理的观点,且是定性描述的。
❖∙软件质量度量体系:内部度量可用于开发阶段的非执行软件产品,外部度量只能在生存周期过程中的测试阶段和任何运行阶段使用。
❖∙软件工程项目的基本目标:(1)低成本;(2)满足功能要求;(3)高性能;(4)易移植;(5)易维护。
❖∙软件工程方法学就是要从技术和管理上提供如何去设计和维护软件。
❖∙软件开发方法:面向数据流(约旦)方法、面向数据结构方法、面向对象方法。
❖∙结构程序设计是进行以模块功能和处理过程设计为主的详细设计的基本原则。
它的主要观点是采用自顶向下、逐步求精的程序设计方法;使用三种基本控制结构构造程序,任何程序都可由顺序、选择、循环三种基本控制结构构造。
❖∙用来辅助软件开发、运行、维护、管理、支持等过程中活动的软件称为软件工具(CASE)。
❖∙软件生存周期定义:软件产品从形成概念开始,经过开发、使用和维护,直到最后不再使用的整个过程。
各阶段的任务彼此间尽可能的相对独立,同一阶段内各项任务的性质尽可能的相同。
张海藩《软件工程导论》(第6版)笔记和课后习题详解

9.2课后习题详 解
10.1复习笔记
10.2课后习题 详解
11.1复习笔记
11.2课后习题 详解
12.1复习笔记
12.2课后习题 详解
13.1复习笔记
13.2课后习题 详解
作者介绍
同名作者介绍
读书笔记
读书笔记
这是《张海藩《软件工程导论》(第6版)笔记和课后习题详解》的读书笔记模板,可以替换为自己的心得。
目录分析
1.1复习笔记
1.2课后习题详 解
2.1复习笔记
2.2课后习题详 解
3.1复习笔记
3.2课后习题详 解
4.1复习笔记
4.2课后习题详 解
5.1复习笔记
5.2课后习题详 解
6.1复习笔记
6.2课后习题详 解
7.1复习笔记
7.2课后习题详 解
8.1复习笔记
8.ห้องสมุดไป่ตู้课后习题详 解
9.1复习笔记
张海藩《软件工程导论》(第6 版)笔记和课后习题详解
读书笔记模板
01 思维导图
03 目录分析 05 读书笔记
目录
02 内容摘要 04 作者介绍 06 精彩摘录
思维导图
本书关键字分析思维导图
导论
知识点
软件
习题
概述
答案
可行性
第版
教材
笔记 复习
研究
工程
习题
需求
笔记
面向对象
分析
技术
内容摘要
内容摘要
作为该教材的辅导书,本书具有以下几个方面的特点:1.整理名校笔记,浓缩内容精华。在参考了国内外名 校名师讲授张海藩《软件工程导论》的课堂笔记基础上,本书每章的复习笔记部分对该章的重难点进行了整理, 同时对重要知识点进行点拨,因此,本书的内容几乎浓缩了配套教材的知识精华。2.解析课后习题,提供详尽答 案。本书参考大量软件工程导论相关资料对该教材的重难点课(章)后习题进行了详细的分析和解答,并对相关 重要知识点进行了延伸和归纳。要深深牢记:考研不同一般考试,概念题(名词解释)要当作简答题来回答,简 答题要当作论述题来解答,而论述题的答案要像是论文,多答不扣分。有的论述题的答案简直就是一份优秀的论 文(其实很多考研真题就是选自一篇专题论文),完全需要当作论文来回答!
西华师范大学 软件工程导论 第五版 张海藩 期末复习资料

软件生命周期软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤软件生命周期:同任何事物一样,一个软件产品或软件系统也要经历孕育、诞生、成长、成熟、衰亡等阶段,一般称为软件生存周期(软件生命周期)。
软件生命周期组成:①软件定义②软件开发③运行维护软件生命周期阶段:1.问题定义本阶段需要明确回答:“要解决的问题是什么?”。
统分析员应该提出问题的性质、目标和规模的书面报告。
通过对实际用户和使用部门的调查、研究,以及讨论、交流,得出一份双方都满意的文档2.可行性研究本阶段需要回答的是:“上一阶段确定的问题有无可行的解决方案,是否值得解决?”。
更进一步明确项目的规模和目标,从技术可行性、经济可行性、操作可行性、法律可行性、社会可行性等方面进行研究,确定是否开发本项目。
3.需求分析本阶段确定为解决该问题,目标系统必须应具备哪些功能。
系统分析员在本阶段必须与用户密切配合,充分交流,得到经用户确认的系统逻辑模型,用数据流图、数据字典等描述系统的逻辑模型。
需求分析阶段所确定的系统逻辑模型是以后设计和实现目标系统的基础,必须准确、完整的体现用户的需求。
4.总体设计本阶段确定目标系统的主要功能如何完成。
采用流程图或其他工具描述出每种可能的系统,推荐出一个最佳的方案,并制定出实现该系统的详细计划。
本阶段的另一个主要任务是设计软件的结构,确定软件应由哪些模块构成,以及模块之间的关系。
还应考虑系统的开发和应用环境,如计算机系统的配置,计算机网络等。
5.详细设计详细设计阶段的任务就是把问题的求解具体化,设计出程序的详细规格说明。
通常用HIPO图(层次图/输入/处理/输出)或PDL语言(过程设计语言)描述详细设计的结果。
6.编码和单元测试本阶段的任务是编写软件程序。
程序员应根据目标系统的要求,选取适合的程序设计语言,把详细设计的结果编制成程序,并对每一个模块进行单元测试。
软件工程考试大纲

软件工程》考试大纲一、课程性质与设置目的(-)主要参考书及题型1. 主要参考书《软件工程导论》(第五版),清华大学出版社,张海藩著2.题型及分数比例选择题 20%填空题 20%名词解释 15%论述题 45%(二)课程性质和特点软件工程是农业信息化专业的一门重要课程,主要讲述建造软件系统的方法、技术、流程、工具、规范等,本课程的任务是使应考者掌握软件工程的基本概念、基本原理、实用的开发方法和技术;了解软件工程各领域的发展动向;如何用工程化的方法开发软件项目,以及在开发过程中应遵循的流程、准则、标准和规范。
本课程是一门实践性很强的课程,它是各种软件开发经验的总结与提炼,应考者不但应注重概念、原理、方法、技术的掌握,也应注重方法、技术的实际应用。
(三)课程的基本要求1.从总体上了解软件工程的产生、软件生产发展史、软件生存周期、各种方法和生存周期模型、软件工程面临的问题。
2.系统掌握软件开发最基本的内容:可行性研究和软件计划、需求分析、概要设计、详细设计、编码、测试、维护,系统掌握这些阶段的目标、任务、特点、步骤和文档。
3.掌握增量模型的基本内容、基本思想、运行机制、开发过程和步骤。
4.掌握结构化方法的基本思想,开发过程和步骤,应遵循的原则和准则,能够应用相应的图形表示工具开发小型软件项目。
5.初步掌握面向对象方法的基本思想、基本概念、基本模型,面向对象分析、面向对象设计、面向对象实现的任务、内容和步骤,能够应用相应的图形工具。
6.了解Jackson方法的基本思想、开发过程和步骤、能够应用相应的图形表示工具。
7.了解软件工程的质量保证中的各种基本概念和方法,了解软件工程管理中的思想和方法,了解软件开发环境与工具。
要求切实掌握课程内容的基本思想、基本概念、基本方法,能够应用相应的图形表示工具进行小型项目的开发,特别是实用方法与技术的应用。
二、课程内容与考核目标第1章绪论第1节软件工程的产生1.软件的特点。
张海藩《软件工程导论》(第6版)配套题库【章节题库(1-13章)】【圣才出品】

第三部分章节题库第1章软件工程学概述一、选择题1.与计算机科学的理论研究不同,软件工程是一门()学科。
A.理论性B.工程性C.原理性D.心理性【答案】B【解析】软件工程要用工程科学中的观点来进行费用估算、制定进度、制定计划和方案。
2.软件危机的主要原因有()。
①软件本身的特点②用户使用不当③硬件可靠性差④对软件的错误认识⑤缺乏好的开发方法和手段A.③④B.①②④C.①⑤D.①③【答案】C【解析】软件危机的主要原因是软件本身的特点和缺乏好的开发方法和手段。
用户使用不当,硬件可靠性差,对软件的错误认识属于软件危机的表现。
3.软件工程与计算机科学性质不同,软件工程着重于()。
A.原理探讨B.理论研究C.建造软件系统D.原理的理论【答案】C【解析】计算机科学中的研究成果均可用于软件工程,但计算机科学着重于原理和理论,而软件工程着重于如何建造一个软件系统。
4.软件工程方法学的研究内容包含软件开发技术和软件工程管理两个方面,其期望达到的最终目标是()。
A.软件开发工程化B.消除软件危机C.实现软件可重用D.程序设计自动化【答案】A【解析】软件工程方法学是根据不同的软件类型,按不同的观点和原则,对软件开发中应遵循的策略、原则、步骤和必须产生的文档资料都做出规定,从而使软件的开发能够进入规范化和工程化的阶段,以克服早期的手工方式生产中的随意性和非规范性做法。
5.软件生存周期模型有多种,下列选项中,()不是软件生存周期模型。
A.螺旋模型B.增量模型C.功能模型D.瀑布模型【答案】C【解析】主要的软件生存周期模型有瀑布模型、增量模型、螺旋模型、喷泉模型、变换模型和基于知识的模型。
6.软件生存周期包括可行性分析和项目开发计划、需求分析、概要设计、详细设计、编码、()、维护等活动。
A.应用B.测试C.检测D.以上答案都不正确【答案】B【解析】软件生存周期是指一个软件从提出开发要求开始直到该软件报废为止的整个时期。
通常,软件生存周期包括可行性分析和项目开发计划、需求分析、概要设计、详细设计、编码、测试、维护等活动,可以将这些活动以适当的方式分配到不同阶段去完成。
张海藩《软件工程导论》(第6版,清华大学出版社)(考研用)辅导书 第(1-3)章【圣才出品】

(3)传统方法学(生命周期方法学或结构化范型)
①定义
采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务,
并使用适当的软件工具或软件工程环境来支持结构化技术的运用。
②优点
a.把软件生命周期划分成若干相对独立、简单的阶段,便于不同人员分工协作,降低
开发的困难程度;
b.开发过程中采用科学的管理技术和良好的技术方法,且在每个阶段结束之前都进行
二、软件工程 1.软件工程的介绍 (1)概念 采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的 管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效 地维护它,这就是软件工程。
2 / 59
圣才电子书
(2)本质特征
2.产生软件危机的原因 (1)客观原因 ①软件是计算机系统中的逻辑部件,缺乏“可见性”,因此管理和控制软件开发过程相 当困难。
1 / 59
圣才电子书 十万种考研考证电子书、题库视频学习平台
②软件维护通常意味着改正或修改原来的设计,因此软件较难维护。 ③软件规模庞大,而程序复杂性将随着程序规模的增加而呈指数上升。 (2)主观原因 ①存在与软件开发和维护有关的许多错误认识和做法。 ②对用户要求没有完整准确的认识就匆忙着手编写程序。 ③开发人员只重视程序而忽视软件配置的其余成分(文档和数据等)。 ④软件开发人员轻视维护。
圣才电子书 十万种考研考证电,把数据和对数据的操作紧密地结合起来的方法。 ②要点 a.把对象作为融合了数据及在数据上的操作行为的统一的软件构件; b.把所有对象都划分成类; c.继承性; d.对象彼此间仅能通过发送消息互相联系。 ③与传统方法学的对比 a.传统方法学强调自顶向下、逐层分解、顺序开发。 b.面向对象方法学强调主动地多次反复迭代地开发,保证了在各项开发活动之间的平 滑过渡。 ④优点 a.降低了软件产品的复杂性; b.提高了软件的可理解性; c.简化了软件的开发和维护工作; d.提高了软件的可重用性。 【注意】常考面向对象方法学的基本特征:类、继承、封装、多态。结合第 9 章掌握 其含义和意义。
软件工程导论全套精品课件(第六版)(张海潘编著)

2
第1章 软件工程学概述
引言
3
主要内容
1.1 软件危机 1.2 软件工程 1.3 软件生命周期
1.4 软件过程
第1章 软件工程学概述
主要内容
4
主要内容
1.1 软件危机 1.2 软件工程 1.3 软件生命周期
1.4 软件过程
第1章 软件工程学概述
1.1 软件危机
1.1 软件危机
1.1.1 软件危机的介绍
14
件,把经过时间考验而证明正确的管理技术和当前能够得 到的最好的技术方法结合起来,以经济地开发出高质量的 软件并有效地维护它,这就是软件工程。
第1章 软件工程学概述
1.2.1
软件工程的介绍
软件工程
1968年在第一届NATO会议上曾经给出了软件工程的一个
15
早期定义:“软件工程就是为了经济地获得可靠的且能在 实际机器上有效地运行的软件,而建立和使用完善的工程 原理。” 1993年IEEE进一步给出了一个更全面更具体的定义: “软件工程是: ①把系统的、规范的、可度量的途径应用 于软件开发、运行和维护过程,也就是把工程应用于软件; ②研究①中提到的途径。
与软件本身特点有关
软件不同于硬件, 1管理和控制软件 开发过程相当困 难。 软件在运行过程 2中不会因为使用 时间过长而被 “用坏 “如果运 行中发现了错误, 很可能是遇到了 一个在开发时期 引入的在测试阶 段没能检测出来 的错误。 软件不同于一般 3程序 ,它的一个 显著特点是规模 庞大 ,而且程序 复杂性将随着程 序规模的增加而 呈指数上升。
9
错误的认识和做法 6主要表现为忽视软 件需求分析的重要 性,认为软件开发 就是写程序并设法 使之运行,轻视软 件维护等
张海藩《软件工程导论》(第6版)笔记和课后习题详解

第 3 章 需求分析 ......................................................................................................................................... 28 3.1 复习笔记 ........................................................................................................................................ 28 3.2 课后习题详解 ................................................................................................................................. 32
软件工程复习资料--张海藩

软件工程复习资料--张海藩软件工程复习提纲第一章1.软件危机包含两方面的问题:1)如何开发软件,以满足对软件日益增长的需求2)如何维护数量不断膨胀的已有软件。
2.软件生命周期由软件定义、软件开发和运行维护三个时期组成,每个时期又可进一步划分成若干个阶段。
软件定义划分为:问题定义、可行性研究、需求分析软件开发划分为:总体设计、详细设计、编码和单元测试、综合测试。
这8个阶段每个阶段的基本任务是什么?3.软件过程的各种模型:瀑布模型(文档驱动模型),快速原型模型,增量模型,螺旋模型(风险驱动的模型),喷泉模型(适用于面向对象软件开发),Rational统一过程,敏捷过程和极限编程,微软过程。
各模型的基本特点(描述出过程的特点能识别出是哪种过程模型)4.软件工程的基本原理:1)用分阶段的生命周期计划严格管理2)坚持进行阶段评审3)实行严格的产品控制4)采用现代程序设计技术5)结果应能清楚地审查6)开发小组的人员应该少而精7)承认不断改进软件工程实践的必要性。
第二章5.可行性研究,应该至少从三个方面研究每种解法的可行性:技术可行性、经济可6.7.8.的一系列多层次的矩形框描绘数据的层次结构。
会画层次方框图。
9.W arnier图也用树形结构描绘信息,但是比层次方框图提供更丰富的描绘手段,会看Warnier图,明白其含义。
10.IPO图是输入、处理、输出图的简称,它能够方便的描绘输入数据、对数据的处理和输出数据之间的关系。
改进的IPO图。
第五章11.软件设计过程中应该遵循的基本原理:模块化、抽象、逐步求精、信息隐藏与局部化、模块独立。
1)模块化:把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,由这些模块集成起来构成一个整体,可完成指定的功能,满足用户的需求。
2)抽象:抽出事物的本质特征而暂时不考虑它们的细节。
3)逐步求精:为了解决主要问题而推迟对问题细节的考虑,是一种把一个时期内要解决的问题按优先级排序的技术。
软件工程导论张海藩编著考试范围及各章重点

软件工程考试整顿第一章1、CASE(Computer Aided Software Environment)2、软件危机旳概念P1-2:指在软件开发和维护过程中所碰到旳一系列严重问题。
(怎样开发软件,以满足对软件日益增长旳需求;怎样维护数量不停膨胀旳已经有软件)3、产生软件危机旳原因P3:首先与软件自身有旳特点有关,另首先也和软件开发与维护旳措施不对旳有关。
4、消除软件危机旳途径P5:既要有技术措施(措施和工具),又要有必要旳组织管理措施5、软件工程支撑环境P5:假如把各个阶段使用旳软件工具有机地集合成一种集体,支持软件开发旳全过程。
6、软件工程旳定义P5:是指导计算机软件开发和维护旳一门工程学科。
详细旳定义:①把系统旳、规范旳、可度量旳途径应用于软件开发、运行和维护过程,也就是把工程应用与软件;②研究①中提到旳途径。
7、软件工程措施学P9-10:包括三个要素:措施、工具和过程。
最广泛旳措施学包括老式措施学和面向对象措施学。
老式措施学:也称为生命周期措施学或构造化范型。
重要是把软件生命周期旳全过程一次划分为若干个阶段,然后次序地完毕每个阶段旳任务。
面向对象措施学:4个要点(对象、类、继承、封装性)8、软件生命周期3个时期P13:软件定义、软件开发、软件维护软件定义阶段:确定开发过程旳总任务;工程旳可行性;实现工程目旳应采用旳方略;系统必须完毕旳功能;估计资源和成本。
软件开发阶段:总体设计,详细设计(前两个阶段又称系统设计),编码和单元测试,综合测试(后两个阶段又称系统实现)。
9、三个模型旳优缺陷:瀑布模型(带反馈环)P15长处:①可强迫开发人员采用规范旳措施;②严格规定了每个阶段必须提交旳文档;③规定每个阶段交出旳所有产品都必须通过质量保证小组旳仔细验证。
缺陷:由于是一种文档驱动旳模型,最终开发出旳软件产品也许并不是顾客真正需要旳。
迅速原型模型(不带反馈环)P17可以通过迅速构建起一种在计算机上运行旳原型系统,让顾客试用原型并搜集顾客反馈意见旳措施,获取顾客旳真实需求。
软件工程导论(第六版)张海藩课后习题部分答案

软件⼯程导论(第六版)张海藩课后习题部分答案第⼀章1-1 什么是软件危机 ? 是指在计算机软件的开发和维护过程中所遇到的⼀系列严重问题。
1-3 什么是软件⼯程 ? 是指导计算机软件开发和维护的⼀门⼯程学科。
1-4 简述结构化范型和⾯向对象范型的要点,并分析它们的优缺点。
⽬前使⽤得最⼴泛的软件⼯程⽅法学( 2 种):1. 传统⽅法学:也称为⽣命周期⽅法学或结构化范型。
优点:把软件⽣命周期划分成基⼲个阶段,每个阶段的任务相对独⽴,⽽且⽐较简单,便于不同⼈员分⼯协作,从⽽降低了整个软件开发过程的困难程度。
缺点:当软件规模庞⼤时,或者对软件的需求是模糊的或会承受时间⽽变化的时候,开发出的软件往往不成功;⽽且维护起来仍然很困难。
2. ⾯向对象⽅法学:优点:降低了软件产品的复杂性;提⾼了软件的可理解性;简化了软件的开发和维护⼯作;促进了软件重⽤。
1-6 什么是软件过程 ?它与软件⼯程⽅法学有何关系 ?z 软件过程:是为了获得⾼质量软件所需要完成的⼀系列任务的框架,它规定了完成各项任务的⼯作步骤 z 软件⼯程⽅法学:通常把在软件⽣命周期全过程中使⽤的⼀整套技术⽅法的集合称为⽅法学,也称范型1-7 什么是软件⽣命周期模型,试⽐较瀑布模型,快速原型模型,增量模型,和螺旋模型的优缺点,说明每种模型的适⽤范围。
软件⽣命周期由软件定义、软件开发和运⾏维护 3 个时期组成,每个时期⼜进⼀步划分成若⼲个阶段。
⽣命周期模型规定了把⽣命周期划分成哪些阶段及各个阶段的执⾏顺序,因此,也称为过程模型。
瀑布模型的优点: 1. 可强迫开发⼈员采⽤规范的⽅法; 2. 严格规定了每个阶段必须提交的⽂档;3. 要求每个阶段交出的所有产品都必须经过质量保证⼩组的仔细验证。
瀑布模型的缺点: 1.在软件开发初期,指明⽤户全部需求是困难的; 2.需求确定后,经过⼀段时间才得到软件最初版本; 3. 完全依赖规格说明,导致不能满⾜⽤户需求。
适⽤中⼩型项⽬。
软件工程导论张海藩

效率问题: 程序运行时间 存储器效率 输入输出的效率
(1) 程序运行时间 写程序之前先简化算术的和逻辑的表达式;
仔细研究嵌套的循环,以确定是否有语句可以从内层 往外移;
尽量避免使用多维数组; 尽量避免使用指针和复杂的表; 使用执行时间短的算术运算; 不要混合使用不同的数据类型; 尽量使用整数运算和布尔表达式。
7.1 编码 7.1.1 选择程序设计语言
机器语言,几乎不使用。 汇编语言,特殊场合使用。 高级语言,明显优于汇编语言。
程序设计语言的划代:
划代
语言
特点
级别
1GL 机器语言
程序不直观,编程出错率高 运行效率高
比机器语言直观,减少了出错率 低级
2GL 汇编语言
与机器码一样长
特殊情况下才使用
BASIC 3GL PASCAL
7.2 软件测试基础 7.2.1 软件测试的目标
测试目的:为了发现程序中的错误而执行程序 的过程;
好的测试方案是极可能发现迄今为止尚未发现 的错误的测试方案;
成功的测试是发现了至今为止尚未发现的错误 的测试。
7.2.2 软件测试准则
所有测试都应该能追溯到用户需求; 应该远在测试开始之前就制定出测试计划; 把Pareto原理应用到软件测试中; 应该从“小规模”测试开始,并逐步进行“大
WORK=A[T]; A[T]=A[I]; A[I]=WORK;
例7:简单直接
for (i=1; i<=n; i++) for (j=1; j<=n; j++) V[i][j]=(i/j)*(j/i)
软件工程导论张海藩课后习

软件工程导论张海藩课后习第一章软件工程概论1.什么是软件危机?软件危机是指在运算机软件的开发和爱护过程中所遇到的一系列严峻问题。
这些问题表现在以下几个方面:(1)用户对开发出的软件专门难中意。
(2)软件产品的质量往往靠不住。
(3)一样软件专门难爱护。
(4)软件生产效率专门低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估量。
(7)软件技术的进展远远满足不了运算机应用的普及与深入的需要。
2.什么缘故会产生软件危机?(1) 开发人员方面,对软件产品缺乏正确认识,没有真正明白得软件产品是一个完整的配置组成。
造成开发中制定打算盲目、编程草率,不考虑爱护工作的必要性。
(2) 软件本身方面,关于运算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件爱护困难。
(3) 专门是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估量、爱护困难等一系列问题更为突出,技术的进展差不多远远不能适应社会需求。
3.如何样克服软件危机?(1) 充分吸取和借鉴人类长期以来从事各种工程项目中积存的行之有效的有效原理、概念、技术与方法,专门是吸取几十年来人类从事运算机硬件研究和开发的体会教训。
在开发软件的过程中努力作到良好的组织,严格的治理,相互友好的协作。
(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在运算机系统早期进展时期形成的一些错误概念和作法。
(3) 依照不同的应用领域,开发更好的软件工具并使用这些工具。
将软件开发各个时期使用的软件工具集合成一个整体,形成一个专门好的软件开发支环环境。
总之为了解决软件危机,既要有技术措施(方法和工具),又要有必要的组织治理措施。
4.构成软件项目的最终产品:应用程序、系统程序、面向用户的文档资料和面向开发者的文档资料。
5.什么是软件生存周期?软件生存周期是指从软件定义、开发、使用、爱护到剔除的全过程。
张海藩《软件工程导论》(考研用)辅导书(详细设计)【圣才出品】

第6章详细设计6.1 复习笔记一、结构程序设计详细设计不仅仅是逻辑上正确地实现每个模块的功能,更重要的是设计出的处理过程应该尽可能简明易懂。
结构程序设计技术是实现详细设计目标的关键技术,也是详细设计的逻辑基础。
1.经典定义如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。
2.控制结构(1)基本控制结构三种基本的控制结构是“顺序”“选择”和“循环”,它们的流程图分别为图6-1(a),6-1(b)和6-1(c)。
图6-1 三种基本的控制结构【注意】牢记三种基本控制结构,此为常考内容。
(2)扩展的控制结构DO UNTIL和DO CASE的流程图分别是图6-2(a)和图6-2(b)。
图6-2 其他常用的控制结构三、人机界面设计1.重要性(1)对于交互式系统来说,人机界面设计和数据设计、体系结构设计及过程设计一样重要。
(2)人机界面的质量直接影响用户对软件产品的接受程度。
2.设计问题(1)系统响应时间;(2)用户帮助设施;(3)出错信息处理;(4)命令交互。
3.设计过程用户界面设计是一个迭代的过程,也就是说,通常先创建设计模型,再用原型实现这个设计模型,并由用户试用和评估,然后根据用户意见进行修改。
四、过程设计的工具1.程序流程图(程序框图)(1)符号表示程序流程图中使用的符号表示如图6-3所示。
图6-3 程序流程图中使用的符号符号含义:(a)选择(分支);(b)注释;(c)预先定义的处理;(d)多分支;(e)开始或停止;(f)准备;(g)循环上界限;(h)循环下界限;(i)虚线;(j)省略符;(k)并行方式;(l)处理;(m)输入输出;(n)连接;(o)换页连接;(p)控制流。
(2)优点对控制流程的描绘很直观,便于初学者掌握。
(3)缺点①没遵循逐步求精的原则,它诱使程序员过早地考虑程序的控制流程,而不去考虑程序的全局结构。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件工程考试整理第一章1、CASE(Computer Aided Software Environment)2、软件危机的概念P1-2:指在软件开发和维护过程中所遇到的一系列严重问题。
(如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件)3、产生软件危机的原因P3:一方面与软件本身有的特点有关,另一方面也和软件开发与维护的方法不正确有关。
4、消除软件危机的途径P5:既要有技术措施(方法和工具),又要有必要的组织管理措施5、软件工程支撑环境P5:如果把各个阶段使用的软件工具有机地集合成一个集体,支持软件开发的全过程。
6、软件工程的定义P5:是指导计算机软件开发和维护的一门工程学科。
具体的定义:①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用与软件;②研究①中提到的途径。
7、软件工程方法学P9-10:包含三个要素:方法、工具和过程。
最广泛的方法学包括传统方法学和面向对象方法学。
传统方法学:也称为生命周期方法学或结构化范型。
主要是把软件生命周期的全过程一次划分为若干个阶段,然后顺序地完成每个阶段的任务。
面向对象方法学:4个要点(对象、类、继承、封装性)8、软件生命周期3个时期P13:软件定义、软件开发、软件维护软件定义阶段:确定开发过程的总任务;工程的可行性;实现工程目标应采用的策略;系统必须完成的功能;估计资源和成本。
软件开发阶段:总体设计,详细设计(前两个阶段又称系统设计),编码和单元测试,综合测试(后两个阶段又称系统实现)。
9、三个模型的优缺点:瀑布模型(带反馈环)P15优点:①可强迫开发人员采用规范的方法;②严格规定了每个阶段必须提交的文档;③要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。
缺点:由于是一种文档驱动的模型,最终开发出的软件产品可能并不是用户真正需要的。
快速原型模型(不带反馈环)P17可以通过快速构建起一个在计算机上运行的原型系统,让用户试用原型并收集用户反馈意见的办法,获取用户的真实需求。
本质是“快速”。
增量模型P17具有可在软件开发的早期阶段使投资获得明显回报和较易维护的优点,但是,要求软件具有开放的结构是使用这种模型时的固有的困难。
第二章1、数据流图的定义(DFD)P40:是一种图形化技术,描绘信息流和数据从输入移动到输出过程中所经受的变换。
无具体物理部件,只是描绘数据在软件中流动和被处理的逻辑过程。
在设计时值考虑系统必须完成的基本逻辑功能,完全不考虑具体怎么样实现。
描绘数据流向,而不应该描绘出现啊某个数据流的条件。
2、数据流图的符号P41:正方形(或立方体)——数据的源点或终点圆角矩形(或圆形)——交换数据的处理开口矩形(或两条平行线)——数据存储→——数据流,即特定数据的流动方向3、数据字典的作用P47:在软件分析和设计的过程中给人提供关于数据的描述信息。
4、数据字典由对4类元素的定义组成P47:①数据流;②数据流分量(即数据元素);③数据存储;④处理本章注意点:1、系统流程图P392、数据流图P443、数据字典P48的符号及P54的习题5第三章1、需求分析的任务P56:确定随系统的综合要求(①功能需求;②性能需求;③可靠性和可用性需求;④出错处理需求;⑤接口需求;⑥约束;⑦逆向需求;⑧将来可能提出的需求)分析系统的数据要求导出系统的逻辑模型修正系统开发计划2、实体—联系图中关系的区别P63:一对一联系(1 :1)一对多联系(1 :N)多对多联系(M :N)3、验证软件需求的正确性的4个方面P70:一致性所有需求必须是一致的,任何一条需求不能和其他需求相互矛盾。
完整性需求必须是完整的,规格说明书应包括用户需求的每个功能。
现实性用现有的硬件技术或软件技术基本上能实现的。
有效性需求是正确有效的,确实能解决用户面对的问题。
4、验证软件需求的方法P70:①验证需求的一致性;②验证需求的现实性;三验证需求的完整性和有效性。
本章注意点:1、画实体—联系图P642、画状态图P67第五章1、模块独立程度的度量标准P97:内聚和耦合(高内聚,低耦合)2、耦合的概念P97:是对一个软件结构内不同模块之间互连程度的度量。
数据耦合两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据(低耦合,系统中至少必须存在数据耦合)控制耦合传递的信息中有控制信息(有时控制信息以数据的形式出现)(中等耦合)特征耦合把整个数据结构作为参数传递而被调用的模块只需使用其中一部分数据元素公共环境耦合两个或者多个模块通过一个公共数据环境相互作用(设计原则:尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合。
)3、内聚的概念P98:标志着一个模块内各个元素彼此结合的紧密程度,是信息隐藏和局部化概念的自然扩展。
4、启发规则P100:①改进软件结构提高模块独立性②模块规模适中③深度、宽度、扇入和扇出都适中深度:软件结构中控制的层数,标志系统的大小和复杂度。
宽度:软件结构内同一层次上的模块总数的最大值。
扇出:是一个模块直接控制的模块数目。
扇入:表明有多少个上级模块直接调用它。
扇入越大,共享该模块的上级模块的数目越多。
5、模块的作用域应在控制域之内P101:所有受判定影响的模块应都从属于做出判定的那个模块,最好局限于做出判定的那个模块本身及它的直属下级模块。
6、交换流的概念P105 图5.8 :信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经过加工处理以后再沿输出通路变换成外部形式离开软件系统。
7、事务流的概念P105 图5.9 :数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个执行。
本章注意点:1、能够举出耦合的例子2、判断区别交换流和事务流第六章1、系统响应时间的概念P120:指从用户完成某个控制动作,到软件给出预期的响应之间的这段时间。
有两个重要属性,分别是长度和易变性。
2、McCabe方法(重点!!!怎样把程序流程图映射成流图)P137-139流图中圆代表结点,一个圆代表一条或多条语句。
程序流程图中的处理框和菱形判定框,即为流图中的结点,在流图中一条边必须终止于一个结点。
3、计算环形复杂度的方法P139-140:①流图中的区域数=环形复杂度②某流图G的复杂度V(G)=边数-结点数+2③某流图G的复杂度V(G)=判定结点的数目+1本章注意点:1、画判定树P128及P142的习题72、把程序流程图映射成流图P137-139第七章1、测试的定义及目的P150:①测试是为了发现程序中的错误而执行的过程。
②好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。
③成功的测试是发现了至今为止尚未发现的错误的测试。
2、测试方法P151:黑盒测试白盒测试黑盒测试:把程序看作一个黑盒子,完全不考虑程序的内部结构和处理过程。
白盒测试:把程序看作一个透明的白盒子,测试者完全知道程序的结构和处理算法。
3、测试步骤P151(要搞清楚):①模块测试(概念要写得出来)每个模块完成一个清晰定义的子功能,而且这个子功能和同级其他模块的功能之间没有互相依赖关系。
②子系统测试③系统测试④验收测试⑤平行运行4、回归测试P160:指重新执行已经做过的测试的某个子集,以保证由于调试或其他原因引起的变化,不会导致非预期的软件行为或额外错误的测试活动。
5、逻辑覆盖P162:主要掌握语句覆盖、判定覆盖和条件覆盖语句覆盖:选择足够多的测试数据,使被测程序中的每个语句至少执行一次判定覆盖:不仅每个语句必须至少执行一次,而且每个判定的每种可能的结果都应该至少执行一次,也就是每个判定的每个分支都至少执行一次条件覆盖:不仅每个语句至少执行一次,而且使判定表达式的每个条件都取到各种可能的结果。
6、等价划分P172:是一种黑盒测试,把程序的输入域划分成若干个数据类,据此到处测试用例。
7、边界值分析P175:8、调试途径:①蛮干法②回溯法③原因排除法本章注意点:1、分别设计测试用例(白盒测试技术中的逻辑覆盖)P162-163第八章小结P200:软件维护包括4类活动:①为了纠正正在使用过程中暴露出来的错误而进行的改正性维②为了适应外部环境的变化而进行的适应性维护③为了改进原有的软件而进行的完善性维护④为了改进将来的可维护性和可靠性而进行的预防性维护第九章1.面向对象的方法学方程P205:OO=objects+classes+inheritance+communication with messages对象类继承消息2、面向对象方法学的优点P205:①与人类习惯的思维方法一致②稳定性好③可重用性好④较易开发大型软件产品⑤可维护性好3、其他概念P211-214:类;实例;消息;方法;封装;继承;多态性(什么叫封装性等概念)4、对象模型的概念P216:表示静态的,结构化的系统的“数据”性质。
它是对模拟客观世界实体的对象以及对象彼此间的关系的映射,描述了系统的静态结构。
5、表示关系的符号(用例子判断关联聚集等)P218-220:关联P219:表示两个类的对象之间存在某种语义上的联系图9.5等聚集P220:表示类与类之间的关系是整体与部分的关系图9.9等泛化P221:指通常所说的继承关系,是通用元素和具体元素之间的一种分类关系图9.11 6、动态模型:表示瞬时的、行为化的系统的“控制”性质。
它规定了对象模型中的对象的合法变化序列(要求:会画状态图)。
7、功能模型:表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此更直接地反映用户对目标系统的需求。
(要求:会画用例图,会区分系统,用例,行为者这三者。
)8、三种模型之间的关系:功能模型指明了系统应该“做什么”;动态模型明确规定了什么时候(即在何种状态下接受了什么事件的出发)做;对象模型则定义了做事情的实体。
本章注意点:1、画图:动态模型图9.16 图9.17第十章1、3个子模型与5个层次P232:静态结构(对象模型)、交互次序(动态模型)和数据变换(功能模型)。
复杂问题的对象模型的5个层次:主题层;类与对象层;结构层;属性层;服务层2、ATM系统图10.2 图10.83、脚本的概念P247:指系统在某一执行期间内出现的一系列事件。
脚本描述用户(或其他外部设备)与目标系统之间的一个或多个典型的交互过程,以便对目标系统的行为有更具体的认识。
第十三章1.软件过程的输出信息可分为三类P329:①计算机程序(源代码和可执行程序)②描述计算机程序的文档(供技术人员或用户使用)③数据(程序内包含的或在程序外的)2.版本控制的概念P330:联合使用规程和工具,一管理在软件工程过程中所创建的配置对象的不同版本。