软件工程导论第五版复习重点(必考题)
软件工程导论第五版复习重点(汇总)
第一章一、什么是软件?1.满足功能要求和性能的指令或计算机程序集合;2.处理信息的数据结构;3.描述程序功能以及程序如何操作和使用所要求的文档;二、软件的特点:1)软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。
2)软件是通过人们的智力活动,把知识与技术转换成信息的一种产品,是在研制、开发中被创造出来的3)在软件运行和使用的期间,没有硬件那样的机械磨损、老化问题4)软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖性5)软件的开发至今尚未完全摆脱手工的开发方式6)软件的开发费用越来越高,成本相当昂贵。
三、软件危机的概念:软件危机是指计算机软件的开发和维护过程中所遇到的一系列严重的问题。
这些问题表现在以下几个方面:(1)用户对开发出的软件很难满意。
(2)软件产品的质量往往靠不住。
(3)一般软件很难维护。
(4)软件生产效率很低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。
四、产生软件危机的原因:(1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。
造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。
(2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。
(3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。
五、软件危机的两个主要问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
六、软件产品的重用性差,同样的软件多次重复开发。
七、软件通常没有适当的文档资料。
八、软件危机的典型表现:(1) 对软件开发成本和进度的估计常常很不准确。
软件工程导论(第五版)第五章资料
• 如图, A、B、C模块合并成 ABC模块之后,
ABC模块就是逻辑内聚模块。
X A
Y B
Z C
合并
X
Y ABC
Z
逻辑内聚示例
对逻辑内聚模块的调用,常常需要有一个功能
开关,由上层调用模块向它发出一个控制信号,
在多个关联性功能中选择执行某一个功能。
成本/模块
5.2.2 抽象
5.2.3 逐步求精 5.2.4 信息隐蔽和局部化 5.2.5 模块独立
模块的独立性很重要,因为: 1)有效的模块化的软件比较容易开发出来 ; 2)独立的模块比较容易测试和维护。
模块独立程度可以由两个定性标准度量: 耦合与内聚。
• 一、耦合
• 软件结构中存在大量的公用耦合时会给诊
断错误带来困难。
A
D
B
C
全程数 据区
E
(3)公用耦合
• 图中存在公用耦合,假设模块A、C、E都存取全程数据
区(如公用一个磁盘文件)中的一个数据项。
• 如果A模块读取该项数据,然后调用C模块对该项重新计
算,并进行数据更新。
A
D
B
C
全程数 据区
E
(3)公用耦合
中,并不是每个模块都能设计成一个功能内聚
模块。
•2)顺序内聚(Sequential Cohesion)
•
如果一个模块内处理元素和同一个功能
密切相关,而且这些处理元素必须顺序执行,
则称为顺序内聚。
• 如图,一个求一元二次方程根的模块由三
个处理元素组成,该模块中存在顺序内聚。
• 通常,顺序内聚中一个处理元素的输出是
A a B status C (2)控制耦合 图中模块A的内部处理程序判断是执行C还是执行D, D
软工第五版知识点总结
第一章:软件工程学概述1.1946年,世界上第一台电子计算机诞生,从宏观角度而言,计算机软件的发展主要经历了以下三个阶段:(1)第一阶段——程序设计阶段;(2)第二阶段——软件工程阶段;(3)第三阶段——软件过程阶段2 软件危机:2.1定义:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
2.2主要是两个方面的问题:如何开发软件──怎样满足对软件日益增长的需求如何维护软件──数量不断膨胀的已有软件2.3主要表现:对软件开发成本和进度的估计常常很不准确。
用户对为他们开发的软件往往不满意。
软件产品的质量往往靠不住。
软件常常是不可维护的。
软件通常没有适当的文档资料。
软件成本在计算机系统总成本中所占的比例逐年上升。
软件开发生产率提高的速度太慢。
2.4产生软件危机的原因:1. 软件本身的特点不同于硬件: (1)软件是逻辑的,而不是物理的产品。
(2)软件是由开发或工程化而形成的,没有明显的制造过程。
(3)软件在运行和使用期间,不存在硬件那样的磨损和老化问题,但它存在退化问题,开发人员必须维护软件。
2. 软件人员的主观原因:开发与维护的方法不正确。
早期软件开发个体化。
至今,忽视软件需求分析的重要性,轻视维护;困境中的消极态度;2.5解决软件危机的途径:a正确认识软件,软件包括:程序是按事先设计的功能和性能要求编写的指令序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发、维护和使用有关的图文材料。
b推广使用在实践中总结出来的开发软件的成功技术和方法,研究、探索更好更有效的技术和方法c开发和使用更好的软件工具d有必要的组织管理措施3.软件工程;指导计算机软件开发和维护的工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到得最好得技术方法结合起来.软件工程的根本在于提高软件的质量与生产率,最终实现软件的工业化生产。
4.软件工程方法学A:传统方法学:生命周期方法学或结构化范型采用结构化技术(结构化分析、设计和实现)把软件生命周期划分成若干阶段:每一阶段结束前都必须进行技术审查和管理复审,试图以每一阶段的正确性和完整性来保证最终产品的质量。
软件工程导论第五版复习重点(必考题)
最后部分为每年必考题)第一章1. .软件工程的定义:软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。
它借鉴传统工程的原则、方法,以提高质量,降低成本为目的.2. 软件危机的概念:软件危机是指计算机软件的开发和维护过程中所遇到的一系列严重的问题。
3. 产生软件危机的原因:(1)开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。
造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。
(2)软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。
(3)尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。
4. 面向对象方法学的四个要点:1.把对象作为融合了数据及在数据上的操作行为的统一的软件构件2.把所有对象都划分成类3.按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。
4.对象彼此间仅能通过发送消息互相联系。
5. 软件生命周期:软件定义(问题定义,可行性研究,需求分析)、软件开发(总体设计,详细设计,编码,单元测试,总体测试)、运行维护(持久地满足用户的需要)6. 瀑布模型,快速原型模型,增量模型,螺旋模型,喷泉模型,概念.方法.优缺点.区别。
7. 微软过程把软件生命周期划分为成5 个阶段:规划阶段,设计阶段,开发阶段,稳定阶段,发布阶段。
第二章1. 可行性包括:技术可行性,经济可行性,操作可行性。
2. 系统流程图是概括地描绘物理系统的传统工具。
它的基本思想是用图形符号以黑盒子形势描绘组成系统的每个部件(程序,文档,数据库,人工过程等)。
系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据加工处理的控制过程,因此尽管系统流程图的某些符号和程序流程图的符号形式相同,但是它却是物理数据流图而不是程序流程图。
软件工程导论第五版复习资料
软件工程导论第一章软件工程学概述1、软件完成特点功能的程序以及数据结构和文档2、软件的特点(1)软件开发更依赖于开发人员的业务素质、智力、人员的组织、合作和管理。
软件开发、设计几乎都是从头开始,成本和进度很难估计。
(2)软件存在潜伏错误,硬件错误一般能排除。
(3)软件开发成功后,只需对原版进行复制。
(4)软件在使用过程中维护复杂:1)纠错性维护—改正运行期间发现的潜伏错误;2)完善性维护—提高或完善软件的性能;3)适应性维护—修改软件,以适应软硬件环境的变化;4)预防性维护—改进软件未来的可维护性和可靠性。
(5)软件不会磨损和老化。
3、软件危机及软件危机的表现软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。
软件危机的表现1)对软件开发成本和进度的估计常常很不准确。
常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象,从而降低了开发商的信誉,引起用户不满。
2)用户对已完成的软件不满意的现象时有发生。
3)软件产品的质量往往是靠不住的。
4)软件常常是不可维护的。
5)软件通常没有适当的文档资料。
文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。
6)软件成本在计算机系统总成本中所占比例逐年上升。
特别是软件维护成本迅速增加,已经占据软硬件总成本的40%~75%。
7)开发生产率提高的速度远跟不上软件需求。
4、软件工程及软件工程的特性软件工程是用工程、科学和数学的原则与方法开发、维护计算机软件的有关技术和管理方法。
软件工程的特性:1)软件工程关注于大型程序的构造2)软件工程的中心课题是控制复杂性3)软件经常变化4)开发软件的效率非常重要5)和谐地合作是开发软件的关键6)软件必须有效地支持它的用户7)在软件工程中是由具有一种文化背景的人替具有另一种文化背景的人创造产品5、软件工程的基本原理用分阶段的生存周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应少而精承认不断改进软件工程实践的必要性6、软件生存周期一个软件从得出开发要求开始直到该软件报废为止的时期。
软件工程导论(第五版)课后习题答案
《软件工程导论》课后习题答案第一章软件工程概论1-11.什么是软件危机?软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
这些问题表现在以下几个方面:(1)用户对开发出的软件很难满意。
(2)软件产品的质量往往靠不住。
(3)一般软件很难维护。
(4)软件生产效率很低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。
2.软件危机有那些典型表现?(1) 对软件开发成本和进度的估计常常很不准确。
(2) 用户对“已完成的”软件系统不满意的现象经常发生。
(3) 软件产品的质量往往靠不住。
(4) 软件常常是不可维护的。
(5) 软件通常没有适当的文档资料。
(6) 软件成本在计算机系统总成本中所占的比例逐年上升。
(7) 软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
3.为什么会产生软件危机?(1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。
造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。
(2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。
(3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。
4.怎样克服软件危机?(1) 充分吸收和借鉴人类长期以来从事各种工程项目中积累的行之有效的有效原理、概念、技术与方法,特别是吸取几十年来人类从事计算机硬件研究和开发的经验教训。
在开发软件的过程中努力作到良好的组织,严格的管理,相互友好的协作。
(2) 推广在实践中总结出来的开发软件的成功的技术和方法,并研究更好、更有效的技术和方法,尽快克服在计算机系统早期发展阶段形成的一些错误概念和作法。
软件工程导论第五版复习资料全
软件工程导论第一章软件工程学概述1、软件完成特点功能的程序以及数据结构和文档2、软件的特点(1)软件开发更依赖于开发人员的业务素质、智力、人员的组织、合作和管理。
软件开发、设计几乎都是从头开始,成本和进度很难估计。
(2)软件存在潜伏错误,硬件错误一般能排除。
(3)软件开发成功后,只需对原版进行复制。
(4)软件在使用过程中维护复杂:1)纠错性维护一改正运行期间发现的潜伏错误;2)完善性维护一提高或完善软件的性能;3)适应性维护一修改软件,以适应软硬件环境的变化;4)预防性维护一改进软件未来的可维护性和可靠性。
(5)软件不会磨损和老化。
3、软件危机及软件危机的表现软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。
软件危机的表现1)对软件开发成本和进度的估计常常很不准确。
常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象,从而降低了开发商的信誉,引起用户不满。
2)用户对已完成的软件不满意的现象时有发生。
3)软件产品的质量往往是靠不住的。
4)软件常常是不可维护的。
5)软件通常没有适当的文档资料。
文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。
6)软件成本在计算机系统总成本中所占比例逐年上升。
特别是软件维护成本迅速增加已经占据软硬件总成本的40%~75%。
7)开发生产率提高的速度远跟不上软件需求。
4、软件工程及软件工程的特性软件工程是用工程、科学和数学的原则与方法开发、维护计算机软件的有关技术和管理方法。
软件工程的特性:1)软件工程关注于大型程序的构造2)软件工程的中心课题是控制复杂性3)软件经常变化4)开发软件的效率非常重要5)和谐地合作是开发软件的关键6)软件必须有效地支持它的用户7)在软件工程中是由具有一种文化背景的人替具有另一种文化背景的人创造产品5、软件工程的基本原理用分阶段的生存周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应少而精承认不断改进软件工程实践的必要性6、软件生存周期一个软件从得出开发要求开始直到该软件报废为止的时期。
软件工程导论期末复习重点
软件工程导论期末复习重点选择、判断略一、名词解释1、软件危机 2 、软件工程 3 、数据字典 4 、模块化 5 、黑盒测试6、软件维护7 、软件过程8 、快速原型9 、白盒测试二、简答题1、可行性研究目的和任务?2、可行性研究包括哪几方面的内容?3、简述需求分析的描述工具和基本任务?4、什么是模块化?模块设计的准则?5、详细设计阶段的根本目标和任务?6、比较面向数据流和面向数据结构两类设计方法的异同?7、测试与调试的主要区别?8、什么是软件生命周期模型?试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的适用范围。
9、比较层次方框图与结构图的异同?10、结构化程序设计的基本原则?11、提高软件编码效率的3 条原则?、名词解释1、软件危机答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
概括地说,包含两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
2、软件工程答:①把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径。
3、数据字典答:数据字典是描述数据流图中数据的信息的集合。
它对数据流图上每一个成分:数据项、文件(数据结构)、数据流、数据存储、加工和外部项等给以定义和说明;它主要由数据流描述、加工描述和文件描述三部分组成。
4、模块化答:模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。
5、黑盒测试答:黑盒测试也称为功能测试, 它着眼于程序的外部特征, 而不考虑程序的内部逻辑结构。
测试者把被测程序看成一个黑盒, 不用关心程序的内部结构。
黑盒测试是在程序接口处进行测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。
软件工程导论期末复习重点
软件工程导论期末复习重点软件工程期末复习一、软件工程学概述1.软件危机:计算机开发和维护的过程中所遇到的一系列问题名词解释(需要加上软件危机产生的原因)对用户的要求没有完整准确的认识就匆忙着手编写程序论述题(需要加上软件危机的典型表现)01.对软件开发成本和嫉妒的估计常常不准确02.用户对已完成软件系统的不满意情况经常发生03.软件的质量靠不住2.软件工程:指导计算机开发和维护的一门工程学科?名词解释3.软件工程方法学的三要素:方法、工具、过程4.软件生命周期的三个时期:软件定义、软件开发、运行维护01.软件定义时期的三个阶段:问题定义、可行性研究、需求分析02.软件开发时期的四个阶段:总体设计、详细设计、编码、单元测试,综合测试,前两个称系统设计,后两个称系统实现03.软件维护时期:只要任务是使软件持久的满足用户的需要,具体的说,当软件在使用过程中发现错误时应该加以纠正,当环境改变时应修改软件以适应新的环境,当用户有新的需要时,应该及时改进软件以满足用户新的需求,本时期不在划分阶段,但是每一次维护活动本质上都是一次压缩和简化了的定义和开发过程5.可行性研究的结果是客户做出是否继续这项工程的决定的重要依据,只有投资取得较大收益的的那些工程项目才是值得继续进行下去的6.需求分析的目标是:确定出系统必须具备哪些功能,和用户密切配合,充分交流信息,以得出经过系统确认的系统逻辑模型7.软件维护的四类维护活动:01.改正性维护:改正和诊断在使用过程中发生的软件错误02.适应性维护:修改软件以适应新的环境变化03.完善性维护:根据用户的需求改善和扩充软件使它更完善04.预防性维护:为将来的维护活动事先做准备8.瀑布模型: ?论述题01.传统的瀑布模型开发软件的特点A.阶段间具有顺序性和依赖性B.推迟实现的观点C.质量保证的观点02.软件配置:程序、文档、数据03.注释有什么用:提高代码的可读性(有待补充)二、可行性研究1.可行性研究的目的:就是用最小的代价在尽可能短的时间内确定问题是否能够解决2.从三个方面研究每种解法的可读性;01.技术可行性:使用现在的技术能实现这个系统吗?02.经济可行性:这个系统的经济效益能超过它的开发成本吗?03.操作可行性:系统的操作方式在这个用户组织内能行得通吗?3.系统流程图:是概括的描绘物理系统的传统工具。
《软件工程导论》考试重点
软件工程复习1.重点1-9章2.掌握基本概念软件危机的典型表现,解决途径软件过程的主要模型数据流图的用途验证软件需求模块独立程度度量最基本的控制结构盒图黑、白盒测试软件维护的代价面向对象方法需求陈述软件工程学可行性研究的任务事件、状态转换获取需求的典型方法详细设计的具体任务测试、调试、维护性质类的关联软件生命周期系统的逻辑模型软件结构的层次系统细化流图内聚与耦合用面向对象方法开发软件,三大模型的功能软件项目管理的周期良好的软件设计原则3. 有穷状态机4. 三个主要作业5. MTTF6. 根据数据流图类型,映射出对应的软件模块结构图7. 流图,并计算它的环形复杂度8. 程序流程图设计测试用例7-8 对一个包含10000条机器指令的程序进行一个月集成测试后,总共改正了15个错误,此时MTTF=10h;经过两个月测试后,总共改正了25个错误(第二个月改正了10个错误),MTTF=15h。
要求:(1) 根据上述数据确定MTTF与测试时间之间的函数关系,画出MTTF与测试时间τ的关系曲线。
在画这条曲线时做了什么假设?(2) 为做到MTTF=100h,必须进行多长时间的集成测试?当集成测试结束时总共改正了多少个错误,还有多少个错误潜伏在程序中?解:(1)假设MTTF与时间存在线性关系(2)设MTTF = a + bt10 = a + b15 = a + 2b得: a = 5, b = 5所以: 100 = 5 + 5tt = 19(月)由:))((t E E K I MTTF c T T -=有: )15(1000010-=T E K )25(1000015-=T E K 求得:E T = 45, K=33.33))19(45(33.3310000100Ec -= 求得:Ec(19) = 42还有 45 - 42 = 37-9 如对一个长度为100000条指令的程序进行集成测试期间记录下下面的数据:(a) 7月1日:集成测试开始,没有发现错误。
软件工程导论考试知识点汇集
软件工程导论(第5版)考试知识点汇集(Collection of test knowledge points in Software Engineering Introduction (FifthEdition) )Chapter 1: introduction to software engineering1.1 software crisis: refers to a series of serious problems encountered in the development and maintenance of computer software.The following aspects are shown:(1) it is hard for users to be satisfied with the software developed.(2) the quality of software products is often unreliable.(3) general software is hard to maintain.(4) the efficiency of software production is very low.(5) the cost of software development is more and more big.(6) software cost and development schedule are difficult to estimate.(7) the development of software technology can not meet the needs of the popularization and deepening of computer applications.2. definition of software: software is another part of computer system which is interdependent with hardware. It is a complete set of programs, data and related documents. Software = program + data + document1.2. software engineering definition: an engineering discipline to guide the development and maintenance of computer software.4. basic principles of software engineering:1) strict management with a phased life cycle plan2) adhere to the stage review3) strict product control4) adopt modern programming techniques5) the results should be clearly reviewed6) the development team should be few and refined7) recognizing the need for continuous improvement of software engineering practices5. methodology of software engineeringThe collection of a set of technical methods used throughout the software life cycle is often called methodology.Three elements of software engineering: tools, methods and processes.Traditional methodology; object oriented methodology.1.3 software life cycleA, feasibility analysis and development plan: mainly determine the development goal and feasibility of software.B, requirements analysis: in determining the feasibility of software development, the software needs to realize each function is analyzed in detail.C, design (outline design and detailed design): according to the results of requirements analysis, the whole software system is designed, such as system framework design, database design and so on.D, encoding: converts the results of software design into code programs that can be run by the computer.E, test: after the software design is completed, we must go through rigorous testing, to find the software problems in the whole design process and correct it.F, maintenance: after the software development is completed and put into use, due to various reasons, the software can not continue to adapt to the requirements of users1.4 software process1. traditional waterfall model: is an overall development model, the physical realization of the program is concentrated in the late stage of development, the user can see his product in the end.2. rapid prototyping model: the user can give a complete and accurate description of the demands ituation, according to the group of the basic needs of users, the rapid construction of a prototype (software), and then evaluate the further refinement and adjustment of prototype, which meet the requirements of the users, developers will also make better do understand.3. incremental model: a model that incrementally develops software versions that are progressively improved.4. helix model: spiral model is an organic combination of waterfall model, prototype model and incremental model, and increases the risk analysisFeasibility study of the second chapter2.1 the purpose of the feasibility study: to determine whether the problem in the definition of the problem is worth solving, and whether the problem can be solved under the constraints.The task of feasibility study:(1) the definition of the problem is further analyzed and clarified, and the logical model of the system is derived on the basis of clarifying the problem;(2) from the system logic model, choose several main solutions to the problem, study the feasibility of each solution, and make recommendations for future actions;(3) if the problem has no feasible solution, it is suggested to stop system development; if there is a feasible solution to the problem, a better solution should be recommended and a preliminary plan for the project should be worked out.2.2 content of feasibility study process:(1) technical feasibility: whether the existing technology can realize the system, the existing technical personnel can be competent, the development of the system resources can meet;(2) economic feasibility: is the economic benefit beyond the development cost?;(3) operational feasibility: does the system operate within the user?(4) legal feasibility: whether the new system development infringes on the interests of others, the collective or the state, and whether it violates the laws of the state.Steps of feasibility study?(1) review the size and objectives of the system;(2) study the system currently in use, sum up the advantages and disadvantages of the existing system, and propose the rudiment of the new system;(3) a high-level logic model for deriving new systems;(4) recommended proposal;(5) recommended action policy;(6) writing plan task book (feasibility report);(7) submit a review.2.3 system flow diagram: use graphic symbols to describe each component of the system in black box form2.5 data dictionary: the collection of all objects and their relations in the database.Methods: the top-down decomposition of data, when decomposed to no need to further define, and each project related people are also clear the elements of its meaning, then the decomposition process is over.2.6 cost / benefit analysis cost estimation: the cost of software development is mainly manifested as humanc onsumptionCost / benefit analysis methods: first, estimate costs and benefits; then compare costs and benefits; judge whether to develop from an economic point of view. 1, the time value of money; 2, investment recovery period; 3, net income; 4,investment recovery rate.The third chapter: demand analysis3.1, the task of requirement analysisMission: define the goals of the future system accurately and determine what the system has to do to meet the needs of the users.Requirements composition: business requirements, user requirements, system requirements;3.2, the method of communication with users to obtain requirements: A, interview; B, data flow oriented top-down refinementC, simple application specification technology; D, rapid prototyping software3.3, analysis modeling and specificationComposition includes:(1) Introduction: writing purpose, background description, term definition and reference material, etc..(2) outlining the main functions, constraints, or special needs.(3) data flow graph and data dictionary.(4) user interface, hardware interface and software interface.(5) performance requirements, attributes, etc..(6) other requirements, such as database, operation and fault handling, etc..1) analytical modelingModelIt is a kind of abstraction to understand things and make things, and it is an unambiguous description of thingsConsisting of a set of graphical symbols and rules for organizing these symbols.Modeling methodData model entity relation diagram; function model data flow diagram; behavior model state transition diagram2) specification of software requirementsUsually use natural language + model, complete, accurate and specific description of system data requirements, functional requirements, performance requirements, reliability and availability requirements, error handling requirements, interface requirements, constraints, and reverse demand which may be in the future.3.4, entity relation diagram (E-R diagram)The fifth chapter: overall design5.1 design processSystem design phase: determine the specific implementation of the system; structure design phase: determine the structure of softwareThe main task of the overall design is to complete the design of software structure, determine the relationship between modules and modules of the system.5.2 design principleThe 1. module: the program is divided into independent naming and independent access module, each module to complete a sub function of the modules are integrated together to form a whole, complete function and meet the requirements of users.2. abstraction: the essential nature of abstract transactions, without considering their details for the moment.3. step by step refinement;4. information hiding and localization;5. module independence;5.3 heuristic rules: 1. improve software structure to improve module independenceThe 2. module is moderate in scale 3. proper control of depth, width, fan out and fan in4. The scope of the module should be within the control domain5, reduce the complexity of the interface6, single out, single entry, avoid content coupling7, module function can be predictedThe sixth chapter: detailed design6.1 structure program designClassical definitionThe 3 basic control structures are connected only by sequence, selection and loop, and each block has single entrance and single exit characteristicsComprehensive definitionProgramming method of using GOTOs tatement as few as possible. It is best to use GOTOs tatements only when errors are detected, and should always use forward GOTO statementsThe main task of detailed design?Write the "detailed design instructions" of the software. The work that thesoftware personnel should complete:(1) determine the algorithm for each module, select a suitable tool to express the process of the algorithm, and write the detailed process description of the module(2) determine the data structure used by each module(3) determine the details of the module structure, including the interface to the system and the user interface, the interface to other modules within the system, and the details of the module input data, output data and local data(4) design a set of test cases for each module, so that the module code(i.e. program) is scheduled for testing in the encoding phaseProgram control structure: any program logic can be represented by three basic structures: sequence, selection and loop, and two extension structures, selection and loop.6.2 man-machine interface designPrinciple: 1. system response time; 2. user assistance facility3. error information processing;4. command interactionHuman computer interface design guideGeneral interactive guideGuide to information displayData entry Guide6.3 tools for process design1. program flow chart2. box diagram (N-S diagram)3. PAD diagram - problem analysis diagram4. decision table6.4 data oriented design methods1. Jackson diagram2. improved Jackson graph3.Jackson methodThe seventh chapter: Implementation7.1 codingDefinition: translating software design results into programs written in some programming languageSelect the general guidelines for programming languages:?System user requirementsA compiler that can be usedAvailable software toolsEngineering scale?Programmer's knowledge?Requirements for software portability?The application domain of softwareThe task of coding: using the selected programming language, translating the process description of the module into the source code written in language (source code).Coding style guidelines.(1) source code: including appropriate identifiers, appropriate annotations, reasonable layout and clarity of the program list;(2) data: data structure or data type that the order of standardization; the name of the variable as far as possible;on complex data structures to illustrate the implementation method of the data structure in the program design in the notes.(3) the statement structure is simple: don't save space will write multiple statements on the same line; to avoid the complicated conditions and non condition test; avoid using nested loops and nested conditions; brackets use is to make logical expressions and arithmetic operations in order to clear and intuitive expression.Efficiency: (4) considering the time memory efficiency, input / output running efficiency; in dealing with the relationship between program correctness, clarity and efficiency between the first for the program right after the fast; first for clear and fast; in order to keep the program simple fast; write clearly is not clear "efficiency" sacrifice.7.2 software testing foundationThe goal of software testing is to find out and eliminate the bugs in the software as much as possible, and finally give a high quality softwaresystem to the usersSoftware testing criteria(1) all tests should be traceable to user requirements(2) the test plan should be worked out before the test beginsOnce the requirements model is completed, the test plan can be startedAfter building the design model, you can start designing detailed test scenarios(3) Pareto principle: 80% of the errors found in the test are likely to be caused by 20% of the modules in the program. The problem is how to find these suspicious modules and test them thoroughly(4) start from "small scale" test, and gradually carry out "large-scale" test First, focus on testing a single program module, then focus on testing the integration module cluster, and finally find errors in the entire system(5) test cases should be composed of two parts: input data and expected output results, taking into account both reasonable input and unreasonable input data(6) exhaustive testing is impossibleExhaustive testing is a test that checks all the possible execution paths of a program(7) in order to achieve the best test results, independent third parties should be engaged in the test workSoftware testing methodStatic testing: the basic feature is to analyze, check and review the software, not actually running the software being tested.Dynamic testing: by running software to check the dynamic behavior of the software and the correctness of the resultsSoftware testing steps: 1. module test, 2. subsystem test, 3. system test4. acceptance test5. parallel operation7.3 unit testUnit test emphasis: module interface; local data structure; important execution path; boundary condition; error handling channel7.4 white box testing technologyFirst, logical coverageLogical coverage is the design of test cases based on the logical structure of the program.Statement coverageDecision coverageConditional coverageDecision condition coverageConditional combination coverPath coverage7.5 black box testing technology1. Equivalence class divisionDivide the input domain of the program (all possible input data) into several data classes2. Boundary value analysis3. Error guessing: it is a special case that lists possible errors and errors in the program, and chooses the test plan according to them7.6 debuggingDebugging is the process of eliminating errors after testing errorsThe first step: determine the location of the error (95% workload);The second step: correct mistakes.Debugging approach debugging strategy1. brute force method: print the contents of the memory, looking for the wrong clues, is the lowest efficiency of the program debugging method.2. backtracking: starting from the discovery of the problem segment, manually tracing back to the analysis of the program code, until the error is found.3. reasons exclusion methodIt includes: searching, induction and deduction7.7 software reliability: 1, basic concepts1 reliability (Reliability): the probability of a successful operation of a program within a given time interval according to the specifications.2 availability (Usability): the probability of successful operation of a program at a given time point and in accordance with the specifications.3 correctness (Correctness): the function of the program is correct.The eighth chapter: maintenance8.1 definition of software maintenanceThe process of modifying software in order to correct errors or meet new requirements after the software has been delivered.8.2 characteristics1. comparison between structured maintenance and unstructured maintenance2. The cost of maintenance3, maintenance issues8.3 processIn essence, the software definition and development process is modified and compressed1. Establish maintenance organization2. Maintenance Report3. Maintenance of event streams4. Records of preservation and maintenance5. Evaluate maintenance activities8.4 software maintainabilityMaintenance personnel understand, correct, change and improve the difficulty of the software.1. The factors that determine software maintainability2, documentation - the determinant of maintainability is more important than code.3, reviewThe ninth chapter is an introduction to object oriented methodology9.1 overview9.2 basic concepts of object oriented objectObjects can either be concrete physical entities, or can beartificial concepts, or anything that has definite boundaries and meanings.Object definitionDefinition 1: an object is a set of operations with the same state.Definition 2: an object is an abstraction of something in the problem domain, which reflects the system's ability to store information about it or interact with itDefinition 3: objects: =<ID, MS, DS, MI>Name, operation set, data set, message name collection (i.e. external interface) accepted by objectsCharacteristic :Data centric, no data independent operations;The object is active: the object is active and not passively waiting to be processed, and the external can only be operated by message request;3. Encapsulation: external operation,It is not necessary to know the data structure and algorithm inside the object;(4) parallelism: different objects independently process their own data, and only communicate with each other by passing messages;Module independence is good: strong cohesion, coupling loose。
软件工程导论期末复习重点
软件工程导论期末复习重点选择、判断略一、名词解释1、软件危机2、软件工程3、数据字典4、模块化5、黑盒测试6、软件维护7、软件过程8、快速原型9、白盒测试二、简答题1、可行性研究目的和任务?2、可行性研究包括哪几方面的内容?3、简述需求分析的描述工具和基本任务?4、什么是模块化?模块设计的准则?5、详细设计阶段的根本目标和任务?6、比较面向数据流和面向数据结构两类设计方法的异同?7、测试与调试的主要区别?8、什么是软件生命周期模型?试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的适用X围.9、比较层次方框图与结构图的异同?10、结构化程序设计的基本原则?11、提高软件编码效率的3条原则?一、名词解释1、软件危机答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题.概括地说,包含两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件.2、软件工程答:①把系统的、规X的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;②研究①中提到的途径.3、数据字典答:数据字典是描述数据流图中数据的信息的集合.它对数据流图上每一个成分:数据项、文件<数据结构>、数据流、数据存储、加工和外部项等给以定义和说明;它主要由数据流描述、加工描述和文件描述三部分组成.4、模块化答:模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求.5、黑盒测试答:黑盒测试也称为功能测试,它着眼于程序的外部特征,而不考虑程序的内部逻辑结构.测试者把被测程序看成一个黑盒,不用关心程序的内部结构.黑盒测试是在程序接口处进行测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息<如数据库或文件>的完整性.6、软件维护软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程.7、软件过程答:软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤.8、快速原型答:快速原型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集.9、白盒测试答:白盒测试是指测试者了解被测程序的内部结构和处理过程,对程序的所有逻辑路径进行测试,在不同点检查程序状态,确定实际状态与预期状态是否一致.二、简答题1、可行性研究目的和任务?目的:确定在问题定义中所提出的问题是否值得去解,在限制条件下问题能否解决.可行性研究的任务:<1> 进一步分析和澄清问题的定义,在澄清问题的基础上,导出系统的逻辑模型;<2> 从系统逻辑模型中,选择问题的若干种主要解法,研究每一种解法的可行性,为以后的行动提出建议;<3> 如果问题没有可行的解,建议停止系统开发;如果问题有可行的解,应该推荐一个较好的解决方案,并为工程制定一个初步的计划.2、可行性研究包括哪几方面的内容?答:<1>技术可行性:现有技术能否实现本系统,现有技术人员能否胜任,开发系统的资源能否满足;<2>经济可行性:经济效益是否超出开发成本;<3>操作可行性:系统操作在用户内部行得通吗?<4>法律可行性:新系统开发是否会侵犯他人、集体或国家利益,是否违反国家法律. 3、简述需求分析的描述工具和基本任务?答:需求分析的描述工具有数据流图、数据字典、判定表、判定树、结构化自然语言、层次方框图、Warnier图、IPO图和需求描述语言等.需求分析的基本任务是:准确定义未来系统的目标,确定为满足用户的需要系统必须做什么.4、什么是模块化?模块设计的准则?答:模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求.模块设计的准则:<1> 改进软件结构, 提高模块独立性:在对初步模块进行合并、分解和移动的分析、精化过程中力求提高模块的内聚,降低藕合.<2> 模块大小要适中:大约50行语句的代码,过大的模块应分解以提高理解性和可维护性;过小的模块,合并到上级模块中.<3> 软件结构图的深度、宽度、扇入和扇出要适当.一般模块的调用个数不要超过5个.<4> 尽量降低模块接口的复杂程度;<5> 设计单入口、单出口的模块.<6> 模块的作用域应在控制域之内.5、详细设计阶段的根本目标和任务?答:详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统;详细设计阶段的任务还不是具体地编写程序,而是要设计出程序的"蓝图〞.6、比较面向数据流和面向数据结构两类设计方法的异同?答:相同点:<1> 遵守结构程序设计"由顶向下〞逐步细化的原则,并以其为共同的基础;<2> 均服从"程序结构必须适应问题结构〞的基本原则,各自拥有从问题结构<包括数据结构>导出程序结构的一组映射规则.不同点:<1> 面向数据流的设计以数据流图为基础,在分析阶段用DFD表示软件的逻辑模型,在设计阶段按数据流类型,将数据流图转换为软件结构.面向数据结构的设计以数据结构为基础,从问题的数据结构出发导出它的程序结构.<2> 面向数据流的设计的最终目标是软件的最终结构图,面向数据结构的设计的最终目标是程序的过程性描述.7、测试与调试的主要区别?答: <1> 测试从一个侧面证明程序员的失败;调试证明程序员的正确;<2> 测试从已知条件开始,使用预先定义的程序,且有预知的结果,不可预见的仅是程序是否通过测试;调试从不可知内部条件开始,除统计性调试外,结果是不可预见的;<3> 测试有计划并且要进行测试设计;调试不受时间约束;<4> 测试是发现错误、改正错误、重新测试的过程;调试是一个推理的过程;<5> 测试执行是有规程的;调试执行要求程序员进行必要的推理;<6> 测试由独立的测试组在不了解软件设计的件下完成;调试由了解详细设计的程序员完成;<7> 大多数测试的执行和设计可由工具支持;调试用的工具主要是调试器.8、什么是软件生命周期模型?试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明每种模型的适用X围.答:软件生命周期模型可以简洁地描述软件过程,它规定了把生命周期划分成哪些阶段与各个阶段的执行顺序.包括瀑布模型、快速原型模型、增量模型和螺旋模型等.瀑布模型优点:可强迫开发人员采用规X的方法〔例如,结构化技术〕;严格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证.缺点:模型过于理想化,是由文档驱动的.快速原型模型优点:通过快速构建起一个可在计算机上运行的原型系统,让用户试用原型并收集用户反馈意见的方法,获取用户真正的需要.增量模型优点:能在较短时间内向用户提交可完成部分工作的产品;逐步增加产品功能可以使用户有较充实的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击.螺旋模型优点:对可选方案和约束条件的强调有利于已有软件的重用;减少过多测试.瀑布模型适用于文档驱动的产品研发;快速原型模型适用于软件交付时间紧急,且需获知用户真实需求的情况;增量模型适用于能在较短时间内向用户提交可完成部分工作的产品;螺旋模型适用于内部开发的大规模软件项目.9、比较层次方框图与结构图的异同?答: <1> 层次方框图描绘数据的层次结构, 结构图描绘的是软件结构.<2> 二者都采用多层次矩形框树形结构.层次方框图的顶层矩形框代表完整的数据结构, 下面各层矩形框依次代表上个框数据的子集;结构图是在层次图的每一个方框内注明模块的名字或主要功能,方框之间的直线表示模块的调用关系,用带注解的箭头表示模块调用过程中传递的信息.10、结构化程序设计的基本原则?答:结构化程序设计的基本原则是:在详细设计中所有模块都使用单入口、单出口的顺序、选择、循环三种基本控制结构.11、提高软件编码效率的3条原则?答:3条原则为:1〕效率是性能要求,因此应该在需求分析阶段确定效率方面的要求.2〕效率是靠好设计来提高的.3〕程序的效率和程序的简单程度是一致的,不要牺牲程序的清晰性和可读性来不必要地提高效率.。
软件工程第五版课本重点及课后题
1.什么是软件危机?软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
具有长期性和症状不明显特征。
2.软件危机表现在以下几个方面:(1)用户对开发出的软件很难满意。
(2)软件产品的质量往往靠不住。
(3)一般软件很难维护。
(4)软件生产效率很低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。
特点:长期性和症状不明显性。
3.为什么会产生软件危机?一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。
4.什么是软件工程?软件工程是指导计算机软件软件开发和维护的一门工程学科,采用工程的概念,原理,技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济的开发出高质量的软件并有效的维护它,这就是软件工程。
具体的定义:把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件。
5.软件生命周期的8个阶段:(1)问题定义(确定问题);(2)可行性研究(可研报告);(3)需求分析(规格说明,逻辑模型);(4)总体设计(确定系统体系结构);(5)详细设计(数据结构);(6)编码和单元测试(程序清单,单元测试报告);(7)综合测试;(8)软件维护。
6.瀑布模型(文档驱动)特点:(1)阶段间具有顺序性和依赖性;(2)推迟实现的观点;(3)质量保证的观点。
3.快速原型模型(建立功能原件):快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。
1.可行性研究包括哪几方面的内容?(1)技术可行性:现有技术能否实现本系统,现有技术人员能否胜任,开发系统的资源能否满足;(2)经济可行性:经济效益是否超出开发成本;(3)操作可行性:系统操作在用户内部行得通吗。
2.可行性研究的过程:(1)复查系统的规模和目标;(2)研究目前正在使用的系统(经济角度、功能指标、环境约束)(3)导出新系统的高层逻辑模型(工具:数据流图、数据字典);(4)进一步定义问题(5)导出和评价供选择的解法(技术角度、操作可行性、经济可行性、实现进度表);(6) 推荐行动方针;(7)草拟开发计划(8)书写文档提交审查3.数据流图(DFD)是一种图形化技术,它描述信息流和数据从输入移动到输出的过程中所经受的变换。
软件工程导论第五版答案和复习
• 即用数据流图辅助物理系统的设计时,以图
中不同处理的定时要求为指南,能够在数据
流图上画出许多组自动化边界,每组自动化
边界可能意味着一个不同的物理系统,因此
可以根据系统的逻辑模型考虑系统的物理实
现。
•考虑事务随时可能发生,因此处理
1.1( “ 接收事务 〞 ) 必须是联机的;采
购员每天需要一次定货报表,因此处理
储;
• 箭头表示数据流,即特定数据的流动方向。
• 数据流图的根本图形元素
• 〔1〕数据流:是一组数据。在数据流图中数
据流用带箭头的线表示,在其线旁标注数据流名
。
• 〔2〕加工:是对数据流执行的某种操作或变
换。在数据流图中加工用圆圈表示,在圆圈内写
上加工名。
• 〔3〕数据流的源点和终点:在数据流图中用
• 〔2〕由外向里画系统的顶层数据流图
• 首先,将系统的输入数据和输出数据用一连串的加工
连接起来。
• 在数据流的值发生变化的地方就是一个加工。
• 给各个加工命名。
• 然后,给加工之间的数据命名。
• 最后,给文件命名。
• 〔3〕自顶向下逐层分解,绘出分层数据流图
• 对于大型的系统,为了控制复杂性,便于理解,
息。因此,把“处理事务〞这个功能分
解为下述3个步骤,这在逻辑上是合理的:
“接收事务〞、“更新库存清单〞和
“处理订货〞。
2.4.3 命名
• 数据流图中每个成分的命名是否恰当,直接
影响数据流图的可理解性。
• 1. 为数据流(或数据存储)命名
• 1〕名字应代表整个数据流的内容,而不是仅
仅反映它的某些成分。
规定每天向采购部门送一次定货报告。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(最后部分为每年必考题)第一章1. .软件工程的定义:软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。
它借鉴传统工程的原则、方法,以提高质量,降低成本为目的.2. 软件危机的概念:软件危机是指计算机软件的开发和维护过程中所遇到的一系列严重的问题。
3. 产生软件危机的原因:(1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。
造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。
(2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。
(3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。
4. 面向对象方法学的四个要点:1.把对象作为融合了数据及在数据上的操作行为的统一的软件构件2.把所有对象都划分成类3.按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。
4.对象彼此间仅能通过发送消息互相联系。
5. 软件生命周期:软件定义(问题定义,可行性研究,需求分析)、软件开发(总体设计,详细设计,编码,单元测试,总体测试)、运行维护(持久地满足用户的需要)6. 瀑布模型,快速原型模型,增量模型,螺旋模型,喷泉模型,概念.方法.优缺点.区别。
7. 微软过程把软件生命周期划分为成5个阶段:规划阶段,设计阶段,开发阶段,稳定阶段,发布阶段。
第二章1.可行性包括:技术可行性,经济可行性,操作可行性。
2. 系统流程图是概括地描绘物理系统的传统工具。
它的基本思想是用图形符号以黑盒子形势描绘组成系统的每个部件(程序,文档,数据库,人工过程等)。
系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据加工处理的控制过程,因此尽管系统流程图的某些符号和程序流程图的符号形式相同,但是它却是物理数据流图而不是程序流程图。
4. 书库流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。
在数据流图中没有任何具体的物理部件,它只描绘数据在软件中流动和被处理的逻辑过程。
数据流图是系统逻辑功能的图形表示。
5. 用系统流程图描绘一个系统时,系统的功能和实现每个功能的具体方案是混在一起的。
有数据元素组成的数据的方式只有下述3种基本类型:顺序(即以确定次序连接两个或多个分量)。
选择即从两个或多个可能的元素中选取一个重复即把指定的分量重复零次或多次第三章1.访谈有两种基本形式,分别是正式的和非正式的访谈2.所谓情景分析就是对用户将来使用目标系统解决某个具体问题的方法和结果进行分析3.结构化分析方法就是面向数据流自顶向下逐步求精进行需求分析的方法。
4.使用简易的应用规格说明技术分析需求的典型过程:(总结出来)5.快速原型就是快速建立起来的旨在演示目标系统主要功能的可运行的程序。
6.所谓模型就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。
7.需求分析过程应该建立3种模型,它们分别是数据模型,功能模型,行为模型.8.概念性数据模型是一种面向问题的数据模型,是按照用户的观点对数据建立的模型9.数据对象是对软件必须理解的符合信息的抽象。
10.数据对象彼此之间相互连接的方式称为联系,也称为关系。
联系可分为3种类型:一对一联系,一对多联系,多对多联系。
11.状态时任何可以被观察到的系统行为模式,一个状态代表系统的一种行为模式。
12.事件就是引起系统做动作或(和)转换状态的控制信息。
13.IPO图是输入,处理,输出图的简称。
14.软件的验证:一致性,完整性,现实性,有效性第四章1.所谓形式化方法,是描述系统性质的基于数学的技术,也就是说,如果一种方法有件事的数学基础,那么它就是形式化的。
2.用于确定系统中隐含的定时问题的一种有效技术是Petri网3.用Z语言描述的、最简单的形式化规格说明含有下述4个部分:给定的集合、数据类型及常数。
状态定义初始状态操作第五章1.总体设计过程通常由两个主要阶段组成:系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构。
2.模块是由边界元素限定的相邻程序元素(例如,数据说明,可执行的语句)的序列。
3.抽象就是抽出事物的本质特性而暂时不考虑它们的细节。
4.逐步求精定义:为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。
5.抽象程序对抽象的数据进行某些特定的运算并用某些合适的记号(可能是自然语言)来表示。
6.信息隐藏,信息隐藏的原理,1.局部化就是把一些关系密切的软件元素物理的放得彼此靠近。
2.耦合是对一个软件结构内不同模块之间互连程度的度量。
3.数据耦合是低耦合,控制耦合式中等程度的耦合,最高程度的耦合式内容耦合。
4.如果一个模块完成一组任务,这些任务彼此间即使有关系,关系也是很松散的,就叫做偶然内聚。
5.中内聚主要有两类:如果一个模块内的处理元素是相关的,而且必须以特定次序执行,则称为过程内聚。
6.高内聚也有两类:如果一个模块内的处理元素和同一个功能密切相关,而且这些处理必须顺序执行,则称为顺序内聚。
深度表示软件结构中控制的层数,它往往能粗略的标志一个系统的大小和复杂程度。
7.宽度是软件结构内同一个层次上的模块总数的最大值。
8.扇出事一个模块直接控制(调用)的模块数目。
9.一个模块的扇入表明有多少个上级模块直接调用它。
10.设计的很好的软件结构通常顶层扇出比较高,中层扇出比较少,底层扇入到公共的实用模块中去(底层模块有高扇出)11.模块的作用域应该在控制域之内(2种方法)?????12.面向数据流的设计方法把信息流映射成软件成结构,信息流的类型决定了映射的方法。
信息流有两种类型:变换流,事务流。
13.总体设计阶段的基本目的是用比较抽象概括的方式确定系统如何完成预定的任务,也就是说,应该确定系统的物理配置方案。
并且进而确定组成系统的每个程序的结构。
14.在进行软件结构设计时应该遵循的最主要的原理是模块独立原理。
第六章1.结构程序设计的经典定义:如果一个程序的代码仅仅通过顺序,选择和循环这3种基本结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。
2.系统响应时间指从用户完成某个控制动作(例如,按回车键或单击鼠标),到软件给出预期的响应(输出信息或动作)之间的这段时间。
3.系统响应时间有两个重要的属性:长度和易变性。
4.易变性指系统响应时间相对于平均响应时间的偏差。
5.一般交互指南涉及信息显示,数据输入和系统整体控制。
6.过程涉及的工具:程序流程图,盒图,PAD图,判定表,判定树7.PDL作为一种设计工具有如下一些特点(要求看懂伪码)第七章1.通常把编码和测试统称为实现。
2.编码和单元测试属于软件生命周期的同一个阶段。
3.编码的标准:1.系统用户的要求2.可以使用的编译程序3.可以得到的软件工具4.工程规模4.程序员的知识6.软件可移植性要求7.软件的应用领域5.所谓程序内部的文档包括恰当的标识符、适当的注释和程序的视觉组织等。
6.当多个变量名在一个语句中说明时,应该按字母顺序排列这些变量。
7.效率主要指处理机时间和存储器容量两个方面。
8.在大型计算机中必须考虑操作系统页式调度的特点,一般说来,使用能保持功能域的结构化控制结构,是提高效率的好方法。
9.二级存储器的输入输出应该以信息组为单位进行。
10.测试阶段的根本目标是尽可能地发现并排除软件中潜藏的错误,最终把一个高质量的软件系统交给用户使用。
11.软件测试的目标:1.测试是为了发现程序中的错误而执行程序的过程2.好的测试方案是发现了至今为止发现的错误的测试 3.成功的测试是发现了至今为止尚未发现的错误的测试。
12.测试的正确定义是“为了发现程序中的错误而执行程序的过程”。
第九章面向对象方法学引论1.使描述问题的’问题空间’(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽可能一致。
2.人们把计算机中的实体称为解空间对象。
3.对对象施加的操作就是该对象的行为。
4.面向对象方法学的优点:1.与人类习惯的思维方法一致2.稳定性好3.可重用性好4.轻易开发大型软件软件产品5.可维护性好5.面向对象方法学的基本原则是按照人类习惯的思维方法建立问题域的模型,开发出尽可能直观、自然地表现求解的软件系统。
6.传统的软件重用技术是利用标准函数库。
对象的概念:在应用领域中有意义的、与所要解决的问题有关系的任何事物都可以作为对象,它既可以是具体的物理实体的抽象,也可以是认为的概念,或者是任何有明确边界和意义的东西。
7通常把对象的操作称为服务或方法。
8.对象的定义:定义1.对象是具有相同状态的一组操作的集合定义2.对象是对问题域中某9个东西的抽象,这种抽象反映了系统保存有关这个东西的信息或它交互的能力,也就是说,10对象是对属性值和操作的封装。
11.对象是封装可数据结构及可以施加在这些数据结构上的操作的封装体12.对象中的数据表示对象的状态,一个对象的状态只能由该对象的操作来改变。
13.对象的特点:1.以数据为中心2.对象是主动的3.实现了数据封装4.本质上具有并行性简述软件测试的任务、目的与类型。
答:软件测试是一个为了寻找软件错误而运行程序的过程。
目的就是为了发现软件中的错误。
一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例。
一个成功的测试是指揭示了迄今为止尚未发现的错误的测试。
软件测试主要分为白盒测试和黑盒测试两大类。
简述软件工程目标和面临的主要问题。
答:软件工程的目标是应用计算机科学、数学及管理科学等原理开发软件的工程。
它采用经过实践验证的工程的原则、方法,以提高质量,降低成本。
但是目前的软件开发面临着许多问题:(1)对软件开发成本和进度的估计常常很不准确。
(2)用户常对“已完成的”软件系统不满意。
(3)软件产品的质量往往靠不住。
(4)软件常常很难维护。
(5)软件常常缺乏适当的文档资料。
(6)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
(7)软件成本在计算机系统总成本中所占的比例逐年上升。
简述软件开发过程、每个里程碑的提交物。
答:软件开发的基本过程:(1)可行性研究,做初步的需求分析工作,决定项目可行与否(2)软件需求分析,软件工程师必须了解软件的信息领域,以及需求的功能、行为、性能和接口。
系统需求和软件需求均需文档化,并与用户一起复审。
并提交需求分析报告。
(3)设计,包括总体设计和详细设计,软件设计是一个多步骤的过程,主要是对软件的数据结构、软件体系结构、界面表示及过程细节进行设计。
设计过程将需求转换为软件表示,在编码之前可以评估其质量,所有设计均要文档化,它是软件配置的重要组成部分,经复审后提交相应的概要设计和详细设计报告。