软件工程知识点汇总

软件工程知识点汇总
软件工程知识点汇总

软件工程知识点汇总

1 软件工程、软件工程方法学:三要素

1.1 软件工程:○1应用系统化的、规范化的、可度量的方法来开发、运行和维护软件,即将工

程应用到软件;○2对○1的各种方法的研究

1.2 软件工程是一门研究用工程化方法构建和维护有效的实用的和高质量的软件的学科

1.3 软件工程三要素是:方法、工具、过程

软件工程的方法:是指完成软件开发各项任务的技术方法

软件工具:是指为软件工程方法的运用提供自动半自动的软件支撑环境

软件工程过程:是指将软件工程方法和工具综合起来以达到合理、及时地进行计算机软件开发这一目的

2 软件工程的原则包括:模块化原则、信息隐蔽原则、抽象化原则、模块独立原则(内聚、耦合)、

依赖倒转原则、开闭原则等

2.1 模块化原则:指解决一个复杂问题时自顶向下逐层把软件系统划分为若干模块的过程。模

块是程序中相对独立的成分,一个独立的编程单位,应有良好的编程接口,模块的大小要

适中,模块过大会使模块内部的复杂性增加不利于模块的理解和修改,模块过小会导致整

个系统表示过于复杂,不利于控制系统的复杂性。

2.2 信息隐蔽原则:采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单。

2.3 抽象化原则:抽取事物最基本的特性和行为,忽略非本质细节,采用分层次抽象,自顶向

下,逐层细化的办法控制软件开发过程的复杂性。

2.4 模块独立原则:是指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少

且接口简单。要求在一个物理模块内集中逻辑上相互关联的计算机资源,保证模块间由松

散的偶合关系,模块内部有较强的内聚性,这有助于控制系统的复杂性。(即:高内聚低

耦合)

2.5 依赖倒转原则:抽象不应该依赖于细节,细节应该依赖于抽象。

2.6 开闭原则:软件实体应该是可扩展的,但是不可以修改。即对于扩展是开放的,对于更改

是封闭的。

3 软件开发模型:瀑布模型;快速原型;喷泉模型;各种模型的工作原理、阶段、每阶段任务、

特点、示意图;

软件开发模型(也称为软件过程模型):是从软件项目需求定义开始直至软件经使用后废弃为止,跨

越整个生命周期的系统开发、运行和维护所实施的全部过程、活动和任务的结构框架

3.1 瀑布模型(又称线性模型):

3.1.1工作原理:规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。

前一阶段的工作成果是后一阶段工作开始的基础.所以,每个阶段都必须交出合格的文档,必须对前阶段的工作进行评审,前一阶段的工作完成后才可以开始后一阶段的工作

3.1.2 阶段:

计划时期:问题定义、可行性研究

开发时期:需求分析、设计、编码、测试

运行时期:运行和维护

3.1.3 各阶段任务:

1.需求分析和定义

在软件项目进行过程中,需求分析是从软件定义到软件开发的关键步骤,是今后软件,开发的基本依据,同时也是用户对软件产品进行验收的基本依据。需求分析和定义是以用

户需求为基本依据,从功能、性能、数据、操作等多个方面,对软件系统给出完整、准确、具体的描述,用于确定软件规格。

2.软件设计

根据系统需求的定义,确定系统的结构,进行系统的概要设计和各部分的功能与结构的详细设计。

3.编码与单元测试

在这一阶段,根据软件设计文档完成了程序模块或程序单元的编码。通过程序单元测试,验证其是否满足设计规范。

4.集成和系统测试

程序模块或程序单元被组装集成起来成为一个软件系统,然后进行系统测试。测试完成后即交付用户使用。

5.运行和维护

通常这是软件生命周期中最长的一个阶段。如果在运行期发现了软件的错误,就要修改软件,可能会重复上述某个或多个阶段的活动。

3.1.4 特点:

①顺序性、依赖性:下一阶段依赖上一阶段的完成。

②推迟实现:阶段任务结束形成文档,并审核后方能进行设计任务,将程序的实现推迟

进行。

③质量保证:文档完整、文档评审,避免错误积累与放大效应。

3.1.5 示意图:

3.2 快速原型

3.2.1 工作原理:

快速原型是利用原型辅助软件开发的一种新思想。经过简单快速分析,快速实现一个原型,用户与开发者在试用原型过程中加强通信与反馈,通过反复评价和改进原型,减少误解,弥补漏洞,适应变化,最终提高软件质量。

废弃型:也称快速建立需求规格原型法:先构造一个功能简单而质量要求不高的模型系统,针对这个模型系统反复的进行分析修改,从而形成较好的设计思想,据此设计出更加完整、准确、一致可靠的最终系统,系统构造完成后,原来的模型就被废弃追加型:也称快速建立渐进原型法。它采用循序渐进的开发方式,对系统模型作连续精化,即先构造一个功能简单而且质量要求不高的模型系统,最为最终系统的核心,将系统需要具备的性能逐步添加上去,通过不断地扩充修改,逐步追加新的要求,直至所有性能

全部满足,此时原型模型也就是最终的产品。

3.2.2 阶段及任务

原型快速分析:是指在分析者和用户的紧密配合下,快速确定软件系统的基本要求,根据原型所要体现的特性(总体结构、处理功能、模拟性能、界面形式等),描述基本需求规格说明,以满足开发圆形的需要。

原型构造:在快速原型分析的基础上,根据基本需求规格说明,忽略细节只考虑主要特性快速构造一个可运行的系统。

原型运行与评价:是软件开发人员与用户频繁通信、发现问题、消除误解的用药阶段,目的是验证原型的正确程度,进而开发新的并修改原有的需求。

原型修改:根据评价原型的活动结果进行修改。若原型未满足需求说明的要求,说明对需求说明存在不一致的理解或实现方案不够合理,则根据明确的要求迅速修改原型。

3.2.3 特点

1.增强了软件开发人员和用户对系统需求的理解,便于将用户模糊的功能需求明确化2.为用户提供了一种强有力的学习手段

3.易于确定系统的性能,是理解和确定软件需求规格说明的良好工具

4.按照快速建立渐进原型法建立的原型即为最终的产品

利用快速原型化技术可以为软件开发提供一种完整、灵活、近似动态的需求规格说明方法。

3.2.4 示意图

3.3 喷泉模型

3.3.1 工作原理:喷泉模型是一种以用户需求为动力,以对象为驱动的模型,主要用于描

述面向对象的软件开发过程。该模型认为软件开发过程自下而上周期的各阶段是相互

重叠和多次反复的,各个开发阶段没有特定的次序要求,并且可以交互进行,可以在

某个开发阶段中随时补充其他任何开发阶段中的遗漏。

3.3.2 阶段

3.3.3 每阶段任务

3.3.4 特点:喷泉模型体现了软件创建所固有的迭代和无间隙的特征。迭代指系统中某个

部分常常重复工作多次,无间隙指活动之间没有明显的间隙,如在分析和设计之间没

有明显的界限。

3.3.5 示意图

4软件生命周期:阶段、各阶段功能、所涉及的内容(图、工具和文档)

