软件工程复习知识点

合集下载

软件工程知识点总结

软件工程知识点总结

软件工程知识点总结软件工程是研究和应用用于软件开发的方法和技术的学科领域,它涵盖了软件需求、设计、开发、测试、维护等方面的知识。

在软件工程中,有许多重要的知识点需要掌握和应用。

本文将对一些常见的软件工程知识点进行总结和归纳。

一、软件开发生命周期软件开发生命周期是指软件开发过程中各个阶段的组织和管理方式。

常见的软件开发生命周期包括需求分析、设计、编码、测试和维护等阶段。

其中,需求分析阶段是确定软件系统的功能和性能要求,设计阶段是根据需求分析结果进行系统框架和模块设计,编码阶段是实现设计的过程,测试阶段是验证软件系统是否符合需求规格说明书的要求,维护阶段是对已经发布的软件进行更新和修复。

二、面向对象编程面向对象编程(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个记忆知识点

软件工程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.软件危机的概念,及出现的原因软件开发技术的进步未能满足发展的要求。

在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。

产生原因:⑴软件规模越来越大,结构越来越复杂⑵软件开发管理困难而复杂。

⑶软件开发费用不断增加。

⑷软件开发技术落后。

⑸生产方式落后,仍采用手工方式。

⑹开发工具落后,生产率提高缓慢。

4.三种编程范型的特点(1)过程式编程范型:把程序理解为一组被动的数据和一组能动的过程所构成;程序=数据结构+算法;着眼于程序的过程和基本控制结构,粒度最小(2)面向对象编程范型:数据及其操作被封装在对象中;程序=对象+消息;着眼于程序中的对象,粒度比较大(3)基于构件技术的编程范型:构件是通用的、可复用的对象类;程序=构件+架构;眼于适合整个领域的类对象,粒度最大二、软件生存周期与软件过程1、软件生存周期的定义,把生存周期划分为若干阶段的目的是什么,有哪几个主要活动●定义:一个软件从开始立项起,到废弃不用止,统称为软件的生存周期●目的:软件生存周期划分为计划、开发和运行3个时期;把整个生存周期划分为较小的阶段,给每个阶段赋予确定而有限的任务,就能够化简每一步的工作内容,使因为软件规模而增长而大大增加了软件复杂性变得较易控制和管理。

●主要活动:需求分析、软件分析、软件设计、编码、软件测试、运行维护(P19)2、软件生命周期划分为哪几个阶段软件生命周期分为三个时期八个阶段:●软件定义:问题定义、可行性研究;●软件开发:需求分析、概要设计、详细设计、编码、测试;●软件运行:软件维护3、瀑布模型的特点和缺陷特点:线性模型,每一阶段必须完成规定的文档(阶段间的顺序性和依赖性)优点:●可强迫开发人员采用规范化的方法。

软件工程复习知识点

软件工程复习知识点

1.软件危机的概念,内容,原因及消除的途径;软件危机的概念:软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题;概括地说,软件危机包含两方面问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件;软件危机产生的原因:软件本身的复杂性、难衡量的特点;2.软件开发与维护的方法不正确;消除软件危机的途径:1对计算机软件应当有一个正确的认识;2应当有组织、有计划、通过严格的管理手段进行软件的开发;3及时总结软件开发的成功技术和方法并加以推广;4开发和使用更好的软件工具;总之,为了解决软件危机,既要有技术措施,又要有必要的组织管理措施;2.软件工程的定义,基本原理;定义:软件工程是指导计算机软件开发和维护的一门工程学科;基本原理:软件工程的7条基本原理:1用分阶段的生命周期计划严格管理2坚持进行阶段评审3实行严格的产品控制4采用现代程序设计技术5结果应能清楚地审查6开发小组的人员应该少而精7承认不断改进软件工程实践的必要性3.软件工程方法学的基本概念、内容;基本概念:把在软件生命周期全过程中使用的一整套开发和管理技术方法的集合成为软件工程方法学,也称为范型;软件工程方法学包含3个要素:方法、工具和过程;内容:目前使用得最广泛地软件工程方法学,分别是传统方法学和面向对象方法学;传统方法学也称为生命周期方法学或结构化范型;4.软件生命周期的具体内容,每一个阶段的任务是什么结合具体的工程例子来理解做软件项目主要分那几个个阶段;①问题定义:确定要求解决的问题是什么②可行性研究:决定该问题是否存在一个可行的解决办法③需求分析:深入了解用户的要求,在要开发的目标系统必须做什么问题和用户取得完全一致的看法;④概要设计:概括回答怎样实现目标系统;概要设计又叫逻辑设计、总体设计、高层设计;⑤详细设计:把解法具体化,设计出程序的详细规格说明;详细设计也叫模块设计、底层设计;⑥编码和单元测试:编写程序的工作量只占软件开发全部工作量的10%-20%;⑦综合测试:软件测试的工作量通常占软件开发全部工作量的40%-50%;⑧软件维护:软件维护的费用通常占软件总费用的55%-70%;①②③为软件定义时期,④⑤⑥⑦为软件开发阶段;④⑤为系统设计,⑥⑦为系统实现;5.理解几个典型软件过程的内容及其优点与缺点:瀑布模型、增量模型、快速原型模型、螺旋模型、喷泉模型等;瀑布模型内容:瀑布模型是带“反馈环”的;优点:1可强迫开发人员采用的规范的方法结构化技术;2严格地规定了每个阶段必须提交的文档;3要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证;缺点:瀑布模型是由文档驱动的;1开发过程一般不可逆,否则代价太大;2实际的项目开发过程很难严格按照模型进行;3客户往往很难清楚地给出所有需求,而该模型却要求如此;4软件的实际情况必须到项目开发的后期客户才能看到,这要求客户有足够的耐心;快速原型模型是快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集;不带反馈环优点:软件产品的开发基本上是线性顺序进行的;1可以得到比较良好的需求定义,容易适应需求的变化;2有利于开发与培训的同步;3开发费用低、开发周期短且对用户更友好;缺点:1客户与开发者对原型理解不同;2准确的原型设计比较困难;3不利于开发人员的创新;增量模型也称为渐增模型;使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试;优点:在较短时间内可以向用户提交可完成部分工作的产品,逐步增加产品功能可以使用户有比较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击;1人员分配灵活,刚开始不用投入大量资源;2如果核心产品很受欢迎,则可增加人力实现下一增量;3可先发布部分功能给客户,对客户起到镇定剂的作用;缺点:1并行开发构件有可能遇到不能集成的风险,软件必须具备开放式的体系结构2增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而使软件过程失去整体性;螺旋模型的基本思想是使用原型及其他方法来尽量降低风险;理解这种模型的一种简便方法是把它看做在每个阶段之前都增加了风险分析过程的快速原型模型;优点:1设计上的灵活性,可以在项目的每个阶段进行变更;2以笑得分段来构建大型系统,使成本计算变得简单容易;3客户始终参与每个阶段的开发,保证项目不偏离正确的方向一击项目的可控性;4随着项目的推进,客户始终掌握项目的最新信息,从而他能够和管理层有效地交互;缺点:1采用螺旋模型需要具有相当丰富的风险评估经验和专门知识,在风险较大的项目开发中,如果未能够及时标示风险,势必造成重大损失;2过多的迭代次数会增加开发成本,延迟提交时间;喷泉模型:喷泉模型与传统的结构化生存期比较,具有更多的增量和迭代性质,生存期的各阶段可以相互重叠和多次反复,而且项目的整个生存期中还可以嵌入子生存期;就像水喷上去又可以落下来,可以落在中间,还可以落在底部;6.了解可行性研究中的任务和过程;用最小的代价在尽可能短的时间内确定问题是否能够解决;不是解决问题,而是确定问题是否值得去解决;可行性研究的根本任务:对以后的行动方案提出建议;实质:一次大大压缩简化了的系统分析和设计;任务:1.初步确定项目的规模,目标,约束和限制;2.在澄清了问题定义之后,分析员应该导出系统的逻辑模型;3.从系统逻辑模型出发,探索若干种可供选择的主要解法即系统实现方案;4.对每种解决方法都要研究它的可行性;技术可行性、经济可行性、操作可行性过程:1.复查系统规模和目标访问关键人员,描述目标系统的限制和约束;2.研究目前正在使用的系统:现有系统的问题;3.导出新系统的高层逻辑模型;4.进一步定义问题;5.导出和评价供选择的解法;6.推荐行动方针;7.草拟开发计划;8.书写文档提交审查;7.掌握系统流程图的概念和方法,会从具体的案例中抽象出系统流程图p388.掌握数据流图的概念和方法,会从具体的案例中画出0层数据流图和功能级数据流图P409.掌握数据字典的内容、方法、用户和实现p47内容:数据字典由4类元素定义组成;1数据流;2数据流分量即数据元素;3数据存储;4处理;定义数据的方法:数据字典中的定义就是对数据自顶向下的分解;由数据元素组成数据的方式只有下述3种基本类型:顺序选择重复用途:作为分析阶段的工具;实现:P4910.了解成本/效益分析方法p50货币的时间价值投资回收期:就是使累计的经济效益等于最初的投资费用所需的时间纯收入:整个生存周期之内的累计经济效益折成现在值-投资;投资回收率:现在的投资额P和估算出的将来每年的收益Fn,假设系统的使用寿命为n年;11.了解需求分析过程中任务是什么.p471.确定对系统的综合要求功能需求;指定系统必须提供的服务性能需求;指定系统必须满足的定时约束或容量约束可靠性和可用性需求;应定量指定出错处理需求;指环境错误,非系统本身的错误;2.分析系统的数据要求接口需求;常见的接口需求有:用户接口需求、硬件接口需求、软件接口需求、通信接口需求; 约束;常见的约束有:精度;工具和语言约束;设计约束;应该使用的标准;应该使用的硬件平台;逆向需求;说明软件系统不应该做什么;将来可能提出的要求;3.导出系统的逻辑模型;用数据流图、实体-联系图、状态转换图、数据字典和主要的处理算法描述这个逻辑模型;4.修正系统开发计划;用数据流图、实体-联系图、状态转换图、数据字典和主要的处理算法描述这个逻辑模型;12.理解面向数据流自顶向下逐步求精的方法和意义;p59结构化分析方法就是面向数据流自顶向下逐步求精进行需求分析的方法;通过可行性研究已经得出了目标系统的高层数据流图,需求分析的目标之一就是把数据流和数据存储定义到元素级;方法:为了达到这个目标,通常从数据流图的输出端着手分析,这是因为系统的基本功能是产生这些输出,输出数据决定了系统必须具有的最基本的组成元素;意义:1对数据流图细化之后得到一组新的数据流图,不同的系统元素之间的关系变得更清楚了; 2对这组新数据流图的分析追踪可能产生新的问题,这些问题的答案可能又在数据字典中增加一些新条目,并且可能导致新的或精化的算法描述;3随着分析过程的进展,经过提问和解答的反复循环,分析员越来越深入具体地定义目标系统,最终得到对系统数据和功能要求的满意了解;13.理解分析及建模的意义,需求分析中应该建立哪三种模型有哪些工具来帮助建立这些模型14.需求分析需要建立三种模型:1.数据模型:实体-联系图E-R数据对象即实体之间的关系2.功能模型:数据流图DFD系统对数据进行变换的功能3.行为模型:状态转换图系统的各种状态行为模式及状态之间的转换15.掌握实体关系E-R图的概念,内容和实现方法,能结合具体实例建立实体关系图;P6216.掌握状态图的概念,内容,实现方法和作用;p6517.掌握层次方框图、warnier图、IPO图的概念,内容和作用p6818.有穷状态机的概念和内容;Petri的概念;P77有穷状态机:状态集、输入集、转换函数、初始态、终态集Petri:P8219.总体设计是做什么总体设计的过程是怎样的P9120.总体设计的目标是将需求分析阶段定义的系统模型转换成相应的软件结构,以规定软件的形态及各成分间的层次关系、界面及接口要求;总体设计通常由两个过程组成:系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构;典型的设计过程包括:1.设想选择的方案2.选取理想的方案3.推荐最佳方案4.功能分解5.设计软件结构6.设计数据库7.制定测试计划8.书写文档9.省查和复审21.掌握软件设计的几个设计原理,理解他们的内容和意义;p941模块化就是把程序划分成独立命名且可独立访问的;2抽象;3逐步求精;4信息隐藏和局部化;5模块独立;它有两个定性标准度量:内聚和耦合;22.掌握耦合和内聚的概念和内容,理解这些原理对设计有哪些指导意义;耦合:耦合是对一个软件结构内不同模块之间互连程度;内聚:内聚标志着一个模块内各个元素彼此结合的紧密;耦合是影响软件复杂程度的一个重要因素;设计时力争做到高内聚,并且能够辨认出低内聚的模块,有能力通过修改设计提高模块的内聚程度并且降低模块间的耦合程度,从而获得较高的模块独立性;23.耦合包含了哪些类型每个类型的具体内容是什么由低到高24.1非直接耦合:就是没有耦合;2数据耦合:就是参数传递耦合,它属于低级别耦合;3标记耦合:标记耦合指两个模块之间传递的是数据结构;4控制耦合:它属于中级别耦合,比如调度程序与进程之间的耦合,就是控制耦合;5外部耦合:属于高级别耦合6公共耦合:指通过一个公共数据环境相互作用的那些模块间的耦合;7内容耦合:属于最高级别耦合,例如,一个模块利用分支或跳转技术,转入到另一个模块中去执行,就是内容耦合;25.启发性规则的内容及部分概念;1.改进软件结构提高模块独立性2.模块规模应该适中3.深度、宽度、扇出和扇入都应适当4.模块的作用域应该在控制域之内5.力争降低模块接口的复杂程度6.设计单入口单出口的模块7.模块功能应该可以预测26.层次图、HIPO图和结构图的内容;p10227.掌握面向数据流的设计方法,怎样用变换分析法基于数据流图设计出软件总体结构了解其中涉及到的概念,结合例子理解具体是怎么做的;p104概念:面向数据流的设计方法把信息流映射成软件结构,信息流决定了映射的方法,信息流有两种类型:1、信息沿输入通路进入系统,同时由外部形式变换成内部,进入系统的信息通过变换中心,经过加工处理以后再沿输出通路变换成外部形式离开软件系统;当数据流图具有这些特征时,这种信息流就叫做变换流;2、数据沿输入通路到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行;这类数据流应该划为一类特殊的数据流,称为事务流;28.详细设计是做什么p117详细设计阶段的根本目标是确定应该怎样具体地实现所要求的系统,即经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某些程序设计语言书写的程序;29.什么是结构程序设计p117结构程序设计是尽可能少用GOTO语句的程序设计方法,最好仅在检测出错误时才使用GOTO语句,而且应该总是使用前向GOTO语句;30.人机界面设计问题包含哪些p1221、系统响应时间;2、用户帮助设施;3、出错信息处理;4、命令交互31.掌握设计过程中用到的工具:程序流程图的概念,内容和方法;盒图的概念、内容和方法;会结合实例使用这些工具;掌握PAD图的概念和内容;掌握判定表的概念和内容;要结合实例来掌握它们;P12432.结合Jackson图来掌握面向数据结构的设计方法;p13033.如何度量程序算法的复杂性p13634.掌握几种测试:单元测试、集成测试、确认测试、白盒测试技术和黑盒测试技术;掌握它们的概念,内容和方法;P14635.理解软件维护的定义、特点和维护过程;P189定义:在软件已交付使用之后,为了改正错误或满足新的需要而修改软件的过程;特点:1结构化维护与非结构化维护差别巨大2维护的代价高昂3维护的问题很多维护过程:1、维护组织2、维护报告3、维护的事件流4、保存维护记录5、评价维护活动;36.掌握面向对象方法学的要点,理解面向对象方法学的优点;P203四个要点:对象、类、继承、消息优点:1、与人类习惯的思维方法一致2、稳定性好3、可重用性好4、较易开发大型软件产品5、可维护性好6、掌握面向对象的概念;37.掌握面向对象的概念;P209对象对象的形象表示,对象的定义,对象的特点其他概念类,实例,消息,方法,属性,封装,继承,多态性,重载38.面向对象建模是建立哪三个模型它们的具体内容是什么P21539.1、描述系统数据结构的对象模型类图:表示静态的、结构化的系统的“数据”性质;它是对模拟客观世界实体的对象彼此间的关系的映射,描述了系统的静态结构;2、描述系统控制结构的动态模型状态转换图:动态模型表示瞬时的,行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列;3、描述系统功能的功能模型用例图,数据流图:功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此更直接地反映了用户对目标系统的需求;40.建立对象模型的内容是什么P235建立对象模型,需要定义一组图形符号,并且规定一组组织这些符号以表示特定语义的规则;也就是说,需要用适当的建模语言来表达模型,建模语言由记号即模型中使用的符号和使用记号的规则语义、语法和语用组成;41.掌握用UML提供的类图来建立对象模型的方法;理解类图的定义、基本符号和具体内容;类图建立对象模型的方法:1、定义类2、定义属性3、定义服务4、定义类与类之间的各种关系关联、泛化、依赖和细化;类图的定义:类图描述类与类之间的静态关系;类图是一种静态模型,它是创建其他UML图的基础;基本符号:UML中类的图形符号为长方形,用两条横线把长方形分成上、中、下3个区域下面两个区域可省略3个区域分别放类的名字、属性和服务;42.能结合实例掌握类图中类与类之间的关系:关联、泛化继承、依赖和细化;能根据实例情况正确判断出类与类之间的具体关系类型;关联:关联表示两个类的对象之间存在某种语义上的联系;泛化继承:UML中的泛化关系就是通常所说的继承关系,它是通用元素和具体元素之间的一种分类关系;具体元素完全拥有通用元素的信息,并且还可以附加一些其他信息;泛化关系指出类与类之间存在“一般-特殊”关系;泛化可进一步分成普通泛化和受限泛化;依赖:描述两个模型元素类、用例等之间的语义连接关系:其中一个模型元素是独立的,另一个模型元素不是独立的,它是依赖于独立的模型元素,如果独立的模型元素改变了,将影响依赖于它的模型元素;细化:当对同一个事物在不同抽象层次上描述时,这些描述之间具有细化关系;43.动态模型的概念、内容;P223概念:动态模型表示瞬时的、行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列;内容:动态模型是基于事件共享而互相关联的一组状态图的集合;44.功能模型的概念、内容和建立功能模型的方法;P224概念:功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此直接地反应用户对目标系统的需求;内容:功能模型由一组数据流图组成;用例图也是进行需求分析和建立功能模型的强有力工具;方法:创建用例模型的工作包括:定义系统,寻找行为者和用例、描述用例,定义用例之间的关系,确认模型;其中,寻找行为者和用例是关键;45.掌握用例图的概念、内容和方法;P224概念:用例图包括模型元素有系统、行为者、用例和用例之间的关系;内容:系统、用例、行为者、用例之间的关系;方法:创建用例模型的工作包括:定义系统,寻找行为者和用例、描述用例,定义用例之间的关系,确认模型;其中,寻找行为者和用例是关键;46.掌握面向对象分析的基本过程:三个子模型与5个层次;P232三个子模型:静态结构对象模型交互次序动态模型数据变换功能模型复杂问题大型系统的对象模型通常由5个层次组成:主题层、类与对象层、结构层、属性层和服务层;47.结合实例来掌握面向对象分析过程中建立对象模型的方法包含哪些步骤;P231 1.首先,系统分析员要对需求文档进行分析;发现和改正需求文档中的歧义性、不一致性,剔除冗余的内容,挖掘潜在的内容,弥补不足,从而使需求文档更完整、更准确;2.然后,是需求建模;系统分析员根据提取的用户需求,即用面向对象观点建立对象模型、动态模型和功能模型;3.最后,是需求评审;通过用户、领域专家、系统分析员和系统设计人员的评审,并进行反复修改后,确定需求规格说明;48.结合实例来掌握面向对象分析过程中建立动态模型的方法包含哪些步骤;P24749.结合实例来掌握面向对象分析过程中建立功能模型的方法包含哪些步骤;P25350.能结合实例画事件跟踪图P24951.能结合实例画类的状态图P25052.能结合实例画出0层数据流图与功能级数据流图;P42。

软件工程全部知识点

软件工程全部知识点

第一章软件工程概述1. 软件的发展和软件危机的产生1.1 什么是软件1.2 软件的特征1.3 软件的分类软件无处不在1.4 软件的发展和软件危机产生是什么导致软件项目的失败2. 软件工程的关键问题2.1 软件工程的定义2.2 软件生命周期图书馆信息管理系统--功能设计图书馆信息管理系统--物理模型设计图书馆信息管理系统--数据设计图书馆信息管理系统--界面设计2.3 软件工程师的角色(软件工程师是从事软件开发相关工作的人员的统称)2.4 职业与道德责任知识点3. 软件工程——一种层次化技术3.1 软件工程的过程、过程框架、框架活动软件过程模型和软件生命周期模型软件过程和软件生命周期3.2 软件工程的方法(结构化方法、面向对象方法)结构化方法面向对象方法3.3 软件工程的工具(CASE)工具—计算机辅助软件工程( CASE)UML:Rational Rose or Microsoft VisoUI原型:Axure RP or UIDesigner4. 软件工程的基本原则和目标软件工程的目标5. 软件工程的衡量标准(ISO、CMMI)1)国际标准2)国家标准3)行业标准4)企业标准5)项目规范The CMMI具体好处CMMI里程碑几个级别的介绍知识点项目角色作业软件工程——一种层次化技术1. 软件过程、框架和活动框架活动2. 软件过程模型2.1 惯用过程模型瀑布模型瀑布模型的特点瀑布模型的优缺点瀑布模型的适应情况V模型V模型适合的情况原型开发模型惯用过程模型-增量模型惯用过程模型-螺旋模型2.2 专用过程模型专用过程模型之基于构件的过程模型CBSE过程模型2.3 统一过程模型第 4 讲需求工程引言1 用户描述的可能不是他想要的。

