软件工程复习1.docx

上传人:b****4 文档编号:24750206 上传时间:2023-06-01 格式:DOCX 页数:15 大小:183.62KB
下载 相关 举报
软件工程复习1.docx_第1页
第1页 / 共15页
软件工程复习1.docx_第2页
第2页 / 共15页
软件工程复习1.docx_第3页
第3页 / 共15页
软件工程复习1.docx_第4页
第4页 / 共15页
软件工程复习1.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

软件工程复习1.docx

《软件工程复习1.docx》由会员分享,可在线阅读,更多相关《软件工程复习1.docx(15页珍藏版)》请在冰豆网上搜索。

软件工程复习1.docx

软件工程复习1

第一讲软件工程与软件过程

1)软件

a.软件的定义

软件(Software)是计算机系统中与硬件相互依存的另一部分,它是包括程序(Program),数据(Data)及其相关文档(Document)的完整集合。

Software=Program+Data+Document

Ø程序是按事先设计的功能和性能要求执行的指令序列

Ø数据是使程序能正常操纵信息的数据结构

Ø文档是与程序开发,维护和使用有关的图文材料

b、软件的特征

逻辑复杂

远远高于硬件的逻辑复杂度

开发复杂

成本难以估算;进度难以控制;人员素质要求;质量得不到保证;

维护困难

维护形式多样化

改正性:

修改故障

完善性:

增加功能

适应性:

移植

维护成本越来越高

2)软件危机

a、软件危机的表现

成本高;计算机软件和硬件费用比;软件质量得不到保证;由于软件质量问题导致失败的软件项目非常多;进度难以控制;维护非常困难;

b、解决途径

1)软件开发是智力劳动;

2)是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。

3)充分吸取几十年来人类从事计算机硬件研究和开发的经验教训。

4)使用适当的软件工具,支持软件开发的过程

总之,消除软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。

软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。

3)软件工程

定义

软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。

它借鉴传统工程的原则、方法,以提高质量,降低成本为目的。

特性

1.软件工程关注于大型程序的构造

2.软件工程的中心课题是控制复杂性

3.软件经常变化

4.开发软件的效率非常重要

5.和谐地合作是开发软件的关键

6.软件必须有效地支持它的用户

基本原理

用分阶段的生命周期计划严格管理;坚持进行阶段评审;实行严格的产品控制;

采用现代程序设计技术;结果应能清楚地审查;开发小组的人员应该少而精;

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

软件工程方法学包含3个要素:

方法、工具和过程

4)软件过程

软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

各个阶段的活动如何衔接,开发过程中采用什么样的策略,应遵守什么样的规定和制约,将这些活动框架(忽略不必要的细节)用一种模型表示出来,称为软件过程模型(或软件开发模型或软件生命周期模型)。

也就是说,软件过程模型是软件开发全部过程、活动和任务的结构框架。

5)软件过程模型

①传统瀑布模型的特点

提供了软件过程模型的基本框架(模板)。

强调了每一阶段活动的严格顺序。

质量保证观点:

以经过评审确认了的阶段工作产品(文档)驱动下一阶段的工作,便于管理。

是一种整体开发模型,程序的物理实现集中在开发阶段的后期,用户在最后才能看到自己的产品。

瀑布模型的优缺点

瀑布模型适合于用户需求明确、完整、无重大变化的软件项目开发。

瀑布模型的成功在很大程度上是由于它基本上是一种文档驱动的模型。

瀑布模型是由文档驱动的”这个事实也是它的一个主要缺点。

实际项目很少按照该模型给出的顺序进行;用户常常难以清楚地给出所有需求;用户必须有耐心,等到系统开发完成。

②原型模型—快速原型模型

在用户不能给出完整、准确的需求说明,或者开发者不能确定算法的有效性、操作系统的适应性或人机交互的形式等许多情况下,可以根据用户的一组基本需求,快速建造一个原型(可运行的软件),然后进行评估,进一步精化、调整原型,使其满足用户的要求,也使开发者对将要做的事情有更好的理解。

原型模型存在的问题

⑴为了使原型尽快的工作,没有考虑软件的总体质量和长期的可维护性。