4.1软件生命周期:是指一个计算机软件从功能确定、设计到开发成功投入使用,并在使用中不断

地修改、增补和完善,知道被新的需求所替代而停止该软件的使用全过程。

4.2四个工作阶段:

初始阶段:建立业务模型,定义最终产品视图,并且确定项目的范围。

精化阶段:设计并确定系统的体系结构,制定项目计划,确定资源需求。

构建阶段:开发出所有构件和应用程序,把它们集成为客户需要的产品,并且详尽地测试所有功能。

移交阶段:把开发出的产品提交给用户使用

4.3各阶段功能:

1问题定义可行性研究

○1可性研究的任务是以最小的代价在尽可能短的时间内确定问题是否值得解决、是否能够解决。

○2阶段性成果《项目可行性报告》

2需求分析阶段

○1需求分析的主要任务就是要通过软件开发人员与用户的交流和讨论,准确地获取用户对系统的具体要求。

○2阶段性成果《需求规格说明书》、数据字典、数据流图(DFD)

3概要设计阶段

○1划分出组成系统的物理元素,设计软件的结构,即确定模块及模块间的关系,根据需求分析阶段得到的逻辑模型来设计系统的物理模型

○2阶段性成果《概要设计说明书》

4详细设计阶段

○1设计每个模块的算法,确定每一模块使用的数据结构,确定模块接口的细节,为每一个模块设计一个测试用例,编写详细设计说明书

○2《软件详细设计》文档

5编码和单元测试

6系统测试

7软件维护阶段

4.4各阶段所涉及的内容(文档、工具、图)

5结构化方法: 生命周期中各阶段任务.获取用户需求、画数据流图、数据字典

6可行性分析、需求分析、设计(概要设计+详细设计)、测试、维护

7面向对象方法:核心概念、模型

7.1面向对象中的基本概念:

对象:代表了一个现实的或虚构的实体

类:对具有相同数据和相同操作的一组相似对象的定义

继承:子类自动的共享父类中定义的数据和方法的机制

多态性:一个名字具有多种语义

封装:将属性和操作包装成一个单元,使得对状态的访问和修改只能通过封装提供的接口进行消息:对象间在交互中所传送的通讯信息

关联:对象之间所存在的联系

7.2模型

对象模型:即寻找问题域中的对象,从对象中抽象出类的定义,识别对象的内部特征,定义属性,识别对象的外部关系,识别主题。

动态模型:即建立交互图、状态图和活动图,进一步定义用例。

功能模型:即用例分析,以用例对用户需求进行规范化描述;

为了更好地理解问题,人们常采用建立建立问题模型的方法。

模型就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。

通常,模型由一组图示符号和组织这些符号的规则组成。模型是一种思考工具,可以把知识规范地表示出来。对于那些因过分复杂而不能直接理解的系统,特别需要建立模型,建模的目的主要是为了减少复杂性。一旦建立起模型之后,就要经受用户和各个领域专家的严格审查。模型常常会经过多次必要的修改。

用OO方法开发软件,通常需要建立3种形式的模型:对象模型----描述系统数据结构;动态模型----描述系统控制结构;功能模型----描述系统功能;这三种模型各自从不同的侧面反映软件系统的内容,相互影响、相互制约,有机地结合在一起,全面地表达对目标系统的需求。对象模型表示静态的、结构化的系统的“数据”性质。描述了系统的静态结构。面向对象方法强调围绕对象而不是功能来构造系统。对象模型为建立动态模型和功能模型,提供了实质性的框架。1997年11月,国际对象管理组织OMG

批准把UML1。1作为基于面向对象技术的标准建模语言。通常,使用UML的类图来建立对象模型。在UML中术语“类”的实际含义是,“一个类及属于该类的对象”

-----------------------------------------------

状态模型表示瞬时的、行为化的系统的“控制”性质,它规定了对象模型中的对象的合法变化序列。

一旦建立起对象模型之后,就需要考察对象的动态行为。所有对象都具有自己的生命周期。状态,是对对象属性值的一种抽象。各对象之间相互触发就形成了一系列的状态变化。一个触发行为称作一个事件。对象对事件的响应,取决于接受该触发的对象当时所处的状态,响应包括改变自己的状态或者又形成一个新的触发行为。状态有持续性,它占用一段时间间隔。状态与事件密不可分,一个事件隔开两个状态,一个状态隔开两个事件。事件表示时刻,状态表示时间间隔。UML中用状态图来描绘对象的状态、触发状态转换的事件及对象的行为。每个类的动态行为用一张状态图来描绘,各个类的状态图通过共享事件合并起来,从而构成系统的动态模型。动态模型是基于事件共享而互相关联的一组状态图的集合。-----------------------------------------------

功能模型表示变化的系统的“功能”性质,它指明了系统应该“做什么”,因此更直接地反映了用户对目标系统的需求。通常,功能模型由一组数据流图组成。在OO方法中,数据流图远不如在结构化方法中那样重要。但建立功能模型有助于开发人员更深入地理解问题域,改进和完善自己的设计。UML 中提供的用例图也是进行需求分析和建立功能模型的强有力工具。UML中把用例图建立起来的系统模型称为用例模型。使用用例模型代替传统的功能说明,往往能够更好地获取用户需求,它所回答的问题是“系统应该为每个(或每类)用户做什么”。

8面向对象方法、UML:获取用户需求、画用例图、对象模型、UML中的关系

1.面向对象的方法

(1)分析:包括问题描述、构建对象模型、构建动态模型、构建功能模型。最后得到的分析文档包括问题需求的陈述、对象模型、动态模型和功能模型。

(2)系统设计:结合问题域的知识和目标系统的体系结构,将目标系统分解为子系统,标识由问题所规定的并发性,设计适当的控制机制组织子系统协调工作,然后选择数据管理的基本策略,考虑对边界条件的处理。最后得到的系统设计文档包括基本的系统体系结构和高层次的决策策略。

(3)对象设计:以分析模型为基础,首先定义类,设计类属性及操作,为每个操作选择合适的数据结构并定义算法,调整类结构以强化继承性;然后创建对象,设计消息以补充对象关联;

通过关联发现新的对象或交互条件时,修改类组织以优化对数据的访问,改善设计结构。最后得到的对象设计文档包括细化的对象模型、细化的动态模型和细化的功能模型。

(4)实现:将设计转换为特定编程语言代码并在相应环境运行,同时保持可追踪性、灵活性和可扩展性。

2.UML:统一建模语言(UML)是一个通用的可视化建模语言,用于对软件进行描述、可视化处

理、构造和建立软件系统产品的文档。UML描述了一个系统的静态结构和动态行为

3.获取用户需求

(1)与用户进行充分沟通,了解用户对软件的需求;

(2)识别对象集合及对象间的关系;

(3)定义类(包括属性和操作)并建立类间的层次关系;

(4)建立模型来表示对象之间的关系及行为特性。

4.用例图:用例模型描述外部执行者所理解的系统功能。用例模型用于需求分析阶段,描述待开发系

统的功能要求,帮助软件设计人员理解系统要做的工作,同时用例模型还可以为其他模型建立、结构设计、实现及测试工作等提供依据。一个用例模型是由若干用例图组成的,进行用例建模的过程主要包括寻找执行者、寻找用例、描述用例、确定执行者和用例之间的关系等工作,其中寻找执行者和用例是用例建模的关键。