对用户的描述每个人有不同的理解结论Requirements Engineering4.1 什么是需求工程4.2 软件需求的定义和分类需求层次需求分类例子例需求工程的主要活动4.3 起始Questions4.4 导出(收集)4.4.1 收集需求访谈会议4.4.1 收集需求—访谈4.4.1 访谈实践4.4.1 对访谈者的要求4.4.1 收集需求—会议4.4.1 会议基本原则Safehome案例简介SafeHome结构/功能草案会议上收集到的基本软件功能市场营销人员撰写的产品要求SafeHome projectmini-specification例:SafeHome系统激活的场景(用例)例:酒店预定场景描述UML用例(Use Case)4.4.2 质量功能部署QFD4.4.3 导出工作产品4.5 精化4.6 协商需求4.7 规格说明(SRS)4.8 确认需求4.9 需求管理第 5 讲结构化分析(SA)建模结构化分析建模5.1数据建模与实体—关系图(ERD)5.2 功能建模和数据流图5.2.1 数据流图的画法Flow Modeling NotationExternal EntityProcessData FlowData Stores例:教材采购与销售管理系统数据流图多个数据流与加工之间关系的符号有关数据流5.2.2分层数据流图有关数据流分层分层图编号父图和子图的平衡局部文件画分层数据流图的注意事项数据流图的步骤例1例2例:教材采购与销售管理系统零层数据流图 L0教材采购与销售管理系统一层数据流图 L1教材采购与销售管理系统二层数据流图 L2.1教材采购与销售管理系统二层数据流图 L2.2例3DFD--- 0 levelDFD--- 1 levelDFD--- 2 level精化“检测传感器”5.2.3数据词典数据词典中的符号例如5.2.4 加工规格说明(处理规格说明 Process Specification PSPEC )(加工逻辑描述)Process Specification (PSPEC)判定树和判定表5.3 状态-迁移图Safehome 状态图Safehome 处理(加工)激活表第 6 讲面向对象分析建模方法我们在哪儿?已做工作创建SRS文档6 面向对象分析建模用例图 Use Case Diagram类图 Class Diagram对象图 Object Diagram状态图 StateChart Diagram顺序图 Sequence Diagram &协作图 Collaboration Diagram 创建一个用例图例:Hotel Reservation System1)创建系统边界2)增加用户这个参与者和用例3)增加预约代理这个参与者4)增加了接待员这个参与者保存用例图需求分析工作流程精化用例分析用例用例表格创建用例表第一步—根据SRS文档填写相关信息第二步—根据用例场景确定前置条件第三步—根据用例场景确定触发条件第四步—根据主要用例场景确定主事件流第五步—根据次要用例场景确定可选事件流第六步—决定后置条件展开高级用例分析继承模式参与者继承用例的特殊化分析用例依赖<<include>>依赖<<extend>>依赖一个旅店预约系统的组合实例如何使用活动图?创建用例的活动图用例活动分支并发流建立类模型介绍分析类(一)识别分析类用名次短语法识别分析类软件需求说明书中的名词候选类表格验证项目术语表候选类表格(示例)选择分析类候选类表格描述属性和定义操作用CRC分析法提取分析类选择一个候选类识别一个相关用例明确职责和协作者用CRC卡记录分析类评审CRC卡,更新候选类表格更新候选类表格(二)建立类模型确定类图中的元素关联关系(1)名称(2)角色(3)多重性(4)聚合关系(5)组合关系(6)导航性(方向性)类节点组成关联多重性导航性(方向性)建立类模型第一步-画类节点第二步-画关联第三步-填入关联和角色名第四步-填入关联重数(三)验证类模型定义对象图的要素链接使用对象图验证类模型第一步-订单情景1第二步-订单情景1第三步-订单情景1第四步-订单情景1第五步-订单情景1第六步-订单情景1建立订单情景2修正旅店预定系统的域模型第 7 讲设计工程(Design Engineering)回顾过程模型-瀑布模型回顾需求工程的主要活动回顾结构化分析建模回顾面向对象分析建模回顾综合面向对象和结构化分析1 软件工程中的设计设计的重要性The View of Design从分析模型到设计模型2 设计与质量2.1设计的目标2.2 设计的基本原则(优秀设计的基本特征)3 设计概念3.1 抽象过程抽象与数据抽象3.2 模块化模块划分与成本3.3 信息隐藏与功能独立功能独立性(Independency)耦合性(coupling)内聚性(cohesion)3.4 逐步求精(细化)3.5 模式案例:学生-教师-课程的ER图关联类第 8 讲体系结构设计(Architectural Design )回顾软件设计工程设计模型的构成软件设计的不同视图数据设计体系结构设计接口设计构件级设计8. 体系结构设计进行体系结构设计的好处软件体系结构和软件架构办公室里的争论软件架构为谁设计8.1 软件架构的4+1视图法(软件架构的描述)例:设备调试系统案例逻辑视图:设计满足功能需求的架构开发视图:设计满足开发期质量属性的架构过程视图:设计满足运行期质量属性的架构物理视图:和部署相关的架构决策逻辑视图到物理视图的映射物理视图:和部署相关的架构决策图书管理系统的逻辑视图图书馆信息管理系统的配置图中国古典建筑风格8.2 软件体系结构风格8.2.1 数据中心体系结构例:注册表注册表的结构数据中心模型的特点8.2.2 客户/服务器体系结构B/S体系结构8.2.3 层次体系结构例:版本管理系统经典的三层结构8.2.3 数据流体系结构(管道-过滤器)8.3 使用数据流进行体系结构映射8.3.1 系统结构图结构图(SC)的直观印象在系统结构图(SC)中的模块在系统结构图(SC)中的模块调用8.3.2 从数据流图映射到结构图8.3.2.1变换型数据流与变换型映射变换型数据流图例子变换型映射方式变换型分析的映射方式变换型系统结构图以SafeHome为例说明如何进行变换映射“传感器监测子系统”的第三级DFD以SafeHome为例说明如何进行变换映射(分析)“传感器监测子系统”以SafeHome为例说明如何进行变换映射(分析)传感器监测子系统输出流部分的SC传感器监测子系统的程序结构“雏形”以SafeHome为例说明如何进行变换映射(分析)“传感器监测子系统”的程序结构8.3.2.2 事务型数据流与事务型系统结构事务型数据流图事务型分析的映射方式以SafeHome为例说明如何进行事务映射(分析)用户交互子系统的二级数据流图确定流界事务流映射用户交互子系统的程序结构雏形例:还书数据流程图还书子系统结构图8.3.2.3 启发式设计策略(design heuristic )启发式设计策略(design heuristic )例1例2第 9 讲数据存储设计数据库存储策略9.1 基于ER图的数据库设计From ERD to Database architectureExample9.2 面向对象数据库设计将类映射到关系数据库将关联关系映射到关系数据库(1:1和m:n的关联关系)将关联关系映射到关系数据库(1:n的关联关系)将关联关系映射到关系数据库(基于关联类的关联关系)关联类将聚合/组合关系映射到关系数据库课堂练习将泛化(继承)关系映射到关系数据库开始编写设计文档第 10 讲界面设计1、什么是用户界面设计教学信息管理系统网站模糊不清,设计混乱的界面2、界面设计源于需求分析阶段3、界面设计三条“黄金原则”3.1 易用性是界面设计的核心3.2界面必须一致3.3 界面提供帮助3.4界面设计合理性3.5 界面的独特性3.6 界面的容错性3.7 界面与系统响应时间4、界面设计案例—输入界面设计点评查询界面点评复杂查询点评审核界面设计点评第 11 讲构件设计构件设计什么是构件设计?构件级设计1 什么是构件?构件认识的不同观点类的抽取过程2 基于类的构件设计2.1 基本设计原则从问题开始!开始设计:正方形设计方案正确吗?为什么会出现问题?面向对象的基本设计原则(1) Liskov Substitution Principle(LSP)里氏替换原则违背LSP原则怎么办?抽象类与具体类解决方案(2) Open-Close Principle(OCP)开闭原则OCP的关键在于抽象自动收听构件实现功能:开关、调台、音量设计的自动收听软件类图关于OCP举例:违反里氏替换原则的设计问题:鸟会飞,企鹅不会飞!修正后的设计:FlyingBird和子类Eagle符合替换原则(3) The Dependency Inversion Principle(DIP)依赖倒置原则传统的依赖关系符合DIP的系统实例分析(4) Interface Segregation Principle(ISP)接口分离原则接口污染解决方案:分离接口ISP本质(5) The Single Responsibility Principle(SRP)单一职责原则SRP本质违反SRP的案例解决方案设计质量:好的设计2.2 打包原则2.3 构件级设计指导方针2.4 内聚The Types of Cohesion (1)The Types of Cohesion (3)The Types of Cohesion (4)2.5 耦合Content Coupling (1)Content Coupling (2)Common CouplingControl Coupling and Data Coupling Notes设计评审第 12 讲软件测试框架活动1 软件测试组织1 软件测试步骤2 单元测试单元测试单元测试环境组件测试环境单元测试内容3 集成测试集成测试策略自顶向下自顶向下的步骤(1)自顶向下的步骤(2)回归测试Notes自底向上测试自底向上的步骤(1)自底向上的步骤(2)Sandwich Testing4 确认测试α测试和β测试5 System Testing恢复测试(recovery testing)安全性测试(security testing)强度/压力测试(stress testing)性能测试(performance testing) Summary6 白盒测试6.1 基本路径测试法计算环复杂度抽取独立路径6.2 其他控制结构测试(1) Condition Testing(2) Data Flow Testing(3) Loop TestingLoop Testing: Nested Loops7 黑盒测试7.1 等价类划分测试等价划分划分等价类的规则举例例:三角形判定等价类划分法设计测试用例的步骤例:调整工资模块答案7.2 边界值分析三角形判定。

