规模
(1)微型:1人,1~4周,0.5K
(2)小型:1人,16月,12K
(3)中型:25人,12年,5K~50K
(4)大型:520人,23年,50~100K
(5)甚大型:1001000人,45月,1M
(6)极大型:20005000人,510年,1M~10M
性质
(1)系统软件:os、汇编程序、编译程序、解释程序、DBMS、网络通信软件。
(2)应用软件:
1)事务型:MIS(1、建立数据库 2、事务操作(增、删、改、查询、统计) 3、决策)
2)实时软件:数据采集构件-à分析构件-à响应构件 协调构件
3)工程、科学计算软件:用数值算法
4)人工智能软件:(AI)用非数值算法(归约—推理机制)如专家系统、模式识别。
5)嵌入式软件:驻留于产品的ROM中,如全自动的洗衣机的控制软件。
6)个人计算机软件:字处理、电子表格……
7)网络应用软件:网络游戏、网上购物系统……
(3)工具软件:辅助软件开发、维护的软件。软件的辅助分析、设计、编码、测试的软件。
(4)可重用软件:标准库函数(如C中的tg( ))à用户自定义的数据类型à类
表现:
1.软件开发的成本,进度估计不准确
2.用户对已完成的软件不满意
3.软件的质量差
4.软件开发成本高开发机构
5.软件不可维护
6.生产效率低
**途径:**组织管理措施和技术方法两个方面综合考虑
产生软件危机的原因
(1)与软件本身特点有关
• 知识技术 — 软件(客观上导致开发成本、进度难估计、质量不可靠等问题)
(2)与开发维护软件的方法不正确有关
• 目前软件开发中没能彻底贯彻工程化方法
• 忽视计划(没有详尽的进度计划、成本预算)—成本进度估计不准确
• 忽视分析(没有弄清用户需求,急于开发)—开发出的软件用户不满意
• 忽视设计(没有建立起良好的软件结构,急于编程)—质量差,不可维护
• 轻视可维护性(提高可维护性——提高质量——运用质量保证手段:技术、管理、质量评审、文档、测试)
为了解决软件危机,既要有技术措施,又要有必要的组织管理措施。
件生命周期包括:软件定义、软件开发、运行维护。
软件开发:系统设计(总体设计、详细设计)、系统实现(编码和单元测试、综合测试)
瀑布模型:需求确定的软件的开发、面向过程方法学。
快速原型模型:需求不确定的软件的开发。
喷泉模型:面向对象的软件开发方法。
增量模型:大型复杂系统(需求确定的)。
螺旋模型:需求不确定的大型复杂系统。
(1)功能分析:用数据流图和数据字典建立功能模型;(2)数据分析:用ER图建立数据模型。
数据流、数据存储、数据加工和外部实体
(1)软件结构设计: 将数据流图转化为软件结构图;(2)数据设计:根据ER图建立数据库表结构。
决定怎样做
总体设计=概要设计/初步设计
任务
1、 划分出组成系统的物理元素——程序、文件、数据库、人工文档等;
2、 设计软件结构,系统之间的模块
总体设计主要由两部分组成:系统设计阶段、结构设计阶段
准则
1、 模块化
2、 抽象
3、 逐步求精
4、 信息隐藏
5、 模块独立
1、采用自顶向下,逐步求精的设计方法。
2.程序中用顺序、选择、多分支、while型循环、until型循环五种基本控制结构结构表示程序逻辑
3.每种控制结构单入口、单出口。
4、程序语句组成模块,每个模块单入口、单出口。
5、复杂的结构用五种基本控制结构组合嵌套实现。
6、严格控制GoTo语句
7、不仅要注意程序的结构化,还要注意数据结构的合理化。
1、由五种基本控制结构组成
2、每种控制结构单入口、单出口
3、模块单入口、单出口
1.尽早的和不断的进行测试
2.事先制定测试计划,严格执行测试计划,排除测试的随意性。
3.测试应从规模测试开始,逐步进行大规模测试。
4,充分注意测试中的集群现象。
5.精心设计测试结果,使测试方案充分的覆盖程序逻辑,尽可能的发现程序中的错误。
6.设计测试方案时,应当包括合理的输入条件和不合理的输入条件。
7应由独立的第三方从事测试工作。
单元测试阶段、集成测试阶段,系统测试阶段,验收测试阶段。
语句覆盖、判定 覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。
(1)求该算法的环形复杂度
(2)用逻辑覆盖法设计测试方案,满足各种逻辑覆盖标准。
(3)判断该算法是否为结构化的。
画出下列伪代码程序的流程图,计算它的环形复杂度。这个程序的逻辑有什么问题吗?
C EXAMPLE
LOOP:DO WHILE Z>0A=B+1IF A>10THEN X=AELSE Y=ZEND IFIF Y<5THEN PRINT X,YELSE IF Y=2THEN GOTO LOOPELSE C=3END IFEND IFG=H+REND DOIF F>0THEN PRINT GELSE PRINT KEND IFSTOP
程序流程图
流图
环形复杂度
V(G)=判断结点+1=6+1=7
其中判断结点为 1 , 3 , 6,8, 10, 11
逻辑问题
有问题:当Z>0时,容易形成死循环,条件Y<5中包含条件Y=2
算法如下:
INPUT(A,B)
IF A>B+3 THEN X=A
ELSE X=B
IF A>10 THEN Y=B
ELSE Y=A+B
OUTPUT(X,Y)
(1)该算法的环形INPUT(A,B)
IF A>B+3 THEN X=A ELSE X=BIF A>10 THEN Y=B ELSE Y=A+BOUTPUT(X,Y)
复杂度V(G)=( 3 )
(2)下列测试方案满足何种逻辑覆盖标准。
①[(A=3,B=0),(X=0,Y=3)]
这组方案满足( 语句 )覆盖。
②Ⅰ[(A=5,B=0),(X=5,Y=5)]
Ⅱ[(A=11,B=10),(X=10,Y=10)]
这两组方案同时满足( 判定 )覆盖、( 条件 )覆盖、( 判定/条件 )覆盖和条件组合覆盖。
下一篇:西瓜书-决策树