5.对象模型:对象模型表示静态的、结构化的系统的“数据”性质。描述了系统的静态结构。面向对象方法强调围绕对象而不是功能来构造系统。对象模型为建立动态模型和功能模型,提供了实质性的框架。通常,使用UML的类图来建立对象模型。在UML中术语“类”的实际含义是,“一个类及属于该类的对象”

6.关系:

依赖

关联

泛化

实现

9测试:黑盒、白盒设计测试用例

9.1白盒测试(结构测试、逻辑驱动测试):

9.1.1语句覆盖:设计若干个测试用例,使得被测试的程序中的每条可执行语句至少被执行一次

9.1.2判断覆盖:每个判断至少都获得一次“真”值和“假”值

9.1.3条件覆盖:每个判断中的条件可能的取值至少被执行一次

9.1.4判断与条件覆盖:每个判断的真假值分支至少被执行一遍,并且每个判断的条件的内部判

断式的真假值分支也要被执行一遍

9.1.5条件组合覆盖:程序中每个判断条件的内部判断式的各种真假值组合可能都至少执行一遍

9.1.6路径覆盖:覆盖程序中所有可能的路径

9.1.7六种逻辑覆盖从弱到强的排列顺序

语句覆盖-→判断覆盖-→条件覆盖--→判断条件覆盖→条件组合覆盖--→路径覆盖

9.2黑盒测试

9.2.1等价类划分:有效等价类和无效等价类

9.2.2边界值分析

10软件项目管理:项目管理、五大过程、九大知识领域、项目三角形

项目管理:是为完成一个预定的目标,而对任务和资源进行规划、组织和管理的程序

项目三角形:时间:反映在项目计划中的项目完成所需时间。资金:即项目的预算,取决于资源的成本,这些资源包括完成任务所需的人员、设备和材料。范围:项目的目标和任务,以及完成这些目标和任务所需的工时。

项目管理的五大过程:启动过程、计划过程、实施过程、控制过程、收尾过程

项目管理的九大知识领域:范围管理、时间管理、成本管理、质量管理、风险管理、人力资源管理、沟通管理、采购管理、综合管理

11配置管理:配置管理、配置管理项、基线、里程碑

配置管理:是一组追踪和控制活动,它们开始于软件项目开始时,结束于软件被淘汰之时。

配置管理项:1。计算机程序----源代码和可执行程序2。描述计算机程序的文档----供技术人员或用户使用3。数据----程序内包含的或在程序外的。。。每个配置项的主要属性有名称、标识符、文件状态、版本、作者、日期等

基线:是一组配置项,这些配置项不能被随便修改和变更。基线是软件生存期中各开发阶段末尾的特定点,又称里程碑。

软件开发各阶段的基线:

12结构化方法与面向对象方法的比较:基本思想;分阶段比较

1.结构化方法:

基本思想:可以概括为自顶向下、逐步求精,采用模块化技术和功能抽象将系统按功能分解为若干模块,从而将复杂的系统分解成若干易于控制和处理的子系统,子系统又可分解为更小的子任务,最后的子任务都可以独立编写成子程序模块,模块内部由顺序、选择、循环等基本控制结构组成。

2.面向对象方法

基本思想:面向对象方法的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界、解决问题的方法与过程,将客观世界中的实体抽象为问题域中的对象。使用现实的概念抽象地思考问题,从而自然地解决问题,保证软件系统的稳定性和可复用性以及良好的维护性。

3.两种方法的比较:

传统的结构化方法,是软件工程中最为成熟的方法。对于能够预先确定需求的系统的开发,采用结构化方法非常有效,但是对于需求是模糊的或随时间变化的系统开发这种方法不能适应。

面向对象方法,对于需求不能预先确定的系统的开发,可采用面向对象方法结合,这样就能够结合面向对象方法所具有的稳定性好、可复用性好和可维护性好的特点。

需求分析阶段:结构化方法:采用自顶向下功能分解的方法,强调逻辑功能而不是实现功能的具体方法,使用图形进行系统分析并表达分析的结果--数据流图,使用结构化分析方法获得的需求规格说明书由数据流图、数据词典及补充材料组成。面向对象方法:面向对象分析的关键是识别出问题域中的对象,并分析它们之间的关系,最终建立起问题域的简洁、精确、可理解的正确模型。

面向对象分析模型通常包括对象模型、动态模型和功能模型。对象模型是最重要、最基本、最核心的。

设计阶段:结构化软件是功能的集合,通过模块调用实现系统。面向对象软件是事物的集合,通过对象及联系实现系统。结构化软件=过程+数据,以过程为中心。面向对象软件=数据+相应操作,以数据为中心。结构化软件采用顺序处理方式,由过程驱动控制;面向对象软件采用交互式、并行处理方式,由消息驱动控制;结构化方法的重点是设计;面向对象方法的重点是分析。结构化方法更适合数据类型比较简单的软件项目的开发;面向对象方法更适合大型复杂的软件项目的开发

练习题:

1.看书上实例A,理解RUP过程

2.试讨论RUP过程的优缺点

3.RUP过程主要适用于何种项目?

4.用面向对象方法开发软件时与结构化方法开发软件时相比较,软件的生命周期有何不同?这种差

异带来了什么后果?

5.为什么说广州本田牌汽车是小汽车类的特化,而发动机不是小汽车类的特化?

6.什么是对象?它与传统的数据有何区别?

7.试用面向对象分析方法设计下述程序:

8.在显示器屏幕上圆心坐标为(100,100)的位置画一个半径为40的圆,在圆心坐标为(200,300)

的位置画一个半径为20的圆,在圆心坐标为(400,150 )的位置画一条弧,起始角为30度,结束角度为120度,半径为50.

9.思考题1、一个程序能够既正确又不可靠吗?请解释你的答案。

软件可靠性是程序在给定的时间间隔内按规格说明书的规定成功地运行的概率。

软件可靠性即包含正确性又包含健壮性。即程序在正常环境下应能正确地完成预期功能,在意外环境下,也应能作出适当的响应。

如果某程序在正常环境下可正常运行,在异常环境下不能作出适当的响应,则该项程序就是既正确又不可靠

思考题2、为什么在开发软件的过程中变化既是必要的又是不可避免的?为什么必须进行配置管理?

在软件开发过程中,下述原因会导致软件配置项发生变化,新的市场条件导致需求或业务规则变化,客户的需求也会或多或少地发生变化。企业改组或业务缩减,引起项目优先级或软件工程队伍结构变化,预算或进度限制,导致对目标系统的重新定义,发现了前期阶段的错误,必须加以改正。因此,在开发软件的过程中,变化既是必要的,又是不可避免的。如果不能适当地控制和管理变化,势必造成混乱并产生许多严重的错误。软件配置管理是在软件的整个生命期内管理变化的一组活动,可以认为软件配置管理是应用于整个软件生命期的软件质量保证活动,是专门用于管理变化的软件质量保证活动,软件配置管理的目标是使变化更正确且更容易被适应,在必须变化时减少所需花费的工作量,综上所述,进行配置管理是十分必要的

