软件工程总结

软件工程总结

第一章:

1. 软件的定义:(1)在运行中提供所希望的功能和性能的指令集(即程序)

(2)使程序能够正确运行的数据结构

(3)描述程序研制过程和方法所使用的文档

2. 软件的特点:(1)软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。

(2)软件是通过人们的智力活动,把知识与技术转换成信息的一种产品,是

在研制开发中被创造出来的。

(3)在软件的运行和使用期间,没有硬件那样的机械磨损、老化问题。

(4)软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同

程度的依赖。

(5)软件生产正走向基于构件的组装发展(如图形用户界面),但目前多数

软件仍是定做的,而且软件开发尚未完全摆脱手工的开发方式

(6)软件的研制需要投入大量的、复杂的脑力劳动,开发费用越来越高

3. 软件危机:(1)定义:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列

的问题。

(2)典型表现:a.对软件开发成本和进度的估计常常很不准确

b.用户对“已完成的”软件系统不满意的现象经常发生 c.软件产品的质量往往靠不住

d.软件常常是不可维护的

e.软件通常没有适当的文档和资料

f 软件成本在计算机系统总成本中所占的比例中逐年上升 g.软件开发生产率提高的速度,远远跟不上计算机应用迅速

普及深入的趋势

(3) 产生原因:a.软件的规模加大、复杂性提高、性能增强

b. 软件是逻辑产品,尚未完全认识其本质和特点

c. 缺乏有效的、系统的开发、维护大型软件项目的技术

手段和管理方法

d.用户和软件开发人员的理解鸿沟

e. 错误的认识和作法:忽视软件需求分析的重要性,认

为软件开发就是写程序并设法使之运行,轻视软件维

护等

4. 软件工程:(1)定义:软件工程是指导计算机软件开发和维护的一门工程学科。采用工

程的概念、原理、技术和方法来开发与维护软件,把经过时间考验

而证明正确的管理技术和当前能够得到的最好的技术方法结合起

来,以经济地开发出高质量的软件并有效地维护它。”

(2) 基本原理:a.用分阶段的生命周期计划严格管理

b.坚持进行阶段评审

c .实行严格的产品控制

d.采用现代程序设计技术

e.结果应能清楚地审查

f. 开发小组的人员应该少而精

g. 承认不断改进软件工程实践的必要性

5. 软件工程方法学的三要素:方法、工具和过程。

(1) 软件方法:完成软件开发的各项任务的技术方法,回答“怎么做”的问

题;

(2) 软件工具:为运用方法而提供的自动的或半自动的软件支撑环境;

(3)软件工程过程定义了:

a.方法使用的顺序

b.要求交付的文档资料

c.为保证质量和适应变化所需要的管理

d.软件开发各个阶段完成的里程碑

6.软件的生存周期:(1)定义:软件产品或系统一系列相关活动的全周期

(2)三大阶段:软件定义、软件开发、运行维护

(3)a.软件定义时期的任务:确定软件开发工程师必须完成的总目标;

确定工程的可行性;导出实现工程目标应该采用的策略及系统

必须完成的功能;估计完成该项工程需要的资源和成本,并且

制定工程进度表。

b.软件开发时期的任务:具体设计和实现在前一个定义时期的软件。 c.软件维护时期的任务:使软件持久地满足用户的需要。

7.瀑布模型的特点:(1)阶段间具有顺序性和依赖性。

(2)推迟实现的观点。

(3)质量保证的观点。

第二章

1.可行性研究的目的和任务:(1)目的:a.目的不是要解决问题,而是确定问题是否值得解

b.用最小的代价在尽可能短的时间内确定问题是

否能够解决

(2) 任务:a.最根本的任务是对以后的行动方针提出建议

b.如果问题没有可行的解,应该建议停止这项开发

工程,以避免时间、资源、人力和金钱的浪费

c.如果问题值得解,应该推荐一个较好的解决方案,

并且为工程制定一个初步的计划

2.数据流图的四要素:数据的原点或终点;数据的处理;数据存储;数据流;

3.数据字典:(1)定义:数据字典是关于数据的信息的集合,也就是对数据流图中包含的所

