当前位置:文档之家› (知识点快速复习)软件工程方法与实践

(知识点快速复习)软件工程方法与实践

(知识点快速复习)软件工程方法与实践
(知识点快速复习)软件工程方法与实践

lei xiao

1.软件工程的定义:软件工程是一门研究如何用系统化、规范化、数量化等工程化思

想和方法去进行软件开发、维护和管理的学科。

2.软件危机的定义:软件开发和维护过程中所遇到的如软件规模越来越大,复杂度不

断增加,软件的需求量日益增大等的严重问题我们称之为软件危机。

3.软件工程有哪些基本的思想:a.推迟实现的观点b.逐步求精的观点c.分解与抽象的

观点d.信息隐蔽的观点e.质量保证的观点。

4.CMM(Capability Maturity Model)能力成熟度模型,是对于软件组织在定义、实施、

度量、控制和改善其软件过程的实践中各个发展阶段的描述。

5.极限编程(Extreme Programming , XP)是一种软件工程方法学是敏捷软件开发中最

富有成效的几种方法学之一。它的的核心有四个要点:交流、简单、反馈、勇气。

6.软件生命周期模型:通常把软件生命周期中各项开发活动的流程用一个合理的框架

——开发模型来规范描述,这就是软件过程模型,或者称为软件生命周期模型。

7.软件需求分类:功能需求、非功能需求和领域需求。

8.结构化分析(Structured Analysis, SA) 结构图(Structure Chart ,SC)。

9.面向对象的一些概念:类是具有相同或相似性质的对象的抽象。实例是类的具体化。

继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。消息是指对象间相互联系和相互作用的方式。

10.数据流类型:变换型数据流、事务型数据流、混合型数据流

11.Jackson图:Jackson图是Jackson方法分析和设计最有效的表达手段,用它既可

以描述问题的数据结构,也可以描述软件的程序结构。Jackson图的优点是便于表示层次结构,利于结构自顶向下分解,形象直观,可读性好。Jackson方法用某种形式的伪码给出程序的过程性描述。伪码一般采用结构化形式的英语描述,例如,

用”select”语句描述选择结构,用”until”或”while”语句描述重复结构。

12.结构化程序设计的三种基本逻辑结构是:顺序结构、选择结构和循环结构。

13.类与类之间的关系:关联、泛化、聚集。

14.软件设计的三类活动:软件设计的第一类活动是软件结构设计,也称为总体设计、

概要设计或高层设计。第二类活动是软件详细设计,也称为(模块)过程设计或底层设计。第三类活动是设计测试。

15.软件模块化设计的指导思想:分解、抽象、逐步求精、信息隐蔽和模块独立性。

16.软件模块化设计的定义:把一个大型软件系统的全部功能,按照一定的原则合理地

划分为若干个模块,每个模块完成一个特定子功能,所有的这些模块以某种结构形式组成一个整体。

17.模块独立性的定义及控制标准:模块独立性是模块化、抽象、信息隐蔽概念的直接

结果,也是判断模块化结构是否合理的标准。模块独立性可以由两个定性标准度量,即模块自身的内聚和模块之间的耦合。

18.内聚性、耦合性和抽象的定义:内聚性是从功能的角度对模块内部聚合能力的量度,

耦合性是对一个软件结构内不同模块之间互连程度的度量。抽象是一种从一般的观点看待事物的方法,它要求我们集中于事物的本质特征(内部状态和运动规律),而非具体细节或具体实现。

19.信息隐蔽定义:每个模块对其他所有模块都隐蔽自己的设计决策,也就是说,模块

应该详细说明且精心设计以求在某个模块中包含的信息不被不需要这些信息的其他模块访问。

20.按耦合度从低到高依次有7种耦合方式:a.非直接耦合(独立运行)b.数据耦合(用

参数表传递简单数据)c.标记耦合(传递数据结构或者一部分)d.控制耦合(传递的

信息包括控制模块的信息)e.外部耦合(模块与软件之外的环境有关)f.公共耦合(多个模块引用同一全局的数据区)g.内容耦合(访问内部数据,代码重叠或者多个入口)。