3、某些软件工程师不同意“目前国外许多软件开发组织把60%以上的人力用于维护已有的软件”

的说法。

他们争论说:“我并没有花费我的60%的时间去改正我所开发的程序中的错误”。

请问,你对上述争论有何看法?

答:软件维护并非仅仅是改正程序中的错误,它还包括适应性维护、完善性维护和预防性维护。纠错性维护只占维护活动总量的1/5,“目前国外许多软件开发组织把60%以上的人力用于维护已有的软件”,指的是软件开发组织内人力分配的整体状况。至于具体到软件组织内的每一位工程师,则分工各不相同。(专职维护、专职开发、兼职维护和开发)软件维护人叫并非只负责维护自己开发的程序,一名维护人员通常会参与多个软件产品的维护工作

思考题4、假设你的任务是对一个已有的软件做重大修改,而且只允许你从下述文档中选取两份:(1)程序的规格说明

(2)程序的详细设计结果(自然语言描述加上某种设计工具表示)

(3)源程序清单(其中有适当数量的注释)

你将选取哪两份文档?为什么这样选取?

答:“对一个已有的软件做重大修改”意味着对软件功能做较大变更或增加较多新功能,这往往需要修改软件的体系结构。规格说明书描述了系统的数据要求、功能需求、性能需求、可靠性、可用性、异常处理、接口需求、约束等内容。对了解系统的总体情况很重要。因此在对已有软件做重大修改之前,需要仔细研究这份文档。避免许多修改可能产生的错误。应该选取。有经验的软件工程师通过阅读含有适当数量注解的源程序,不难搞清程序的实现算法。没有详细设计结果的文档并不会给维护工作带来太大困难。为了修改程序代码,源程序清单是必不可少的。因此为了对程序做重大修改,应该选取的第二份文档是源程序清单。

思考题5某软件公司拟采取下述措施提高他们所开发的软件产品的可维护性。请判断哪些措施是正确的?哪些措施是不正确的?

1、在分析用户需求时同时考虑维护问题

2、测试完程序后,删去程序中的注解以缩短源程序长度

3、在软件开发过程中尽量保证各阶段文档的正确性

4、编码时尽量多用全局变量

2、4错

5、选用时间效率和空间效率尽可能高的算法

6、尽可能利用硬件特点以提高程序效率

7、尽可能使用高级语言编写程序

8、进行总体设计时加强模块间的联系

9、尽量减少程序模块的规模

10、用数据库系统代替文件系统来存储需要长期保存的信息

11、用CASE环境或程序自动生成工具来自动生成一部分程序

错:5 6 8 9

12、尽量用可重用的软件构件来组装程序

13、使用先进的软件开发技术

14、采用防错程序设计技术,在程序中引入自检能力

15、把与硬件及操作系统有关的代码放到某些特定的程序模块中

软件工程重点整理

软件工程重点 (吐血整理——林新发) 红色的是重点中的重点 前面数字是课本页码 第一章概论 1 什么是计算机软件 计算机软件指计算机系统中的程序及其文档 3软件的特点 (1)软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确地估算 (2)软件是被开发的或被设计的,它没有明显的制造过程,一旦开发成功,只需复制即可,但其维护的工作量大 (3)软件的使用没有硬件那样的机械磨损和老化问题 4软件的分类 (1)系统软件(如操作系统、编译程序等)、 (2)支持软件(如数据库管理系统、网络软件、软件开发环境等)、 (3)应用软件(如实时软件、嵌入式软件、科学和工程计算软件、事务处理软件、人工智能软件等) 6软件工程定义 软件工程是应用计算机科学、数学及管理科学等原理,以工程化的原则和方法制作软件的工程 7生存周期 软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生存周期 软件生存周期大体可分为如下几个活动:计算机系统工程、需求分析、设计、编码、测试、运行和维护 12能力成熟度模型CMM(了解一下) 初始级、可重复级、已定义级、已管理级、优化级 18瀑布模型(重) 系统工程、需求分析与规约、设计与规约、编码与单元测试、集成测试系统测试、运行与维护 第二章系统工程 41系统工程的任务 (1)识别用户的要求,确定待开发软件的总体要求和范围,

(2)系统建模和模拟 (3)进行成本估算,做出进度安排 (4)进行可行性分析,即从经济、技术、法律等方面分析待开发的软件是否有可行的解决方案,并在若干个可行的解决方案中作出选择。 (5)生成系统规格说明书 42可行性分析 (1)经济可行性(成本、效益、货币的时间价值、投资回收期、纯收入) (2)技术可行性(风险分析、资源分析、技术分析) (3)法律可行性 第三章需求工程 48软件需求 指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。 包括:功能需求、性能需求、用户或人的需求、环境需求、界面需求、文档需求、数据需求、资源使用需求、安全保密要求、可靠性需求、软件成本消耗与开发进度需求、其他非功能需求 50需求获取方法与策略(重) 建立顺畅的通信途径、访谈与调查、观察用户操作流程、组成联合小组、用况 51 图3.2 53 创建用况模型的主要步骤 (1)确定谁会直接使用该系统,即参与者(Actor) (2)选取其中一个参与者 (3)定义该参与者希望系统做什么,参与者希望系统作的每件事将成为一个用况 (4)对每件事来说,何时参与者会使用系统,通常会发生什么,这就是用况的基本过程 (5)描述该用况的基本过程 54需求分析原则(重) 1.必须能够表示和理解问题的信息域 2.必须能够定义软件将完成的功能 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、单元测试:又称模块测试。每个程序模块完成一个相对独立的子功能,所以可以对该模块进行单独的测试。由于每个模块都有清晰定义的功能,所以通常比较容易设计相应的测试方案,以检验每个模块的正确性。 2、集成测试: 在单元测试完成后,要考虑将模块集成为系统的过程中可能出现的问题,例如,模块之间的通信和协调问题,所以在单元测试结束之后还要进行集成测试。这个步骤着重测试模块间的接口,子功能的组合是否达到了预期要求的功能,全程数据结构是否有问题等。 3、白盒测试技术(逻辑覆盖、基本路经测试)

天津理工大学-软件工程总结(红字是考点)分析解析