软件工程复习知识要点

软件工程复习知识要点

1 软件和软件工程概念软件的组成部分之一;在软件开发中,编程只是软件开发过程的一个阶段。

2.在结构化程序设计时代,程序最小的单位是函数及子程序,程序和数据是分别的。

程序的最小单位是类。

3.软件的特性:形态特性、智能特性、开发特性、质量特性、生产特性、管理特性、环境特性、维护特性、废弃特性、应用特性。

4.软件的分类:系统软件;应用软件;支撑软件;可复用软件。

5.什么是软件工程?(课后题)软件工程是指导计算机软件开发和维护的工程学科。

接受工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。

6.可以用功能性、牢靠性、易用性、效率、可维护性和可移植性六个特性衡量软件的质量。

功能性是指软件所实现的功能达到它的设计规范和满意用户需求的程度。

可移植性是指软件从某一环境转移到另一环境时所作努力得程度。

7.软件生存期由软件定义、软件开发和运行维护三个时期组成。

开发时期通常由概要设计、详细设计、编码和测试四个阶段组成。

开发过程中的典型文档包括:项目支配、软件测试支配、软件设计说明书、用户手册。

8.需求分析的基本任务?(1)建立分析模型,了解系统的各种需求微小环节。

(2)基于分析结果,编写出软件需求规格说明或系统功能规格说明,确认测试支配和初步的系统用户手册,并提交管理机构进行分析评审。

