软件工程复习知识点
软件工程知识点总结

软件工程知识点总结软件工程是研究和应用用于软件开发的方法和技术的学科领域,它涵盖了软件需求、设计、开发、测试、维护等方面的知识。
在软件工程中,有许多重要的知识点需要掌握和应用。
本文将对一些常见的软件工程知识点进行总结和归纳。
一、软件开发生命周期软件开发生命周期是指软件开发过程中各个阶段的组织和管理方式。
常见的软件开发生命周期包括需求分析、设计、编码、测试和维护等阶段。
其中,需求分析阶段是确定软件系统的功能和性能要求,设计阶段是根据需求分析结果进行系统框架和模块设计,编码阶段是实现设计的过程,测试阶段是验证软件系统是否符合需求规格说明书的要求,维护阶段是对已经发布的软件进行更新和修复。
二、面向对象编程面向对象编程(Object-Oriented Programming,简称OOP)是一种软件开发的编程范型。
在面向对象编程中,将问题抽象为对象,通过封装、继承和多态等机制来组织和管理对象。
在面向对象编程中,类是对象的抽象,对象是类的实例。
通过封装和隐藏内部实现细节,提供公共接口来提高软件的可维护性和可重用性。
三、软件需求工程软件需求工程是软件开发过程中的第一步,旨在明确软件系统的功能和性能要求。
软件需求工程包括需求获取、需求分析、需求规格和需求验证等工作。
需求获取阶段通过与用户的交流来识别用户的真正需求。
需求分析阶段是将获取的需求进行整理和分析,确定软件系统的需求规格。
需求规格是软件系统的需求规定书,它描述了软件系统的各种功能和性能要求。
需求验证是对开发的软件系统进行测试和验证,确保其符合需求规格。
四、软件设计原则软件设计原则是指在软件设计过程中应该遵循的一些准则和原则。
常见的软件设计原则包括开闭原则、单一职责原则、迪米特法则、接口隔离原则和依赖倒置原则等。
开闭原则要求软件系统的设计对扩展开放,对修改关闭。
单一职责原则要求一个类只负责一个单一的功能。
迪米特法则要求一个对象应该尽可能少的与其他对象发生相互作用。
软件工程知识点汇总

软件工程知识点汇总软件工程知识点汇总
1、软件需求
1.1 需求概述
1.2 需求分类
1.3 需求获取与分析
1.4 需求规格说明
2、软件设计
2.1 面向对象设计
2.2 结构化设计
2.3 数据库设计
2.4 用户界面设计
2.5 系统架构设计
3、软件编码
3.1 编程语言选择与使用
3.2 编码规范
3.3 软件开发环境
3.4 编码工具和技术
3.5 调试和测试
4、软件测试
4.1 测试基础知识
4.2 测试方法与策略
4.3 白盒测试
4.4 黑盒测试
4.5 功能性测试
4.6 性能测试
4.7 集成测试
4.8系统测试
4.9用户验收测试
5、软件项目管理
5.1 项目计划与进度管理 5.2 风险管理
5.3 人员管理
5.4 项目质量管理
5.5 变更管理
5.6 项目交付与部署
6、软件维护与升级
6.1 软件维护分类
6.2 软件维护流程
6.3 软件升级策略
6.4 软件版本控制
7、软件安全
7.1 信息安全基础知识
7.2 软件安全需求与设计
7.3 安全测试与评估
7.4 安全漏洞修复与更新
附件:
法律名词及注释:
1、版权: 对一种表达形式的独特创造进行保护的法律概念。
2、商标: 表示和区分特定商品或服务来源的标识符。
3、专利: 对于新发明的独特权利,使得发明人可以禁止他人在专利权期限内使用该发明。
4、法律责任: 违反法律规定而应承担的法律后果。
软件工程知识点