填空10个,选择10个,名词解释5个,简答题2个,画图题2个 第一章 一、FAQs about software engineering软件工程中常见的问题 1、software:Computer programs and associated documentation 软件是计算机程序和所有使程序正确运行所需要的相关文档和配置信息 Software products软件产品分为:Generic通用、Bespoke (custom)定制 2、Software engineering is an engineering discipline that is concerned with all aspects of software production.软件工程是一门工程学科,涉及软件生产的各个方面 Software engineers should adopt a systematic and organised approach 软件工程人员运用的是系统的、有组织的工作方法。 3、difference between software engineering and computer science:系统工程和计算机科学的区别:Software engineering is an engineering discipline that is concerned with all aspects of software production.计算机科学侧重于理论和基础,而软件工程侧重于软件开发和交付的实际活动。 4、the difference between software engineering and system engineering: 软件工程和系统工程的区别:System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering. Software engineering is part of this process系统工程侧重基于计算机系统开发的所有方面,包括硬件、软件和处理工程。软件工程只是它的一部分。 5、software process :A set of activities whose goal is the development or evolution of software. 软件工程是以软件开发和进化为目的的一系列活动 Generic activities in all software processes:软件过程的基本活动 a)Specification 软件描述 b)Development 软件开发 c)Validation软件有效性验证 d)Evolution 软件进化 6、software process model:软件过程模型 A simplified representation of a software process, presented from a specific perspective. 从特定角度提出的软件过程的简化表示形式 Examples of process perspectives are ?Workflow perspective 工作流模型 ?Data-flow perspective 数据流或活动模型 ?Role/action perspective角色/动作模型 Generic process models 通用过程模型 ?Waterfall瀑布型开发方法 ?Iterative development迭代式开发方法 ?Component-based software engineering(CBSE)基于组件的软件工程 7、the costs of software engineering软件工程的成本 Roughly 60% of costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs. 软件开发成本约占60%,测试成本占40%。 对于定制软件而言,进化成本常常高于开发成本。 8、software engineering methods软件工程方法: Structured approaches to software development which include system models, notations, rules, design advice and process guidance.软件开发的结构化研究方法,包括:系统模型、标记

软件工程知识点汇总

软件工程知识点汇总 1 软件工程、软件工程方法学:三要素 1.1 软件工程:○1应用系统化的、规范化的、可度量的方法来开发、运行和维护软件,即将工 程应用到软件;○2对○1的各种方法的研究 1.2 软件工程是一门研究用工程化方法构建和维护有效的实用的和高质量的软件的学科 1.3 软件工程三要素是:方法、工具、过程 软件工程的方法:是指完成软件开发各项任务的技术方法 软件工具:是指为软件工程方法的运用提供自动半自动的软件支撑环境 软件工程过程:是指将软件工程方法和工具综合起来以达到合理、及时地进行计算机软件开发这一目的 2 软件工程的原则包括:模块化原则、信息隐蔽原则、抽象化原则、模块独立原则(内聚、耦合)、 依赖倒转原则、开闭原则等 2.1 模块化原则:指解决一个复杂问题时自顶向下逐层把软件系统划分为若干模块的过程。模 块是程序中相对独立的成分,一个独立的编程单位,应有良好的编程接口,模块的大小要 适中,模块过大会使模块内部的复杂性增加不利于模块的理解和修改,模块过小会导致整 个系统表示过于复杂,不利于控制系统的复杂性。 2.2 信息隐蔽原则:采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单。 2.3 抽象化原则:抽取事物最基本的特性和行为,忽略非本质细节,采用分层次抽象,自顶向 下,逐层细化的办法控制软件开发过程的复杂性。 2.4 模块独立原则:是指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少 且接口简单。要求在一个物理模块内集中逻辑上相互关联的计算机资源,保证模块间由松 散的偶合关系,模块内部有较强的内聚性,这有助于控制系统的复杂性。(即:高内聚低 耦合) 2.5 依赖倒转原则:抽象不应该依赖于细节,细节应该依赖于抽象。 2.6 开闭原则:软件实体应该是可扩展的,但是不可以修改。即对于扩展是开放的,对于更改 是封闭的。 3 软件开发模型:瀑布模型;快速原型;喷泉模型;各种模型的工作原理、阶段、每阶段任务、 特点、示意图; 软件开发模型(也称为软件过程模型):是从软件项目需求定义开始直至软件经使用后废弃为止,跨 越整个生命周期的系统开发、运行和维护所实施的全部过程、活动和任务的结构框架 3.1 瀑布模型(又称线性模型): 3.1.1工作原理:规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。 前一阶段的工作成果是后一阶段工作开始的基础.所以,每个阶段都必须交出合格的文档,必须对前阶段的工作进行评审,前一阶段的工作完成后才可以开始后一阶段的工作 3.1.2 阶段: 计划时期:问题定义、可行性研究 开发时期:需求分析、设计、编码、测试 运行时期:运行和维护 3.1.3 各阶段任务: 1.需求分析和定义 在软件项目进行过程中,需求分析是从软件定义到软件开发的关键步骤,是今后软件,开发的基本依据,同时也是用户对软件产品进行验收的基本依据。需求分析和定义是以用

软件工程基础知识点总结

软件工程基础部分知识点总结 知识点一软件工程的基本概念 1、软件定义:是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。 1)程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列。 2)数据是使程序能够正常操作信息的数据结构。 3)文档是与程序开发、维护和使用有关的图文资料。 国标(GB)计算机软件的定义:与计算机系统的操作相关的计算机程序、规程、规则以及可能有的文件、文档及数据。 2、软件特点: 1)软件是一种逻辑实体,而不是物理实体,具有抽象性,是计算机的无形部分; 2)软件的生产与硬件不同,它没有明显的制作过程; 3)软件在运行、使用期间不存在磨损、老化问题; 4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题; 5)软件复杂性高,成本昂贵; 6)软件开发涉及诸多的社会因素 3、软件的分类: 按照功能可以分为:应用软件、系统软件、支撑软件(或工具软件)

1)应用软件是为解决特定领域的应用而开发的软件。 2)系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。 3)支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具软件。 4、软件危机:是指在软件的开发和维护过程中所遇到的一系列严重问题。软件危机主要体现在以下几个方面: ①软件开发的实际成本和进度估计不准确 ②开发出来的软件常常不能使用户满意 ③软件产品的质量不高,存在漏洞,需要经常打补丁 ④大量已有的软件难以维护 ⑤软件缺少有关的文档资料 ⑥开发和维护成本不断提高,直接威胁计算机应用的扩大 ⑦软件生产技术进步缓慢,跟不上硬件的发展和人们需求增长 5、软件工程:此概念的出现源自软件危机。软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来开发与维护软件的学科。 1)研究软件工程的主要目的就是在规定的时间、规定的开发费用内开发出满足用户需求的高质量的软件系统(高质量是指错误率低、好用、易用、可移植、易维护等)。 2)软件工程的三个要素:方法、工具和过程。 ①方法:完成软件工程项目的技术手段;

软件工程导论复习知识点

一、软件: 软件定义: 软件=程序+文档+数据 软件特点: 1、具有抽象性 2、没有明显的制造过程 3、软件的维护比硬件的维护要复杂得多 4、对计算机系统有着不同程度的依赖性 5、尚未完全摆脱手工艺的开发方式 6、软件本身是复杂的 7、软件成本相当昂贵 8、相当多的软件工作涉及到社会因素软件的发展: 程序设计、程序系统、软件工程 软件危机: 软件危机指的是软件开发和维护过程中遇到的一系列严重问题。 软件危机的问题: 如何开发软件,怎样满足对软件的日益增长的需求;如何维护数量不断膨胀的已有软件。 软件危机表现: 1.开发成本难以控制,进度不可预计; 2.软件系统的质量和可靠性很差,难以满意; 3.软件文档相当缺乏,软件系统不可维护; 4.软件开发生产率很低,软件产品供不应求。 5.软件产品成本十分昂贵。