有元素的定义的集合。

第三章:

1. 需求分析的任务:(1)基本任务是准确地回答“系统必须做什么”这个问题。

(2)确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、

清晰、具体的要求。

(3)分析软件需求和书写软件需求规格说明书

2.获取需求的方法:(1)访谈

(2)面向数据流自顶向下求精。

(3)简易的应用规格说明技术。

(4)快速建立软件模型。

3.需求分析过程建立的三种模型:

(1)功能模型

(2)数据模型

(3)行为模型

4. 验证软件需求的四个方面:

(1)一致性

(2)需求性

(3)现实性

(4)有效性

第五章:

1. 总体设计的任务:(1)回答“概括地说,系统应该如何实现?”这个问题。

(2)设计软件的结构,也就是要确定系统中每个程序由哪些模块组成

的,以及这些模块相互间的关系

2.结构化设计的步骤:(1)设想供选择的方案

(2)选取合理的方案

(3)推荐最佳方案

(4)功能分解

(5)设计软件结构

(6)设计数据库

(7)制定测试计划

(8)书写文档

(9)审查和复审

3. 耦合:(1)定义:耦合是对一个软件结构内不同模块之间互连程度的度量。

(2)类型:a.数据耦合

b.控制耦合

c.特征耦合

d.公共耦合

e.内容耦合

4.内聚:(1)定义:内聚标志着一个模块各个元素彼此结合的紧密程度

(2)类型:a.偶然内聚

b.逻辑内聚

c.时间内聚

d.过程内聚

e.通信内聚

f.顺序内聚 g.功能内聚

5.耦合、内聚与模块独立性的关系

(1)耦合与内聚都是模块独立性的定性标准,都反映模块独立性的良好程度

(2)但耦合是直接的主导因素,内聚则辅助耦合共同对模块独立性进行衡量

(3)设计要求:低耦合,高内聚

第六章:

1.人机界面设计应考虑的问题 :

(1)系统响应时间(两个属性:长度性和易变性)

(2)用户帮助设施

(3)出错信息处理

(4)命令交互

第七章:

1.( 1)软件测试的目标:

a.测试是为了发现程序中的错误而执行程序的过程

b.好的测试方案是极可能发现至今为止尚未发现的错误的测试方案

c.成功的测试是发现了至今为止尚未发现的错误的测试

(2)软件测试的原则

a.所有测试都应该能追溯到用户需求

b.应该远在测试开始之前就制定出测试计划

c.把Pareto原理应用到软件测试中

d.应该从“小规模”测试开始,并逐步进行“大规模”测试

e.穷举测试是不可能的

f.为了达到最佳测试效果,应该由独立的第三方从事测试工作

(3)软件测试的步骤:

测试步骤 :模块测试、子系统测试、系统测试和验收测试(确认测试)、

平行运行

2. 单元测试的方法、测试重点

(1)方法:人工测试、计算机测试

(2)重点:a.模块接口

b.局部数据结构

c.重要的执行通路

d.出错处理通路

e.边界条件

3. 渐增式测试与非渐增式测试的比较

(1)定义:a.渐增式测试: 把下一个要测试的模块同已经测试好的那些模块结合起来进行

测试,测试完以后再把下一个应该测试的模块结合起来进行测试,

即每一次增加一个模块。

b.非渐增式测试:先分别测试每个模块,再把所以模块按设计要求放在一起结

合成所要的程序。

(2)a.非渐增式测试方法需要编写的测试用例较多,工作量较大;渐增式

测试方法开销小。

b.渐增式测试方法发现模块间接口错误早;而非渐增式测试方法晚。

c.非渐增式测试方法发现错误,较难诊断;而使用渐增式测试方法,如果发生错误则往往和最近加进来的那个模块有关。

d.渐增式测试方法测试更彻底

e.渐增式测试方法需要较多的机器时间

f.使用非渐增式测试方法,可以并行测试。

4. 确认测试的目标、依据、测试方法

( 1) 目标:验证软件的有效性

(2)依据:软件需求规格说明书