⑵为了演示,可能采用不合适的操作系统、编程语言、效率低的算法,这些不理想的选择成了系统的组成部分。

⑶开发过程不便于管理。

有效的使用原型模式

建造原型仅是为了定义需求,之后就被抛弃(或被部分抛弃),实际的软件在充分考虑了质量和可维护性之后才被开发。

③增量模型

是一种渐进地开发逐步完善的软件版本的模型。

增量模型的优点

1.在较短时间内向用户提交可完成部分工作的产品,并分批、逐步地向用户提交产品。

从第一个构件交付之日起,用户就能做一些有用的工作。

2.整个软件产品被分解成许多个增量构件,开发人员可以一个构件一个构件地逐步开发。

3.逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。

4.采用增量模型比采用瀑布模型和快速原型模型需要更精心的设计,但在设计阶段多付出的劳动将在维护阶段获得回报。

增量模型的困难

1.在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。

此外,必须把软件的体系结构设计得便于按这种方式进行扩充,向现有产品中加入新构件的过程必须简单、方便,也就是说,软件体系结构必须是开放的。

2.开发人员既要把软件系统看作整体。

又要看成可独立的构件,相互矛盾。

3.多个构件并行开发,具有无法集成的风险。

④螺旋模型

软件风险是任何软件开发项目中都普遍存在的实际问题,项目越大,软件越复杂,承担该项目所冒的风险也越大。

对于复杂的大型软件,开发一个原型往往达不到要求。

螺旋模型将瀑布模型和增量模型结合起来,加入了风险分析。

在该模型中,软件开发是一系列的增量发布,早期的迭代中,发布的增量可能是一个纸上的模型或原型,在以后的迭代中,逐步产生系统更加完善的版本。

螺旋模型的基本思想是降低风险。

螺旋模型的优点

对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标;

减少了过多测试或测试不足;维护和开发之间并没有本质区别

螺旋模型的特点

Ø风险驱动,需要相当丰富的风险评估经验和专门知识,否则风险更大

Ø主要适用于内部开发的大规模软件项目,随着过程的进展演化,开发者和用户能够更好的识别和对待每一个演化级别上的风险

Ø随着迭代次数的增加,工作量加大,软件开发成本增加

⑤面向对象模型

喷泉模型

特点:

主要用于支持面向对象开发过程体现了软件创建所固有的迭代和无间隙的特征

可重用部件组装模型(构件集成模型)

该模型支持软件重用(Reusability),对缩短软件开发周期、降低项目成本有重要的现实意义。

同时,建造符合某应用领域体系结构标准的构件,可以用来搭建分布式的、跨越不同操作平台(集成化软件开发环境(ISEE))的软件,扩展了软件的应用前景,促进了软件标准化、商品化的发展。

因此,在此基础上专家们又提出了“基于构件的软件工程”(CBSE)。

构件技术主要有三种流行标准:

OMG的CORBA;微软的COM/DCOM;SUN的EJB(EnterpriseJavaBean)

⑥统一软件开发过程

RUP重复一系列周期,每个周期由一个交付给用户的产品结束。

每个周期划分为初始、细化、构造和移交四个阶段,每个阶段围绕着五个核心工作流(需求、分析、设计、实现、测试)分别迭代。

第二讲可行性分析与需求分析

(1)可行性研究

目的:

用最小的代价在尽可能短的时间内确定问题是否能够解决。

不是解决问题,而是确定问题是否值得去解决。

可行性研究的主要任务

是“了解客户的要求及现实环境,从技术、经济和社会因素等三方面研究并论证本软件项目的可行性,编写可行性研究报告,制定初步项目开发计划。

可行性研究过程

1.复查系统规模和目标2.研究目前正在使用的系统3.导出新系统的高层逻辑模型

4.进一步定义问题5.导出和评价供选择的解法6.推荐行动方针

7.草拟开发计划8.书写文档提交审查

(2)系统流程图

系统流程图是概括地描绘物理系统的传统工具。

它的基本思想是用图形符号以黑盒子形式描绘组成系统的每个部件(程序,文档,数据库,人工过程等)。