软件危机产生原因: 1、软件本身的特点 2、对软件开发与维护存在许多错误认识和做法 3、软件开发与维护的方法不正确 解决软件危机途径: 1、将软件开发看成是一种组织严密、管理严格、各类人员协同配合共同完成的工程项目。 2、研究和推广成功的软件开发技术和方法。 3、开发和使用好的软件工具。 软件生命周期: 软件所经历的定义、开发、使用和维护直到废弃所经历的时期。 程序设计环境: 源程序编辑,编译或解释,链接,调试和运行工具的集合 软件工程环境: 软件定义,设计和实现,测试和维护等各个阶段所使用的软件工具的集合 二、软件工程: 软件工程定义: 研究如何应用一些科学理论和工程上的技术来指导软件的开发,用较少的投资获得高质量的软件的一门学科。 软件工程性质: 涉及计算机科学、工程科学、管理科学、数学等领域,着重于如何建造一个软件系统。用工程科学中的观点来进行费用估算、制定进度、制定计划和方案。用管

软件工程期末复习知识点整理

复习整理 、绪论 1. 软件的定义 软件是能够完成预定功能和性能的可执行的计算机程序,包括使程序正常执行所需要的数据,以及有关描述程序操作和使用的文档。(软件=程序+文档) 2.软件工程的定义 是指导计算机软件开发和维护的一门工程学科;采用工程化的原理与方法对软件进行计划、开发和维护;把证明正 确的管理技术和最好技术综合运用到软件开发中;研究经济地开发岀高质量的软件方法和技术;研究有效维护软件 的方法和技术。 3.软件危机的概念,及出现的原因 软件开发技术的进步未能满足发展的要求。在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。 产生原因: ⑴软件规模越来越大,结构越来越复杂 ⑵软件开发管理困难而复杂。 ⑶软件开发费用不断增加。 ⑷软件开发技术落后。 ⑸生产方式落后,仍采用手工方式。 ⑹开发工具落后,生产率提高缓慢。 4.三种编程范型的特点 (1)过程式编程范型:把程序理解为一组被动的数据和一组能动的过程所构成;程序=数据结构 +算法;着眼于程序的过程和基本控制结构,粒度最小 (2)面向对象编程范型:数据及其操作被封装在对象中;程序=对象+消息;着眼于程序中的对 象,粒度比较大 (3)基于构件技术的编程范型:构件是通用的、可复用的对象类;程序=构件+架构;眼于适合 整个领域的类对象,粒度最大 二、软件生存周期与软件过程 1、软件生存周期的定义,把生存周期划分为若干阶段的目的是什么,有哪几个主要活动 定义:一个软件从开始立项起,到废弃不用止,统称为软件的生存周期 目的:软件生存周期划分为计划、开发和运行3个时期;把整个生存周期划分为较小的阶段, 给每个阶段赋予确定而有限的任务,就能够化简每一步的工作内容,使因为软件规模而增长而大大增加了软件复杂性变得较易控制和管理。 主要活动:需求分析、软件分析、软件设计、编码、软件测试、运行维护( P19) 2、软件生命周期划分为哪几个阶段 软件生命周期分为三个时期八个阶段: 软件定义:问题定义、可行性研究; 软件开发:需求分析、概要设计、详细设计、编码、测试; 软件运行:软件维护

软件工程知识点总结

软件工程知识点总结 软件工程专业是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。接下来是为大家收集的软件工程知识点总结,以供大家学习! 知识点一软件工程的基本概念 1、软件定义:是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。 1)程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列。 2)数据是使程序能够正常操作信息的数据结构。 3)文档是与程序开发、维护和使用有关的图文资料。 国标(GB)计算机软件的定义:与计算机系统的操作相关的计算机程序、规程、规则以及可能有的文件、文档及数据。 2、软件特点: 1)软件是一种逻辑实体,而不是物理实体,具有抽象性,是计算机的无形部分; 2)软件的生产与硬件不同,它没有明显的制作过程; 3)软件在运行、使用期间不存在磨损、老化问题; 4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题; 5)软件复杂性高,成本昂贵; 6)软件开发涉及诸多的社会因素

3、软件的分类: 按照功能可以分为:应用软件、系统软件、支撑软件(或工具软件) 1)应用软件是为解决特定领域的应用而开发的软件。 2)系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。 3)支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具软件。 4、软件危机:是指在软件的开发和维护过程中所遇到的一系列严重问题。软件危机主要体现在以下几个方面: ①软件开发的实际成本和进度估计不准确 ②开发出来的软件常常不能使用户满意 ③软件产品的质量不高,存在漏洞,需要经常打补丁 ④大量已有的软件难以维护 ⑤软件缺少有关的文档资料 ⑥开发和维护成本不断提高,直接威胁计算机应用的扩大 ⑦软件生产技术进步缓慢,跟不上硬件的发展和人们需求增长 5、软件工程:此概念的出现源自软件危机。软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来开发与维护软件的学科。

软件工程知识点

第一章软件工程概述 一、软件的定义和特性(P2—P3) 定义:软件=程序+数据+文档 程序:按照事先设计的功能和性能要求执行的指令或语句序列 数据:程序能正常操纵信息的数据结构 文档:描述程序操作和使用的文档 特性: (1)软件是一种逻辑实体,具有抽象性,不是一般的物理实体; (2)软件的成产与硬件存在某些相同点,但有根本上的不同,软件开发是人的智力的高度发挥,而不是传统意义上的制造,它更依赖于开发人员的素质,智力,人员和组合,合作和管理; (3)软件维护与硬件维修有着本质的差别,软件维护没有硬件维护那样有可替换的标准零件; (4)软件在运行和使用期间没有硬件那样的机械磨损,老化问题,但存在退化问题; (5)基于构件的开发方法由于其自身的特点越来越受到人们的重视,这些技术可以减少开发时间、提高质量,并提高复用水平。 * 掌握P4图1-2(b)软件失效率曲线 二、计算机软件的发展经历了几个阶段?各有何特征?(P1—P2) 共经历了四个阶段 特征:第一阶段——程序规模小且主要采用个体工作方式,开发的系统大多采用批处理技术 第二阶段——引入人机交互的概念,实时系统出现,产生了第一代数据库管理系统,程序编制采用了合作的工作方式,出现了早期的软件危机 第三阶段——分布式系统出现,嵌入式系统得到广泛应用,低成本硬件 第四阶段——强大的桌面系统和计算机网络迅速发展时期,面向对象技术得到广泛应用,人工智能技术和专家系统开始应用于软件。 三、什么是软件危机?其产生的原因是什么? 定义:软件危机是指由于落后的软件生产方式无法满足迅速增长的计算机软件应用需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。(P4) 原因:(P5) (1)用户对软件需求的描述不准确、不全面,甚至有错误,以及在开发过程中,不断提出或者修改需求; (2)用户和开发人员对软件需求的理解存在差异,导致所开发的软件产品和用户需求不一致; (3)大型软件项目需要组织一定的人力共同完成,各类人员的信息交流不及时、不准确,有时还可能产生误解,软件开发人员对大型软件缺少开发经验,管理人员缺少相应的管理经验; (4)软件开发人员不能有、独立自主的处理大型软件的全部关系和各个分支,因此容易产生疏漏和错误; (5)开发技术落后,缺乏有效的方法学和工具方面的支持,过分依赖程序设计人员在软件开发过程中的技巧和创造性,加剧软件产品的个性化 (6)软件产品的特殊性和人类智力的局限性,导致人们无法处理“复杂问题”,因为软件是逻辑产品,软件开发进展情况较难衡量、软件开发质量难以评价、管理和控制软件开发过程相当困难。 四、什么是软件工程?它的目标和内容是什么? 定义:将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中,并对方法的研究。(P6) 目标:在给定的成本和进度前提下,开发出具有可修改性、可理解性、可维护性、有效性、可靠性、可适用性、可重用性、可移植性、可跟踪性和互操作性并且满足用户需求的软件产品。(P7) 内容:主要内容包括软件开发技术和软件工程管理两方面。(P6) 要素:方法,工具,过程 五、什么是软件生存周期?它有哪几个活动? 定义:(software life cycle)把软件产品从形成概念开始,经过定义、开发、使用和维护直到最后退役的全过程。 活动:软件定义、软件开发、软件使用维护和退役(P9)