21.按内聚度从低到高依次有7种内聚种类:a.偶然内聚(模块完成的多个任务,任务

之间的关系松散)b.逻辑内聚(模块完成逻辑相关的一组任务)c.瞬时内聚(模块的所有任务必须在同一时间间隔内执行)d.过程内聚(模块的处理元素相关而且按照特定的次序执行)e.通信内聚(模块的所有元素集中在一个数据结构区域上)顺序内聚(模块的处理元素相关,必须顺序执行)f.功能内聚(模块完成单一的功能,各个部分协调工作,而且不可缺少)。

22.结构化设计方法(SD)是基于模块化、自顶向下细化、结构化程序设计等程序设计

技术基础上发展起来的。

23.软件维护类型及对应方向的维护:纠错性维护:对在测试阶段未能发现的,在软件

投入使用后才逐渐暴露出来的错误的测试、诊断、定位、纠错以及验证、修改的回归测试过程。纠错性维护占整个维护工作的21%

24.完善性维护:为了满足这些日益增长的新要求,需要修改或再开发软件,以扩充软

件功能、增强软件性能、改进加工效率、提高软件的可维护性等。完善性维护所占的比重最大,大约占总维护量的50%以上

25.适应性维护:为了适应计算机的飞速发展,使软件适应外部新的硬件和软件环境或

者数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)发生的变化,而进行修改软件的过程。适应性维护占整个维护工作的25%

26.预防性维护:为了提高软件的可维护性和可靠性等,主动为以后进一步维护软件打

下良好基础的维护活动。大约占总维护量的5% 编码语言的目的与分类:

27.编码的目的是实现人和计算机的通信,指挥计算机按人的操作意图正确工作。

28.程序设计语言是人和计算机之间进行通信的最基本的工具,其特性会影响人的思维

和解决问题的方式。

29.分为两大类:低级语言:这两种语言都依赖于相应的计算机硬件。机器语言属于第

一代语言

30.汇编语言属于第二代语言高级语言:第三代程序设计语言利用类英语的语句和命令,

尽量不再指导计算机如何去完成一项操作,如BASIC、COBOL和FORTRAN等。

第四代程序设计语言比第三代程序设计语言更像英语但过程更弱,与自然语言非常接近,它兼有过程性和非过程性的两重特性,如数据库查询语言、程序生成器等。31.人机界面设计的任务,就是根据对用户在使用交互式系统时的所作所为,或者是用

户想象中的所作所为,或者是他人想象中用户的所作所为的抽象,创建或导出一致的表示界面。

32.面向对象实现主要包括两项工作:(1)把面向对象设计结果翻译成用某种程序语言

书写的面向对象程序;(2)测试并调试面向对象的程序。

33.请描述图书馆系统的借书的一个常规场景。

用例名称:借书

范围:图书管理图书流通应用

级别:用户需求

主要参与者:借阅者

涉众及其关注点:1)浏览者:希望能够不需要登录系统即可快速地浏览图书和查询信息。

2)借阅者:希望在登录系统后可以借书,能查查询自己信息和借

书情况

3)普通管理员:希望能够协助借书者完成借书功能,形成借书报表给借阅者查看确认。

前置条件:借书者要登录系统或者验证借书证

成功保证:创建借书记录,更新借书信息,形成借书报表。

主成功场景:

1)普通管理员扫描借书证。

2)检查是否可以借书

3)若可借,则扫描图书

4)显示已借书数,显示借书成功

…重复(2)-(4)

5)借书结束

34.请描述银行客户从ATM机上取一笔钱的场景。

答:客户插入银行卡后输入密码。客户选择“取款”项,屏幕跳出选择取款金额菜单以及一次性可取出的最大金额,客户根据自身需要选择预设金额或者自己输入想要取出的金额。机器根据客户输入的金额进行出钞,如果余额不足,则屏幕提示客户无法提取相应金额。客户选择提取较小金额或者选择退出系统,取卡。否则在正常情况下按客户所需输出相应钞票。屏幕提示在30秒内取走钞票。完成交易,客户退出系统,取卡。