软件工程知识点1. 软件工程概述软件工程是一门研究和应用工程原则、方法和工具来开发和维护高质量软件系统的学科。
它涵盖了软件开发的整个生命周期,包括需求分析、设计、编码、测试、部署和维护。
2. 软件生命周期软件生命周期定义了软件开发过程中的各个阶段,包括需求定义、系统设计、详细设计、编码、测试、部署和维护等。
每个阶段都有特定的任务和交付物,通过严格遵循软件生命周期来管理项目,可以提高软件开发的质量和效率。
3. 软件需求分析软件需求分析是确定软件系统所需功能和性能的过程。
它包括对用户需求进行调查、分析和规范化,以便从中获得详细的系统需求。
4. 软件设计软件设计是根据需求分析的结果,确定软件系统的结构和组成部分的过程。
它包括软件架构设计、模块设计、数据结构设计等。
5. 软件编码软件编码是将设计好的软件系统转化为可执行的计算机程序的过程。
在编码过程中,开发人员需要遵循相应的编程规范和标准,以确保代码的可读性和可维护性。
6. 软件测试软件测试是为了发现和修复软件中的错误和缺陷。
测试可以分为单元测试、集成测试、系统测试和验收测试等不同的层级和类型,旨在确保软件功能的正确性和稳定性。
7. 软件部署软件部署是将软件安装和配置到用户的计算机系统中的过程。
在部署过程中,需要注意安装环境、配置文件和用户权限等问题,确保软件能够正常运行。
8. 软件维护软件维护是为了修复软件中的错误、改进功能以及适应新的需求而进行的修改和更新。
维护过程中包括问题分析、修改设计、修改代码、测试和发布等环节。
9. 软件质量保证软件质量保证是通过制定和执行软件质量标准、流程和方法,以确保软件开发过程中的质量问题被及时发现和解决的一系列活动。
包括代码审查、测试自动化、性能测试等。
10. 软件项目管理软件项目管理是对软件开发项目进行规划、组织、监控和控制的活动。
它包括项目需求管理、进度管理、资源管理、风险管理等方面,以确保软件项目按时、按质量要求完成。
软件工程40个记忆知识点

1.软件是计算机系统内中与硬件相互依存的另一部分,是包含程序、数据及其相关文档的完整集合,即软件=程序+数据+相关文档。
2.软件按照功能可划分为:系统软件、支持软件、应用软件。
按照规模划分:微型软件、小型软件、中型软件、大型软件和超级软件。
3.软件危机:对软件开发成本的估计不准确,造成开发成本超出预算;开发进度不能保证,交付时间一再拖延;“已完成”的软件不能满足用户需求;软件产品质量没有保证,运算结果出错、操作死机等现象屡屡发生;软件没有适当的文档资料,或文档与最终交付的软件产品不相符,软件的可维护程度非常低;软件开发生产率赶不上硬件的发展和人们需求的增长。
4.软件工程的层次化结构:工具层,方法层,过程、技术层,质量保证层。
5.软件工程是用工程、科学和数学的原则与方法研制、维护计算机软件的有关技术和管理方法。
6.实现软件开发工程化、系统化的方法是软件生命周期法,主要划分为软件项目的准备阶段、开发阶段和运行维护阶段。
软件项目的准备阶段的主要任务是调查和分析:调查用户需求,分析软件系统项目的主要目标和开发该系统的可行性。
开发阶段:①需求分析②软件设计(概要设计、详细设计)③编码④测试运行维护阶段:改正性维护、适应性维护、完善性维护、预防性维护。
7.软件项目的开发模型:瀑布模型、原型模型、螺旋模型。
8.面向对象(对象:是现实世界中个体或者事物的抽象表示,是它的属性和相关操作的统一封装实体。
类、继承、消息)面向对象=对象+类+继承+消息9.需求分析的任务是将用户的需求转变为软件的功能和性能的描述。
软件从外部可以看作黑盒子(功能)计算机所处理的数据域描述为数据内容(数据项)、数据结构(数据线的组织形势)和数据流(数据通过系统的变化方式)。
10.软件的物理模型要给出处理功能和数据结构的实际表示形式,逻辑模型是设备类型和数据结构的存储方式。
11.需求分析步骤:调查研究,获取需求、分析建模,提炼需求、编写需求说明,描述需求、分析评审,验证需求。
软件工程期末复习必备知识点

