软件日益增长的复杂程度、漫长的开发周期以及用户对软件产品经常不满意的状况而发展起来的。
计算机科学导论G.jx@BUCT 2012
3
软件危机
•软件危机指的是在计算机软件的开发和维护过程中所遇到的一系列严重问题•1968年北大西洋公约组织的计算机科学家在联邦德国召开的国际学术会议上第一次提出了“软件危机”(software crisis)这个名词
计算机科学导论G.jx@BUCT 2012
4
•软件危机包含两方面问题:
–如何开发软件,以满足不断增长,日趋复杂的需求
–如何维护数量不断膨胀的软件产品
•软件危机的原因:
–一方面是与软件本身的特点有关
–一方面是由软件开发和维护的方法不正确有关
计算机科学导论G.jx@BUCT 2012
5
•为了消除软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。
•软件工程是一类求解软件的工程,它应用计算机科学,数学以及管理科学等原理,借鉴传统工程的原则、方法,创建软件以达到提高质量,降低成本的目的•软件工程是一门指导计算机软件开发和维护的工程学科
计算机科学导论
G.jx@BUCT
2012
6
10.1 软件生命周期
软件生命周期
▪软件和其他产品一样,周期性地重复着一些阶段。计算机科学导论G.jx@BUCT 2012
8
开发过程模型
▪本章只讨论开发过程(Development)。它
包括四个阶段:分析、设计、实现和测试。
▪开发过程有多种模型,这里介绍常见的两种:瀑布模型和增量模型。
计算机科学导论G.jx@BUCT 2012
9
瀑布模型----只有一个方向的流动
▪缺点:难于定位问题。如果过程的一部分有问题,必须检查整个过程。计算机科学导论
G.jx@BUCT
2012
10
增量模型----从简化版开始
▪每个阶段,都加入更多细节。随时发现问题,随时修正。计算机科学导论
G.jx@BUCT
2012
11
10.2 分析阶段
分析阶段
▪生成格式说明文档
▪说明软件要做什么,但不说明如何去做
▪分析阶段使用的方法,依赖于实现阶段使
用的编程语言的类型。
计算机科学导论G.jx@BUCT 2012
13
面向过程分析(1/3)
▪规格说明书中常用的建模工具:1.
数据流图:显示系统中数据的流动。计算机科学导论G.jx@BUCT 2012
14
面向过程分析(2/3)
2.实体关系(Entity-Relationship[E-R])图:表示信息需要保存的实体和实体间的关系。矩形:实体集;椭圆:属性;菱形:关系集。
计算机科学导论G.jx@BUCT 2012
15
面向过程分析(3/3)
3.
状态图:表示实体状态在响应事件时的改变情况。计算机科学导论G.jx@BUCT 2012
16
面向对象分析(1/3)
▪规格说明书中使用的几个建模工具:1.
用例图:系统的用户视图(用户与系统的交互)矩形:系统执行功能;椭圆:行动用例;人型:动作者(某人或某事)。计算机科学导论G.jx@BUCT 2012
17
面向对象分析(2/3)
2.类图:表示系统中涉及到的实体(类)的构建。计算机科学导论G.jx@BUCT 2012
18
面向对象分析(3/3)
3.
状态图:表示实体状态在响应事件时的改变情况。需要为每个类准备状态图。
计算机科学导论G.jx@BUCT 2012
19
10.3 设计阶段
设计阶段
▪定义系统的所有组成部分
1.
面向过程设计
2.面向对象设计
计算机科学导论G.jx@BUCT 2012
21
面向过程设计
▪主要包括设计过程和设计数据
▪在面向过程的设计中,整个系统将被分解
成一组过程或模块。
计算机科学导论G.jx@BUCT 2012
22
结构图
▪用来说明模块间的关系。计算机科学导论G.jx@BUCT 2012
23
模块化
▪将大项目分解成较小的部分。1.
耦合:两个模块互相绑定的紧密程度;2.内聚:处理过程的相关紧密度。计算机科学导论G.jx@BUCT 2012
24
耦合----尽量最小化
▪越紧耦合的模块,性越差。这不是我
们所希望的。
1.
松散耦合的模块更可能被重用。
2.松散耦合的模块不容易在相关模块中产生错误
。
3.松散耦合的模块更容易进行局部修改。
计算机科学导论G.jx@BUCT 2012
25
数据耦合:只从调用函数向被调用函数传递
最少的需求数据。特征耦合:常发生在诸如数组或结构这样的复
合对象。
控制耦合:传递的是标记,它可用于指示函数
的逻辑流程。全局耦合:用全局变量来进行两个或更多函数
之间的通讯。内容耦合:在一个函数直接引用另一个函数的
数据或语句时产生的耦合。
计算机科学导论
G.jx@BUCT
2012
26
内聚----尽量最大化
▪内聚最好最大化
功能内聚:仅仅包含一个处理过程。
顺序内聚:包含两个或更多紧密联系在一起
的相关任务,通常一个流程的输出作为另一个的输入。
通信内聚:将使用同一数据的处理过程合并。
计算机科学导论G.jx@BUCT 2012
27
面向对象设计
▪详细描述类的细节。计算机科学导论G.jx@BUCT 2012
28
10.4 实现阶段
软件质量
可操作性
可维护性
可迁移性
▪
准确性可变性重用性高质量的软件系统可以:满足用户需求、高效性可修正性互用性可靠性适应性可移植性,符合组织操作标准、能高速运行。安全性可测试性及时性适用性
可操作性可维护性可迁移性计算机科学导论
G.jx@BUCT
2012
30
10.5 测试阶段
测试阶段
▪目的:发现错误
1.
白盒测试: 知道软件的内部构造
2.黑盒测试: 不知道程序的内部构造及工作模式
计算机科学导论G.jx@BUCT 2012
32
白盒测试
▪至少满足4条标准:
1.
每个模块中的所有的路径至少被测试过一次;
2.所有的分支结构(两路或多路),每个分支都
被测试;
3.
每个循环都被测试;
4.所有的数据结构都被测试。
计算机科学导论
G.jx@BUCT
2012
33
1. 基本路径
▪方法:创建一组测试用例,来执行软件中的每条语句至少一次。计算机科学导论G.jx@BUCT 2012
34
2.控制结构测试
▪条件测试:检查是否所有的条件都被正确
设置;
▪数据流测试:检查被用在赋值语句左边的
变量的值;
▪循环测试:检查循环的正确性。
计算机科学导论G.jx@BUCT 2012
35
黑盒测试
1.穷尽测试:用输入域中所有可能的值测试
。对于复杂的软件来说,不现实。
2.随机测试:选择输入域的子集来测试。子
集的选择将非常重要,随机数生成是常用的方法。
3.边界值测试:用条件的边界值组成的输入
域来测试。
计算机科学导论
G.jx@BUCT
2012
36
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- dcrkj.com 版权所有 赣ICP备2024042791号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务