系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程,因此尽管系统流程图的某些符号和程序流程图的符号形式相同,但是它却是物理数据流图而不是程序流程图。

(3)分层DFD图的优点

便于实现:

采用逐步细化的扩展方法,可避免一次引入过多的细节,有利于控制问题的复杂度;便于使用:

用一组图代替一张总图,方便用户及软件开发人员阅读。

(4)数据字典的任务

对于数据流图中出现的所有被命名的图形元素在字典中作为一个词条加以定义,使得每一个图形元素的名字都有一个确切的解释。

数据流图和数据字典共同构成系统的逻辑模型没有数据字典数据流图就不严格,没有数据流图数据字典也难于发挥作用。

(5)数据字典的内容

数据流、数据流分量(即数据元素、)数据存储、处理

(6)软件需求的描述

结构化语言、PDL;图形化表示;数学描述(形式化语言描述)

需求分析的具体任务

1确定对系统的综合要求

---功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求、约束、逆向需求、将来可能提出的要求。

2分析系统的数据要求

3导出系统的逻辑模型

4修正系统开发计划

需求获取和分析有一定的难度:

1)项目相关人员通常并不真正知道希望计算机做什么,让他们清晰的表达出需要系统做什么是件困难的事,他们或许提出不切实际的要求。

2)项目相关人员用自己的语言表达需求,这些语言包含很多工作中的专业术语和专业知识。

系统分析员没有这些知识和经验,而他们又必须了解这些需求。

3)不同的项目相关人员有不同的需求,可能以不同的方式表达,分析人员必须发现所有潜在的需求资源,而且能发现这些需求的相容或冲突之处。

4)经济和业务环境决定了分析是动态的,需求在分析过程中会发生变更。

个别需求的重要程度会改变,新的需求会从新的项目相关人员那里得到。

软件需求的组成

业务需求:

反映组织机构和客户对系统、产品高层次的目标要求。

用户需求:

从用户使用的角度给出需求的描述。

系统需求:

从系统的角度描述要提供的服务以及所受到的约束。

功能性需求:

描述系统应该做什么,即为用户和其它系统完成的功能、提供的服务。

非功能性需求:

产品必须具备的属性或品质。

设计约束:

设计与实现必须遵循的标准、约束条件。

如运行平台、协议、选择的技术、编程语言和工具等。

(7)具体的建模方法/表达方式有:

面向流的建模:

数据流图(DFD/CFD)

数据建模:

实体关系图(ERD)

基于行为的建模:

Petri网、状态图

(8)数据规范化

Ø消除数据冗余,即消除表格中数据的重复;

Ø消除多义性,使关系中的属性含义清楚、单一;

Ø使关系的“概念”单一化,让每个数据项只是一个简单的数或字符串,而不是一个组项或重复组;

Ø方便操作。

使数据的插入、删除与修改操作可行并方便;

Ø使关系模式更灵活,易于实现接近自然语言的查询方式。

(9)第一范式:

每个属性值都必须是原子值,即仅仅是一个简单值而不含内部结构。

第二范式:

满足第一范式条件,而且每个非关键字属性都由整个关键字决定(而不是由关键字的一部分来决定)。

第三范式:

符合第二范式的条件。

满足第三范式(3NF)必须先满足第二范式(2NF)。

简而言之,第三范式(3NF)要求一个数据库表中不包含已在其它表中已包含的非主关键字信息。

通常用“范式(NormalForms)”定义消除数据冗余的程度。

第一范式(1NF)数据冗余程度最大,第五范式(5NF)数据冗余程度最小。

但是:

1、范式级别越高,存储同样数据就需要分解成更多张表,因此,“存储自身”的过程也就越复杂。

2、随着范式级别的提高,数据的存储结构与基于问题域的结构间的匹配程度也随之下降,因此,在需求变化时数据的稳定性较差。

3、范式级别提高则需要访问的表增多,因此性能(速度)将下降。

从实用角度看来,在大多数场合选用第三范式都比较恰当。

所以,从实用角度看来,在大多数场合选用第三范式都比较恰当。

(10)验证软件需求的正确性,一般应从4个方面进行:

(1)一致性所有需求必须是一致的,任何一条需求不能和其