一、概念解释1.软件:是程序,数据结构和文档的集合,用于实现系统所需要的逻辑方法、过程和控制。
2.软件危机:是软件开发和维护过程中所遇到的一系列严重的问题。
3.软件周期:是从软件从定义,开发,运行维护到废弃时经历的一个漫长的时期。
4.需求分析:是发现,求精,建模,规格说明和复审的过程。
5,概要设计:通过仔细分析需求规格说明,确定完成系统的模块以及各模块之间的关系,设计出完成预定功能的模块(软件结构),并建立借口。
详细设计:设计完成系统的模块内的算法和数据结构。
6.模块化:将软件划分成可以独立命名的且可以独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能来满足用户的需求。
信息隐藏:一个模块内包含的信息对于一个不需要这些的模块来说是不可访问的。
7.耦合:是一个软件结构内的每个模块互连程度的度量。
内聚:一个模块间各个元素之间的紧密的程度。
8.类:是对有相同数据和相同操作的一组相似对象的抽象描述。
对象:是客观世界中事物的抽象表示,其属性(状态、数据)和相关操作(行为、方法或服务)的封装体;对象之间靠消息传递相互作用。
9.消息:是对象之间相互通信的机制,是某个对象执行其操作的规格说明。
消息传递:一个对象向另一个对象发送消息时,接收消息的对象经过解释、给予响应,这种对象之间进行通信的机制成为消息传递。
10.继承:继承是子类(新类)自动的共享父类(已有类)中定义的数据的操作的机制。
子类可以继承父类的属性和操作;同时子类可以定义自己独有的属性和操作。
子类复用父类的定义,而不修改父类。
继承具有传递性。
多态性:在一个类层次中,不同对象对相同消息做出不同的响应。
11.软件重用:是指同一事物不做修改或者稍加修改就可多次重复使用,软件重用是降低软件开发成本,提高软件开发生产率和质量的有效途径。
12.软件测试:根据软件开发的规格说明和程序的内部结构而设计的一个测试用例,利用这些测试用例去运行程序以发现设计和程序错误的过程。
软件工程复习知识点

1.软件危机的概念,内容,原因及消除的途径;软件危机的概念:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。
概括地说,软件危机包含两方面问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
软件危机产生的原因:软件本身的复杂性、难衡量的特点;2.软件开发与维护的方法不正确。
消除软件危机的途径:(1)对计算机软件应当有一个正确的认识;(2)应当有组织、有计划、通过严格的管理手段进行软件的开发;(3)及时总结软件开发的成功技术和方法并加以推广;(4)开发和使用更好的软件工具;总之,为了解决软件危机,既要有技术措施,又要有必要的组织管理措施。
2.软件工程的定义,基本原理;定义:软件工程是指导计算机软件开发和维护的一门工程学科。
基本原理:软件工程的7条基本原理:(1)用分阶段的生命周期计划严格管理(2)坚持进行阶段评审(3)实行严格的产品控制(4)采用现代程序设计技术(5)结果应能清楚地审查(6)开发小组的人员应该少而精(7)承认不断改进软件工程实践的必要性3.软件工程方法学的基本概念、内容;基本概念:把在软件生命周期全过程中使用的一整套开发和管理技术方法的集合成为软件工程方法学,也称为范型。
软件工程方法学包含3个要素:方法、工具和过程。
内容:目前使用得最广泛地软件工程方法学,分别是传统方法学和面向对象方法学。
传统方法学也称为生命周期方法学或结构化范型。
4.软件生命周期的具体内容,每一个阶段的任务是什么?结合具体的工程例子来理解做软件项目主要分那几个个阶段。
①问题定义:确定要求解决的问题是什么②可行性研究:决定该问题是否存在一个可行的解决办法③需求分析:深入了解用户的要求,在要开发的目标系统必须做什么问题和用户取得完全一致的看法。
④概要设计:概括回答怎样实现目标系统。
概要设计又叫逻辑设计、总体设计、高层设计。
⑤详细设计:把解法具体化,设计出程序的详细规格说明。
详细设计也叫模块设计、底层设计。
软件工程知识点总结