软件工程复习知识点

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)严格地规定了每个阶段必须提交的文档。

软件工程复习知识点

软件工程复习知识点 1. 软件危机的概念,内容,原因及消除的途径; 软件危机的概念: 软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。 概括地说,软件危机包含两方面问题:如何开发软件,以满足对软件日益增长的需求; 如何维护数量不断膨胀的已有软件。 软件危机产生的原因: 软件本身的复杂性、难衡量的特点;2.软件开发与维护的方法不正确。 消除软件危机的途径: (1)对计算机软件应当有一个正确的认识;(2)应当有组织、有计划、通过严格的管理手段进行软件的开发;

(3)及时总结软件开发的成功技术和方法并加以推广; (4)开发和使用更好的软件工具; 总之,为了解决软件危机,既要有技术措施,又要有必要的组织管理措施。 2. 软件工程的定义,基本原理; 定义:软件工程是指导计算机软件开发和维护的一门工程学科

基本原理:软件工程的7条基本原理: (1)用分阶段的生命周期计划严格管理 (2)坚持进行阶段评审 (3)实行严格的产品控制 (4)采用现代程序设计技术 (5)结果应能清楚地审查 (6)开发小组的人员应该少而精 (7)承认不断改进软件工程实践的必要性 3. 软件工程方法学的基本概念、内容; 基本概念:把在软件生命周期全过程中使用的一整套开发和管理技术方法的集合成为软件工程方法学,也称为范型。软件工程方法学包含3个要素:方法、工具和过程。 内容:目前使用得最广泛地软件工程方法学,分别是传统方法学和面向对象方法学。传统方法学也称为生命周期方法学或结构化范型。 4. 软件生命周期的具体内容,每一个阶段的任务是什么?结合具体的工程例子 来理解做软件项目主要分那几个个阶段。 ①问题定义:确定要求解决的问题是什么 ②可行性研究:决定该问题是否存在一个可行

软件工程概论知识点汇总

软件危机是指在计算机软件的开发和维护过程中遇到一系列严重问题。 软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明是正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。 软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门。 软件工程方法学包含3个要素:方法、工具和过程 目前使用最广泛的软件工程方法学,分别是传统方法学和面向对象方法学 软件生命周期由软件定义、软件开发和运行维护3个时期组成。 软件生存周期是指一个软件从提出开发要求开始直到软件报废为止的整个时期。 通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称为范型。 软件定义分3个阶段,即问题定义、可行性研究和需求分析。 可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。 可行性研究的主要内容包括技术可行性、经济可行性和操作可行性3个方面。 开发时期由4个阶段组成:总体设计、详细设计、编码和单元测试,综合测试。其中前两个阶段称为系统设计,后两个阶段称为系统实现。 系统流程图是概括地描绘物理系统的传统工具;而数据流图是系统逻辑功能的图形表示工具。 模型,就是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。通常,模型由一组图形符号和组织这些符号的规则组成。 分析建模的用处是为了更好地理解复杂事物。 软件需求分析的目标是深入描述软件的功能和性能,确定软件设计的约束和软件同其它系统元素的接口细节,定义软件的其它有效性需求。 需求分析过程应该建立3种模型,分别是数据模型、功能模型和行为模型。 数据模型中包含3种相互关联的信息:数据对象、数据对象的属性及数据对象彼此间相互连接的关系。 结构程序设计的定义:如果一个程序的代码块仅仅通过顺序、选择和循环这3种基本控制接口进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。 在结构化分析中,用于描述加工逻辑的主要工具有三种,即:结构化语言、判定表、判定树。 衡量模块独立程序的两个定性标准是内聚和耦合。 确认测试也称为验收测试,它的目标是验收软件的有效性。 等价划分是一种黑盒测试技术,这种技术把程序的输入域划分成若干个数据类,据此导出测试用例。一个理想的测试用例能独立发现一类错误。 软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功的运行的概率。 软件的可用性是程序在给定的时间点,按照规格说明书的规定,成功的运行的概率。 软件工程的主要目的就是要提高软件的可维护性,减少软件维护所需要的工作量,降低软件系统的总成本。 数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。 Jackson方法是一种面向数据结构的设计方法。 完整的软件测试一般要经过单元测试、集成测试、确认测试和系统测试等4个阶段。 模块化是指把程序划分成独立命名切可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。 软件复杂性度量的参数包括: ①规模②难度③结构④智能度 数据字典应该有下列4类元素的定义组成: 1、数据流; 2、数据流分量(即数据元素) 3、数据存储 4、处理 产生软件危机的原因?

软件工程实践者的研究方法知识要点

软件与硬件的区别:本质逻辑与物理;软件是设计开发的;软件不会磨损;大部分软件是按需定制的。IEEE定义:(1)将系统化、规范化、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件;(2)在(1)中所述方法的研究。 框架活动:沟通、策划、建模、构建、部署 成熟级别:第0级:不完全级、1已执行级、2已管理级、3已定义级、4已定量管理级、5优化级软件生命周期:软件计划与可行性研究、需求分析、软件设计、编码、软件测试、运行与维护 瀑布模型:特点—文档驱动优点:消除非结构化软件;降低软件的复杂度,促进软件开发工程化缺点:实际项目开发中很少遵守瀑布模型提出的顺序;客户难以清楚的描述真正的需求;客户要等到开发周期的晚期才能看到程序运行的测试版本;在线性过程的开始和结束,容易发生“阻塞状态”RAD缺点:1、对于大型项目,需要大量人力资源来创建相对独立的RAD团队 2、如果开发者和客户没有做好短时间急速完成系统的准备,则可能导致失败 3、因为是构件式开发,如果一个系统不能合理的模块化,会带来很多问题 4、如果系统需求是高性能的,并且需要通过调整构件接口的方式来提高性能,则不能采用RAD模型 5、技术风险高的情况下,不宜采用RAD模型,如项目开发使用大量的新技术 敏捷团队成员特点:基本能力、共同目标、精诚合作、决策能力、模糊问题解决能力、 相互信任和尊重、自我组织 4个框架活动:策划、设计、编码和测试设计原则:KIS 结对编程:两位程序员肩并肩地坐在同一台电脑前合作完成同一个设计 优点:结对的两人完成其工作,所开发代码和其他工作集成。有些情况下,这种集成工作由集成团队按日实施,还有一些情况下,结对者自己负责集成,这种“连续集成”策略有助于避免兼容性和借口问题,建立能及早发现错误的“冒烟测试”环境 Scrum原则:1组织小团队,以达到“沟通最大化,负担最小化,非语言描述、非形式化知识” 2过程对技术和业务变化具有适应性,以“保证制造具有最好可能的产品” 3过程生产频繁发布“可检查、可调整、可测试、可文档化、可构建”的软件增量 4开发工作和开发人员划分为“清晰的、低耦合的部分或包” 5坚持在产品构建中进行测试和文档化 6提供在任何情况下都能完成产品的能力 宏要素:基于计算机的系统,它作为更大的基于计算机的系统的一部分 系统工程的层次结构:全局视图、领域视图、要素视图、详细视图 导出需求遇到的问题:范围问题、理解问题、易变问题 协同需求收集会议的基本原则:1软件工程师和客户共同举办和参与 2制定筹备与参与会议的规则3拟定一个会议议程:既涵盖重点,又鼓励自由交流4由一个主持人控制会议