2 软件工程方法和工具1.面对对象方法的动身点和基本原则,是尽量模拟人类习惯的思维方式,使开发软件的方法和过程尽可能接近人类相识问题和解决问题的方法和过程,从而使描述问题的问题空间和其解空间在结构上尽可能一样。

2.形式化方法的主要特点是:(课后题)(1) 软件需求规格说明被细化为用数学记号表达的详细的形式化规格说明;(2) 设计、实现和单元测试等开发过程由一个变换开发过程代替。

通过一系列变换将形式的规格说明细化成为程序。

3.面对对象 = 对象 + 类 + 继承 + 消息通信。

软件工程基础知识点总结

软件工程基础知识点总结

软件工程基础知识点总结软件工程是一门关于软件开发过程管理和使用工程原理、方法和技术的学科。

在软件工程领域,有一些基础知识点是非常重要的,下面是对软件工程基础知识点的总结。

1.软件生命周期软件生命周期是指软件从开始到结束的整个过程,包括需求分析、设计、编码、测试、部署、维护等阶段。

软件开发者需要了解整个生命周期,以便能够有效地进行软件开发和管理。

2.需求工程需求工程是软件工程的第一个阶段,包括需求获取、需求分析、需求规格说明等活动。

需求工程的目标是明确软件的功能和非功能需求。

