软件工程复习材料
- 格式:doc
- 大小:179.00 KB
- 文档页数:15
可编辑修改精选全文完整版一、单选题(共20题,40分)1、使用数据流图,并不断细化的需求获取方法是()。
(2.0)A、简易的应用规格说明B、面向数据流自顶向下逐步求精C、访谈D、快速原型法正确答案: B2、Z语言是以()为基础的形式化规格说明语言。
(2.0)A、微积分B、概率C、图形D、一阶谓词演算正确答案: D3、HIPO是指(2.0)A、层次输入处理输出图或表B、层次功能结构图C、功能结构图D、输入处理输出图或表正确答案: A4、高铁调用系统最适宜采用()方法。
(2.0)A、有穷状态机B、 Petri网C、 Z语言D、一阶线性时态逻辑正确答案: B5、假设学生年龄的成绩输入范围为18-25,则根据等价类划分技术,下列划分正确的是()。
(2.0)A、可划分为2个有效等价类,2个无效等价类B、可划分为1个有效等价类,2个无效等价类C、可划分为2个有效等价类,1个无效等价类D、可划分为1个有效等价类,1个无效等价类正确答案: B6、用于并发系统,解决定时问题的形式化方法是()。
(2.0)A、 VDMB、 Z语言C、 Petri网D、一阶线性时态逻辑正确答案: C7、软件生命周期中所花费费用最多的阶段是(2.0)A、需求分析B、软件总体设计C、软件维护D、软件实现正确答案: C8、软件质量保证措施SQA不包括:(2.0)A、复审或评审B、软件测试C、程序正确性证明D、软件代码编写正确答案: D9、希望确定软件实现的功能是否与需求规格说明书一致,需进行()。
(2.0)A、单元测试B、有效性测试C、确认测试D、集成测试正确答案: C10、总体设计不包括:(2.0)A、体系结构设计B、数据库设计C、模块内算法设计D、逻辑数据结构设计正确答案: C11、关于类和对象的说法,正确的是(2.0)A、一个类只能有一个角色B、类的命名必须用动词C、类的所有对象都具有相同的属性和操作D、类是对象的实例,对象是类的抽象正确答案: C12、数据字典的基本功能是(2.0)A、数据库设计B、数据通信C、数据定义D、数据维护正确答案: C13、软件需求规格说明的内容不应该包括(2.0)A、主要功能B、算法的描述C、用户界面及其运行环境D、软件性能正确答案: B14、增量模型在添加新的模块时,有一个要求是()(2.0)A、需要更多的测试B、有足够的开发人员C、软件体系结构开放D、各个模块都要进行评审正确答案: C15、在软件详细设计过程中不采用的工具是(2.0)A、判定表B、PDLC、程序流程图D、DFD正确答案: D16、软件测试方法中,黑盒测试方法和白盒测试方法是常用的方法,其中黑盒测试方法主要用于测试(2.0)A、结构合理性B、软件外部功能C、程序正确性D、程序内部逻辑正确答案: B17、耦合是模块之间的相对独立性的度量。
三大块内容:软件危机与软件工程传统软件开发方法面向对象方法一、软件危机与软件工程:软件、软件危机、软件生存期、软件开发模型、软件管理1、软件:软件是能够完成预定功能和性能的可执行的计算机程序+使程序正常运行所需要的数据+描述软件开发过程及其管理、程序的操作和使用的有关文档。
文档:分开发、管理、用户、维护文档,作用是记录及解决不可视性、通信与交流、管理与维护、用户服务2、软件危机a)表现:软件成本高、难于控制开发进度、软件工作量估计困难、软件质量低、软件修改维护困难b)原因:需求问题(描述不精确、理解不一致)、管理问题、方法和工具问题、软件本身的特点3、软件生存期:a)三个时期:定义时期(软件计划、需求分析)—>开发时期(软件设计、编码实现、测试)—>使用和维护时期(维护)b)六个阶段:软件计划需求分析设计编码测试使用与维护c)生命周期方法特点:顺序性、依赖性,推迟程序的物理实现、质量保证的观点(利于尽早发现错误,如阶段文档、评审)4、软件开发模型a)瀑布模型:文档驱动i.阶段划分、分而治之、控制开发过程的复杂性ii.自顶向下、由抽象到具体,顺序进行优点:规范管理开发过程、文档驱动缺点:初期系统的需求难以完全确定、文档驱动、周期长b)原型模型:i.针对:软件开发初期需求难以确定ii.基本思想:快速建立原型,完善用户需求iii.优点:用户参与、快速iv.缺点:快速弱功能、对开发环境要求高c)螺旋模型(风险驱动)d)增量模型(模块、功能驱动)e)迭代模型f)喷泉模型5、软件管理a)区别于其他工业产品生产管理的特点b)主要内容:开发计划与进度管理、文档管理、人员组织管理、成本管理、质量管理二、传统软件工程方法:a)软件计划i.问题定义ii.可行性研究1.经济可行性2.技术可行性3.法律可行性b)需求分析i.结构化分析SAii.面向数据流的分析方法1.DFD四个组成部分(表示方法、命名)2.DFD作图:需求描述DFD3.层次分解法(保持父图和其子图的平衡)4.数据字典(符号)c)软件设计i.总体设计1.模块独立性:高内聚2.作用域是控制域的子集3.单入单出4.规模、深度、宽度、扇入、扇出适当ii.传统设计方法1.面向数据流的设计方法(数据流图)a)结构化设计SD-对应有SD结构化需求分析、SP结构化实现b)DFD软件结构(层次图)i.变换设计ii.事务设计c)优缺点2.面向数据结构的设计方法a)Jackson方法b)Jackson图i.三种元素间的逻辑关系:顺序、选择、重复ii.可描述两种数据结构:数据结构、程序结构c)思想:数据结构与程序处理过程相互转换d)步骤:I/O DS对应关系Program Structure细化求精e)优缺点:i.数据入手ii.简化数据处理程序的设计iii.模块与独立性原则没有给予应有的重视iv.求提供对复杂系统设计过程的支持3.Parnas方法iii.详细设计1.结构化程序设计SPa)高效率---良结构b)三种基本控制结构、单入单出2.过程设计的工具d)实现/编码i.语言1.功能等价2.描述问题方便性有差异a)例如:OOPL---非OOPLii.程序设计风格e)软件测试i.目标ii.方法1.正确性证明2.静态测试3.动态测试a)黑盒(功能)测试i.等价类划分ii.边界值分析iii.错误推测b)白盒(结构)测试i.语句覆盖ii.判定覆盖iii.条件覆盖iv.判定—条件覆盖v.条件组合覆盖iii.步骤f)软件维护i.四种类型1.校正性2.适应性3.完善性4.预防性ii.提高可维护性的措施三、面向对象方法(Object-oriented Method)a)OOM与CM对比:区别—优点i.思维方式iv. 稳定性ii.可重用性v. 可维护性iii.大型软件b)OOSE方法i.三个阶段、五个模型、E CASE第二章.传统软件工程方法:软件计划具体任务:项目定义、可行性分析、软件计划其中:可行性分析:1、可行性研究实质:可行性研究试一次大大压缩和简化了的系统分析和设计过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计过程。
软件工程复习提纲(附答案)软件工程第一章软件工程介绍1、软件的特性:P3软件是设计开发的,而不是传统意义上的生产制造;软件不会磨损;大多数软件仍是根据实际的客户需求制定的。
2、计算机软件的七大分类:P5系统软件、应用软件、工程/科学软件、嵌入式软件、产品线软件、Web应用软件、人工智能软件。
3、遗留系统发生系统演化的原因:P6软件需要修改其适应性,从而可以满足新的计算环境或技术的需求软件必须根据新的业务需求进行升级软件必须扩展以具有与更多现代系统和数据库的协作能力软件架构必须进行改建以适应多样化的网络环境4、软件神话:管理者,用户,从业者P135、软件的定义:P3软件是:指令的集合,通过执行这些指令可以满足预期的特征,功能和性能需求;数据结构,它使得程序可以充分利用信息;描述程序操作和使用的文档。
第二章过程综述1、软件工程的三个要素:工具,过程,方法P8过程:软件过程将各个技术层次结合在一起,并实施合理地,及时地开发计算机软件方法:为建造软件提供技术上的解决方法。
工具:为过程和方法提供自动化或半自动化的支持。
2、通用软件过程框架:沟通,策划,建模,构建,部署P9沟通:这个框架活动包含了与客户之间大量的交流和协作,还包括需求获取以及其他相关活动策划:指为后续的软件工程工作制定计划。
建模:它包括创建模型和设计两方面。
创建模型有助于客户和开发人员更好得理解软件需求;设计可以实现它。
构建:它包括编码和测试。
部署:软件交付到用户,用户对其进行评测并给出意见3、能力成熟度模型:P22第0级:不完全级;第1级:已执行级;第2级:已管理级;第3级:已定义级;第4级:已定量管理级;第5级:优化级;第三章过程模型1、简述惯例框架包含的主要活动:P19沟通、策划、建模、构建、部署2、简述瀑布模型所包含的主要框架活动:P24沟通、策划、建模、构建、部署3、简述瀑布模型在实际运用中所面临的问题(缺点):P24实际的项目很少遵守瀑布模型提出的顺序客户通常难以清楚地描述所有的需求客户必须有耐心,因为只有在项目的后期,他们才能看到可执行的程序。
软件工程复习参考资料1﹑软件的概念软件是计算机系统中与硬件相互依存的另一部分,软件包括程序、数据以及相关文档的完整集合。
2、软件的特性(简答题)⑴形态特性。
(6)管理特性。
⑵智能特性。
(7)环境特性。
⑶开发特性。
(8)维护特性。
⑷质量特性。
(9)废弃特性。
⑸生产特性。
(10)应用特性。
3﹑软件危机爆发的原因?主要表现在哪些方面?怎样消除?软件开发技术的进步未能满足发展的要求。
软件开发周期长、成本高、质量差、维护困难。
表现方面:(1) 用户对开发出的软件很难满意。
(2) 软件产品的质量往往靠不住。
(3) 一般软件很难维护。
(4) 软件生产效率很低。
(5) 软件开发成本越来越大。
(6) 软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。
消除:用工程化的思想来开发软件。
4﹑什么是软件工程?它目标和内容是什么?软件工程:就是用科学的知识工程和技术原理来定义,开发,维护软件的一门学科。
软件工程的目标:付出较低开发成本;达到要求的功能;取得较好的性能;开发的软件易于移植;只需较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。
软件工程的内容:研究内容包括开发技术和开发管理两个方面。
开发技术主要研究:软件开发方法,开发过程,开发工具和环境。
开发管理主要研究:软件管理学,软件经济学,软件心理学。
5﹑什么是软件生存周期?它有哪几个活动?软件生存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。
包括:可行性分析和项目开发计划,需求分析,概要设计,详细设计,编码,测试,维护。
6﹑什么是软件生存周期模型?有哪些主要模型?描述软件开发过程中各种活动如何执行的模型。
对软件开发提供强有力的支持,为开发过程中的活动提供统一的政策保证,为参与开发的人员提供帮助和指导,是软件生存周期模型化技术的基础,也是建立软件开发环境的核心。
主要模型:瀑布模型,增量模型,螺旋模型,喷泉模型,基于知识的模型,变换模型。
软件工程知识点复习资料一、软件工程概述软件工程是一门研究如何以系统性的、规范化的、可度量的方法进行软件开发、运行、维护和管理的学科。
它涵盖了软件开发生命周期的各个阶段,包括需求分析、系统设计、编码实现、测试和维护等。
二、软件生命周期与开发模型1. 软件生命周期包括需求分析、系统设计、编码实现、测试和维护等阶段。
不同的项目可以采用不同的开发模型,常见的有瀑布模型、迭代模型和敏捷模型。
2. 瀑布模型是一种线性顺序开发模型,各个阶段严格按序进行,适用于需求较为稳定的项目。
3. 迭代模型将软件开发过程划分为多个迭代阶段,每个迭代阶段都包含需求分析、设计、编码和测试等活动,适用于需求较为不确定或需要持续改进的项目。
4. 敏捷模型强调快速响应需求变化和灵活合作,通过迭代、增量的方式进行开发,适用于需求频繁变更的项目。
三、需求工程1. 需求分析是软件开发的第一步,包括需求获取、需求分析、需求建模等过程,目的是明确系统的功能和性能需求,并与客户达成一致。
2. 需求获取可以通过面谈、问卷调查、观察等方式进行,需求分析则要对已收集到的需求进行分析、整理和归纳。
3. 需求建模使用UML(统一建模语言)等工具,将需求表示为用例图、活动图、时序图等形式,便于后续的系统设计和编码实现。
四、设计与架构1. 系统设计是软件开发的关键阶段,包括软件架构设计和详细设计等过程,目的是指导后续的编码和测试工作。
2. 软件架构设计确定系统的整体结构、模块划分和模块间的关系,常见的架构风格包括层次结构、客户-服务器、面向对象等。
3. 详细设计是对系统模块的具体设计,包括数据结构设计、算法设计和接口设计等,常用的设计方法有结构化设计和面向对象设计。
五、编码实现与调试1. 编码实现是将设计阶段得到的设计方案转化为计算机可执行的代码,采用合适的编程语言和开发工具进行。
2. 编码时要注重代码的可读性、可维护性和可重用性,采用良好的编程风格和命名规范。
一、选择题:1、用例图中,用来表示用例的符号为( B ) 。
2、协作图中包含的元素包括(A ) 。
A. 对象 B. 链 C. 激活 D. 消息3、在类图中,哪种关系表达整体与部分的关系( D ) 。
A .泛化 B. 实现 C. 依赖 D. 聚合4、下列各种图形符号中,用来表示组成关系的符号为 (B )。
A. B. C. D.5 、(A )工具在软件的详细设计中不能使用。
A . DFD B. N-S 图 C. 流程图 D. PDL6 、 “软件危机”是指 (C )。
A. 计算机病毒的出现B. 利用计算机进行经济犯罪活动C. 软件开发和维护中出现的一系列问题D. 人们过分迷恋计算机系统7 、 快速原型是利用原型辅助软件开发的一种新思想,它是在研究 (A )的方法和技术中产生 的。
A. 需求阶段B. 设计阶段C. 测试阶段D. 软件开发的各个阶段8、从严格意义上讲,下列 4 个选项中属于顺序图的元素是(ABCD ) 。
A.对象B. 参与者C. 消息D. 激活9、下列 UML 图形中, (ABCD )属于 UML 的动态视图。
A. 协作图B. 状态图C. 活动图D. 顺序图10、数据字典是软件需求分析阶段的最重要的工具之一,其最基本的功能是( D ) 。
A. 数据库设计B. 数据通信C. 数据关系描述D. 数据定义11、详细设计与概要设计衔接的图形工具是 (D )。
A. DFD 图B. 程序图C. PAD 图D. SC 图12 、UML 中,大多数建模者把节点分为(AC )A . 设备 B. 构件 C. 处理器 D. 显示器13 、(C)是一种特殊形式的状态机,用于对计算流程和工作流程建模。
A .时间图 B. 流程图 C. 活动图 D. 状态图14 、(A )描述从状态到状态的控制流程,常用来对系统的动态特征进行建模。
A. 状态图B. 序列图C. 协作图D. 活动图15、下列特点属于描述用例的特点的是( D ) 。
软工复习资源整理软件工程(Software Engineering)是一门关于软件开发过程、方法和工具的学科。
在软件工程的学习和实践中,充足的复习资源对于提高学习效果和应对考试至关重要。
本文将为大家整理一些软工复习资源,以帮助大家更好地准备软工考试。
一、教材和参考书籍1. 《软件工程导论》:作者Ian Sommerville,这是一本系统而全面地介绍软件工程的教材,对软件工程的基本概念、原理和方法有深入的解析,是软工复习的基础。
2. 《软件工程:实践者的研究方法》:作者Roger S. Pressman,这本书强调软件工程的实际应用和项目管理,对软件开发过程、需求分析、设计和测试等方面有详细的介绍,适合进一步深入学习软件工程的同学。
3. 《软件项目管理案例教程》:作者美国卫斯理理工大学的Joey F. George,这本书以案例的方式介绍软件项目管理的各个方面,包括项目计划、进度控制、配置管理等,对软件工程项目管理的重要知识点进行了详细的说明。
二、在线学习平台1. Coursera:Coursera是一个在线学习平台,提供了众多软件工程相关的课程,如软件开发流程、敏捷开发方法、软件测试等。
通过这些课程的学习,可以系统地学习软件工程的各个方面知识。
2. Mooc学院:Mooc学院是中国的一个在线学习平台,提供了一系列软件工程相关的课程,如软件需求工程、软件开发过程、软件配置管理等。
学生可以根据自己的需求,选择合适的课程进行学习。
三、开源项目参与开源项目是学习软件工程的一个重要途径,通过参与开源项目,可以锻炼自己的软件开发能力和团队协作能力。
下面是一些比较知名的开源项目:1. Apache项目:Apache是一个开源软件基金会,旗下有很多优秀的开源项目,如Apache Tomcat、Apache Hadoop、Apache Maven等。
参与这些项目的开发可以学习到先进的软件开发方法和工程实践。
2. Linux内核:Linux是一个成熟的开源操作系统,其内核是由一群开发者共同维护。
软件工程复习提纲I. 软件工程概述A. 定义与目标B. 发展历程C. 软件工程原则与方法论II. 软件开发过程A. 瀑布模型1. 阶段划分与任务2. 优点与缺点B. 增量模型1. 阶段划分与任务2. 优点与缺点C. 喷泉模型1. 阶段划分与任务2. 优点与缺点III. 需求工程A. 需求获取与分析1. 用户需求调研2. 需求规格化B. 需求验证与确认1. 需求评审2. 需求跟踪与控制IV. 软件设计A. 结构设计1. 模块化设计原则2. 模块间接口设计B. 数据设计1. 数据建模2. 数据库设计C. 用户界面设计1. 人机交互原则2. 界面布局与设计规范V. 软件构建A. 编码规范与标准1. 命名规范2. 代码注释B. 单元测试与集成测试1. 测试用例设计2. 测试工具与技术VI. 软件质量保证与控制A. 质量特性及度量1. 功能性2. 可靠性3. 可维护性4. 可测试性B. 缺陷管理1. 缺陷跟踪与报告2. 缺陷分析与修复VII. 软件项目管理A. 项目规划与组织1. 范围管理2. 人力资源管理B. 项目进度与成本控制1. 进度计划与跟踪2. 成本估算与控制VIII. 软件配置管理A. 版本管理1. 版本控制工具2. 分支与合并策略B. 变更管理1. 变更控制流程2. 变更影响分析IX. 软件工程伦理与职业责任A. 代码所有权与知识产权B. 软件开发道德标准X. 结语以上是软件工程复习提纲的架构,通过对各个主题的概要介绍和论述,有助于理解软件工程的基本概念、方法和流程,并为考试或复习提供了一个清晰的框架。
在准备复习时,可以根据这个提纲,进一步深入学习和了解各个主题中的具体知识点和案例。
软件工程是一门重要的学科,对于软件开发和项目管理都有着重要的指导意义,希望通过这个提纲的复习,能够帮助你更好地掌握软件工程领域的核心知识。
《软件工程》复习提纲第1章软件工程概论§1.1 引言主要是介绍软件发展的基本情况。
§1.2 软件概述1.什么是软件?它的特点是什么?软件是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档组成的完整集合。
可以理解为:软件= 程序+ 数据+ 文档2. 软件的特点(1)软件具有抽象特征。
(2)软件具有无明显制造过程的特征。
(3)软件无备件的特征。
(4)手工制作特征。
(5)成本昂贵特征。
3. 软件的分类4. 软件的发展为了解决软件危机,人们在软件开发中也不断改进和发展,在几十年发展中计算机软件开发经历了四个重要的阶段:※☐(1)程序设计阶段:40年代中期至60年代中期☐(2)程序系统阶段:60年代中期至70年代年代中期☐(3)软件工程阶段:70年代中期到90年代☐(4)第四代技术阶段:90年代以后§1.3 软件危机1.什么是软件危机?为什么为产生软件危机?软件危机是指在软件开发和维护中所产生的一系列严重的问题。
一是如何开发软件,满足用户对软件的需求,二是如何维护数量众多的已有软件在软件开发和维护的过程中存在这么多严重问题,一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。
(1)软件是计算机系统中的逻辑部件,缺乏“可见性”,且软件产品往往规模庞大,给软件的开发和维护带来客观的困难。
(2)软件一般要使用5~10年,在这段时间里,很可能出现开发时没有预料到的问题。
(3)软件开发技术落后,生产方式和开发工具落后。
(4)软件开发人员忽视软件需求分析的重要性,轻视软件维护。
2. 软件危机的表现形式其主要表现如下:(1)软件发展速度跟不上硬件的发展和用户的需求(2)对软件成本和进度估计不准确,用户不满意。
(3)软件产品质量差,可靠性不能保证。
(4)软件产品可维护性差。
(5)软件没有合适的文档资料。
3. 解决软件危机的途径(1)应该加强软件开发过程的管理(2)推广使用开发软件的成功技术与方法(3)开发和使用好的软件工具§1.4 软件工程1.什么是软件工程?它的目标是什么?软件工程是指导计算机软件开发和维护的工程学科。
软件工程师复习资料推荐在成为一名合格的软件工程师的道路上,学习和复习是非常重要的环节。
而选用适合的复习资料,可以帮助我们更加高效地掌握知识点,提升自己的技能。
本文将推荐一些优质的复习资料,供软件工程师们参考。
一、编程语言学习资料1.《Java核心技术》:由SUN公司的两位工程师编写,系统全面地介绍了Java语言的基础知识和进阶技巧,是Java程序员的必备参考书。
2.《Python编程:从入门到实践》:一本适合初学者的Python编程入门书籍,通过实际案例的演示和习题的训练,帮助读者快速入门Python编程。
3.《C++ Primer》:这是一本C++领域的经典教材,可以帮助读者全面掌握C++语言的基本概念和高级特性。
二、系统设计和架构学习资料1.《大型网站技术架构》:由阿里巴巴集团首席架构师李智慧所著,内容详尽介绍了大型网站的设计原理和重要技术,对于理解和掌握系统设计和架构非常有帮助。
2.《设计模式:可复用面向对象软件的基础》:这本书介绍了23种常用的设计模式,对于应用程序的设计和可维护性有着重要的指导作用。
三、数据库学习资料1.《SQL必知必会》:适合初学者的SQL学习资料,通过简单明了的语言和大量实例,帮助读者快速掌握SQL的基本知识和操作技巧。
2.《MongoDB权威指南》:对于学习和使用MongoDB的人来说,这本书是一本非常有价值的参考书,它详细介绍了MongoDB的各种特性和使用方法。
四、软件开发工具学习资料1.《Git权威指南》:介绍了Git版本控制工具的基本概念和使用方法,对于团队协作开发和代码管理非常有帮助。
2.《Maven实战》:Maven是Java项目构建和管理的重要工具,这本书详细介绍了Maven的使用和配置,对于软件工程师来说是一本不可或缺的参考资料。
以上是我为软件工程师们推荐的一些复习资料,希望能够对大家的学习有所帮助。
当然,选择适合自己的学习资料也需要根据自身的实际情况和学习需求来确定。
软件工程的复习题资料每一章的本章小结都看遍:一:选择题:(30分)(1)软件维护的三大基本特点:工作量很大,投入很大,时间长(2)P168软件维护的内容:改正性维护(21%),适应性维护(25%),完善性维护(50%),预防性维护(4%)(3)软件维护的特点:非结构化维护和结构化维护软件维护的困难性软件维护的费用(4)P69需求分析:1.做什么:它明确用户的业务环境中,软件系统应该实现那些功能,应该满足哪些性能要求,存在哪些约束和限制条件。
概括的讲,需求分析是发现需求,分析求精,逻辑建模,需求规约的过程。
2.要形成什么成果:需求规格说明书.(学习目标看完)(5)P7软件工程的内容:因此过程方法工具和技术就构成了软件工程内容的4个层次。
(6)P7软件工程的发展过程分为如下几个阶段:传统的软件工程,结构化的软件工程,面向对象的软件工程,面向过程管理的过程软件工程,基于构件复用技术的构件软件工程。
(7)P8软件生命周期的概念:它是从软件开发需求被提出,经历可行性分析,软件开发过程,直到软件被开发出来,投入使用,最终被淘汰的整个时间。
(8)P6软件工程的概念:概括的说,软件工程是指导计算机软件开发和维护的一门工程学科。
(9)P73常见结构化分析方法:它一般利用图形表达用户需求,使用的手段主要有数据流图、数据字典、结构式语言、判定表以及判定树层次方框图(10)P16软件开发模型:优缺点做法,图形的画法(说明哪些是线性的,哪些是非线性的):线性是瀑布模型快速原型模型螺旋模型是连接起来的弯曲了的线性模型,增量模型实质就是分段的线性模型。
瀑布模型虽然有诸多的缺点,但作为一种模型的理论框架仍然有学习的价值,应该认识到线性是人们最容易掌握并能熟练应用的思想方法,当碰到一个复杂的非线性问题时,总是习惯与将其分解或转化为一系列简单的线性问题,然后逐个解决。
一个系统的整体可能是复杂的,而单个子系统总是简单的,可以用线性的方式来实现。
(11)p174维护的副作用:定义:因维护而引入新的错误或者缺陷,称为维护的副作用,维护的副作用分为编码副作用数据副作用和文档副作用三种。
(12)p113 详细设计的主要任务:代码设计数据库设计系统平台设计和程序设计等(13)p101扇入和扇出的概念:扇入:是指直接调用该模块的上级模块的个数。
扇入大表示模块的复用程序高。
扇出:是指该模块直接调用的下级模块的个数。
扇出大表示模块的复杂度高,需要控制和协调过多的下级模块;(14)P99 模块的内聚:功能内聚和时间内聚是最主要的模块内聚。
7种内聚的优略评分:功能内聚10分最高巧合内聚0分最低过程内聚5 中间(15)软件模块化结构设计:结构化方法主张把软件按模块组织成良好的层次系统,顶层模块调用它的下层模块以实现程序的完整功能,每个下层模块在调用其下的模块,完成程序的一个子功能,最下层的模块完成最基本的功能。
(模块与模块之间通过接口调用,进行模块与模块之间的通信)(16)P4 软件危机:1.概念:软件危机是指在软件开发和维护时遇到的一系列问题最终导致的供需矛盾。
2.表现形式:软件的发展速度跟不上硬件的发展和用户的需求,软件成本和开发进度不能预先估计,用户不满意,软件产品质量差,可靠性没有保证,软件可维护性差,软件产品没有配套的文档。
3.软件危机产生的原因:与软件产品本身的特殊性有关,与用户和开发人员的观念错误和落后有关,与软件开发技术和工具落后有关。
4.解决方法:软件工程。
(17)P17 快速模型和螺旋模型之间的特色:快速模型是以需求为驱动的,本质是快速。
它是初步了解用户大致需求以后快速建造一个初始模型,目的是让用户试用过原型以后对原型进行评价,挖掘用户深层次的需求。
而螺旋模型是一种以风险驱动的演化模型,强调可选方案和约束条件,它将瀑布模型中的线性顺序和快速原型中的迭代特征结合起来,适应于内部的大规模软件开发,需要较高的风险分析评估的专门技术且成功依赖于这个技术。
下列具有风险评估的模型是螺旋模型(18)P61数据流图(DFD):1.用来做什么的:它是用来表达系统概貌的一种常用工具,运用数据流图有利于对系统功能和加工逻辑进行把握。
基本符号:其中处理框有(输入流和输出流)(19)p1软件的概念: (1)能够完成预定功能和性能的、可执行的指令(计算机程序);(2)使得程序能够适当地操作信息的数据结构;(3)描述程序的操作和使用的文档。
(20)软件的特点:(1)软件是一种逻辑产品;(2)软件的生产与硬件不同,它没有明显的制作过程;(3)软件只会退化,不会磨损,也不会被用坏和消耗(4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题;(5)软件复杂性高,成本昂贵;(6)软件开发涉及诸多的社会因素。
(20)P91软件结构设计(是总体设计阶段的任务)(21)p69需求是用来做功能用(22)p20 喷泉模型(以对象为驱动的模型):(1)与传统模型相比,喷泉模型具有更多的增量和迭代性质,生存周期的各个阶段可以相互重叠和多次重复,而且在整个生存周期中还可以嵌入子生存周期。
(2)喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于描述面向对象的软件开发过程。
(23)软件生命周期定义和图形:定义:软件生命周期是从软件开发需求被提出,经历可行性分析,软件开发过程,直到软件被开发出来,投入使用,最终被淘汰的整个时间。
图形:(24)p86(1)软件需求规格说明书需要写些什么:用图形表示主要的需求分组以及它们之间的关系,例如数据流程图的顶层图和类图和编制数据字典。
(2)软件需求的主要任务/模板:1.完成“分析建模”;2.拟定“确认测试”计划3.修订“开发计划”4.编写“需求规划说明书”5.需求评审概括的说需求分析是发现需求分析求精逻辑建模需求规约的过程。
(3)软件需求评审的概念:软件需求评审是软件质量保证的一个重要的管理措施,也是减少开发风险,降低开发费用,提高项目成功率的重要保证。
(4)程序语言具备的条件包含数据循环条件(5)E-R图包含实体关系属性矩形框菱形框椭圆(25)p168软件维护的内容分为:改正性维护(21%)适应性维护(25%)完善性维护(50%)预防性维护(4%)(26)p136软件测试的目标(目的)(发现错误):为了发现程序中的错误而执行程序的过程。
(27)读2遍#测试是为了为了发现程序中的错误而执行程序的过程。
#好的测试方案是能够发现迄今为止尚未发现的错误的测试方案#成功的测试是发现了至今为止尚未发现的错误的测试(28)p128 N-S图(盒图)图7.22(29)详细设计阶段的主要任务:代码设计数据库设计系统平台设计和程序设计(其中算法设计和数据设计也属于详细设计阶段)(30)读3遍面向数据流的设计原理:根据数据流图中的信息流程特征,可以从数据流图映射出软件结构,这种方法称为面向数据流的设计方法,信息流程的类型决定了映射的方法。
信息流程有如下两种类型:变换流和事务流(31)p93在总体设计阶段要制定测试计划(可省略),书写文档:总体设计说明书这是确定测试计划是不能省略的(32)需求分析的任务:1.完成“分析建模”;2.拟定“确认测试”计划3.修订“开发计划”4.编写“需求规划说明书”5.需求评审概括的说需求分析是发现需求分析求精逻辑建模需求规约的过程。
(33)p79数据字典的定义:它是用来定义数据流图中的各个成分的具体含义的工具,它以一种准确的无二义性的说明方式,为系统的分析,设计及维护提供了有关元素的一致的定义和详细的描述。
//////需求分析阶段的需求规格说明书主要组成部分有数据流图和数据字典,它们构成了系统的逻辑模型。
(34)p99 功能内聚:如果模块内所有处理元素属于一个整体,完成一个单一的功能,则称为功能内聚。
(最高程度的内聚)(35)软件测试:成功的测试是:发现了至今为止尚未发现的错误的测试,失败的测试:没有发现错误。
(36)软件开发环境SDE(程序设计的开发环境)的概念和包含的内容:软件开发环境是相关的一组软件工具集合,它支持一定的软件开发方法或按照一定的软件开发模型组织而成。
内容:它包括支持软件运行的操作系统,数据库系统及有通讯交互的其他应用系统。
(37)有关维护的内容:见上概念:为了改正错误和满足新的需要而修改软件的过程,即使软件维护。
(38)p162(1)调试的目标:寻找软件错误的原因并改正错误(2)调试和测试的区别:首先调试是由程序员编试的,且调试是在测试之前。
/////调试是一个随机的、不可重复的过程,目的是寻找错误的原因和具体的位置,并修复错误。
调试一般在测试后进行。
(39)调试的几种方法:3种调试途径:蛮干法回溯法原因排除法(40)可维护性的定义:指维护人员理解,改正,改动或改进这个软件的难易程度。
维护由:源代码加注释:(加注释体现的思想:工程化思想p5)二:判断题:软件危机关于开发人员的素质关于快速原型法关于面向数据的设计方法关于文档管理关于软件特点关于完善性维护:使用过程中,用户会提出增新功能或修改已有功能的要求,或者是提出一般性的改进意见。
为了满足这类要求,需要对软件进行完善性维护。
这项维护活动通常占软件维护工作的量最大(50%)关于编码风格p133 关于测试目的关于模块化程序的设计p92关于模块的个数关于模块测试关于程序的调试(Debug)关于程序调试和测试关于验收测试(确认测试)关于操作手册(用户手册)关于程序的易读性关于软件开发关于系统测试关于软件需求分析任务关于高级语言关于结构化分析方法(如何分析用什么分析)关于总体设计和软件结构设计关于CASE P11三填空题:(20分)1.p137测试用例由哪几部分组成:输入数据和预期的输出数据两部分组成。
2.软件结构以数据流图?模块为基础设计软件的模块结构。
结构设计是一种应用最广泛的系统设计方法,是以(数据流)为基础、自顶向下、逐步求精和模块化的过程。
3.p149如果在知道软件需求规格说明书下,应该采取什么测试:确认测试4.软件概要设计的关键一步:软件结构的设计5.数据流图(DFD)由哪几部分组成:数据流加工或处理文件或数据库数据流6.软件开发是自顶向上的过程,而软件测试是自底向上的过程。
7.数据流图是一种功能模型。
8.软件结构中深度表示软件控制的层数。
9.软件工程管理中,控制包含时间控制、成本控制、质量控制和风险控制(4个)10.p164软件可靠性的概念:它是程序在给定的时间间隔内,按照规格说明书的规定,成功地运行的概率。
11.什么是高级语言:它是一种接近于自然语言,易于人们理解的,面向问题的程序设计语言。
12.p1软件包含哪几部分:程序数据和文档13.结构化分析是面向数据流进行需求分析的方法。