35.可行性分析要如何入手?

从技术可行性、经济可行性、操作可行性和时间可行性四个方面研究每种方案的可行性。

36.软件工程两大范型分别是什么?他们有什么不同?

答:分别是传统的结构化范型和面向对象范型。结构化范型要么面向行为要么面向数据,但没有既面向数据又面向行为的;而面向对象范型把数据和行为看成同等重要,即将对象视作一个融合了数据及在其上操作的行为的统一的软件组件。面向对象相对于结构化技术,无论对象的内部细节如何变化,只要对象提供的方法即接口保持不变,则整个软件产品的其他部分就不会受到影响,不需要了解对象内部的变化。

37.结构化分析要创建哪些模型?

答:结构化的需求分析模型有数据流模型、状态转换模型、实体—关系模型等。数据流模型集中在数据的流动和数据转换功能,而不关心数据结构的细节。实体—关系模型关心的是寻找系统中的数据及其之间的关系,却不关心系统中包含的功能。

系统的行为模型包括两类模型:一类是数据流模型,用来描述系统中的数据处理过程;另一类是状态转换模型,用来描述系统如何对事件做出响应。

38.软件生命周期的定义是什么?它分为几个阶段?分别是什么?

答:软件从生到死的过程称之为软件生命周期。它分为六个阶段,分别是:a.问题的定义及规划b.需求分析c.软件设计d.程序编码e.软件测试f.运行

39.什么是瀑布模型?什么是增量模型?它们有什么区别?

答:瀑布模型是从上一项活动接受该项活动的工作对象作为输入,利用这一输入实施该项活动应完成的内容,给出该项活动的工作成果,并作为输出传给下一项活动。

增量模型是在项目的开发过程中以一系列的增量方式开发系统。他们的主要区别是瀑布模型的开发过程是通过一系列阶段顺序展开的,而在增量模型中,软件被作为一系列的增量组件来设计、实现、集成和测试,每一个组件是由多种相互作用的模

块所形成的提供特定功能的代码片段构成。

40.用户需求和系统需求各有什么特点?

答:用户需求是从用户角度来描述系统功能和非功能需求,以便让不具备专业技术方面知识的用户能看懂。用户需求是描述系统的外部行为,用自然语言、图表和直观的图形来叙述。系统需求是比用户需求更详细的需求描述,是系统实现的基本依据,因此,是一个完全的、一致的系统描述,是软件工程人员系统设计的起点。系统需求描述可能包括许多不同的模型,如对象模型和数据流模型。

41.需求分析过程主要有哪几个步骤?

答:需求分析过程主要有沟通、导出需求、分析与精化、可行性研究、协商与沟通、规格说明、需求验证、变更管理等步骤。

42.数据字典的概念?数据字典包含哪些内容?

答:数据字典是分析模型中出现的所有名字的一个集合,还包括有关命名实体的描述。如果名字是一个复合对象,它还应有对其组成部分的描述。一般说来,数据字典应该由四类元素的定义组成:数据流、数据流分量、数据存储和处理。

43.结构化分析主要手段有哪些?

答:数据流图、数据字典、状态转换图、实体—关系图等

44.面向对象模型有哪些?

答:面向对象提供了三个基本模型:对象模型、动态模型和功能模型。

45.面向对象模型有哪几个模型,各自的任务和各自的定义?

答:面向对象建模技术所建立的三种模型,即对象模型、动态模型和功能模型。对象模型是对模拟客观世界实体的对象以及对象彼此间关系的映射,描述了系统的静态结构。动态模型表示瞬间的、行为化的系统“控制”性质,它规定了对象模型中对

象的合法变化序列。功能模型表示变化的系统的“功能”性质。功能模型指明了系统应该“做什么”;动态模型明确规定在何种状态下,接受什么事件的触发而“做什么”;