3.软件设计软件设计是软件工程的核心环节,包括结构设计、数据设计、接口设计等。

软件设计的目标是制定一个高效、可靠、易于理解和维护的软件结构。

4.编码与调试编码是将软件设计转化为实际可执行的程序代码的过程。

调试是指在编码过程中发现和修复程序中的错误。

编码和调试是软件工程中非常重要的环节,对于软件的功能和性能起着决定性的作用。

5.软件测试软件测试是为了发现并修复软件中的错误和缺陷。

软件测试包括单元测试、集成测试、系统测试等。

软件测试是提高软件质量和可靠性的关键步骤。

6.软件配置管理软件配置管理是指对软件配置项(源代码、文档、二进制文件等)进行版本控制和配置管理的活动。

软件配置管理可以帮助开发者协同工作、追踪问题和管理变更。

7.软件项目管理软件项目管理包括项目计划、进度跟踪、资源管理、风险管理等活动。

软件项目管理可以帮助开发团队高效地完成软件开发项目,提高项目的成功率。

8.软件工程方法和技术软件工程方法和技术是软件开发过程中使用的工具和方法。

例如面向对象分析和设计、结构化分析和设计、敏捷开发等。

掌握并应用合适的方法和技术可以提高软件开发的效率和质量。

9.软件质量管理软件质量管理是指对软件开发过程和产品质量进行监控和管理的活动。

