山东大学-软件工程复习重点整理
- 格式:doc
- 大小:902.00 KB
- 文档页数:13
第一章1、软件概念:由计算机程序,数据,软件文档组成软件的特点:无法直接观察它的物理形态,只能通过观察他的是实际运行情况来了解他的功能特性和质量等;人们在分析设计开发测试过程以及软件开发项目的管理过程中渗透了大量的人类的脑力劳动;不存在磨损和老化但存在缺陷维护和技术更新的问题;开发运行依赖一定的计算机系统环境;具有可复用性软件的分类:按功能分:系统支撑应用软件;按服务对象:通用定制软件;按规模:大中小型软件;按工作方式:实时分时交互式批处理2、软件危机:是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件的开发与维护过程中出现一系列严重问题的现象。
主要表现:●开发人员开发的软件产品不能完全满足用户的需求;●软件产品的质量难以得到保障;●开发周期开发经费和维护费用很难被准确估计从而给项目的管理带来很多麻烦;●随着技术的更新,用户的扩大,已有的软件产品不能灵活地适应环境的改变;●软件文档不完备并且存在文档内容与软件产品不符的情况。
原因:①软件开发是一项复杂的工程,需要用科学的工程化思想来组织和指导软件开发的各个阶段②没有完善的质量保证体系③软件文档的重要性没有得到软件开发人员和用户的足够重视④从事软件开发的专业人员对这个产业认识不够充分缺乏经验⑤软件独有的特点也给软件的开发和维护带来困难3、软件工程是指应用计算机科学与技术,数学和管理学的原理,运用工程学理论方法和技术,研究和指导软件开发和演化的一门交叉学科。
软件工程的目标:●使软件开发的成本控制在预计的合理范围内;●使软件产品的各项功能和性能能够满足用户需求;●提高软件产品的可靠性;●使生产出来的软件产品易于移植维护升级和使用;●使软件产品的开发周期能够控制在预计的合理时间范围内。
软件工程学科内容:●软件工程原理过程方法模型管理度量环境应用。
软件工程的基本原则:●将软件的生命周期划分为多个阶段,对各个阶段实施严格的项目管理;●坚持阶段评审制度已确保软件产品的质量;●实施严格的产品控制以适应软件规格的变更;●采用现代程序设计技术;开发出来的产品应该能够清楚地被审查;●合理地安排软件开发小组人员并且开发小组的人员要少而精;●不断改进软件工程的实践。
软件工程期末复习要点归纳总结精编W O R D版IBM system office room 【A0816H-A0912AAAHH-GX8Q8-GNTHHJ8】第一章软件工程学概论1、软件危机产生的原因软件本身的特点:难于维护、逻辑复杂软件开发与维护的方法不正确:忽略需求分析重要性、轻视软件维护课本表述:1、软件不同于硬件,它是计算机中的逻辑部件而不是物理部件2、软件不同于一般程序,它的一个显着特点是规模庞大,而且程序的复杂性将规模的增加而呈现指数上升。
3、软件本身特有的特点确实给开发和维护带了一些客观困难4、软件开发与维护有关的许多错误认识与做法有关(忽略需求分析,轻视软件维护)5、对用户要求没有完整准确的认识就匆忙开始着手编写程序6、在软件不同阶段进行修改需要付出的代价是很不相同的2、软件危机的表现(什么是软件危机)(1)、成本高:(2)、软件质量得不到保证:软件质量问题导致失败的软件项目非常多(3)、进度难以控制:●项目延期比比皆是●由于进度问题而取消的软件项目较常见●只有一小部分的项目能够按期完成(4)、维护十分困难:▼软件维护的多样性▼软件维护的复杂性▼软件维护的副作用3、克服软件危机(1)、管理的角度:软件开发过程的研究、文档的标准化以及人员的交流方式等(2)、软件开发方法的研究结构化软件开发方法, 面向对象的开发4、软件工程的定义概括的说,软件工程师指导计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
(1)、软件工程就是建立和使用一套合理的工程原理,从而经济地获得可靠的、可以在实际机器上高效运行的软件。
(2)、①把系统的、规范的、可度量的方法应用于软件开发、运行和维护的过程,也就是把工程应用于软件.②研究①中提到的途径总之:软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。
1软件工程三要素:方法、工具和过程。
软件:是依附在硬件上面的程序、数据和文档的集合,软件特点:抽象性,可复制性,无折旧,受硬件制约,未完全摆脱手工工艺,开发费用高程序:能完成预定功能和性能的指令集合。
2软件工程:是指导计算机软件开发和维护的工程学科。
它采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。
软件工程是一门涉及软件计划、需求分析、设计、编码、测试和维护的原理、方法及工具的研究和应用的学科。
3软件工程的七项基本原理:1. 用分阶段的生命周期计划严格管理2. 坚持进行阶段评审3. 实行严格的产品控制4. 采用现代程序设计技术5. 结果应能清楚地审查6开发小组的人员应该少而精7. 承认不断改进软件工程实践的必要性4软件生存周期一般分为:软件定义(问题定义、可行性研究、需求分析)、软件开发(总体设计、详细设计、编码和单元测试、综合测试)、软件维护等三个时期。
CMM的5个等级:1级-初始级、2级-可重复级、3级-已定义级、4级-已管理级和5级-优化级。
5软件过程模型:瀑布模型(前一阶段完成才能进行下一个阶段的工作,给出了软件生存周期的固定顺序),演化模型{增量模型(是一种非整体开发的模型。
是一种进化式的开发过程。
),原型模型(通过不断构建和完善原型来确定需求,是一个循环的模型),螺旋模型(将瀑布模型与原型化模型结合起来,并加入了风险分析。
)},喷泉模型(喷泉模型认为软件生命周期的各个阶段是相互重叠和多次反复的,是一种支持面向对象开发的过程模型),基于构件的开发模型(支持软件复用),形式方法模型6可行性研究的目的和任务:目的:是避免盲目投资,减少不必要的损失。
不是研究如何解决问题,而是要用最小的代价在最短的时间内确定该项目是否值得去解决,是否存在可行的解决方案。
即在系统层面上论证系统开发的可行性。
任务:1技术可行性研究(主要根据系统的功能、性能、约束条件等,分析在现有资源和技术条件下系统能否实现)2经济可行性研究(主要进行成本效益分析,从经济角度,确定系统是否值得开发)3操作可行性研究4社会、法律、政策允许的可行性5开发方案的选择(根据系统分析所确定的系统目标开始研究问题的求解方案)7效益度量的方法:1)货币的时间价值2)投资回收期3)纯收入4)投资回收率8需求工程的步骤及任务:一、需求获取,二需求分析、协商与建模(主要对收集到的需求进行提炼、分析和认真审查,进行需求建模、对模型或原型进行分析),三需求规格说明(需求规约) ,四需求的有效性验证(检验需求是否能够反映用户的意愿)。
第一章第二章第三章软件工程学概论1、软件危机产生的原因软件本身的特点:难于维护、逻辑复杂软件开发与维护的方法不正确:忽略需求分析重要性、轻视软件维护课本表述:1、软件不同于硬件,它是计算机中的逻辑部件而不是物理部件2、软件不同于一般程序,它的一个显著特点是规模庞大,而且程序的复杂性将规模的增加而呈现指数上升。
3、软件本身特有的特点确实给开发和维护带了一些客观困难4、软件开发与维护有关的许多错误认识与做法有关(忽略需求分析,轻视软件维护)5、对用户要求没有完整准确的认识就匆忙开始着手编写程序6、在软件不同阶段进行修改需要付出的代价是很不相同的2、软件危机的表现(什么是软件危机)(1)、成本高:(2)、软件质量得不到保证:软件质量问题导致失败的软件项目非常多(3)、进度难以控制:●项目延期比比皆是●由于进度问题而取消的软件项目较常见●只有一小部分的项目能够按期完成(4)、维护十分困难:▼软件维护的多样性▼软件维护的复杂性▼软件维护的副作用3、克服软件危机(1)、管理的角度:软件开发过程的研究、文档的标准化以及人员的交流方式等(2)、软件开发方法的研究结构化软件开发方法, 面向对象的开发4、软件工程的定义概括的说,软件工程师指导计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
(1)、软件工程就是建立和使用一套合理的工程原理,从而经济地获得可靠的、可以在实际机器上高效运行的软件。
(2)、①把系统的、规范的、可度量的方法应用于软件开发、运行和维护的过程,也就是把工程应用于软件.②研究①中提到的途径总之:软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。
他借鉴传统工程的原理、方法,以提高质量,降低成本为目的。
5、软件工程的本质特性1、关注与大型程序的构造2、中心课题是控制复杂度3、软件经常变化4、开发软件的效率非常重要5、和谐的合作是开发软件的关键6、软件必须有效地支持它的用户7、在软件工程领域中通常由具有一个文化背景的人替另外一种文化背景的人创造产品6、软件工程的基本原理1、用分阶段的生命周期计划严格管理2、坚持进行阶段评审3、实行严格的产品控制4、采用现代程序设计技术5、结果应能清楚地审查6、开发小组应该少而精7、承认不断改进软件工程实践的必要性软件工程学包含3个要素:方法、工具和过程7、软件生命周期(1)、概念:软件生命周期由软件定义、软件开发和运行维护(也成软件维护)3个时期组成。
第一章软件工程学概论1、软件危机产生的原因软件本身的特点:难于维护、逻辑复杂软件开发与维护的方法不正确:忽略需求分析重要性、轻视软件维护课本表述:1、软件不同于硬件,它是计算机中的逻辑部件而不是物理部件2、软件不同于一般程序,它的一个显著特点是规模庞大,而且程序的复杂性将规模的增加而呈现指数上升。
3、软件本身特有的特点确实给开发和维护带了一些客观困难4、软件开发与维护有关的许多错误认识与做法有关(忽略需求分析,轻视软件维护)5、对用户要求没有完整准确的认识就匆忙开始着手编写程序6、在软件不同阶段进行修改需要付出的代价是很不相同的2、软件危机的表现(什么是软件危机)(1)、成本高:(2)、软件质量得不到保证:软件质量问题导致失败的软件项目非常多(3)、进度难以控制:●项目延期比比皆是●由于进度问题而取消的软件项目较常见●只有一小部分的项目能够按期完成(4)、维护十分困难:▼软件维护的多样性▼软件维护的复杂性▼软件维护的副作用3、克服软件危机(1)、管理的角度:软件开发过程的研究、文档的标准化以及人员的交流方式等(2)、软件开发方法的研究结构化软件开发方法, 面向对象的开发4、软件工程的定义概括的说,软件工程师指导计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
(1)、软件工程就是建立和使用一套合理的工程原理,从而经济地获得可靠的、可以在实际机器上高效运行的软件。
(2)、①把系统的、规范的、可度量的方法应用于软件开发、运行和维护的过程,也就是把工程应用于软件.②研究①中提到的途径总之:软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。
他借鉴传统工程的原理、方法,以提高质量,降低成本为目的。
5、软件工程的本质特性1、关注与大型程序的构造2、中心课题是控制复杂度3、软件经常变化4、开发软件的效率非常重要5、和谐的合作是开发软件的关键6、软件必须有效地支持它的用户7、在软件工程领域中通常由具有一个文化背景的人替另外一种文化背景的人创造产品6、软件工程的基本原理1、用分阶段的生命周期计划严格管理2、坚持进行阶段评审3、实行严格的产品控制4、采用现代程序设计技术5、结果应能清楚地审查6、开发小组应该少而精7、承认不断改进软件工程实践的必要性软件工程学包含3 个要素:方法、工具和过程7、软件生命周期(1)、概念:软件生命周期由软件定义、软件开发和运行维护(也成软件维护)3 个时期组成。
软件、软件工程定义软件:定义:软件=程序+数据+文档程序是按照事先设计的功能和性能需求执行的指令序列数据是程序能正常操纵信息的数据结构文档是与程序开发、维护和使用有关的图文材料特征:软件是逻辑的的,不是物理的双重作用:软件是一种产品,也是开发其他软件的工具分类:系统软件,应用软件,web 应用,嵌入式软件问题:规模,复杂性,生产率软件工程:定义:应用系统化的,学科化的,定量的方法,来开发,运行和维护软件,即,将工程应用到软件。
以及对中的各种方法的研究目标:在给定的时间和预算内,按照用户的需求开发易修改,高效,可靠,可维护,适应力强,可移动,可充用的软件层次:工具,方法,过程,质量对焦工具万法过程质量焦点三要素:方法,工具,过程软件危机定义、表现定义:在计算机软件开发和维护过程中所遇到的一系列严重问题表现:开发成本和进度估计不准用户对“已完成的”软件系统不满意软件质量往往靠不住软件常常是不可维护的软件往往没有适当的文档资料软件成本逐年上升软件开发生产率滞后于硬件和计算机应用普及原因:客观:软件本身特点逻辑部件规模庞大主观:不正确的开发方法忽视需求分析错误认为:软件开发=程序编写轻视软件维护软件工程原则确保软件产品质量和开发效率的原理的最小集合,又是相互独立,缺一不可,相当完备的最小集合。
1、使用阶段性生命周期计划管理2、进行连续的验证3、保证严格的产品控制4、使用现代编程工具/工程实践5、保持清晰的责任分配6、用更好更少的人7、保持过程改进软件过程与过程模型定义软件过程:定义:软件工程定义了软件生产的一系列活动,这些活动贯穿于软件开发的整个过程。
共同活动:沟通、计划、建模、构造、部署软件过程模型:定义:软件过程模型是软件开发过程、活动和任务的结构框架。
它能直观的表达软件开发的全过程,明确规定要完成的主要活动、任务和开发策略。
通常也称为软件开发模型,软件生存周期模型,软件工程范例。
各过程模型特点、优缺点、适用场合瀑布模型:定义:软件开发过程与软件生命周期一致,也成经典生命周期模型。
第一章软件危机:是指在计算机软件的开发和维护过程中所遇到的一系列严重的问题。
软件危机的主要表现:1、对软件开发成本和进度的估计常常很不准确。
2、用户对“已完成的”软件系统不满意的现象经常发生。
3、软件产品的质量往往靠不住。
4、软件常常是不可维护的5、软件通常没有适当的文档资料6、软件成本在计算机系统总成本中所占的比例逐年上升7、软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势软件工程:定义一:是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。
定义二:1.把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;2.研究1.中提到的途径。
软件工程方法学的三个要素:方法、工具和过程。
目前使用的最广泛的软件工程方法学:传统方法学、面向对象方法学。
软件的生命周期:软件生命周期有软件定义、软件开发和运行维护3个时期组成;定义时期分为:问题定义、可行性研究和需求分析阶段;开发时期分为:总体设计、详细设计、编码和单元测试、综合测试;维护时期的任务:是软件持久的满足用户的需求;瀑布模型:最广泛的过程模型;瀑布模型的特点:1、阶段间具有顺序性和依耐性;2、推迟实现的观点;3、质量保证的观点;Rational统一过程(RUP)四个阶段的工作目标:初始阶段:建立业务模型,定义最终产品视图,并且确定项目的范围;精化阶段:设计并确定系统的体系结构,制定项目计划,确定资源需求;构建阶段:开发出所有构件和应用程序,把他们集成为客户需要的产品,并且详尽地测试所有功能;移交阶段:把开发出的产品提交给用户使用;第二章可行性研究的目的是确定问题是否值得去解决;可行性研究的方面:技术可行性、经济可行性、操作可行性;系统流程图描述物理模型;P39(要求会做)数据流图描述逻辑模型;P40(要求会做)数据流图(DFD)描绘信息流和数据从移动到输出的过程中所经受的变换;数据字典有以下4类元素的定义组成:数据流、数据流分量(数据元素)、数据存储、处理;由数据元素组成的数据的方式三种基本类型:顺序、选择、重复;“=”是等价于(或者定义为),“+”是和(用来连接分量),“[ ]”是或(从其中选一),“{ }”是重复,“()”是可选;第三章:需求分析任务:功能需求是指定系统必须提供的服务,通过该分析划出该系统必须完成的所有功能。
第一章软件工程学概论1、软件危机产生的原因软件本身的特点:难于维护、逻辑复杂软件开发与维护的方法不正确:忽略需求分析重要性、轻视软件维护课本表述:1、软件不同于硬件,它是计算机中的逻辑部件而不是物理部件2、软件不同于一般程序,它的一个显著特点是规模庞大,而且程序的复杂性将规模的增加而呈现指数上升。
3、软件本身特有的特点确实给开发和维护带了一些客观困难4、软件开发与维护有关的许多错误认识与做法有关(忽略需求分析,轻视软件维护)5、对用户要求没有完整准确的认识就匆忙开始着手编写程序6、在软件不同阶段进行修改需要付出的代价是很不相同的2、软件危机的表现(什么是软件危机)(1)、成本高:(2)、软件质量得不到保证:软件质量问题导致失败的软件项目非常多(3)、进度难以控制:●项目延期比比皆是●由于进度问题而取消的软件项目较常见●只有一小部分的项目能够按期完成(4)、维护十分困难:▼软件维护的多样性▼软件维护的复杂性▼软件维护的副作用3、克服软件危机(1)、管理的角度:软件开发过程的研究、文档的标准化以及人员的交流方式等(2)、软件开发方法的研究结构化软件开发方法, 面向对象的开发4、软件工程的定义概括的说,软件工程师指导计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
(1)、软件工程就是建立和使用一套合理的工程原理,从而经济地获得可靠的、可以在实际机器上高效运行的软件。
(2)、①把系统的、规范的、可度量的方法应用于软件开发、运行和维护的过程,也就是把工程应用于软件.②研究①中提到的途径总之:软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。
他借鉴传统工程的原理、方法,以提高质量,降低成本为目的。
5、软件工程的本质特性1、关注与大型程序的构造2、中心课题是控制复杂度3、软件经常变化4、开发软件的效率非常重要5、和谐的合作是开发软件的关键6、软件必须有效地支持它的用户7、在软件工程领域中通常由具有一个文化背景的人替另外一种文化背景的人创造产品6、软件工程的基本原理1、用分阶段的生命周期计划严格管理2、坚持进行阶段评审3、实行严格的产品控制4、采用现代程序设计技术5、结果应能清楚地审查6、开发小组应该少而精7、承认不断改进软件工程实践的必要性软件工程学包含3个要素:方法、工具和过程7、软件生命周期(1)、概念:软件生命周期由软件定义、软件开发和运行维护(也成软件维护)3个时期组成。
1、软件的定义:软件是指与计算机系统操作有关的程序、规程、规则以及任何与之有关的数据和文档资料。
2、软件危机的表现:开发过程中高成本和低质量之间的矛盾。
(1)对软件开发成本和进度的估计常常很不准确。
(2)用户对已完成的软件系统不满意的现象经常发生。
(3)软件产品的质量往往靠不住。
(4)软件常常是不可维护的。
(5)软件通常没有适当的文档资料。
(6)软件的成本在计算机系统总成本中所占的比例逐年上升。
(7)软件开发生产率提高的速度远远跟不上计算机应用迅速普及、深入的趋势。
产生的原因:(1)用户对软件需求的描述不精确,可能有遗漏、二义性和错误,甚至在软件开发过程中,用户还会提出修改软件功能、界面、支撑环境等方面的需求。
(2)软件开发人员对用户需求的理解与用户本来愿望有差异,这种差异必然导致开发出来的软件产品与用户要求不一致。
(3)大型软件项目需要组织一定的人力共同完成。
多数管理人员缺乏开发大型软件系统的经验,而多数软件开发人员又缺乏管理方面的经验。
各类人员的信息交流不及时、不准确,有时还会产生误解。
(4)软件项目开发人员不能有效地、独立自主地处理大型软件的全部关系和各个分支,因此容易产生疏漏和错误。
(5)缺乏有力的方法学和工具方面的支持,过分的依靠程序设计人员在软件开发过程中的技巧和创造性,是软件产品过于“个性化”。
(6)软件产品的特殊性和人类智力的局限性导致人们无力处理复杂问题。
3、软件工程的定义:软件工程是研究和应用如何以系统性的、规范化的、可度量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来的学科。
软件工程是解决或缓解软件危机。
4、软件质量:评价软件质量的几个方面:可读性、可理解性、可靠性、可移植性、可测试性、容错性、可用性。
(1)付出较低的开发成本。
(2)达到要求的软件功能。
(3)获得较好的软件性能。
(4)开发的软件易于移植。
(5)需要较低的维护费用。
软件工程期末复习(超详细!!!)一:软件工程概述软件工程学的存在价值:促进软件项目成功。
软件的概念:软件(software):软件是计算机系统中与硬件相互依存的另一部分。
它包括程序、数据及其相关文档的完整集合。
(1)能够完成预定功能和性能的可执行指令(program)(2)使得程序能够适当地操作信息的数据结构(data)(3)描述程序的操作和使用的文档(document)软件危机:软件危机定义:软件在开发和维护过程中遇到的一系列严重问题。
软件危机包含两层含义:如何开发软件。
如何维护数量不断膨胀的已有软件。
软件工程(Software Engineering):是研究和应用功能如何以系统化的、规范的、可度量的方法去开发、运行和维护软件,即把工程化应用到软件上。
软件生存周期:是指软件产品从考虑其概念开始到该软件产品交付使用,直至最终退役为止的整个过程。
一般包括计划、分析、设计、实现、测试、集成、交付、维护等阶段。
计划阶段确定待开发系统的总体目标和范围。
研究系统的可行性和可能的解决方案,对资源、成本及进度进行合理的估算。
分析阶段分析、整理和提炼所收集到的用户需求,建立完整的分析模型,将其编写成软件需求规格说明和初步的用户手册。
设计阶段(总体设计和详细设计)设计阶段的目标是决定软件怎么做。
软件设计主要集中于软件体系结构、数据结构、用户界面和算法等方面。
实现阶段(编码)实现阶段是将所设计的各个模块编写成计算机可接受的程序代码。
测试阶段设计测试用例,对软件进行测试,发现错误,进行改正。
运行和维护阶段应当在软件的设计和实现阶段充分考虑软件的可维护性。
维护阶段需要测试是否正确实现了所要求的修改,并保证在产品的修改过程中,没有做其他无关的改动。
维护常常是软件生命周期中最具挑战性的一个阶段,其费用是相当昂贵的。
软件工程三要素:工具、方法、开发过程瀑布模型:问题定义、可行性研究、需求分析、概要设计、详细设计、编码、测试、运行与维护。
第一章 1.1软件工程(SE)的定义、方向、作用: SE:在将有关软件开发与应用的概念科学体系化的基础上,研究如何有计划、有效率、 经济的开发和利用能在就算机上正确运行的软件的理论和技术的工程方法学,一些开发和维护 软件的方法、过程、原则。是一个系统工程,既有对技术问题的分析与综合,也有对开发过程和参与者的管理。 SE的方向:面向对象模式,结构化模式,基于过程的模式等 SE的作用:付出较低的开发成本,达到要求的软件功能,取得较好的软件性能,开发的软件易于移植,需要较低的维护费用,能按时完成开发工作,及时交付使用。
1.2开发模式:软件开发的全部过程,活动和任务的结构框架,它能直观的表达的表达软件开发全过程,明确要完成的主要活动,任务和开发策略。
1.3说明错误、故障和失效的含义及联系(并举例): 错误:是在软件生产过程中人为产生的错误(需求说明中的错误,代码中的错误) 故障:是在功能实现过程中产生的问题;是错误导致的结果,是在软件中一个错误的表现(一个错误可能产生多个缺陷,静态存在的) 失效:是相对于系统指定行为的偏离,系统违背了它应有的行为(动态存在的) 联系:当一个开发者编写程序时,会在代码中出现错误。当这个程序被编译或集成到一个系统中时,系统就存在故障。当你运行这个系统时,可能会导致失效,即人们产生错误,故障是错误的结果(内部观角:从开发者的角度看待问题),当故障执行时出现失效(外部视角:从用户角度看到的问题)。并不是所有的错误会导致故障,并非每个缺陷都对应相应的失败。
1.4软件质量应从哪几个方面衡量,论述之: (1产品的质量)(2过程的质量)(3商业环境背景下的质量) (1)产品的质量:用户从失败的数目和类型等外部特征进行评价,如果软件具有足够的功能并且易于学习和使用,用户就断定软件是高质量的;开发者从缺陷的数目和类型等内部特征来作为产品质量的依据。 (2)过程的质量:有很多过程都会影响到最终的产品质量,只要有活动出了差错,产品的质量就会受到影响;开发和维护过程的质量与产品的质量是同等重要的。 (3)商业环境背景下的软件质量:将技术价值和商业价值统一起来。
1.5软件系统的系统组成(系统的要素有哪些): 对象(实体)+ 活动 + 关系 + 系统边界 活动:活动是发生在系统中的某些事情,通常描述为由某个触发器引发的事件,活动通过改变属性把一个事物变成另一个事物。 对象:活动中涉及的元素称为对象。 关系:是指活动与对象之间的关系。 系统边界:即系统包含的功能与系统不包含的功能之间的界限。
1.6现代软件工程大致包含几个阶段及各个阶段的文档: (1)需求分析:主要包括问题定义、可行性分析、需求分析《需求规格说明书》 (2)系统设计:主要包括用户界面和软件结构图 (3)程序设计:包括模块功能算法与数据描述 (4)程序实现:主要包括编程的代码和注释 (5)单元测试:模块测试与性能测试 (6)集成测试:按照结构图进行测试产生测试报告 (7)系统测试:按SRS对系统总体功能进行测试 (8)系统提交:交付产品 (9)系统维修:修改软件的过程,为满足改错或新需求
1.7使现代软件工程实践发生变化的关键因素是什么? (1)商用产品投入市场时间的紧迫性 (2)计算技术在经济中的转变:更低的硬件成本,更高的开发、维护成本 (3)功能强大的桌面计算的可用性 (4)广泛的局域网和广域网 (5)面向对象技术的采用及其有效性 (6)使用窗口、图标、菜单和指示器的图形用户界面 (7)软件开发瀑布模型的不可预测性
1.8什么是抽象? 抽象是在某种概括层次上对问题的描述,使得我们能够集中于问题的关键方面而不陷入细节,也就是对细节的隐藏。
1.9什么是重(复)用? 重(复)用采用以前开发的软件系统中具有共性的部件,用到新的开发项目中去。(这里的重用不仅仅是代码的重用。)
1.10什么是软件危机?它有哪些典型表现?为什么会出现软件危机? 软件危机:落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。 典型表现:(1) 对软件开发成本和进度的估计常常很不准确。 (2) 用户对“已完成”软件系统不满意的现象经常发生。 (3) 软件产品的质量往往靠不住。 (4) 软件常常是不可维护的。 (5) 软件通常没有适当的文档资料。 (6) 软件成本在计算机系统总成本中所占的比例逐年上升。 (7) 软件开发生产率提高的速度,远跟不上计算机应用迅速普及深入的趋势 出现的原因:一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。(1)软件缺乏“可见性”,管理和控制软件开发过程相当困难(2)软件规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升(3) 开发时期引入错误,导致软件维护通常意味着改正或修改原来的设计,客观上使得软件较难维护(4)软件专业人员对软件开发和维护中或多或少地采用了错误的方法和技术
1.11开发队伍的组成角色有哪些? 需求分析人员、设计人员、程序员、测试人员、培训人员、维护人员、资料员、配置管理人员 CMM是指“能力成熟度模型”,其英文全称为Capability Maturity Model for Software,英文缩写为SW-CMM,简称CMM。它是对于软件组织在定义、实施、度量、控制和改善其软件过程的实践中各个发展阶段的描述。CMM的核心是把软件开发视为一个过程。 SRS(Software Requirements Specification), 软件需求说明书的编制是为了使用户和软件开发者双方对该软件的初始规定有一个共同的理解, 使之成为整个开发工作的基础。包含硬件、功能、性能、输入输出、接口界面、警示信息、保密安全、数据与数据库、文档和法规的要求。
第二章 2.1什么叫过程(生命周期)? 过程是一组有序的任务,它涉及活动、约束和资源使用的一系列步骤,用于产生某种想要的输出。我们有时也把涉及产品构建的这种过程称为生命周期。因此,有时把软件开发过程称为软件生命周期。
2.2什么是软件过程,软件过程的重要性是什么? 软件过程:将软件开发中的一组有序的任务称为软件过程,它涉及活动、约束和资源使用的一系列步骤,用于产生某种想要的输出。 重要性:(1)它强制活动具有一致性和一定的结构,使程序的集合组合起来以产生满足目标和标准的产品,(2)过程结构允许我们分析、理解、控制和改进组成过程的活动,并以此来指导我们的行动(3)它能使我们获取经验并把它创收给他人。
2.3什么是软件生命周期模型? 软件生命周期模型,是从一个特定角度提出的对软件过程的简化描述,是对软件开发实际过程的抽象,它包括构成软件过程的各种活动、软件工件以及参与角色等。
2.4瀑布模型及其优缺点 瀑布模型:瀑布模型将开发阶段描述为从一个开发阶段瀑布般地转换到另外一个阶段,一个开发阶段必须在另一个开发阶段开始之前完成。瀑布模从一种非常高层的角度描述了开发过程中进行的活动,并且提出了要求开发人员经过的时间序列。 优点:(1)瀑布模型一直用来规范软件开发活动,每一个过程活动都有与其相关联的里程碑和可交付产品,以便于项目经理能够用模型判断在某一时刻项目里最后完成还有多远。 (2)它的简单性使得开发人员很容易向不熟悉软件开发用户作出解释。 (3)很多更复杂的模型实际上是在瀑布模型的基础上的润色,如加入反馈循环以及额外的活动。 缺点:(1)它并不能反映实际的代码开发方式。除了一些理解非常充分的问题之外,实际上软件是通过大量的迭代进行开发的。 (2)它没有揭示每一个活动如何把一种制品转化为另外一种制品 (3)没有把软件看做一个问题求解的过程,而是从制造业的角度来看待软件开发的,软件开发应该是一个创造的过程,而不是制造的过程。
2.5什么是原型? 原型是一个部分开发的产品,它使客户和开发人员能够对计划开发的系统的相关方面进行检查,以决定它对最终产品是否合适或恰当。 2.6V模型及其特点 V模型是瀑布模型的变种,它说明测试活动是如何与分析和设计相联系的,编码处于V形符号的顶点,分析和设计在左边,测试和维护在右边。 特点:V模型使得隐藏在瀑布模型中的迭代和重做活动更加明确。瀑布模型关注的通常是文档和制品,而V模型关注的则是活动和正确性。
2.7原型模型 不仅仅是附属于瀑布模型的,同时也是一种有效的过程模型的基础。原型模型允许开发人员快速构造整个系统或系统的一部分以理解或澄清问题。 依据原型化的目标,可以取消原型化需求、设计或系统中的一个或多个循环,但是总体目标保持不变,即减少开发中的风险和不确定性。
2.8可转换模型 可转换模型通过去除某些主要开发步骤来设法减少出错的机会。
2.9阶段化开发模型的含义、分类和特点(运行系统和开发系统的概念) 阶段化开发模型的含义:系统被设计为一部分一部分地交付,从而在系统其余部分正在开发的同时,用户已经获得了一部分的功能。 分类:(1)增量开发:系统按照功能划分为子系统,定义发布时首先定义一个小的功能子系统,然后在每一个新的发布中增加新功能。 (2)迭代开发:一开始就提交一个完整的系统,然后在每一个新的发布中改变每个子系统的功能。 特点:(1)即使还缺少某些功能,但在早期的发布中就可以开始培训。 (2)可以及早为那些以前从未提供的功能开拓市场。 (3)当运行系统出现未预料到的问题时,经常性的发布可以使开发人员能全面、快速地修复这些问题 (4)针对不同的发布版本,开发团队将重点放在不同的专业领域技术上。
2.10螺旋模型的含义、目的、四个象限的任务及四重迭代的含义 含义:螺旋模型将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。 目的:把开发活动和风险管理结合起来,以将风险减到最小并控制风险。 四个象限的任务依次是: 评估可选方案及风险;确定目标、可选方案及约束;计划;开发与测试 四重迭代的含义:(1)操作概念是第一次迭代的产品;(2)需求是第二次迭代的主要产品;(3)第三次迭代产中,系统开发产生设计;(4)第四次迭代能够进行测试。(5)螺旋模型的每一次迭代都根据需求和约束进行风险分析,以权衡不同的选择,并且在确定某一特定选择之前,通过原型化验证可行性或期望度。当风险确认之后,项目经理必须决定如何消除或最小化风险。
2.11敏捷方法的含义、特点和目标: 含义:以人为核心、迭代、循序渐进。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。 特点:(1)规则游戏(2)小的发布(3)隐喻(4)简单设计(5)首先编写测试(6)重构