软件工程导论第五版复习资料
《软件工程导论》期末复习材料
《软件工程导论》期末复习材料1、什么是软件危机?产生的主要原因有哪些?(1页)软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
主要原因:1)用户对软件需求的描述不精确。
2)软件开发人员对用户需求的理解有偏差。
3)缺乏处理大型软件项目的经验。
4)开发大型软件易产生疏漏和错误。
5)缺乏有力的方法学的指导和有效的开发工具的支持。
6)面对日益增长的软件需求,人们显得力不从心。
2、什么是瀑布模型,瀑布模型的缺点主要有哪些?(15页)瀑布模型将软件开发分成:需求分析、规格说明、设计、编码、综合测试和维护阶段,每个阶段必须完成规定的文档,必须等前一个阶段完成之后才开始下一个阶段的工作,前一个阶段输出的文档是下一个阶段的输入文档。
缺点主要包括:1)在软件开发的初期阶段就要求做出正确、全面、完整的需求分析对许多应用软件来说是极其困难的。
2)在需求分析阶段,当需求确定后,无法及时验证需求是否正确、完整。
3)不支持产品的演化,缺乏灵活性,使软件产品难以维护。
3、什么是数据流图,数据流图由哪些基本符号组成?(40页)数据流图:简称DFD, ,主要用于SA(结构化分析)方法,它描绘信息流和数据从输入移动到输出的过程中所经受的变换,是一种功能模型. 基本符号有四种: ->,箭头,表示数据流; =,开口矩形或者两条平行线,表示数据存储; 正方形或者立方形,表示数据的源点或终点,圆角矩形或圆形,表示加工,也就是数据的处理;数据流图中每一个加工至少有一个输入流和一个输出流。
4、数据字典有哪几种元素组成?(47页)1)数据流,2)数据元素,3)数据存储,4)处理或者加工5、需求分析阶段的基本任务是什么(56页)1).问题识别,确定系统的综合需求和数据需求,包括a.功能需求b.性能需求c.环境需求d.用户界面需求e.出错处理的需求f.接口需求2).分析与综合,导出软件的逻辑模型.3).修正开发计划4).编写文档6、模块的内聚有哪几种?(99页)功能内聚(模块就是一个单一功能)、顺序内聚(模块中的处理必须顺序执行)、通信内聚(模块中所有任务都是对同一批数据操作)、过程内聚(模块中的处理必须按特定次序执行)、时间内聚(模块的任务要在同一时间段完成)、逻辑内聚(模块的任务在逻辑上属于一类)、偶然内聚(模块中的任务有很松散的关系)。
软件工程导论第五版复习重点(汇总)
第一章一、什么是软件?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
最新软件工程导论第五版习题答案教学讲义PPT
D3生理信息
F4警告信息
F2生理信号
P1 接收信号
定时的生理信号
P5 更新日志
F2生理信号 定时的 生理信号
E1 护士
E3 时钟
F3日前、时间
P4 定时取样 生理信号
F6日志
F6日志
D1患者日志
E1
护士
F1要求报告
P6
13:07:42
重庆工学产院生计病算情机报科告学与工程学院 李梁(liliang@)
从问题陈述可知,本系统数据源点是“病人”和“护士” ,他们分别提供生理信号和要求病情报告的信息。进一步 分析问题陈述,从系统应该“定时记录病人情况以形成患 者日志”这项要求可以想到,还应该有一个提供日期和时 间信息的“时钟”作为数据源点。
从问题陈述容易看出,本系统的数据终点是接收警告信息 和病情报告的护士。
F6日志
D1患者日志
E1
护士
F1要求报告
P6
13:07:42
重庆工学产院生计病算情机报科告学与工程学院 李梁(liliang@)
13
作业及解答(第3章)
2-5 北京某高校可用的电话号码有以下几类:校内电话号码 由4位数字组成,第1位数字不是0;校外电话又分为本市 电话和外地电话两类,拨校外电话需先拨0,若是本市电 话则再接着拨8位数字(第1位不是0),若是外地电话则拨3 位区码再拨8位电话号码(第1位不是0)。
8
作业及解答(第3章)
E1 护士
F4警告信息、病情报告 F1要求报告
E1 护士
E2 病人
F2生理信号
P0 患者监护系统
F6日志
D1患者日志
F5安全范围
D2患者安全范围
E3 时钟
(完整版)《软件工程导论》第五版张海藩编著总结
总结重点:❖∙Unit1❖∙软件危机包含两方面的问题:一是如何开发软件,怎样满足人们对软件日益增长的需求?二是如何维护软件,使它们持久地满足人们的要求。
❖∙软件工程学定义:把软件当作一种工业产品,采用工程学的原理来管理和组织软件的开发和维护,称为软件工程。
❖∙软件是指程序、数据和文档三者共同构成的配置。
❖∙包含与数据处理系统操作有关的程序、规程、规则以及相关文档的智力创作称为软件。
文档是描述程序开发过程的,是智力创作的真实记录,是创作活动的历史档案和结晶。
❖∙软件的描述性定义:软件由计算机程序,数据结构和文档组成。
❖∙软件质量定义为“与软件产品满足规定的和隐含的需求能力有关的特征和特性的全体”具体来说: 1)软件产品中能满足给定需求的性质和特性的总体;2)软件具有所期望的各种属性的组合程度。
❖∙将软件质量属性划分为六个特性(功能性、可靠性、易用性、效率、维护性和可移植性),这六个属性是面向用户的观点——面向管理的观点,且是定性描述的。
❖∙软件质量度量体系:内部度量可用于开发阶段的非执行软件产品,外部度量只能在生存周期过程中的测试阶段和任何运行阶段使用。
❖∙软件工程项目的基本目标:(1)低成本;(2)满足功能要求;(3)高性能;(4)易移植;(5)易维护。
❖∙软件工程方法学就是要从技术和管理上提供如何去设计和维护软件。
❖∙软件开发方法:面向数据流(约旦)方法、面向数据结构方法、面向对象方法。
❖∙结构程序设计是进行以模块功能和处理过程设计为主的详细设计的基本原则。
它的主要观点是采用自顶向下、逐步求精的程序设计方法;使用三种基本控制结构构造程序,任何程序都可由顺序、选择、循环三种基本控制结构构造。
❖∙用来辅助软件开发、运行、维护、管理、支持等过程中活动的软件称为软件工具(CASE)。
❖∙软件生存周期定义:软件产品从形成概念开始,经过开发、使用和维护,直到最后不再使用的整个过程。
各阶段的任务彼此间尽可能的相对独立,同一阶段内各项任务的性质尽可能的相同。
西华师范大学 软件工程导论 第五版 张海藩 期末复习资料
软件生命周期软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤软件生命周期:同任何事物一样,一个软件产品或软件系统也要经历孕育、诞生、成长、成熟、衰亡等阶段,一般称为软件生存周期(软件生命周期)。
软件生命周期组成:①软件定义②软件开发③运行维护软件生命周期阶段:1.问题定义本阶段需要明确回答:“要解决的问题是什么?”。
统分析员应该提出问题的性质、目标和规模的书面报告。
通过对实际用户和使用部门的调查、研究,以及讨论、交流,得出一份双方都满意的文档2.可行性研究本阶段需要回答的是:“上一阶段确定的问题有无可行的解决方案,是否值得解决?”。
更进一步明确项目的规模和目标,从技术可行性、经济可行性、操作可行性、法律可行性、社会可行性等方面进行研究,确定是否开发本项目。
3.需求分析本阶段确定为解决该问题,目标系统必须应具备哪些功能。
系统分析员在本阶段必须与用户密切配合,充分交流,得到经用户确认的系统逻辑模型,用数据流图、数据字典等描述系统的逻辑模型。
需求分析阶段所确定的系统逻辑模型是以后设计和实现目标系统的基础,必须准确、完整的体现用户的需求。
4.总体设计本阶段确定目标系统的主要功能如何完成。
采用流程图或其他工具描述出每种可能的系统,推荐出一个最佳的方案,并制定出实现该系统的详细计划。
本阶段的另一个主要任务是设计软件的结构,确定软件应由哪些模块构成,以及模块之间的关系。
还应考虑系统的开发和应用环境,如计算机系统的配置,计算机网络等。
5.详细设计详细设计阶段的任务就是把问题的求解具体化,设计出程序的详细规格说明。
通常用HIPO图(层次图/输入/处理/输出)或PDL语言(过程设计语言)描述详细设计的结果。
6.编码和单元测试本阶段的任务是编写软件程序。
程序员应根据目标系统的要求,选取适合的程序设计语言,把详细设计的结果编制成程序,并对每一个模块进行单元测试。
软件工程第五版期末复习绝密
软件工程复习填空题:一、1.同一软件的大量软件产品的生产主要是通过复制(拷贝)而得到。
2.软件工程的主要思想主要是软件生产中用工程的方法代替传统手工方法。
3.结构化方法有结构化分析、设计和结构化实现构成。
4.瀑布模型是将软件生存周期各个活动规定为依线性顺序连接的若干阶段模型。
5.软件是一种逻辑产品,它以程序和文档的形式出现,通过程序的运行才能体现它的功能和作用。
6.软件工程研究的主要内容是软件开发技术和软件管理技术两方面。
7.软件生存周期是指一个软件从问题提出开始知道软件报废二止的整个时期。
8.增量模型是一种非整体开发的模型,软件在该模型中式逐渐开发出来的。
9.维护是软件生存周期中的时间最长的阶段。
二、1.软件可行性研究的目的就是用最小的代价在尽可能短的时间内确定项目是否值得去做(问题是否能够解决)。
2.系统流程图是描绘物理系统传统工具,他用图形符号表示系统中的各个元素,他表达了数据在各个元素之间的流动情况。
3.成本——效益分析的目的是从经济角度评价一个新的软件项目是否可行。
4.可行性研究的第一步骤是复查系统规模和目标。
5.可行性研究的最后步骤是书写可行性研究报告。
6.在画分层的数据流图时,子图的输入输出数据流同父图相应加工的输入输出数据流必须相同(一致)。
7.对于复杂问题的数据处理过程,要用分层的数据流图来表达,它的顶层图描述了系统的整体逻辑概貌。
8.纯收入是累积效益现在值与投资之差。
三、1.需求分析的基本任务是要准确的定义系统目标,回答系统必须做什么的问题。
2.编写用户手册,着重反映出开发软件的用户功能界面和使用的具体要求,它能强制分析人员从用户使用的观点积极考虑。
3.传统的SA方法主要用于数据处理方面的问题,主要工具DFD体现了系统做的功能,但他仅是一个静态模型没有反应处理的顺序。
4.为完整的描述用户对系统的要求,DFD应与数据库系统中E-R图结合起来。
5.需求分析阶段产生最重要的文档是软件需求规格说明书。
《软件工程导论》张海潘 第五版 清华 课后答案
WATCHING
THANKS FOR
实践应用:软件测试与质量保证
测试计划制定
根据软件需求和测试目标,制定详 细的测试计划,包括测试范围、测 试方法、测试资源以及测试进度等 方面的内容。
测试用例设计与执行
根据测试计划设计有效的测试用例, 并严格按照测试用例执行测试过程, 以确保软件的质量和稳定性。
缺陷管理与回归测试
建立缺陷管理机制,对测试过程中 发现的缺陷进行跟踪和管理,并进 行回归测试以确保缺陷得到修复并
软件工程的概念及基本原则
软件工程是一门研究计算机软件开发、维护和管理的科学。其基本原则包括强调需求分析、采用合 适的设计方法、实行严格的测试和维护等。
软件生命周期及各阶段任务
软件生命周期包括需求分析、设计、编码、测试和维护等阶段。各阶段的主要任务分别是明确用户 需求、设计系统结构、编写程序代码、测试软件功能和修复漏洞等。
案例分析三
某移动APP产品的敏捷开发实践。该案例以 敏捷开发方法为基础,介绍了产品迭代规划、 用户故事编写、任务分解以及站会等敏捷实 践活动的应用,对于理解敏捷开发方法的精 髓和实施具有很好的启示作用。
实践应用:软件开发项目管理
项目计划制定
根据项目需求和目标,制定详细的项目计划,包括任务分解、 资源分配、进度安排以及风险管理等方面的内容。
不再出现。
质量评估与改进
通过质量评估活动对软件的质量进 行全面评估,并根据评估结果制定 相应的质量改进措施,以提高软件
软件工程导论(第五版)素材第五章范文
第5章总体设计5.1设计过程1. 设想供选择的方案2. 选取合理的方案3. 推荐最佳方案4. 功能分解5. 设计软件结构6. 设计数据库7. 制定测试计划8. 书写文档9. 审查和复审5.2设计原理5.2.1模块化图5.1模块化和软件成本2数据结构(C++版) 5.2.2抽象5.2.3逐步求精5.2.4信息隐藏和局部化5.2.5模块独立1. 耦合2. 内聚5.3启发规则1. 改进软件结构提高模块独立性2. 模块规模应该适中3. 深度、宽度、扇出和扇入都应适当4. 模块的作用域应该在控制域之内图5.2模块的作用域和控制域5. 力争降低模块接口的复杂程度6. 设计单入口单出口的模块7. 模块功能应该可以预测软件工程导论(第五版) 3 5.4描绘软件结构的图形工具5.4.1层次图和HIPO图图5.3正文加工系统的层次图图5.4带编号的层次图(H图)4数据结构(C++版)5.4.2结构图图5.5结构图的例子——产生最佳解的一般结构图5.6判定为真时调用A,为假时调用B图5.7模块M循环调用模块A、B、C 5.5面向数据流的设计方法5.5.1概念1. 变换流2. 事务流软件工程导论(第五版) 5图5.8变换流图5.9事务流3. 设计过程6数据结构(C++版)图5.10面向数据流方法的设计过程5.5.2变换分析1. 例子2. 设计步骤软件工程导论(第五版) 7图5.11数字仪表板系统的数据流图8数据结构(C++版)图5.12具有边界的数据流图图5.13第一级分解的方法软件工程导论(第五版) 9图5.14数字仪表板系统的第一级分解图5.15第二级分解的方法图5.16未经精化的输入结构10数据结构(C++版)图5.17未经精化的变换结构图5.18未经精化的输出结构图5.19精化后的数字仪表板系统的软件结构软件工程导论(第五版) 11 5.5.3事务分析图5.20事务分析的映射方法5.5.4设计优化5.6小结习题51. 为每种类型的模块耦合举一个具体例子。
软工第五版知识点总结
第一章:软件工程学概述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
记录存款 信息
打印存款 信息
存款单
存款信息
存款存单
3
计算利息
4
打印利息 清单
存款信息
利息值
利息清单
D1
存款信息
存款信息
2
细化后的计算机储蓄系统软件结构
第3章 需求分析
1、需求分析的基本任务是什么?P46-P48 2、分析建模 2.1什么是模型? 模型:就是为了理解事物而对事物做出的一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图形符号和组织这些符号的规则组成。 2.2数据模型(E-R)、 功能模型(2.4节数据流图)、 行为模型(状态转换图是行为模型的基础) 3、要从哪些方面验证软件需求?P60
第6章 详细设计
1、结构程序设计中有哪几种基本控制结构?P108 2、了解人机界面的设计。 3、掌握过程设计的工具(程序流程图、盒图、PAD图,判定树)P114—P119 4、面向数据结构的设计方法(Jackson图) 5、程序复杂度的定量度量(McCabe)
6.1 结构程序设计
6.1 结构程序设计
实现
编码和测试
7.2 软件测试基础
7.2 软件测试基础
软件测试:为发现程序中的错误而执行程序的过程。 软件测试的准则(尽早和不断的测试、彻底测试的不可能、软件测试是有风险的行为、并非所有的软件错误都能恢复、反向思维逻辑、由小到大的测试范围、避免检查自己的代码、追溯至用户需求) 测试方法(黑盒测试和白盒测试) 测试步骤(模块测试、子系统测试、系统测试、验收测试、平行运行)
图6.4 盒图的基本符号
图6.5 PAD中基本符号 顺序结构;(b) 分支结构;(c) 多分支CASE结构; (d) 当型循环;(e);直到型循环;(f) 语句标号;(g)定义
软件工程导论第五版复习资料
软件工程导论第一章软件工程学概述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、软件生存周期一个软件从得出开发要求开始直到该软件报废为止的时期。
软件工程导论第5版
1.1 软件危机
(2)应该推广使用在实践中总结出来的开发软件的成 功的技术和方法。研究探索更好更有效的技术和方法 ,尽快消除在计算机系统早期发展阶段形成的一些错 误概念和做法。 (3)应该开发和使用更好的软件工具。在适当的软 件工具辅助下,开发人员可以把这类工作做得既快又 好。如果把各个阶段使用的软件工具有机地集合成一 个整体,支持软件开发的全过程,则称为软件工程支 撑环境。
1.1 软件危机
一系列软件相关的问题在计算机系统的整个发展过程 中一直存在着,而且这些问题还会继续恶化: 硬件的发展超过软件,建造的软件难以发挥硬件的潜能; 现有软件与用户的要求矛盾; 软件失败导致“灾难性后果”; 需要高质量、高可靠性的软件; 设计的问题使得升级和维护十分困难;
1.1 软件危机
1.2 软件工程
2. 坚持进行阶段评审:错误有放大效应
当时已经认识到,软件的质量保证工作不能等 到编码阶段结束之后再进行。因为:第一,大部分错 误是在编码之前造成的,据统计,设计错误占软件错 误的63%,编码错误仅占37%;第二,错误发现与改正 得越晚,所需付出的代价也越高。因此,在每个阶段 都进行严格的评审,以便尽早发现在软件开发过程中 所犯的错误是一条必须遵循的重要原则。
1.2 软件工程
4. 采用现代程序设计技术
从提出软件工程的概念开始,人们一直把主要精力用于研究 各种新的程序设计技术,并进一步研究各种先进的软件开发与 维护技术。实践表明,采用先进的技术不仅可以提高软件开发 和维护的效率,而且可以提高软件产品的质量。
5. 结果可以清楚地审查
软件产品不同于一般的物理产品,它是看不见摸不着的逻 辑产品。软件开发人员(或开发小组)的工作进展情况可见性差 ,难以准确度量,从而使得软件产品的开发过程比一般产品的 开发过程更难于评价和管理。为了提高软件开发过程的可见性 ,应该根据软件开发项目的总目标及完成期限,规定开发组织 的责任和产品标准,从而使得所得到的结果能够清楚地审查。
软件工程导论(第五版)期末考试
软件工程导论(第五版)期末考试1、软件危机是指在计算机开发过程中的开发和维护过程中所遇到的一系列的严重问题。
2、软件是程序、数据及相关文档的完整集合,程序是能够完成预定功能和性能的可执行的程序序列;数据是是使程序能够适当的处理信息的数据结构;文档是开发、使用和维护程序所需要的图文资料。
3、软件工程学包含3个要素:方法、工具、过程。
4、目前使用最广泛的软件工程方法学是传统方法学和面向对象方法学。
5、软件工程方法学的软件过程基本上可以用瀑布模型来描述。
6、瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型。
7、Rup把软件生命周期划为:初始、精化、构建、移交阶段。
8、可行性研究的三方面:技术可行性、经济可行性、操作可行性。
9、数据流图(DFD)是一种图形化技术,他描绘信息流和数据从输入移动到输出的过程中所经受的变化。
10、数据字典是关于数据信息的集合,也就是对数据流程图中所包含的所有元素的定义的集合。
11、数据流图和数据字典共同构成系统的逻辑模型,没有数据字典,数据如就不严格,没有流程图,数据字典也难以发挥作用。
12、需求分析阶段结束之前,系统分析员应该写出软件需求规格说明书,以书面形式准确的描述软件需求。
13、结构化分析方法就是面向数据流自顶向下逐步求精进行需求分析的方法。
14、ER图中包含了实体、关系和属性,矩形代表实体,菱形表示关系,椭圆或圆角矩形表示属性,用直线把实体和其属性连接。
15、验证软件需求的正确性:一致性、完整性、现实性、有效性。
16、总体设计的基本目的是回答"概括地说,系统应该如何实现?",总体设计又称为概要设或初步设计。
17、模块的独立程度可以有两个定性标量度量:内聚和耦合。
18、软件测试的目标:(1)测试是为了发现程序中的错误而执行程序的过程;(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;(3)成功的测试是发现可至今为止尚未发现的错误的测试。
软件工程导论第五版复习资料全
软件危机的表现
1)对软件开发成本和进度的估计常常很不准确。常常出现实际成本比估算成本高出一个
数量级、 实际进度比计划进度拖延几个月甚至几年的现象,
从而降低了开发商的信誉, 引起
用户不满。
2)用户对已完成的软件不满意的现象时有发生。
3)软件产品的质量往往是靠不住的。
4)软件常常是不可维护的。
5)软件通常没有适当的文档资料。文档资料不全或不合格,必将给软件开发和维护工作
读输入
计算最佳解
编辑结果
编辑输入
输出结果
解 格式化 的解
结果格式化
格式化 的解
显示结果
.专业 .整理 .
下载可编辑
M
M
A
B
A
B
C
a.选择调用
b.循环调用
7、面向数据流的设计方法 变换分析
变换分析是一系列设计步骤的总称, 确定的模式映射成软件结构。
经过这些步骤把具有变换流特点的数据流图按预先
1)重画数据流图;确定其具有变换流特征。
设: i 表示年利率,现在存入 P 元, n 年后的价值为 F 元,
则有:
F=P
(1 + i )n
如果 n 年后能收入 F 元,这些钱折算成现在的价值称为折现值,折现公式为:
P=F/
(1 + i )n
2)纯收入。 是指在整个生存周期系统的累计收入的折现值
PT 与总成本折现值 S T 之差,
以 T 表示,则有:
3)深度、宽度、扇出和扇入都应适当
4)模块的作用围应在控制围之
5)力争降低模块接口的复杂程度 6)设计单入口单出口的模块
7)模块功能应该可以预测
6、描绘软件结构的图形工具(层次图、 HIPO 图、结构图)
软件工程导论复习材料
软件工程导论复习材料第一篇:软件工程导论复习材料1.软件工程基本概念1.()因素促使计算机系统越来越复杂。
A.计算机内存和存储容量上的巨大增长B.外部输入/输出选项的更加多样性C.计算机体系结构方面的深刻变化D.以上所有选项2.下面的()不再是现代软件工程师关注的问题。
A.为什么不能在产品发布前去除软件错误?B.为什么软件需要很长时间才能完成?C.为什么开发一个软件的成本这么高?D.为什么计算机硬件的成本这么高?3.软件会逐渐退化而不会磨损,其原因在于()。
A.软件备件很难订购B.软件错误通常发生在使用之后C.通常暴露在恶劣的环境下D.不断的变更使组件接口之间引起错误软件4.大多数软件仍然是定制开发的,其原因在于()。
A.软件组件重用是十分普遍的B.可重用的组件太昂贵而无法使用C.软件在不使用其他组件的情况下很容易构造出来D.商业组件在很多应用领域中可以得到5.下面的()说法是正确的。
A.软件危机在20世纪70年代末期全面爆发B.当前先进的软件工程方法已经解决了软件危机的问题C.软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题D.软件危机是指在软件产品中存在一系列的质量问题1.瀑布模型本质上是一种()。
A、线性迭代模型B、顺序迭代模型C、线性顺序模型D、及早见产品模型 2.()是用户和设计交换最频繁的方法。
A、原型化方法B、瀑布模型方法C、螺旋模型方法D、构件组装模型5.在软件开发模型中,提出最早、应用最广泛的模型是()A.瀑布模型B.喷泉模型C.增量模型D.螺旋模型1.软件工程的方法只适用于大型软件的开发,对小型软件的开发没有帮助。
()1.什么是软件危机?其主要表现有那些?1.有人认为 软件工程过于耗费时间,并且妨碍开发人员的编程效率。
你是否认同这种观点?请阐述理由。
2.需求分析需求规格说明描述了()。
A.计算机系统的功能、性能及其约束B.每个指定系统的实现C.软件体系结构的元素D.系统仿真所需要的时间7.软件可行性研究实质上是要进行一次()需求分析、设计过程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件工程导论第一章软件工程学概述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、软件生存周期一个软件从得出开发要求开始直到该软件报废为止的时期。
软件生命周期由软件定义、软件开发和运行维护(也称为软件维护)3个时期组成,每个时期又进一步划分成若干个阶段。
7、瀑布模型模型严格按照软件生存周期各个阶段来进行开发,上一阶段的输出即是下一阶段的输入,并强调每一阶段的严格性。
它规定了各阶段的任务和应提交的成果及文档,每一阶段的任务完成后,都必须对其阶段性产品(主要是文档)进行评审,通过后才能开始下一阶段的工作。
因此,它是一种以文档作为驱动的模型。
瀑布模型特点1)阶段间具有顺序性和依赖性2)推迟实现的观点3)质量保证的观点第二章可行性研究1、可行性研究的任务概括地讲,可行性研究包括两大部分的分析研究,分别是分析建立系统的必要性分析建立系统的可能具体,主要任务1)进一步分析和澄清问题定义。
2)导出系统的高层逻辑模型。
从系统逻辑模型出发,探索若干种系统实现方案。
对每种方案都至少要从下述几方面研究其可行性:a.经济可行性b.技术可行性c.法律可行性d.操作可行性3)对以后的行动提出建议选择一种最佳方案,并为系统制定一个初步的开发计划。
2、可行性研究的步骤1)复查系统规模和目标。
2)研究现有的系统。
3)导出新系统高层逻辑模型。
4)进一步定义问题5)导出和评价供选择的解法。
6)推荐行动方针7)草拟开发计划8)书写文档提交审查。
3、系统流程图(不要求画图)系统流程图是概括地描绘物理系统的传统工具。
4、数据流图(要求画图)数据流图(DFD)是一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换。
数据流图是系统逻辑功能的图形表示,即使不是专业的计算机技术人员也容易理解它,因此是分析员与用户之间极好的通信工具。
在数据流图中没有任何具体的物理部件,它只是描绘数据在软件中流动和被处理的逻辑过程。
5、数据字典数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。
数据字典的作用也正是在软件分析和设计的过程中给人提供关于数据的描述信息。
6、成本效益分析1)货币的时间价值:指同样数量的货币随时间的不同具有不同的价值。
一般货币在不同时间的价值可用年利率来折算。
设:i 表示年利率,现在存入P元,n年后的价值为F元,则有:F=P(1 + i )n如果n年后能收入F元,这些钱折算成现在的价值称为折现值,折现公式为:P = F /(1 + i )n2)纯收入。
是指在整个生存周期系统的累计收入的折现值P T 与总成本折现值S T 之差,以T表示,则有:T= P T – S T3)投资回收率。
P=F1/(1+j)+F2/(1+j)^2+…+Fn(1+j)^nP:现在的投资额Fi:第i年底的效益(i=1,2,3,…,n)n:系统使用寿命j:投资回收率第三章需求分析1、需求分析的任务确定对系统的综合要求1)功能需求2)性能需求3)可靠性和可用性需求4)出错处理需求5)接口需求6)约束7)逆向需求8)将来可能提出的要求分析系统的数据要求导出系统的逻辑模型修正系统开发计划2、与用户沟通获取需求的方法访谈:正式的,非正式的面向数据流自顶向下求精简易的应用规格说明技术快速建立软件原型3、状态转换图状态转换图(简称为状态图)通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。
此外,状态图还指明了作为特定事件的结果系统将做哪些动作(例如,处理数据)。
1)符号初态用实心圆表示。
终态用一对同心圆(内圆为实心圆)表示。
中间状态用圆角矩形表示。
状态图中两个状态之间带箭头的连线称为状态转换,箭头指明了转换方向。
2)活动表的语法格式:事件名(参数表)/动作表达式3)事件表达式的语法如下:事件说明[守卫条件]/动作表达式其中,事件说明的语法为:事件名(参数表)。
4、层次方框图(在需求分析阶段使用)层次方框图用树形结构的一系列多层次的矩形框描绘数据的层次结构。
5、Warnier图(在需求分析阶段使用)Warnier图也用树形结构描绘信息,但是这种图形工具比层次方框图提供了更丰富的描绘手段。
用Warnier图可以表明信息的逻辑组织6、IPO图(在需求分析阶段使用)IPO图是输入、处理、输出图的简称,它是美国IBM公司发展完善起来的一种图形工具,能够方便地描绘输入数据、对数据的处理和输出数据之间的关系。
7、验证软件需求验证需求的一致性:所有需求必须是一致的验证需求的实现性:指定需求式可以实现的。
对现有硬件很好预测,但软件技术很难预测,只能根据现有技术水平出发判断需求的实现性验证需求的完整性和有效性:完整性,规格说明书应该包括用户所需的每个功能的性能。
有效性,需求是正确有效的,确实能解决用户面对的问题。
第五章总体设计(概要设计)1、总体设计过程1)设想供选择的方案2)选取合理的方案3)推荐最佳方案4)功能分解5)设计软件结构6)设计数据库7)制定测试计划8)书写文档9)审查和复审2、设计原理(模块化、抽象、逐步求精、信息隐藏与局部化)(小概念)模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。
抽象是控制复杂性的基本策略。
“抽象”要求人们将注意力集中在某一层次上考虑问题,而忽略那些低层次的细节。
软件设计过程应当是在不同抽象级别上考虑和处理问题的过程。
软件工程过程的每一步都是对较高一级抽象的解作一次进一步具体化的描述。
在上述由高级抽象到低级抽象的转换过程中,伴随着一连串的过程抽象和数据抽象抽象与求精是一对互补的概念。
抽象使得设计者能够说明过程和数据,同时却忽略低层细节。
事实上,可以把抽象看作是一种通过忽略多余的细节同时强调有关的细节,而实现逐步求精的方法。
求精则帮助设计者在设计过程中逐步揭示出低层细节。
这两个概念都有助于设计者在设计演化过程中创造出完整的设计模型。
信息隐藏原理指出:应该这样设计和确定模块,使得一个模块内包含的信息(过程和数据)对于不需要这些信息的模块来说,是不能访问的。
所谓局部化是指把一些关系密切的软件元素物理地放得彼此靠近。
在模块中使用局部数据元素是局部化的一个例子。
显然,局部化有助于实现信息隐藏。
3、模块独立原理开发具有独立功能而且和其他模块之间没有过多的相互作用的模块,就可以做到模块独立。
换句话说,希望这样设计软件结构,使得每个模块完成一个相对独立的特定子功能,并且和其他模块之间的关系很简单。
4、耦合和内聚模块的独立程度可以由两个定性标准度量,这两个标准分别称为内聚和耦合。
耦合衡量不同模块彼此间互相依赖(连接)的紧密程度;内聚衡量一个模块内部各个元素彼此结合的紧密程度。
以下分别详细阐述。
尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合。
设计软件时,应该能够识别内聚度的高低,并通过修改设计尽可能提高模块内聚度,从而获得较高的模块独立性。
5、启发规则1)改进软件结构提高模块的独立性2)模块规模应该适中3)深度、宽度、扇出和扇入都应适当4)模块的作用范围应在控制范围之内5)力争降低模块接口的复杂程度6)设计单入口单出口的模块7)模块功能应该可以预测6、描绘软件结构的图形工具(层次图、HIPO图、结构图)层次图用来描绘软件的层次结构。
虽然层次图与需求分析中介绍的描绘数据结构的层次方框图相同,但是表现的内容却完全不同。
层次图中的一个矩形框代表一个模块,方框间的连线表示调用关系而不像层次方框图那样表示组成关系。
HIPO图是美国IBM公司发明的―层次图加输入/处理/输出图‖的英文缩写。
为了能使HIPO图具有可追踪性,在H图(层次图)里除了最顶层的方框之外,每个方框都加了编号。
也是描绘软件结构的图形工具,图中一个方框代表一个模块,框内注明模块的名字或主要功能;方框之间的箭头(或直线)表示模块的调用关系。
在结构图中通常还用带注释的箭头表示模块调用过程中来回传递的信息。
如果希望进一步标明传递的信息是数据还是控制信息,则可以利用注释箭头尾部的形状来区分:尾部是空7、面向数据流的设计方法⏹变换分析变换分析是一系列设计步骤的总称,经过这些步骤把具有变换流特点的数据流图按预先确定的模式映射成软件结构。
1)重画数据流图;确定其具有变换流特征。
2)在数据流图上区分系统的逻辑输入、逻辑输出和中心变换部分3)进行一级分解,设计系统模块结构的顶层和第一层4)进行二级分解,设计输入、中心变换、输出部分的中、下层模块⏹事务分析与变换分析一样,事务分析也是从分析数据流图开始,自顶向下,逐步分解,建立系统的结构图。
主要区别由数据流图到软件结构的映射方法不同。