软件质量管理包括质量计划、质量控制、质量评估等。

软件质量管理可以保证软件开发过程的高效和软件产品的质量。

10.软件工程伦理和职业责任软件工程伦理和职业责任是软件工程领域的重要方面。

软件工程基础知识点总结

软件工程基础知识点总结

软件工程基础知识点软件工程基础知识点1. 软件工程概述软件工程是一门研究和应用软件的系统化方法,通过应用工程原理和方法来开发和维护高质量的软件。

它涵盖了软件开发的整个生命周期,包括需求分析、设计、实现、测试和维护。

2. 软件开发生命周期软件开发生命周期是指软件从概念形成到最终退役的整个过程。

它通常包括需求分析、设计、编码、测试和维护等阶段。

这些阶段之间有相互依赖的关系,每个阶段都有相应的工作、产物和可交付成果。

3. 软件需求工程软件需求工程是指通过系统化和规范化的方法来理解和定义软件系统的功能和性能需求。

它包括需求获取、需求分析和需求规格等活动。

4. 软件设计原则软件设计原则是软件设计的指导原则,它包括单一职责原则、开放封闭原则、里氏替换原则、依赖倒置原则、接口隔离原则和迪米特法则等。

5. 软件开发方法软件开发方法是指在软件开发过程中应用的一种组织和管理方法。