(3)测试方法:黑盒测试法、Alpha测试、Beta测试

 

第二篇:软件工程总结

软件工程

软件: 计算机程序,方法,规则和相关文档资料及在计算机上运行所需的必要的数据。 软件=程序+数据+文档资料

软件的特点:

1 软件是一种逻辑产品

2 软件没有明显的制造过程

3 软件对硬件和环境的依耐性

4 软件不存在机械的磨损和老化

5 软件的复杂度越来越高

6 软件成本昂贵

7 软件开发工作涉许多及社会因素

8 软件开发工作任重道远

软件的类型:

1微型:1人在几天内完成500行程序

2小型:1人在半年内完成20xx行以内

3中型:1—5在2年内,5000——50000行

4大型:5——20人,2——3年,50000——100000

5甚大:100——1000人,4——5年,100万行

6极大:20xx——5000人,xx年内,1000万行程序

软件危机:是指软件开发和维护过程中遇到的一系列严重的问题。包括1 如何开发软件,

怎样满足对软件日益增长的需求。2如何维护数量不断膨胀的已有软件。

软件危机主要的表现:

1产品不符合用户的实际需要

2软件开发效率远远不能满足客观的需要。

3软件产品质量差

4对软件开发的成本和进度估计常常不准确

5 软件的可维护性差

6软件文档资料通常极不完整有不合格

7软件的价格昂贵

软件工程:系统化,规范化,可量度的途径应用于软件开发,运行,维护的过程,把工程化

应用于软件中。

软件工程的目标:

1付出较低的开发成本,在规定的时间内获得功能,性能方面满足用户

需求的软件

2开发的软件移植性好

3易于维护和维护费用较低

4软件系统的可靠性高

结构化方法(SDM):

是软件开发方法中最成熟,应用最广泛的方法,主要特点是快速,自然,方便。

总的指导思想是自顶向下,逐步求精。基本原则是功能的分解和抽象。

由结构化分析法(SA),结构化设计法(SD),结构化程序设计法(SP)构成。

SA: 面向数据流的需求分析法。SA也是一种建模活动,根据软件内部的数据传递,变换关

系,自顶向下逐步分层,描述出满足功能要求的软件模型。基本思想是分解和抽象。 1分解:对一个复杂的系统,为了将复杂性降到可以掌握的程度,把大问题分解为小问

题,然后分别解决。

2抽象:分层进行分解,现考虑问题本质的属性,暂把细节略去,以后再逐层添加细节,

直至涉及最详细的内容。

软件的生存周期:

软件产品从形成概念开始,进过开发,使用维护,直到最后被淘汰的全过程。

软件生存周期分为:软件定义,软件开发,软件运行与维护3个阶段。

软件定义阶段:可行性研究和详细需求分析过程,任务是确定软件开发工程必须完成的总目

的。具体分为问题定义,可行性研究,需求分析。

问题定义:定义系统的目标“是什么”,系统定位及范围。

可行性分析:研究技术,经济,操作,社会可行性的问题。是否有解。

需求分析:确定软件系统系统的功能需求,性能需求,运行环境,写出软件

的规格说明书,软件测试大纲和用户手册。

软件开发:概要设计,详细设计,编码,测试。

概要设计:软件需求说明书的基础上,建立系统的总体结构,定义功能模块和模

块间的关系。

详细设计:对概要设计的功能模块逐步细化,把模块内部的细化转化为可编程的

程序过程性描述。

编码:又称编程,把详细设计转化为能在计算机上运行的程序。

测试:单元测试,集成测试,确认测试,系统测试。

运行与维护:把软件产品移交用户使用。对软件进行修改或对软件需求变化作出响应,竟可

能的延长软件的寿命。

软件生存周期即可分为7个阶段:可行性研究,需求分析,概要设计,详细设计,编码,测

试,运行,维护。

软件生存周期模型:瀑布模型,原型模型,增量模型,螺旋模型,喷泉模型,智能模型。

数据流图(DFD图):描述信息流和当数据从输入移动到输出时被应用的变换图形技术。 模块:是程序对象有名字的集合,如过程,子程序,宏。