软件工程实践者的研究方法-背诵知识点

软件的定义:软件是:1)指令的集合,通过执行这些指令可以满足预期的特征、功能和性能需求;2)数据结构,使得程序可以充分利用信息;3)软件描述信息,以硬拷贝和虚拟形式存在,描述程序操作和使用。 软件与硬件的区别:软件是设计开发的;软件不会磨损;大多数软件是按需求定制的。 IEEE定义:(1)将系统化、规范化、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件;(2) 在(1)中所述方法的研究。 软件工程的层次:软件工程的根基在于质量关注点。软件工程的基础是过程层。过程将各个技术层次结合在一起,使得合理地、及时地开发计算机软件成为可能。方法为构建软件提供技术上的解决方法("如何做")。工具为过程和方法提供自动化或半自动化的支持。 通用过程模型的5种框架活动:沟通、策划、建模、构建、部署 8个典型的普适性活动:软件项目跟踪与控制;风险管理;软件质量保证;技术评审;测量;软件配置管理;可复用管理;工作产品的准备和生产 软件神化:关于软件及其开发过程被人们盲目相信的一些说法,它实际上误导了人们对软件开发的态度。 螺旋模型:?一种风险驱动型的过程模型,一种演进式软件过程模型。它结合了原型的迭代性质和瀑布模型的系统性和可控性特点。具有快速开发越来越完善软件版本的潜力。 统一过程(UP):以用例为驱动、以系统架构为核心,迭代式增量式开发过程。RUP包括起始、细化、构建、转换和生产5个阶段。五个UP阶段并不是顺序地进行,而是阶段性地并发进行。 成熟度级别:第0级:不完全级、1已执行级、2已管理级、3已定义级、4已定量管理级、5优化级软件生命周期:软件计划与可行性研究、需求分析、软件设计、编码、软件测试、运行与维护 瀑布模型:一个系统的、顺序的软件开发方法。缺点:实际项目开发中很少遵守瀑布模型提出的顺序;客户难以清楚的描述所有的需求;客户要等到开发周期的晚期才能得到可执行的程序;在线性过程的开始和结束,容易发生“阻塞状态”。 敏捷团队成员特点:基本能力、共同目标、精诚合作、决策能力、模糊问题解决能力、相互信任和尊重、自我组织 极限编程过程包含4个框架活动:策划、设计、编码、测试设计原则:KIS 重构:以不改变代码外部行为而改进其内部结构的方式来修改软件系统的过程 结对编程:两个人面对同一台计算机共同为一个故事开发代码。 优点:结对的两人完成其工作,他们所开的代码将与其他人的工作集成。这种集成作为集成团队的日常工作实施。还有一些情况下,结对者自己负责集成,这种“连续集成”策略有助于避免兼容

软件工程期末复习必备知识点

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

软件工程_主要知识点

1.软件的定义?(P1) 计算机(程序)、(规程)以及运行计算机系统可能需要的相关(文档)和(数据)。 2.应用软件的分类?(P2) 通用软件和定制软件 3.软件的本质特性?(P3) 复杂性、一致性、可变性、不可见性 4.软件危机的表现?(P5-7) 1、软件开发的成本和进度难以准确估计,延迟交付甚至取消项目的现象屡见不鲜。 2、软件存在错误多,性能低,不可靠,不安全等质量问题。 3、软件成本在计算机系统的整个成本中所占的比例越来越大 4、软件维护及其困难,而且很难适应不断变化的用户需求和使用环境。 5.软件工程的定义?(P7) ①将系统性的、规范化的、可定量的方法应用于软件的开发、运行和维护,即工程化应用到软件上;②对①中所述方法的研究。 6.软件工程包括哪些基本要素?简述它们的作用?(P7-8) 过程、方法、工具 方法:为软件开发提供了“如何做”的技术、通常包含某种语言或图形的模型表示方法,设计实践和质量保证标准。 工具:为软件工程的方法提供自动或半自动的软件支持环境辅助软件开发任务完成。 过程:是管理和控制产品质量的关键,将人员、技术、组织与管理有机的结合起来。 7.软件的质量可以从哪些方面评价?(P8-9) 可用性、有效性、可依赖性、可维护性 8.软件工程方法有哪些?(P9-10)(传统方法<面向过程的方法、面向数据的方法等>、面向对象方法) 传统方法:面向数据方法、面向过程方法 面向对象方法 9.CASE系统的三个层次?(P10-11) 工具:CASE工具支持单个过程的任务 工作台:CASE工作台支持某一过程阶段的活动 环境:CASE环境支持整个软件过程的所有活动或者大部分活动,通常是若干CASE工作台的集成 10.SWEBOK的10个知识域?英文名称?(P15-19) 1软件需求(Software requirements)→2软件设计(Software Design)→3软件构造(Software Construction)→4软件测试(Software Testing)→5软件维护(Software Maintenance)→6软件配置管理(Software Configuration Management)→7软件工程管理(Software Engineering Management)→8软件工程过程(Software Engineering Process)→9软件工程工具与方法(Software Engineering Tools and Methods)→10软件质量(Software Quality) 11.软件工程与其他相关学科的关系?(P19-20) 软件工程将计算机科学,数学,工程学和管理学等基本原理应用于软件开发的工程实践中,并借鉴传统工程的原则和方法,以系统的,课控的,有效的方式产生高质量的软件。 1.软件工程目标?(P23) 优质,高效 2.软件过程的定义?(P24) 软件工程人员为了获得(软件产品)而在(软件工具)的支持下实施的一系列(软件工程)活动。 3.软件过程的基本活动?(P25-26) 1、问题提出 2、软件需求规格说明 3、软件设计 4、软件实现 5、软件确认 6、软件演化 4.软件过程的制品有哪些?(P26-27) 1、软件需求制品 2、软件设计制品 3、软件实现制品 4、软件测试制品 5、软件实施制品

相关文档
最新文档