常见的软件开发方法包括瀑布模型、迭代模型、敏捷方法和螺旋模型等。

6. 软件测试方法软件测试是为了发现和修复软件错误的过程。

常见的软件测试方法包括黑盒测试、白盒测试、灰盒测试、单元测试、集成测试和系统测试等。

7. 软件质量保证软件质量保证是确保软件满足用户需求和质量标准的过程。

它包括质量计划、质量控制和质量改进等活动。

8. 软件配置管理软件配置管理是一种管理软件配置项的过程。

它涉及到配置项的标识、控制、状态管理和变更管理等活动。

9. 软件工程工具软件工程工具是为了支持软件开发和维护而设计的工具。

常见的软件工程工具包括代码编辑器、集成开发环境、版本控制系统和缺陷跟踪系统等。

10. 软件项目管理软件项目管理是为了更好地组织和管理软件开发项目的过程。

它包括项目计划、项目追踪、项目风险管理和项目质量管理等活动。

软件工程是一门综合性的学科,它涵盖了软件开发的方方面面。

了解和掌握软件工程的基础知识对于我们在软件开发和维护过程中能够更好地理解和应用相关的原则和方法具有重要意义。

软件工程基本知识点

软件工程基本知识点

软件工程基本知识点
软件工程的基本知识点包括以下几个方面:
1.软件工程的定义:软件工程是一门指导软件开发的工程学科,它采用工程化的概念、原
理、技术和方法来进行软件的开发和维护。

软件工程的目标是以较少的投资获取高质量的软件。

2.软件生命周期:软件生命周期是指从用户需求开始,经过开发、交付使用,在使用中不
断地增补修订,直至软件报废的全过程。

这个过程包括可行性研究和项目开发计划、需求分析、概要设计等阶段。

3.软件的定义:一种公认的传统的软件定义为:软件=程序+数据+文档。

其中,程序是按
事先设计的功能和性能要求执行的指令序列;数据是使程序能够正确地处理信息的数据结构;文档是与程序开发、维护和使用有关的图文资料。

4.软件的特点:软件具有抽象性,可以存储在介质中,但无法直接看到其形态。

此外,软
件的生产方式与硬件不同,一旦设计开发出来,复制十分简单,成本也极为有限。

因此,软件产品的生产成本主要是设计开发的成本。

5.软件与硬件的区别:软件是整个计算机系统中的一个逻辑部件,而硬件是一个物理部件。

软件与硬件的维护也不同,硬件是有耗损的,其产生的磨损和老化会导致故障率增加甚至损坏,而软件的维护则主要是针对程序和数据的修改和完善。

以上只是软件工程的一些基本知识点,实际上软件工程涉及的领域非常广泛,包括软件开发方法、软件开发工具、软件项目管理等多个方面,需要不断学习和实践才能掌握。

软件工程知识点整理

软件工程知识点整理

1、计算机软件概念软件指计算机系统中的程序及其文档。

程序是计算任务的处理对象和处理规则的描述文档是为了便于了解程序所需的阐明性资料,文档一般是给人看的2、软件发展的3个阶段(了解)程序设计阶段——50至60年代程序系统阶段——60至70年代软件工程阶段——70年代以后3、软件工程概念(1)把系统化的、规范化的、可度量的途径应用于软件开发、运行和维护的过程,也就是把工程化应用于软件中;(2)研究(1)中提到的途径3、软件生存周期概念及其6个阶段软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。

为计算机软件的生命周期。

软件生命周期的六个步骤,即制定计划、需求分析、设计、程序编码、测试及运行维护。

4、瀑布模型的思想、特点及其局限性思想:(1)软件开发过程与软件生命周期是一致的(2)相邻二阶段之间存在因果关系(3)需对阶段性产品进行评审特点:(1)接受上一阶段活动的结果作为本阶段活动的输入(2)依据上一阶段活动的结果哦实施本阶段应完成的活动(3)对本阶段的活动进行评审(4)将本阶段活动的结果作为输出,传递给下一阶段局限性:(1)缺乏灵活性,如用户需求一开始很难确定(2)到最后阶段才能得到可运行的软件版本5、增量模型思想、特点和局限性(1)增量模型将软件的开发过程分成若干个日程时间交错的线性序列,每个线性序列产生软件的一个可发布的“增量”版本,后一个版本是对前一版本的修改和补充,重复增量发布的过程,直至产生最终的完善产品。