他需求互相矛盾。

(2)完整性需求必须是完整的,规格说明书应该包括用户需

要的每一个功能或性能。

(3)现实性指定的需求应该是用现有的硬件技术和软件技术

基本上可以实现的。

(4)有效性必须证明需求是正确有效的,确实能解决用户面

对的问题。

第三讲结构化设计

(1)用户界面应具有的特性

1、可使用性

①使用简单②用户界面中所用术语的标准化和一致性③具有HELP功能④快速的系统响应和低的系统成本⑤具有容错能力

2灵活性

①考虑用户的特点、能力、知识水平。

②提供不同的系统响应信息。

③提供根据用户需求制定和修改界面。

3、界面的复杂性与可靠性

复杂性—界面规模及组织的复杂程度。

应该愈简单愈好。

可靠性—指无故障使用的时间间隔。

用户界面应该能够保证用户正确、可靠地使用系统,及程序、数据的安全。

(2)用户界面设计的任务

1、用户特性分析—用户模型

了解所有用户的技能和经验,针对用户能力设计或更改界面。

从以下方面分析:

用户类型—通常分为:

外行型、初学型、熟练型、专家型。

用户特性度量—与用户使用模式和用户群体能力有关。

包括:

用户使用频度、用户用机能力、用户的知识、思维能力等。

2、用户界面的任务分析—任务模型(DFD图)

是对系统内部活动的分解,不仅要进行功能分解(用DFD图描述),还要包括与人相关的活动。

每个加工即一个功能或任务。

3、确定用户界面类型

JACKSON方法的设计过程

1、建立数据结构

JACKSON方法中数据结构表示为树型结构,有顺序、选择和循环三种基本结构。

2、以数据结构为基础,建立相应的程序结构图,也称为JACKSON图。

当没有结构冲突时,转换过程是简单的。

HIPO法

HIPO法:

即按功能层次的结构分析法,是1976年由IBM公司推出的软件分析及设计方法,又称HIPO图。

基本思想:

结构化方法是以数据流,数据封闭性准则来分解的,HIPO法则是以功能、功能完备性准则逐层分解的。

HIPO法的特点:

优点:

简单易行,资料易于查找,不仅适于信息软件的开发,也可用于逻辑关系较复杂的应用软件

缺点:

无验证功能,功能完备性很难验证。

未能反映系统性能要求。

资料量大,不宜规模大的系统。

第六讲结构化实现——编码和黑盒测试

(1)Myers对软件测试目的提出以下观点:

(1)软件测试是为了发现错误而执行程序的过程。

(2)一个好的测试用例能够发现至今尚未发现的错误。

(3)一个成功的测试是发现了至今尚未发现的错误的测试

(2)测试决不能证明软件是正确的,也不能证明错误的不存在,它只能证明错误的存在。

(3)测试方法

静态测试:

基本特征是在对软件进行分析、检查和审阅,不实际运行被测试的软件。

静态测试约可找出30~70%的逻辑设计错误.

动态测试:

通过运行软件来检验软件的动态行为和运行结果的正确性。

动态测试方法:

(1)选取定义域有效值,或定义域外无效值;

(2)对已选取值决定预期的结果;

(3)用选取值执行程序;

(4)执行结果与预期的结果相比,不吻和程序有错。

如何选择测试方法

v在任何情况下都必须使用边界值分析方法

v用等价类划分方法补充一些测试用例

v用错误推测法再追加一些测试用例

v如果程序的功能说明中含有输入条件的组合情况,则应在一开始就选用因果图法

v如果程序某功能适合自动测试,可以采用自动测试以及随机测试

因果图方法

•案例:

某厂工资发放

描述、分析(蓝色表示输入、红色表示输出):

–工资分为年薪制a1,月薪制a2。

–错误程度分为普通a3,严重a4。

–工资为a1的员工犯普通错误的扣工资2%(b1),犯严重错误扣工资4%(b2)

–工资为a2的员工犯普通错误的扣工资4%(b3),犯严重错误扣工资8%(b4)

其中,a1和a2为互斥;b1,b2和b3,b4是互斥;a3和a4可以同时具备。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 少儿英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1