软件工程(简要知识点)软件生命周 期:软件定义 软件开发问题定义(确定题目) 可行性研究 需求分析 概要设计 系统设计 详细设计系统实现编码和单元测试 综合测试运行维护:主要任务是使软件持久地满足用户的需要一、. 软件过程五个模型对比(瀑布模型、快速原型、增量、螺旋、喷泉模型) 二、可行性研究: 1、任务:用最小的代价在尽可能短的时间内确定问题是否能够解决。
2、四个方面:技术、经济、操作可行性、法律 3、数据流图四种成分:1、源点/终点 2、处理 3、数据存储 4、数据流 三、需求分析: 1、任务:确定系统必须完成哪些工作,对目标系统提出完整、清晰、具体的要 求。
2、结构化方法就是面向数据流自顶向下逐步求精进行需求分析的方法。
3、实体联系图:1、数据对象 2、属性 3、联系(1:1、1:N、M:N) 四、总体设计: 1.任务:回答“概括的说,系统应该如何实现”,用比较抽象概括的方式确定系 统如何完成预定的任务,也就是说应该确定系统的物理配置方案,并且进而确定 组成系统的每个程序结构。
2. 系统设计阶段(确定系统具体实施方案)、结构设计阶段(确定软件结构) 3.模块独立:内聚和耦合 4. 耦合表示一个软件结构内各个模块之间的互连程度,应尽量选用松散耦合的 系统5. 内聚 (Cohesion): 一个模块内各元素结合的紧密程度6.面向数据流的设计方法:变换流和事务流 五、详细设计: 1.任务:确定应该怎样具体的实现所要求的系统,也就是说经过这个阶段的设计 工作应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译 成用某种程序设计语言书写的程序。
2.过程设计的工具(程序流程图、盒图、PAD 图、判定表、判定树) 七、测试: 1、单元测试:又称模块测试。
每个程序模块完成一个相对独立的子功能,所以 可以对该模块进行单独的测试。
由于每个模块都有清晰定义的功能,所以通常 比较容易设计相应的测试方案,以检验每个模块的正确性。
软件工程复习的几个知识点和例题