对象模型则定义了“做什么”的实体。

46.统一建模语言(UML)模型元素有哪些:

UML定义了两类模型元素的图形表示。一类模型元素用于表示模型中的某个概念,如类、对象、用例、结点、组件、包、接口等;另一类模型元素用于表示模型元素之间相互连接的关系,主要有关联、泛化、依赖、聚集等。

47.请简述统一建模过程框架。

答:UML模型结构可分为四个抽象层次,即元元模型、元模型、模型和用户模型。

元元模型层定义了描述元模型的语言,它是任何模型的基础。UML元元模型定义了元类、元属性、元操作等一些概念。元模型层定义了描述模型的语言,它组成UML 模型的基本元素,包括面向对象和构件的概念,如类、属性、操作、构件等。模型层定义了描述信息领域的语言,它组成了UML模型。用户模型层是

48.模型的实例,用于表达一个模型的特定情况。

49.面向对象设计的原则:

答:a.模块化:面向对象软件开发模式,很自然地支持了把系统分解成模块的设计原理,对象就是模块,它是把数据结构和操作这些数据的方法紧密地结合在一起所构成的模块。

b.抽象

c.信息隐藏:在面向对象方法中,信息隐藏通过对象的封装性实现:类结构分离了

接口与实现,从而支持了信息隐藏。

d.弱耦合:在面向对象方法中,对象是最基本的模块,耦合主要指不同对象之间相

互关联的紧密程度。弱耦合是优秀设计的一个重要标准,因为这有助于使得系统中某一部分的变化对其他部分的影响降到最低程度。

e.强内聚

f.可重用:软件重用是提高软件开发生产率和目标系统质量的重要途径。

50.重用基本上从设计阶段开始,重用有两方面的含义:

1)尽量使用已有的类(包括开发环境提供的类库,及以往开发类似系统时创建的类);

2)如果确实需要创建新类,则在设计这些新类的协议时,应该考虑将来的可重复使用性。

51.面向对象详细设计的目的就是不断精化设计类。

52.领域模型是对领域内的概念类或现实世界中对象的可视化表示。

53.领域模型也称为概念模型、领域对象模型和分析对象模型。

54.使用泛化、特化、关联类、时间间隔、组合和包等概念精化领域模型。

55.开关原则(The Open-Closed Principle, OCP):模块应该对外延具有开放性,对修改

具有封闭性

56.替换原则(Subsitution Principle, SP):子类可以替换它们的基类。

57.依赖倒置原则(Dependency Inversion Principle, DIP):依赖于抽象、而非具体实现。

58.接口分离原则(Interface Segregation Principle, ISP):多个用户专用接口比一个通用

接口要好。

59.软件复用(SoftWare Reuse)是将已有软件的各种有关知识用于建立新的软件,以缩

减软件开发和维护的花费。软件复用的级别:(1)代码的复用;(2)设计结果的复用;

(3)分析结果的复用;(4)测试信息的复用。

60.面向对象程序设计的优点:开发时间短、效率高、可靠性高,所开发的程序更强壮。

由于面向对象编程的可重用性,可以在应用程序中大量采用成熟的类库,从而缩短开发时间,这样程序更易于维护、更新和升级。继承和封装使得应用程序的修改带来的影响更加局部化。

61.提高可复用性:减小方法的规模,提高方法的内聚,方法的一致性,策略与实现分

开,覆盖全面,少用全局信息,利用继承机制提高可扩充性封装实现策略,减小方法的规模,少使用多分支语句,合理利用多态,精心设计公有方法

62.提高健壮性:预防用户错误操作,不要预先确定限制条件,先测试后优化

63.健壮性是指软件对于规范要求以外的输入情况的处理能力。

64.健壮的系统是指对于规范要求以外的输入能够判断出这个输入不符合规范要求,并

能有合理的处理方式。

65.测试可以发现由于软件存在的缺陷引起的失效。

66.调试是一种开发活动,用来识别引起缺陷的原因,修改代码以及验证是否正确的修