(2)增量模型融合了瀑布模型的基本成分(重复地应用)和演化模型的迭代特征(3)增量模型强调每一个增量都发布一个可运行的产品(第一个增量是核心产品)·特点:增量模型的特点是引进了增量包的概念,无须等到所有需求都出来,只要某个需求的增量包出来即可进行开发。

虽然某个增量包可能还需要进一步适应客户的需求并且更改,但只要这个增量包足够小,其影响对整个项目来说是可以承受的。

·增量模型特别适用于:1、需求经常变化的软件开发2、市场急需而开发人员和资金不能在设定的市场期限之前实现一个完善的产品的软件开发·增量模型能有计划地管理技术风险,如早期增量版本中避免采用尚未成熟的技术。

软件工程师必备知识点总结

软件工程师必备知识点总结

软件工程师必备知识点总结作为一个软件工程师,掌握一系列必备的知识点是必不可少的。

本文将总结一些软件工程师必备的重要知识点,包括编程语言、数据结构与算法、系统设计与开发、软件测试与质量保证以及沟通与团队合作技巧等。

以下是这些知识点的详细总结:一、编程语言1. Java:Java是一种跨平台的面向对象编程语言,具有良好的可扩展性和安全性,是软件工程师必备的编程语言之一。

2. Python:Python具有简洁易学的特点,广泛应用于数据分析、人工智能等领域,掌握Python能够提高开发效率。

3. C++:C++是一种高性能、通用性强的编程语言,常用于系统级开发和游戏开发等领域,对于底层知识的理解有很大的帮助。

4. JavaScript:JavaScript是一种用于网页交互的脚本语言,掌握JavaScript能够进行前端开发,并提升用户体验。

二、数据结构与算法1. 数组与链表:了解数组和链表的特点、存储方式以及常见操作,能够根据具体情况选择合适的数据结构。

2. 栈与队列:了解栈和队列的原理和应用场景,能够使用它们解决实际问题。

3. 树与图:掌握二叉树、堆、图等数据结构的表示方法和常见操作,能够运用它们解决相关问题。

4. 排序与查找算法:了解常见的排序算法(如冒泡排序、快速排序等)和查找算法(如二分查找等),并能够根据需求选择合适的算法。

三、系统设计与开发1. 面向对象设计原则:熟悉面向对象设计原则,如单一职责原则、开闭原则、依赖倒置原则等,能够设计出易于维护和扩展的系统。

2. 设计模式:掌握常见的设计模式,如工厂模式、单例模式、观察者模式等,能够灵活应用它们解决实际问题。

3. 数据库设计与优化:了解数据库设计的基本原理和范式,并能够进行SQL语句的编写、索引的设计和性能优化。

4. Web开发技术:熟悉常用的Web开发技术,如HTML、CSS、HTTP协议、RESTful接口等,能够进行Web应用的设计与开发。

软件工程知识点

软件工程知识点

第一章软件工程概述一、软件的定义和特性(P2—P3)定义:软件=程序+数据+文档程序:按照事先设计的功能和性能要求执行的指令或语句序列数据:程序能正常操纵信息的数据结构文档:描述程序操作和使用的文档特性:(1)软件是一种逻辑实体,具有抽象性,不是一般的物理实体;(2)软件的成产与硬件存在某些相同点,但有根本上的不同,软件开发是人的智力的高度发挥,而不是传统意义上的制造,它更依赖于开发人员的素质,智力,人员和组合,合作和管理;(3)软件维护与硬件维修有着本质的差别,软件维护没有硬件维护那样有可替换的标准零件;(4)软件在运行和使用期间没有硬件那样的机械磨损,老化问题,但存在退化问题;(5)基于构件的开发方法由于其自身的特点越来越受到人们的重视,这些技术可以减少开发时间、提高质量,并提高复用水平。

* 掌握P4图1-2(b)软件失效率曲线二、计算机软件的发展经历了几个阶段?各有何特征?(P1—P2)共经历了四个阶段特征:第一阶段——程序规模小且主要采用个体工作方式,开发的系统大多采用批处理技术第二阶段——引入人机交互的概念,实时系统出现,产生了第一代数据库管理系统,程序编制采用了合作的工作方式,出现了早期的软件危机第三阶段——分布式系统出现,嵌入式系统得到广泛应用,低成本硬件第四阶段——强大的桌面系统和计算机网络迅速发展时期,面向对象技术得到广泛应用,人工智能技术和专家系统开始应用于软件。

三、什么是软件危机?其产生的原因是什么?定义:软件危机是指由于落后的软件生产方式无法满足迅速增长的计算机软件应用需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。

(P4)原因:(P5)(1)用户对软件需求的描述不准确、不全面,甚至有错误,以及在开发过程中,不断提出或者修改需求;(2)用户和开发人员对软件需求的理解存在差异,导致所开发的软件产品和用户需求不一致;(3)大型软件项目需要组织一定的人力共同完成,各类人员的信息交流不及时、不准确,有时还可能产生误解,软件开发人员对大型软件缺少开发经验,管理人员缺少相应的管理经验;(4)软件开发人员不能有、独立自主的处理大型软件的全部关系和各个分支,因此容易产生疏漏和错误;(5)开发技术落后,缺乏有效的方法学和工具方面的支持,过分依赖程序设计人员在软件开发过程中的技巧和创造性,加剧软件产品的个性化(6)软件产品的特殊性和人类智力的局限性,导致人们无法处理“复杂问题”,因为软件是逻辑产品,软件开发进展情况较难衡量、软件开发质量难以评价、管理和控制软件开发过程相当困难。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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页的环形复杂度计算。

相关文档
最新文档