1.软件危机的概念,内容,原因及消除的途径;2.软件工程的定义,基本原理;3.软件工程方法学的基本概念、内容;4.软件生命周期的具体内容,每一个阶段的任务是什么?结合具体的工程例子来理解做软件项目主要分那几个阶段。
5.理解几个典型软件过程的内容及其优点与缺点:瀑布模型、增量模型、快速原型模型、螺旋模型、喷泉模型等;6.了解可行性研究中的任务和过程;7.掌握系统流程图的概念和方法,会从具体的案例中抽象出系统流程图;8.掌握数据流图的概念和方法,会从具体的案例中画出0层数据流图和功能级数据流图;9.掌握数据字典的内容、方法、用途和实现;10.了解成本/效益分析方法;11.了解需求分析过程中任务是什么.12.理解面向数据流自顶向下逐步求精的方法和意义;13.理解分析及建模的意义,需求分析中应该建立哪三种逻辑模型?有哪些工具来帮助建立这些模型?14.掌握实体关系(E-R)图的概念,内容和实现方法,能结合具体实例建立实体关系图;15.掌握状态图的概念,内容,实现方法和作用;16.掌握层次方框图、warnier图、IPO图的概念,内容和作用;17.有穷状态机的概念和内容;18.总体设计是做什么?总体设计的过程是怎样的?总体结构设计的目的是什么?19.掌握几个设计原理,理解他们的内容和意义;20.掌握耦合和内聚的概念和内容,理解这些原理对设计有哪些指导意义;21.耦合包含了哪些类型?每个类型的具体内容是什么?要求能通过程序代码识别出耦合类型。
内聚类型有哪些?具体内容?能识别应用。
22.启发性规则的内容及部分概念。
深度,宽度,扇入,扇出,模块的作用域,模块的控制域。
23.层次图、HIPO图和结构图的内容;24.掌握面向数据流的设计方法,了解其中涉及到的概念(变换流,事务流),结合例子理解变换分析的具体过程。
25.详细设计是做什么?26.什么是结构程序设计?27.人机界面设计问题包含哪些?28.掌握设计过程中用到的工具:程序流程图的概念,内容和方法;N-S盒图的概念、内容和方法;会结合实例使用这些工具;掌握PAD 图的概念和内容;掌握判定表的概念和内容。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件工程:选择题(25题,每题1分),填空题(20分,每空2分),简答题(5题,每题5分),综合题(3题,共30分)
知识点:
1.软件设计对模块间的耦合与模块的内聚有何原则。
(p97-p99)
答:耦合原则:尽量使用数据耦合,少用控制耦合和特征耦合,限制公共环境耦合的范围,完全不用内容耦合;内聚原则:设计时应力求做到高内聚,并且能够辨认出低内聚的模块,有能力通过修改提高模块的内聚程度降低低模块间的耦合程度。
2.耦合有哪些类型,各有何特点?(p97-p99)
答:(1)数据耦合:两个模块之间彼此通过参数交换信息,而且交换的信息仅仅是数据。
(2)控制耦合:如果传递的信息中有控制信息,则这种耦合为控制耦合。
3.常用软件过程有哪几种,各有何特点?(p15-p22)
答:(1)瀑布模型:阶段之间具有顺序性和依赖性,推迟实现的观点,质量保证的观点。
(2)增量模型:整个产品被分解成许多个增量构件,开发人员逐步的向用户提交产品。
(3)螺旋模型:适用于内部开发的大规模软件项目。
(4)喷泉模型:提高了开发效率,缩短了开发周期但是难于打理。
喷泉模型使开发过程具有迭代性和无缝性。
适宜面向对象的方法。
(5)Rational统一过程(迭代式开发,采用用例分析来捕获需求并由他们驱动和实现,使用基于构件的体系结构,可视化建模,每个修改都是可接受而且能被跟踪的)(6)快速原型模型:快速原型模型是不带反馈环的,软件产品的开发基本上是线性顺序进行的,是一个循环的模型;
4.瀑布模型分为哪几个阶段。
答:需求分析验证、规格说明验证、设计验证、编码测试、综合测试、维护、变化的需求验证
5.结构化程序设计方法的发展过程。
答:p117-p118
6.流程图与N_S图如何使用。
答:p38-p39
7.可行性研究应该从哪几个方面进行。
(p35)
答:技术可行性,经济可行性,操作可行性。
8.数据流图的基本符号有哪几种?(p40)
答:正方形(或立方体)表示数据的源点或终点;圆角矩形(或圆形)代表变换数据的处理;开口矩形(或两条平行横线)代表数据存储;箭头表示数据流,即特定数据的流动方向。
9.面向数据流的设计方法如何进行?(P104)
答:将软件设计为多个结构合理,功能单一的模块,建立系统的模块结构图。
10.Jackson方法有何特点?(p130)
答:在设计比较简单的数据处理系统时特别方便,当设计比较复杂的程序时常常遇到输入数据可能有错、条件不能预先测试、数据结构冲突等问题。
11.白盒测试与黑盒测试各有何特点?(p162,p171)
白盒测试:全面了解程序内部逻辑结构、对所有逻辑路径进行测试。
黑盒测试:着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
12.总体设计有何特点?(p91)
站在全局高度上,画较少成本,从较抽象的层次上分析对比多种可能的系统实现方案和软件结构。
13.模块的作用域与控制域(p100)
答:模块的作用域定义为受该模块内一个判定影响的所有模块的集合;模块的控制域是这个模块本身以及所有直接或间接从属于它的模块的集合。
14.模块的扇入、扇出、模块图的深度、宽度?(p100)
答:深度表示软件结构中控制的层----粗略的标志一个系统的大小和复杂程度。
扇入表明有多少个上级模块直接调用它;
扇出是一个模块直接控制(调用)的模块数目,一般扇出数控制在7以内,平均为3或4。
;
宽度是软件结构内同一个层次上的模块总数的最大值。
15.PAD图如何使用(p126)
将其转换成与之对应的高级语言程序
16.软件的可靠性如何定义(p179)
答:软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率。
17.程序设计语言有哪三种类型,各有何特点?(p146)
答:(1)机器语言:是最低级的语言,由二进制码组成,最早期的程序员通过在纸带上打点来写程序;
汇编语言:用助记符和地址符代替了二进制码,更易于编写;
高级语言:相对于汇编语言又上升了一步,更接近于自然语言。
18.软件调试方法有哪些?(p176)
答:蛮干法、回溯法、原因排除法。
19.白盒测试与黑盒测试各有哪些方法?(p162、p172)
答:白盒测试:逻辑覆盖、控制结构测试;
黑盒测试:等价划分、边界值分析、错误推测。
20.面向对象的软件开发中,多态性、继承性如何理解(p213)
21.什么是软件危机?(p1)
答:软件危机就是在软件开发和维护过程中所遇到的一系列严重问题。
(包括软件开发的成本增大、速度延期、维护困难和质量得不到保障。
)
22.软件工程方法学的三要素及分类?(p9)
答:三要素为方法、工具和过程;分类为传统方法学和面向对象方法学。
23.实体联系图如何绘制(p62)
答:用矩形框表示实体,用连接相关实体的菱形框表示关系,用椭圆形或圆角矩形表示实体的属性,并用直线把实体与其属性连接起来。
24.需求分析阶段应该使用哪几种模型对系统进行建模?(p62)
数据模型、功能模型、行为模型
25.软件维护有哪些类型?(p189)
答:完善性维护、改正性维护、适应性维护、其他维护(如预防性维护或再工程)26.利率的计算(计复利,不计复利)(p51)
经过一定期间,将利息加入本金再计算利息,逐期滚算.
不将利息加入本金再计算利息,不逐期滚算利息.
不计复利:F=P(1+i)^n ;
计复利:F=A((1+i)^n-1)/i
F: 终值,或叫未来值,即期末本利和的价值; P:现值,或叫期初金额;A:年金,或叫等额值;i:利率或折现率;N:计息期数;
27.软件测试的任务、目的和类型(p150)
任务:尽可能多地发现并排除软件中潜藏的错误,最终把一个高质量的软件系统交给用户使用;
目标:
(1)测试是为了发现程序中的错误而执行程序的过程;
(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;
(3)成功的测试时发现了至今为止尚未发现的错误的测试。
类型:1.白盒测试(结构测试)
2.黑盒测试(功能测试)
28.逻辑覆盖测试中如何设计测试用例(p162)
语句覆盖,判定覆盖,条件覆盖,判定/条件覆盖,条件组合覆盖,点覆盖,边覆盖,路径覆盖
29.如何由程序流程图得到流图,如何计算环形复杂度。
(p137)
1(p137)
2计算环形复杂度:
流图中线性无关的区域数等于环形复杂度
流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数。
流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目。
30.简单流程图的设计(如:累加和阶乘等)
31.软件项目管理中的人员组织方式有哪几种?(p320)
答:民主制程序员组、主程序员组、现代程序员组
32.软件项目规模的估计有几种方法?(p305)
答:代码行技术、功能点技术
33.能力成熟度模型中成熟度有哪5个等级,各有何特点?(p332)
五个等级:一级为初始级,二级为可重复级,三级为已定义级,四级为已管理级,五级为优化级。
1,根据程序画流程图和盒图,在124到125页。
2,测试用例:语句覆盖和分支覆盖,162,163页3,基本路径测试:166到167页,其中包括137页的环形复杂度计算。