02333软件工程简答知识点
- 格式:docx
- 大小:38.10 KB
- 文档页数:13
自学考试软件工程02333 知识总结归纳(全8章)第一章绪论1968年的NATO会议上首次提出了软件工程这一术语。
软件工程是一门研究软件开发的学科。
软件工程概念提出的目的:为了倡导以工程的原理、原则和方法进行软件开发,以解决出现的“软件危机”。
简单分析软件工程概念的提出与发展:(1)软件工程概念的提出20世纪60年代以来,随着计算机的广泛应用,软件生产率、软件质量远远满足不了社会发展的需求,成为社会、经济发展的制约因素,这就是“软件危机”,而为了解决软件危机从而提出了软件工程概念。
(2)软件工程的发展历程,大体分两个时期。
1.第一个时期20世纪60年代末到80年代初,软件系统的规模、复杂性以及在关键领域的广泛应用,促进了软件的工程化开发和管理。
这一时期主要围绕软件项目,开展了有关开发模型、开发方法和支持工具的研究。
2.第二个时期20世纪80年代以来,围绕对软件工程过程的支持,开展了一系列有关软件生产技术,特别是软件复用技术和软件生产管理的研究和实践。
软件是对一个特定问题域的抽象,是被开发出的一种逻辑实体,而不是一种“有形”的物理部件。
软件开发既有技术上的问题,又有管理上的问题。
文档是了解程序所需的阐述性资料。
在软件开发中,分层的基本动机是为了控制开发的复杂性。
软件:计算机软件一般是指计算机系统中的程序及其文档。
模型:待建模系统的任意抽象,其中包括所有的基本能力、特性或其他一些方面,而没有任何冗余的细节。
简述实施软件开发的基本途径:软件开发的基本途径是问题建模。
常用的建模手段有:结构化方法、面向对象方法以及诸多面向数据结构方法等。
计算机任务的处理对象和处理规则的描述是程序。
软件工程:是应用计算机科学理论和技术以及工程管理原则和方法,按预算和进度实现满足用户要求的软件产品的工程,或以此为研究对象的学科。
软件开发的本质:不同抽象层术语之间的“映射”,以及不同抽象层处理逻辑之间的“映射”。
在软件生产的程序系统时代由于软件规模扩大和软件复杂性提高等原因导致了软件危机。
第一章绪论1. 软件产品的特性是什么?2. 软件生产的发展有几个阶段?各有何特征?3. 什么是软件危机?软件危机的表现是什么?4. 什么是软件工程?软件工程性质是什么?5. 软件工程目标和内容是什么?6. 软件工程面临的问题什么?7. 什么是软件工程过程?它包含些过程?8. 什么是软件生存周期?它有哪几个活动?9. 什么是软件生存周期模型?有哪些主要模型?10. 什么是软件开发方法?有哪些主要方法?第二章软件可行性研究与项目开发计划1. 可行性研究的任务是什么?2. 研究项目的技术可行性一般要考虑哪些情况?3. 可行性研究有哪些步骤?4. 可行性研究报告有哪些主要内容?5. 成本一效益分析可用哪些指标进行度量?6. 项目开发计划有哪些内容?第三章软件需求分析1. 什么是需求分析?需求分析阶段的基本任务是什么?2. 需求分析的难点主要表现在哪几个方面?3. 需求分析方法应遵循的原则是什么?4. 需求分析阶段的文档是什么?5. 什么是结构化分析方法?该方法使用什么描述工具?6. 结构化分析方法通过哪些步骤来实现.7. 什么是数据流图?其作用是什么?其中的基本符号各表示什么含义?8. 画数据流图的步骤是什么?画数据流图应该注意什么事项?9. 什么是数据字典?其作用是什么?它有哪些条目?10. 建立数据字典的形式是什么?11. 描述加工逻辑有哪些工具?12. 什么是IDEF方法?该方法中建立功能模型的基本步骤是什么?IDEF方法有什么特点?13. 简述SA方法的优缺点.第四章软件概要设计1. 什么是软件概要设计?该阶段的基本任务是什么?2. 什么是模块?模块有哪些基本属性?3. 软件设计的基本原理包括哪些内容?4. 衡量模块独立性的两个标准是什么?它们各表示什么含义?5. 模块间的耦合性由哪几种?它们各表示什么含义?6. 影响公共耦合的复杂程度的因素是什么?公共耦合会引起什么问题?7. 降低模块间的耦合度的方法有哪些?8. 模块的内聚性由哪几种?各表示什么含义?9. 什么是软件结构?结构图的主要内容是什么?10. 简述软件结构设计优化准则.11. 什么是模块的作用范围?什么是模块的控制范围?它们之间应该建立什么关系?12. 什么是”变换流”?13. 什么是”事务流”14. 面向数据流设计方法的过程是什么?15. 试述”变换分析”的设计步骤.试将变换型DFD数据流图转换成软件结构图.16. 试述”事务分析”的设计步骤.试将事务型DFD数据流图转换成软件结构图17. 叙述由IDEF图导出初始软件结构图的方法.第五章软件详细设计1. 详细设计的基本任务是什么?2. 结构化程序设计基本要点是什么?3. 详细设计有哪几种描述方法?4. 程序流程图的特点是什么?5. PAD图的特点是什么?6. 过程描述语言(PDL)的特点是什么?7. 简述Jackson方法的设计步骤.第六章软件编码1. 程序语言有哪些共同特征?2. 在项目开发时,选择程序设计语言通常考虑哪些因素?3. 第4代语言(4GL)有哪些主要特征?4. 举例说明各种程序设计语言的特点及适用范围.5. 什么是程序设计风格?为了具有良好的设计风格,应注意哪些方面的问题?第七章软件测试1. 软件测试的目的是什么?2. 在软件测试中,应注意哪些原则?3. 什么是静态测试?什么是动态测试?4. 什么是黑盒测试法?什么是白盒测试法?5. 白盒测试有哪些覆盖标准?试对它们的检错能力进行比较.6. 采用黑盒技术设计测试用例有哪几种方法?这些方法呼有什么特点?7. 简要说明如何划分等价类?8. 用等价类划分的方法设计测试用例的步骤是什么?9. 使用边界值分析方法设计测试用例的原则有哪些?10. 软件测试过程中需要哪些信息?11. 软件测试要经过哪些步骤?这些测试与软件开发各阶段之间有什么关系?12. 单元测试有哪些内容?测试中采用什么方法?13. 什么是集成测试?为什么要进行集成测试?14. 非渐增式测试与渐增式测试有什么区别?15. 渐增式测试中组装模块的方法有哪些?各有什么优点和缺点?16. 什么是确认测试?该阶段有哪些工作?17. 调试的目的是什么?调试有哪些技术手段?第八章软件维护1. 软件维护有哪些内容?2. 什么是非结构维护?非结构化维护的特点是什么?3. 什么是结构化维护?结构化维护的特点是什么?4. 软件维护困难的原因是什么?5. 影响软件维护代价的因素有哪些?6. 软件维护费用的度量模型是什么?7. 软件维护的流程是什么?8. 维护技术有哪些?9. 软件维护的副作用有哪些?10. 如何控制因修改而引起的副作用?11. 什么是软件可维护性?可维护性度量的特性是什么?12. 提高可维护性的方法有哪些?13. 为了保证软件的可维护性,需要做哪些质量保证检查?14. 好的文档的作用和意义是什么?第九章软件开发的增量模型1. 瀑布模型有何局限性?2. 增量模型的基本思想是什么?3. 渐增模型有几种?各有何特点?4. 快速原型模型有几种?各有何特点?5. 快速原型模型的基本思想是什么?6. 运用原型的策略有几种?7. 使用快速原型方法构造原型时,对原型的要求是什么?8. 原型特性分为几种类型?9. 快速原型模型的开发步骤是什么?10. 构造原型的技术有哪些?11. 评价快速原型模型的优缺点.12. 原型的作用是什么?13. 什么情况下适宜使用原型?什么情况下不宜使用原型?第十章面向对象的方法1. 简述对象,类,类结构,消息方法的基本概念.2. 传统开发方法存在的问题什么?3. 为什么说用结构化方法开发的软件,其稳定性,可修改性和可重用性都比较差?4. 简述面向对象的特征.5. 继承性和多态性的好处是什么?6. 简述面向对象的要素.7. 面向对象分析模型的用途是什么?8. 简述对象模型的特征,举现实世界的例子,给出它的一般化关系,聚集关系的描述.9. 简述动态模型的特征,说明事件,事件跟踪图,状态,状态图的含义.10. 简述功能模型的特征.11. 简述三种分析模型的关系.12. 简述对象建模的过程.13. 简述动态建模的过程.14. 简述功能建模的过程.15. 面向对象设计准则是什么?16. 简述面向对象设计的启发规则.17. 系统设计的内容是什么?18. 对象设计的内容是什么?19. 在面向对象程序设计中,为适应面向对象方法所特有的概念(例如继承性)而必须遵循哪些新准则?20. 在类的实现中,利用既存类的途径是什么?21. 面向对象软件的测试如何进行?第十一章软件质量与质量保证1. 软件质量的含义是什么?2. 影响软件质量的因素有哪些?3. 什么是软件质量保证?4. 软件质量保证的主要功能是什么?5. 软件质量保证策略是什么?6. 软件质量保证的主要任务是什么?7. 说明McCall软件质量度题模型.8. 说明ISO的软件质量评价模型.9. 软件复杂性度量的主要参数有哪些?10. 程序复杂性的度量方法有哪些?11. McCabe度量法的缺点是什么?12. 什么是软件的可靠性?它们能否定量计算?13. 为什么要进行软件评审?软件设计质量评审与程序质量评审都有哪些内容?14. 提高软件质量和可靠性的技术有哪些?15. 说明容错软件的定义?16. 说明容错的一般方法?17. 说明容错系统的设计过程.第十二章软件工程管理1. 说明软件工程管理的重要性.2. 软件工程管理包括哪些内容?3. 软件项目计划中包括哪些内容?4. 软件开发成本估算方法有哪几种?各有什么特点?5. 画出表示软件任务开发并行性的网络图.6. 软件质量保证应做好哪几方面的工作?7. 什么是软件配置管理?什么是基线?8. 请叙述软件工程过程中版本控制与变更控制处理过程.9. 软件工程的意义是什么?都有哪些软件过程标准?10. 请说明软件文档的作用?软件开发项目生存期各阶段都包含哪些文档?第十三章软件开发环境1. 什么是软件开发环境?请列出其发展情况.2. 软件开发环境的基本要求是什么?3. “软件开发环境应是高度集成的一体化的系统”的含义是什么?4. 软件开发环境应具体高度的通用性.在些,通用性包括哪些方面?5. “软件开发环境应易于定制,裁剪或扩充以符合用户要求”,在此,”定制”,”裁剪”,”扩充”的含义是什么?6. 请叙述软件开发环境的分类.7. 何谓软件工具?通常包含哪几部分?8. 当今软件工具发展有何特点?9. 什么是CASE?CASE工具有哪些分类?10. 请叙述集成化CASE的五级模型.11. CASE工作台有哪些分类?。
第一章1、软件概念:由计算机程序,数据,软件文档组成软件的特点:无法直接观察它的物理形态,只能通过观察他的是实际运行情况来了解他的功能特性和质量等;人们在分析设计开发测试过程以及软件开发项目的管理过程中渗透了大量的人类的脑力劳动;不存在磨损和老化但存在缺陷维护和技术更新的问题;开发运行依赖一定的计算机系统环境;具有可复用性软件的分类:按功能分:系统支撑应用软件;按服务对象:通用定制软件;按规模:大中小型软件;按工作方式:实时分时交互式批处理2、软件危机:是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件的开发与维护过程中出现一系列严重问题的现象。
主要表现:●开发人员开发的软件产品不能完全满足用户的需求;●软件产品的质量难以得到保障;●开发周期开发经费和维护费用很难被准确估计从而给项目的管理带来很多麻烦;●随着技术的更新,用户的扩大,已有的软件产品不能灵活地适应环境的改变;●软件文档不完备并且存在文档内容与软件产品不符的情况。
原因:①软件开发是一项复杂的工程,需要用科学的工程化思想来组织和指导软件开发的各个阶段②没有完善的质量保证体系③软件文档的重要性没有得到软件开发人员和用户的足够重视④从事软件开发的专业人员对这个产业认识不够充分缺乏经验⑤软件独有的特点也给软件的开发和维护带来困难3、软件工程是指应用计算机科学与技术,数学和管理学的原理,运用工程学理论方法和技术,研究和指导软件开发和演化的一门交叉学科。
软件工程的目标:●使软件开发的成本控制在预计的合理范围内;●使软件产品的各项功能和性能能够满足用户需求;●提高软件产品的可靠性;●使生产出来的软件产品易于移植维护升级和使用;●使软件产品的开发周期能够控制在预计的合理时间范围内。
软件工程学科内容:●软件工程原理过程方法模型管理度量环境应用。
软件工程的基本原则:●将软件的生命周期划分为多个阶段,对各个阶段实施严格的项目管理;●坚持阶段评审制度已确保软件产品的质量;●实施严格的产品控制以适应软件规格的变更;●采用现代程序设计技术;开发出来的产品应该能够清楚地被审查;●合理地安排软件开发小组人员并且开发小组的人员要少而精;●不断改进软件工程的实践。
全国2024年秋季自考本科软件工程02333考试试题一、单项选择题1、需求规约的基本性质包括重要性和稳定性程度、一致的、完整的和______。
A.可修改的B.可复用的C.可测试的D.无歧义的2、“与所规约的系统执行之间的偏差”是指______。
A.错误B.失效C.故障D.误差3、在常见的软件开发模型中,主要用于支持面向对象技术软件开发的是______。
A.喷泉模型B.螺旋模型C.增量模型D.瀑布模型4、黑盒测试技术又称为功能测试技术,包括事务处理流程技术、定义域测试技术和______。
A.路径测试技术B.用例测试技术C.状态测试技术D.结构测试技术5、有效性测试的目标是发现软件实现的功能与下列哪个选项不一致,正确的是______。
A.需求规格说明书B.概要设计说明书C.详细设计说明书D.测试计划6、RUP设计阶段的主要活动不包含______。
A.程序设计B.体系结构设计C.用况设计D.类设计7、《ISO/IEC软件生存周期过程12207-1995》标准按过程主体把软件生存周期过程分为基本过程、组织过程和______。
A.供应过程B.开发过程C.测试过程D.支持过程8、集成化能力成熟度模型(CMMI)针对每个过程域设定了能力等级,其中最高级为______。
A.3级B.4级C.5级D.6级9、结构化分析方法给出了一种能表达功能模型的工具是______。
A.HIPO图B.PAD图C.N-S图D.DFD图10、软件结构化设计中,支持“自顶向下逐步求精”的详细设计,并且能够以一种结构化方式严格地控制从一个处理到另一个处理的转移,这个详细设计工具是______。
A.PAD图B.程序流程图C.DFD图D.N-S图11、类的状态机一般有几种不同的运行状态,其中处于等待接收事件,接收处理完事件后又进入等待状态,通常采用______。
A.IdleB.InitializingC.CommandD.Active12、下列不属于创建一个系统的类图步骤是______。
知识点1软件工程基本概念1.软件定义:是计算机系统中与硬件相互依存的另一部分,是包括2.软件的特点:1)软件是一种逻辑实体,而不是物理实体,具有抽象性,是计算机的无形部分;2)软件的生产与硬件不同,它没有明显的制作过程;3)软件在运行、使用期间不存在磨损、老化问题;4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题;5)软件复杂性高,成本昂贵;6) 软件开发涉及诸多的社会因素3.软件的分类:按照功能可以分为:应用软件、系统软件、支撑软件(或工具软件)a应用软件是为解决特定领域的应用而开发的软件。
如:教务管理系统、财务管理系统等。
b系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。
如:操作系统、数据库管理系统等。
c支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具软件。
比如:编码工具软件、测试工具软件4.软件危机软件危机是指在软件的开发和维护过程中所遇到的一系列严重问题。
软件危机主要体现在以下几个方面:①软件开发的实际成本和进度估计不准确②开发出来的软件常常不能使用户满意③软件产品的质量不高,存在漏洞,需要经常打补丁④大量已有的软件难以维护⑤软件缺少有关的文档资料⑥ 开发和维护成本不断提高,直接威胁计算机应用的扩大⑦ 软件生产技术进步缓慢,跟不上硬件的发展和人们需求增长5.软件工程a.软件工程概念的出现源自软件危机。
b.软件工程的基本要素方法:完成软件工程项目的技术手段;工具:支持软件的开发、管理、文档生成;过程:支持软件开发的各个环节的控制、管理。
C. 软件工程的核心思想:把软件产品看作是一个工程产品来处理。
知识点2软件生命周期1. 将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。
2. 软件生命周期一般划分为定义、开发和维护3个阶段: 定义阶段:可行性研究、需求分析2个阶段;开发阶段:概要设计、详细设计、编码实现和测试4个阶段; 维护阶段:使用、维护、退役阶段。
绪论1、什么是软件工程?软件工程和计算机科学有何区别?答:软件工程是以计算机科学理论及其他有关学科旳理论为指导,采用工程化旳概念、原理、技术和措施进行软件旳开发和维护,把通过时间证明是对旳旳管理措施和目前可以得到旳最佳旳技术、措施相结合,以期用较少旳代价获取高质量旳软件。
计算机科学侧重于理论研究,其成果可应用于软件工程,而软件工程则强调怎样有效旳建造一种软件系统。
2、什么是软件?答:计算机软件是与计算机系统操作有关旳程序、规程、规则及任何与之有关旳文档及数据;3、什么是软件危机?分析其产生旳原因与挣脱危机旳措施,你认为目前已经挣脱软件危机了吗?请阐明理由。
软件危机是指在计算机软件旳开发和维护过程中所碰到旳一系列严重问题。
重要是两个问题:(1)怎样开发软件,怎样满足对软件旳日益增长旳需求;(2怎样维护数量不停膨胀旳已经有软件;软件危机旳出现,究其原因,首先是由软件自身旳特点引起旳,如软件越来越复杂,软件故障难于检测,工作量难以估计;另首先则是由于软件开发和维护措施不妥所导致旳,如软件旳个体化特性太强等。
为了挣脱软件危机所导致旳困境,提出软件工程旳概念,其重要思绪是:要把人类长期以来从事多种工程项目所积累起来旳行之有效旳原理,概念,技术和措施,尤其是人类从事计算机硬件研究和开发旳经验教训,应用到软件旳开发和维护中来。
我认为我国目前尚未完全挣脱软件危机,由于伴随经济发展,各行各业对软件人才旳需求不停扩大,由于我国旳软件人才缺口仍旧很大,导致了某些行业内软件开发进度难以预测,软件开发成本难以控制,顾客对产品功能难以满足,软件产品质量无法保证,软件产品难以维护,软件缺乏合适旳文档资料。
4、软件产品旳特性是什么?软件是一种逻辑产品,具有无形性;软件产品旳生产重要是研制;软件不存在磨损和老化问题,但存在退化问题;软件产品旳生产重要是脑力劳动;软件产品生产成本昂贵,目前生产方式尚未挣脱手工生产方式;软件具有“复杂性”,其开发和运行常受到计算机系统旳限制。
《软件工程》复习重点第一章绪论第一节软件工程概念的提出与发展1.软件危机(1)速度:软件的发展水平远远滞后于硬件的发展水平,生产率低下,软件制造仍然是一种人工集约生产方式(2)质量:软件的质量低下,不能满足用户的需求、适应性差(3)成本:软件开发成本居高不下软件开发的速度、软件制品的质量、软件开发成本是软件工程的三个核心问题。
2.软件工程的发展近几年,软件复用技术:构件技术、平台技术、需求工程技术、领域分析技术、应用集成技术等。
第二节软件开发的本质1.软件软件=程序+文档2.软件开发的本质:“映射”,即实现问题空间的概念和处理逻辑到解空间的概念和处理逻辑之间的映射。
3.系统建模运用所掌握的知识,通过抽象,给出系统的一个结构。
4.模型模型是一个抽象。
模型是在特定意图下所确定的角度和抽象层次上对物理系统的描述,通常包含对该系统边界的描述、对系统内各模型元素以及它们之间关系的语义描述。
5.系统模型的类型(1)概念模型:描述软件是什么(2)软件模型:实现概念模型的软件解决方案。
包括设计模型、实现模型和部署模型。
第二章需求获取第一节需求与需求获取1.需求的定义一个需求是有关一个“要予构造”的陈述,描述了待开发产品/系统功能能力、性能参数或其它性质。
2.需求的基本性质(1)必要的(2)无歧义的(3)可测的(4)可跟踪的(5)可测量的3.需求的分类★(1)功能需求,是整个需求的主体。
(2)非功能需求:性能需求、外部接口需求、设计约束和质量属性需求。
能够区分哪些是功能需求,哪些是性能需求。
4.接口需求的类别(1)用户接口(2)硬件接口(3)软件接口(4)通信接口(5)内存约束(6)运行(7)地点需求5.设计约束需求(1)法规政策(2)硬件限制(3)与其它应用的接口(4)并发操作(5)审计能力(6)控制功能(7)高级语言要求(8)握手协议(9)应用的关键程度(10)安全和保密6.质量属性(1)可靠性(2)存活性(3)可维护性(4)用户友好性7.需求发现的技术(1)自悟(2)交谈(3)观察(4)小组会(5)提炼第二节需求规约(SRS)1.需求规约的定义★是一个软件/产品/系统所有需求陈述的正式文档,它表达了一个软件/产品/系统的概念模型。
一,第一章1.软件工程→1968年的NATO会议上提出解决“软件危机”2.倡导工程原理,原则,方法进行软件开发,以期解决“软危”3.软件工程:用计算机科学理论和技术和工程管理原则方法,按预算,进度满足用户要求的软件产品工程。
4.软工两时间:1. 60-80年代,系统规模,复杂性,关键领域应用,提出了waterfall, C, Pascal, Ada; Jackson方法,结构化方法。
2. 80年代后大量软件的实践,过程支持,软件生产技术,复用技术,生产管理。
《软件和存周期过程》,C++, Eiffel, Smalltalk5.软件=程序+文档,是逻辑实体,“无形”6.程序=处理对象+处理规则7.文档=理解程序所需的阐述性资料8.软件开发的本质:不同抽象层术语+处理逻辑之间的“映射”9.建模的方法:结构化方法,面向对象方法,诸多面向数据结构方法10.模型:待建系统的任意抽象,包括基本能力,特性,或其他方面;抽象上对物理系统的描述,系统边界,关系的主义描述。
11.软件系统模型:1,概念模型(用户)2,软件模型(开发者)a)需求→概念模型b)设计→软件模型c)实现→软件模型d)部署→软件模型12.软件开发有技术和管理上的问题二,第二章1.正确定义问题,是解决问题的基础2.需求是“要予构造”的陈述,描述了软件“能力”“性能参数”“其他性质”3.需求的性质:a)必要b)无歧义c)可测/测量d)可跟踪4.验证需求是不是歧义→需求复审5.需求分类:功能/非功能(性能,外部接口,设计约束,质量属性),6.需求发现:自悟,交谈,观察,小组会,提炼a)自悟要求高,要有想象力/需求不正确b)交谈依赖“正确提问”“揭示本意”/不能认识到合理需求→复审c)观察要有洞察力/客户抵触,客户认为熟悉了业务d)小组会人力资源,良好的需求发现能力,达成共识/客观条件限制,互相矛盾的需求e)提炼要有想像力和需求标识力熟悉技术和法规/无法验证需求是否正确7.需求规约是陈述的正式文档,表达概念模型a)重要性和稳定性程度b)可修改c)完整d)一致8. 需求规约表达:非形式化(规模小,不复杂,小型软件),半形式和形式化(主要为了验证程序正确)9. 需求规约作用:a) 技术合同,产品功能和环境体现b) 管理控制点c) 正式,受控的起点d) 初始测试计划,用户系统操作描述10. 需求规约不是一个设计文档,用于设计的文档,也不是进度和规划文档三,第三章1.软件需求中三挑战:1. 问题空间理解2. 人与人之间通信3. 需求的变化性2.20世纪70年代提出结构化方法3.基本术语1. 数据流程2. 加工3. 数据存储4. 数据源和数据潭4.数据流图DFD P375.按功能分解的设计思想:自顶向下,逐步求精6.数据字典:[=]定义为;[|]或者;[+]顺序;[{}]重复;[m.n]子界7.数据结构3种条目:数据流条目;数据存储条目;数据项条目8.结构化语言是形式化语言和自然语言之间的语言9.判定表;判定树P4311. 图元数7正负212. 15%的错误源自错误的需求13. 总体设计:模块和模块调用14. 总体设计:模块结构图/层次图/HIPO 图P4515. “高内聚,低耦合”16.数据流图分为:变换型和事务型17.模块化,软件分为简单的高内聚低耦合的模块(两部分:接口和模块体)18.耦合:依赖程度的度量。
软件工程知识点1.软件工程概述1.1 软件工程定义1.2 软件工程的目标和原则1.3 软件工程的重要性1.4 软件工程发展历程2.软件过程模型2.1 瀑布模型a. 瀑布模型的特点b. 瀑布模型的优缺点c. 瀑布模型的应用场景2.2 敏捷开发模型a. 敏捷开发模型的特点b. 敏捷开发模型的优缺点c. 敏捷开发模型的应用场景2.3 增量模型a. 增量模型的特点b. 增量模型的优缺点c. 增量模型的应用场景3.软件需求工程3.1 软件需求定义与分类3.2 软件需求分析技术a. 面向对象分析b. 数据流图c. 数据字典3.3 软件需求规格说明3.4 软件需求验证与确认4.软件设计4.1 结构设计a. 结构设计的原则b. 结构设计的方法4.2 行为设计a. 行为设计的原则b. 行为设计的方法4.3 界面设计a. 界面设计的原则b. 界面设计的方法5.软件构建5.1 编码规范5.2 软件编码技术a. 面向对象编程b. 结构化编程c. 测试驱动开发5.3 软件测试a. 软件测试的基本概念b. 软件测试的方法5.4 软件集成与发布6.软件项目管理6.1 软件项目计划a. WBS(工作分解结构)b. 进度计划6.2 软件项目团队管理a. 组织结构b. 项目团队沟通与协作7.软件质量保证7.1 质量基础概念7.2 软件质量评估7.3 软件配置管理7.4 软件过程改进8.软件维护与升级8.1 软件维护类型8.2 维护阶段的活动8.3 软件升级与迭代附件:1.示例项目需求规格说明书2.示例项目设计文档3.示例代码库法律名词及注释:1.《著作权法》:保护软件著作权的法律法规。
2.《商标法》:保护软件商标权的法律法规。
3.《计算机软件保护条例》:明确了计算机软件的保护范围和保护措施。
《软件工程》(课程代码02333)第一大题:单项选择题1、“软件工程的概念是为解决软件危机而提出的”这句话的意思是【】• A.强调软件工程成功解决了软件危机的问题• B.说明软件危机的存在总是使软件开发不像传统工程项目那样容易管理• C.说明软件工程这门学科的形成是软件发展的需要• D.说明软件工程的概念,即:工程的原则、思想、方法可解决当时软件开发和维护存在的问题参考答案:C2、瀑布模型的主要特点是【】• A.将开发过程严格地划分为一系列有序的活动• B.将开发过程分解为阶段• C.提供了有效的管理模式• D.缺乏灵活性参考答案:A3、在软件工程的需求分析阶段,不属于问题识别内容的是[ ]• A.功能需求• B.性能需求• C.环境需求• D.输入/输入出需求参考答案:D4、画某系统的数据流图时,顶层图有[ ]• A.0张• B.1张• C.2张• D.3张及其以上参考答案:B5、软件模块内聚性最强的是[ ]• A.功能内聚• B.通信内聚• C.偶然内聚• D.逻辑内聚参考答案:D6、最早提出软件系统维护问题的阶段是【】• A.可行性分析• B.需求分析• C.概要设计• D.详细设计参考答案:B7、SD(结构化设计)方法设计的结果是【】• A.模块• B.模块结构图• C.模块的算法• D.数据流图参考答案:B8、在进行软件测试时,首先应当进行以下哪项测试,然后再进行组装测试,最后再进行有效性测试【】• A.单元测试• B.系统羽4试• C.集成测试• D.确认测试参考答案:A9、软件详细设计阶段的任务是【】• A.算法与数据结构设计• B.功能设计• C.调用关系设计• D.输入/输出设计参考答案:A10、下列属于静态测试方法的是【】• A.黑盒法• B.路径覆盖• C.白盒法• D.人工检测参考答案:D11、Fortran语言主要作为以下哪个方面的语言【】• A.科学工程计算• B.系统软件• C.事务处理• D.人工智能参考答案:A12、用结构化语言来描述加工逻辑的外层结构时,以下不属于基本结构的是【】• A.顺序结构• B.选择结构• C.嵌套结构• D.重复结构参考答案:C13、可维护软件的主要特性包括【】• A.可理解性、可修改性、可移植性• B.可使用性• C.可维护性、可使用性、可靠性• D.可测试性参考答案:A14、程序设计语言不具有的特性是【】• A.心理特性• B.工程特性• C.应用特性• D.技术特性参考答案:C15、下列不属于项目进度安排主要方法的是【】• A.工程网络图• B.Gantt图• C.进度结构图• D.任务资源表参考答案:C16、下列不属于通常冗余技术的是【】• A.结构冗余• B.信息冗余• C.时间冗余• D.代码冗余参考答案:D17、下列工具中,属于需求追踪工具的是【】• A.在DBMS上的应用运行工具• B.追踪和状态报告• C.访问和版本控制机构• D.文件和修改管理参考答案:A18、关于软件测试的目的,下面观点错误的是【】• A.为了发现错误而执行程序的过程• B.一个好的测试用例能够发现至今尚未发现的错误• C.证明程序是正确、没有错误的• D.一个成功的测试用例是发现了至今尚未发现的错误的测试参考答案:C19、在制定项目开发计划文档时,不包含的内容是【】• A.项目概述• B.实施计划• C.测试计划• D.交付期限参考答案:C20、面向对象的开发方法中,以下哪种方法原是面向Ada语言的,并处于面向对象开发方法的奠基性地位【】• A.Booch方法• B.coad方法• C.UML语言• D.OMT方法参考答案:A21、可行性研究要进行一次_____需求分析。
第一章绪论简述软件危机与软件工程的概念以及提出软件工程概念的目的。
201804 201810(1)软件生产率、软件质量远远满足社会发展的需求,成为社会、经济发展的制约因素,把这一现象称为软件危机;(2)软件工程是应用计算机科学理论和技术以及工程管理原则和方法,按预算和进度实现满足用户要求的软件产品的工程,或以此为研究对象的学科;(3)软件工程概念的提出是倡导以工程的原理、原则和方法进行软件开发,以期解决出现的软件危机。
简述软件工程的概念与发展201404发展:60年代末—80年代初,主要围绕系统实现技术、软件质量和软件工程管理;80年代以来,主要表现为软件复用技术、软件生产管理的研究和实践。
简述计算机软件的概念,以及提出软件工程概念的目的。
201704 2016101.计算机软件一般是指计算机系统中的程序及其文档。
2.其中,程序是计算机任务的处理对象和处理规则的描述;3.文档是为了理解程序所需的阐述性资料。
4.软件工程概念的提出是倡导以工程的原理、原则和方法进行软件开发,以期解决出现的软件危机。
简述软件开发的本质及其涉及到的问题。
201904 201504本质:不同抽象层术语之间的“映射”,以及不同抽象层处理逻辑之间的“映射”。
问题:(1)如何实现这样的映射,这是技术层面上的问题;(2)如何管理这样的映射,以保障映射的有效性和正确性。
这是管理层面上的问题。
简述软件开发的本质及其基本途径。
201710 201510本质:实现问题空间的概念;处理逻辑到解空间的概念;处理逻辑之间的映射。
途径:系统建模。
简述何谓系统模型以及软件开发中所涉及的系统模型分类。
模型是待建系统的任意抽象。
该抽象是在特定意图下所确定的角度和抽象层次对物理系统的一个描述,描述其中的成分和成分之间所具有的特定语义的关系,还包括对该系统边界的描述;系统模型分为两类:概念模型和软件模型。
软件模型又可进步分为设计模型、实现模型和部署模型等。
第二章软件需求与软件需求规约简述需求的概念和基本性质。
201510 201404需求:有关一个“要予构造”的陈述,描述了待开发产品/系统功能上的能力、性能参数或其他性质。
5个基本性质:①必要性,该需求是用户所要求的;②无歧义性,该需求只能用一种方式解释;③可测性,该需求是可进行测试的;④可跟踪性,该需求可从一个开发阶段跟踪到另一个阶段;⑤可测量性,该需求是可测量的。
简述需求规约的概念和基本性质。
201804 201904 201110需求规约是一个软件系统所有需求陈述的正式文档,它表达了一个软件产品的概念模型。
基本性质:1.重要性和稳定程度。
按需求的重要性和稳定性,对需求进行分级;2.可修改的。
在不过多影响其他需求的前提下,可以容易修改一个单一需求;3.完整性。
没有被遗漏的需求;4.一致性。
不存在互斥的需求。
简述需求规约在项目开发中的基本作用。
201610 201301(1)是软件开发组织和用户之间一份事实上的技术合同书,是产品功能及其环境的体现。
(2)对于项目的其余大多数工作,需求规约是一个管理控制点。
(3)对于产品/系统的设计,需求规约是一个正式的、受控的起始点。
(4)是创建产品验收测试计划和用户指南的基础,即基于需求规约一般还会产生另外两个文档:初始测试计划和用户系统操作描述。
简述常用的初始需求发现技术。
201704 201504 201310(1)自悟:需求人员把自己作为系统的最终用户,审视该系统并提出问题。
(2)交谈:需求人员通过提出问题/用户回答这一方式,直接询问用户需要的是一个什么样的系统。
(3)观察:通过观察用户执行其现行的任务和过程,了解系统运行的环境。
(4)小组会:举行客户和开发人员的联席会议,与客户组织的一些代表共同开发需求。
(5)提炼:复审技术文档,并提取相关的信息。
简述软件需求的分类及其关系。
201201分类:功能需求,非功能需求。
非功能需求分为:性能需求、外部接口需求、设计约束、质量属性。
关系:一般来说,功能需求是整个需求的主体,没有功能需求,就没有派生的其他功能需求,就没有非功能需求。
第三章结构化方法简述结构化分析建模工具和步骤201404工具:结构化分析方法给出了一种表达系统功能模型的建模工具:数据流图。
简述结构化分析建模的基本步骤。
201710(该过程属于“自顶向下,功能分解”形式)助记口诀:建图、求精、字典、加工。
1)建立系统环境图,确定系统语境2)自顶向下,逐步求精,建立系统的层次数据流图3)定义数据字典4)通过结构化自然语言、判定树、判定表等工具,描述加工简述结构化方法总体设计的任务、步骤和模式。
任务:把系统的功能需求分配到一个特定的软件体系结构中,建立系统的模块结构;步骤:将需求分析得到的系统数据流图DFD 转化为初始的模块结构图;再基于高内聚低耦合的设计原理,通过模块化,将初始的模块结构图转化为最终的,可供详细设计使用的模块结构图。
模式:变换设计和事务设计。
针对具有变换型流图和事务型的DFD ,简述总体设计的步骤。
201610(1)在软件总体设计中,通常以变换设计为主,事务设计为辅进行结构设计。
(2)首先利用变换设计,把软件系统分为输入、中心变换和输出3个部分,设计上层模块。
(3)然后根据各部分数据流图的结构特点,适当地利用变换设计和事务设计进行细化,得到初始的模块结构图。
(4)再按照“高内聚低耦合”的原则,对初始的模块结构图进行精化,得到最终的模块结构图。
简述变换设计的基本步骤。
201704第1 步:设计准备——复审并精化系统模型第2 步:确定输入、变换、输出这三部分之间的边界第3 步:第一级分解——系统模块结构图顶层和第一层的设计第4 步:“第二级分解”——自顶向下,逐步求精。
简述事务设计的基本步骤。
2018041.设计准备,复审并精化系统模型;2.确定事务处理中心;3.设计系统模块结构图的顶层和第一层;4.自顶向下,逐步求精。
简述变换设计与事务设计的区别及联系。
201504区别:(1)变换设计的目的是将变换型数据流图映射为模块结构图,它由3部分组成:获取数据、变换数据和输出数据,其中变换数据是核心。
为了协调这些模块的有序工作,还应设计一个主控模块来协调和控制其他模块。
变换设计比较机械。
(2)事务设计的目的是将事务型数据流图映射为模块结构图,事务设计都有一个明显的事务处理中心,事务中心需完成3个任务:接收输入数据、分析并确定对应的事务和选取与该事务对应的一条活动路径。
联系:在总体设计中,通常以变换设计为主,事务设计为辅进行结构设计。
什么是模块?什么是模块耦合?简述常用的模块耦合类型及其设计原则。
201904 201201模块是执行一个特殊任务的一个过程以及相关的数据结构;模块耦合是指不同模块之间相互依赖程度的度量;简述模块的控制域、作用域的概念,以及它们的启发式原则。
201604 201310控制域:指这个模块本身以及所有直接或间接从属于它的模块的集合。
作用域:指受该模块内一个判定所影响的所有模块的集合。
原则:尽量使该模块的作用域在其控制域之内。
简述结构化设计中启发式规则。
201510“高内聚低耦合”的启发式规则主要包括:1)改进软件结构,提高模块独立性。
2)力求模块规模适中。
3)力求深度、宽度、扇出和扇入适中。
4)尽力使模块的作用域在其控制域之内。
5)尽力降低模块接口的复杂度。
6)力求模块功能可以预测简述结构化方法详细设计的任务及目标。
201810任务:具体描述模块结构图中的每一个模块,即给出实现模块功能的实施机制,包括一组例程和数据结构,从而精确地定义了满足需求所规约的结构;目标:将总体设计阶段所产生的系统高层结构映射为以这些术语所表达的低层结构,也是系统的最终结构。
简述程序流程图的优缺点。
201604优点:是对控制流程的描绘很直观,便于初学者掌握。
缺点:(1)不是一种逐步求精的工具;(2)所表达的控制流,往往不受任何约束可随意转移,从而会影响甚至破坏好的系统结构设计;(3)不易表示数据结构。
第四章面向对象方法——UML什么是类? 什么是对象? ?什么是类的构成成分? 201210(1)类是一组具有相同属性、操作、关系和语义的对象的描述;(2)对象是类的一个实例;(3)类的构成成分包括:类名、属性、操作。
为什么说UML是一种可视化的建模语言,而不是一种特定的软件开发方法学?201510简述信息隐藏的概念及其意义。
201704(1)信息隐藏是指在每个模块中所包含的信息不允许其他不需要这些信息的模块访问。
(2)信息隐藏是实现模块低耦合的一种有效途径。
(3)但是,如果该模块是“绝对”信息隐藏的,那么这种模块对系统而言也是毫无意义的为了表达各类事物之间的关系,UML给出了哪些表达关系的基本术语?请简述其含义。
201504关联、泛化、细化、依赖简述关联、泛化、细化、依赖的概念,以及前三者与依赖的关系。
201610关联:是类目之间的一种结构关系,是对一组具有相同结构,相链的描述。
限定符:一个关联的属性或属性表。
角色:关联一端的类目对另一端的类目的一种呈现。
聚合:关联的一种特殊形式,表达的是一种“整体/部分”关系。
组合:聚合的一种特殊形式。
细化:是类目之间的语义关系,其中一个类目规约了保证另一个类目执行的契约。
简述泛化的概念及其约束。
201804 201710泛化:一般性类目(超类或父类)和它的较为特殊性类目(子类)之间的一种关系,有时称为“is-a-kind-of关系。
4个约束:(1)完整(2)不完整(3)互斥(4)重叠。
单继承:如果一个类只有一个父类,则说它使用了单继承。
多继承:如果一个类有多个父类,则说它使用了多继承。
依赖:是一种使用关系,用于描述一个类目使用另一类目的信息和服务。
关联、泛化和细化都是一类特定的依赖。
简述用况图及其通常包含的模型元素。
201810(1)用况图是一种表达系统功能模型的图形化工具;(2)一个用况图通常包含6 个模型元素:主题、用况、参与者、关联、泛化和依赖。
什么是用况(Use Case)? 什么是用况图? 一个用况图通常包含哪些模型元素以及用况之间的关系。
201310(1)用况,从外延上说它表达了参与者使用系统的一种方式,从内涵上说它规约了系统可以执行的一个动作序列,并对特定的参与者产生可见的、有值的结果;(2)用况图是一种表达系统功能模型的图形化工具;(3)一个用况图通常包含的模型元素是:主题、用况、参与者、关联、泛化、依赖。
什么是状态? ? 什么是状态图? ? 简述实际应用中使用状态图的作用。
201201(1)状态是指类目中的一个实例在其生存中的一种条件或情况、所具有的对外呈现以及所能提供的服务;(2)状态图是显示一个状态机的图,强调从一个状态到另一状态的控制流;(3)实际应用中,使用状态图的作用:创建一个系统的动态摸型,创建一个场景模型。