改了软件的缺陷。通过测试发现错误之后还必须诊断并改正错误,这就是调试

67.软件测试的原则?

1)测试用例应由输入数据和预期的输出数据两部分组成。

2)测试用例不仅选用合理的输入数据,还要选择不合理的输入数据。

3)除了检查程序是否做了它应该做的事,还应该检查程序是否做了它不应该做的事。

4)应制定测试计划并严格执行,排除随意性。

5)长期保留测试用例。

6)对发现错误较多的程序段,应进行更深入的测试。

7)程序员避免测试自己的程序。

68.白盒测试是有选择地执行覆盖程序中某些最具有代表性路径的测试方法;墨盒测试

是是根据程序组件的规格说明测试软件功能的方法,也称为功能测试。

69.测试用例是测试使用的文档化细则,其规定如何对软件某项功能或功能组合进行测

试。

70.测试用例应包括测试目标和被测功能、测试数据和测试步骤、测试记录和测试结果。

71.设计测试方案的基本目标是:确定一组最可能发现某个错误或某类错误的测试数据。

72.单元测试:测试软件中的基本组成单位

73.采用白盒方法,尽可能发现模块内部的程序差错,工作量较大。

74.单元测试越早越好

75.集成测试:是把多模块按照一定的集成方法和策略,逐步组装成子系统,进而组装

成整个系统的测试

76.多模块集成方式一般都采用渐增式,有自顶向下、自底向上和混合式(“三明治”)三

种。

77.确认测试:确认已组装的程序是否满足软件需求规格说明书。

78.系统测试:目的是保证所实现的系统确实是用户所要的

79.非结构化维护:若一个软件没有采用软件工程方法进行开发,也没有任何的文档,

仅有的是程序的一类软件维护。特点:只有源代码,没有或少量的文档,要花费大量的人力、物力,而且很容易出错,很难保证程序的正确性。

80.结构化维护:软件开发有正规的软件工程方法呵完善的文档的一类软件维护。特点:

可从需求文档弄清系统功能、性能的改变,减少维护人员的精力和花费,提高软件维护效率有很大作用。

软件工程重点整理

软件工程重点 (吐血整理——林新发) 红色的是重点中的重点 前面数字是课本页码 第一章概论 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、白盒测试技术(逻辑覆盖、基本路经测试)

软件工程知识点汇总

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

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

软件工程基础知识点总结

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

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

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

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

软件工程复习知识点

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

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

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

软件工程知识点总结

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

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

软件工程复习知识点

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

软件工程知识点

第一章软件工程概述 一、软件的定义和特性(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.软件工程的定义,基本原理; 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.掌握设计过程中用到的工具:程序流程图的概念,内容和方法;盒图的概念、 内容和方法;会结合实例使用这些工具;掌握PAD 图的概念和内容;掌握判定表的概念和内容。要结合实例来掌握它们。 29.了解结合Jackson图来掌握面向数据结构的设计方法;会用Jackson程序设 计方法对具体的实例进行设计。 30.掌握几种测试:单元测试、集成测试、确认测试、白盒测试技术和黑盒测试 技术;掌握它们的概念,内容和方法; 31.对每一种测试方法,理解其具体细节:比如理解什么是渐增式测试和非渐增 式测试,什么是Alpha测试和Beta测试.....;

软件工程概论知识点汇总

软件危机是指在计算机软件的开发和维护过程中遇到一系列严重问题。 软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明是正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。 软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门。 软件工程方法学包含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.软件危机的概念,及出现的原因 软件开发技术的进步未能满足发展的要求。在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。 产生原因: ⑴软件规模越来越大,结构越来越复杂 ⑵软件开发管理困难而复杂。 ⑶软件开发费用不断增加。 ⑷软件开发技术落后。 ⑸生产方式落后,仍采用手工方式。

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

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

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

软件工程_主要知识点

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、软件实施制品

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

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

相关主题
文本预览
相关文档 最新文档