功能独立性: 是模块化和和抽象及信息隐藏概念的直接产物。通过内聚和耦合两项

质量标准来衡量。

内聚:是模块相对功能密度的量度,用于描述模块内部联系的紧密程度。 耦合:是模块间相对独立的量度,描述模块间联系的紧密程度。

独立性较强的模块应该具有:高内聚,低耦合度。

面向对象的结构方法(OOSD):按照人们认识世界的方法和思维方式分析和解决问题,以对

象为主线,把数据和操作融为一体。这种方法能够提供更加

清晰的需求分析和设计,是指导开发活动的系统方法。

面向对象=对象+类+继承+通信

对象是类的一个实例,对象是一个实体如房子,类是对对象属性特征的描述,如房子的设计图纸。面向对象的程序设计重点是类的设计,而不是对象。

类可以将数据和函数封装在一起,其中函数表示了类的行为。

面向对象开发模型:

建模可看成一套在目标系统完成之前表达目标系统的技术。

建模的作用:

1支持其复杂度超出人们大脑能力的软件系统。

2解决了待开发系统的复杂性。

3再投入许多时间对一个不良概念化系统进行编程之前,可用这些精确的表示来

进行评估,验证,校正。

创建优质模块:

1 模块具有内聚性,它的功能必须是良好定义和集中的。

2 模块具有松散耦合性,模块之间的联系尽可能的少。

3 封装过的模块,不应被其他属性直接访问。

4 软件模块可重用。

5 具有继承性。

统一建模语言(UML):是一种通用的建模语言,它本身具有可扩展性使其不仅可用于软件

系统开发的各个阶段的建模,也可用于商业建模和其他几乎类型的建模。

由视图,图,模型元素,通用机制组成。

用例图:显示多个外部参与者及其他们与系统提供的用例之间的关系。

类图:类图以类为中心组织,类图中的其他元素或属于某个类,或与类相关联。

对象图:对象图是类图的变异,它使用类图相似的符号,不同之处在于对象图显示的是类的

多个对象实例而非实际的类。

状态图:对类描述的补充,用于显示类的对象可能具备的所有显示,及引起状态变化的事件。 时序图:显示多个对象之间的动态协作,重点显示对象之间发送的消息的时间顺序。 协作图:对在一次交互中有意义的对象的对象间的链建模。

活动图:活动图是状态图的变异,用来描述执行算法工作流程中涉及的活动。

由活动,转移,泳道,对象流,控制图符组成。

组件图:用代码组显示代码的物理结构。

配置图:显示系统中的硬件和软件的物理结构。

白盒测试:又称明盒测试,开放盒测试,结构化测试,它是一种测试用例设计方法,也就是测试者完全了解程序的结构和处理过程,按照程序内部的逻辑测试,检验程序中的每条通路是否都能按要求正确工作:

1 保证每一个模块中的所有独立路径至少被只用一次。

2对所有逻辑值均需测试真和假。

3在上下边界及可操作的范围内运行所有循环

4检查内部数据结构以确保其有效性。

黑盒测试:称功测试和行为测试,他注重测试软件的功能性需求,而不是内部结构。黑盒测试不是白盒测试的替代品,而是辅助白盒测试发现其他错误。

黑盒测试试图发现下列错误:功能错误或漏洞,接口错误,数据结构,外部数据库访问错误,性能错误,初始化或终止错误。

软件维护:就是软件已经交付使用以后,为了满足错误或满足新的需要而修改软件的过程。

软件的可维护性:指纠正软件系统出现的错误和缺陷,以及为了满足新的要求而

进行的修改,扩充或压缩的容易程度。

软件复用:指复用使用已有的软件产品用于开发新的软件系统,已达到软件系统的开发质量

和效率,降低开发成本的目的。包括:

1代码复用

2设计结果复用

3分析结果复用

4测试信息复用

可复用构件:指可以在多个软件系统的开发过程中被重复使用的软件产品。

1可复用构建应该是具有功能上的独立与完整性

2具有高度的通用性

3具有高度的灵活性

4具有严格的质量保证

5具有较高的标准化程度

相关推荐