第十章 系统开发与运行
1、软件工程知识
软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题的工程。其目的是提高软件生产率,提高软件质量,降低软件成本。
在经历60年代的软件开发危机后,人们开展了软件开发模型、开发方法、工具与环境的研究,提出了瀑布模型、深化模型、螺旋模型和喷泉模型等开发模型,出现了面向数据流方法、面向数据结构的方法和面向对象方法等开发方法,以及一批计算机辅助的软件工程工具和环境。
2、软件生存周期:可以分为6个阶段。计划制定、需求分析、设计、编码、测试、运行维护。
计划制定: 确定待开发软件系统的总目标,对其进行可行性分析,并对资源分配,合理安排进度计划。
参加人员有,用户、项目负责人和系统分析员。
该阶段产生的文档有,可行性分析报告和项目计划书。
需求分析: 确定系统功能、性能、数据及界面等要求,从而确定系统的逻辑模型。
参加人员有,用户、项目负责人和系统分析员。
产生的文档有,需求规格说明书。
软件设计: 分为概要设计和详细设计。
概要设计参加人员为,系统分析员和高级程序员;详细设计参加人员有,高级程序员和程序员。
该阶段产生的文档有,设计规格说明书(可以分为概要设计说明书和详细设计说明书)。
编码: 产生的文档为源程序清单。
测试: 文档为测试计划和测试报告。
运行及维护
3、软件开发项目管理基础知识
成本管理:有两种方法。 开发费用 = 人月数 * 每个人月的代价
开发费用 = 源代码行数 * 每行平均费用
风险分析:涉及3个概念,一是关心未来,第二是关系变化,第三是要解决选择问题。风险分析实际包括4个活动:风险识别、风险预测、风险评估和风险控制。
进度管理:有两种安排方式,一是交付日期已确定,另一个是仅确定了大致的日期,最终交付日期由开发部门确定。常用两种图形描述方法。
Gantt甘特图,横轴表示时间,纵轴表示任务,水平线表示任务的进度安排。它可以很好的描述任务间的并行性,但不能反映任务间的依 赖关系,不能确定整个项目的关键;
PERT图, 是一个有向图,图中的箭头表示任务,图中的结点称为事件,表示流入结点的任务的结点和流出结点的任务的开始。仅当流入结点的任务都结束时,该事件才出现,流出结点的任务才能开始。每个任务有一个松驰时间。为了表示任务间的关系,图中还可以加入一些空任务(虚线表示)。一个事件有事件号、出现该事件的最早时刻、最迟时刻。松驰事件为0的任务构成了关键路径。PERT图不能反映任务的并行性。
人员管理:主程序员组、无主程序员组、层次式程序员组。
4、软件开发方法:主要掌握3种方法,分别是结构化方法、面向对象方法和原型法。
结构化方法:是目前最成熟的开发方法之一,分为结构化分析和结构化设计。
面向对象方法:从现实世界中客观存在的事物出发来构造软件系统。软件系统适用的业务范围称作软件的问题领域,把问题领域中事物的特征抽象地描述成类,由类建立的对象作为系统的基本构成单位,它们的内部属性与服务描述了客观存在的事物的静态和动态特征。对象类之间的继承关系、聚集关系、消息和关联反映了问题域中事物之间实际存在的各种关系。
原型法:在获得一组基本需求后,快速地加以实现,随着用户和开发人员对系统理解的加深而不断进行补充和细化,是一种动态定义技术。
5、软件开发环境:是指支持软件产品开发的软件系统,它由软件工具集和环境集成机制构成。环境集成机制为工具集成和软件开发、维护及管理提供统一的支持,通常包括数据集成、控制集成和界面集成。有几个特征,环境的服务是集成的;环境的服务可用于各种软件开发活动;环境应支持小组工作方式。
6、ISO/IEC9126软件质量模型
由3个层次组成,分别是:质量特性--质量子特性--量度指标。
质量特性(质量子特性):
功能性(适合性、准确性、互用性、依从性、安全性)
可靠性(成熟性、容错性、易恢复性)
易使用性(易理解性、易学性、易操作性)
效率 (时间特性、资源特性)
可维护性(易分析性、易改变性、稳定性、易测试性)
可移值性(适应性、易安装性、一致性、易替换性)
MC Call软件质量模型,从软件产品的运行、修正和转移3个方面确定了11个质量特性。
产品运行(正确性、可靠性、易使用性、效率、完整性)
产品修正(可维护性、灵活性、可测试性)
产品转移(可移值性、复用性、互用性)
7、软件质量保证:是指为提高软件质量而进行的有计划、有组织的活动。
软件质量保证包括的7个主要活动相关的任务:应用技术方法、进行正式的技术评审、软件测试、标准的实施、控制变量、量度、记录保存和报告。
8、软件过程能力评估
软件产品的质量取决于软件开发过程。
软件过程评估,是软件改进和软件能力评价的前提。
软件过程评估的意义:是软件过程改进的需要。软件过程不断改进是软件工程的基本原理之一;软件过程改进是软件生存周期的基本过程之一。
是降低软件风险的需要。
软件能力成熟度模型CMM:是对软件组织进化阶段的描述。分为5个成熟度级别,初始级-可重复级-已定义级-已管理级-优化级。比较有名的一个基于CMM模型的产品是成熟度调查表,可以用于一个机构软件过程实力、弱点和风险。
8、系统分析的目的和任务:对现行系统做进一步的详细调查,将调查所得到的文档资料集中,对组织内部整体管理善和信息处理过程进行分析,为系统开发提供所需资料,并提交系统方案说明书。
系统分析的主要步骤是:由现实系统得出物理模型--抽象出逻辑模型--优化出新的逻辑模型--逻辑模型具体化,得到新系统的物理模型。最终编写系统方案说明书。
9、结构化分析方法:采用“自顶向下、逐层分解”的开发策略。
数据流程图DFD:在逻辑上描述系统的功能、输入、输出和数据存储。DFD的基本成分有,数据流、加工、数据存储、外部实体。它们各有特定的图形表示。
分层数据流图的画法: 1)画系统的输入和输出; --称为顶层图
2)画系统的内部,将顶层图的加工分解成若干个加工,并用数据流连接; --称为0层图
确定加工的方法:在数据流的组成或值发生变化的地方应画一个加工;也可根据系统功能确定加工。
确定数据流方法:用户把若干个数据看作一个单位来处理时,可把这些数据看成是一个数据流。
3)画加工的内部;
4)重复第3步的分解过程至所有的加工都足够简单。
对图和加工进行编号: 顶图不必编号;
0层图只有一张,图中的加工号可以是0.1, 0.2, ...或是1, 2, ..
子图号就是父图中被分解的加工号
子图中的加工号同样由图号、圆点和序号组成
注意分析教材513页的实例:某考务处理系统有如下功能:对考生送来的报名单进行检查;
对合格的报名单进行检查;
对阅卷站送来的成绩清单进行检查,并根据考试中心指定的合格标准审定合格者;
制作考生通知单送给考生;
生成各种报表。
画图中应注意的问题:适当地为数据流、加工、数据存储及外部实体命名;
画数据流而不是控制流;
一个加工的输出数据流不应与输入数据流同名;
允许一个加工有多条数据流流向另一个加工,也允许一个加工有两个相同的输出数据流流向两个不同的加工;
保持父图与子图平衡;
在自顶而下的分析过程中,如果一个数据存储首次出现时只与一个加工有关,那么可以把它作为内部文件而不必画出
保持数据守恒,即一个加工的输出数据流中的数据必须直接从该加工的输入数据流中获得或产生;
每个加工都必须有输入、输出数据流;
在整套数据流图中,每个数据存储都必须有读的数据流和写的数据流。
数据词典DD:就是为数据流图中的每个数据流、文件、加工,以及更细节的数据项做出说明。其中对加工的说明称为“小说明”或“加工逻辑说明”。常用的加工逻辑说明方法有3种:结构化语言、判定表和判定树。结构化语言分为内外两层,外层有严格的语法,而内层语法灵活,接近于自然语言。
10、统一建模语言UML:它提供了9种基本元素的图形,分别是:类图、对象图、用例图、序列图、协作图、状态图(活动图、构件图、部署图)。
UML由3个要素构成:UML的基本构造块、支配这些构造块如何放置在一起的规则、运用于整个语言的一些公共机制。
在UML提供的图中,可以采用类图,对逻辑数据库模式建模;状态图,用于接口、类和协作的行为建模,并强调对象行为的事件顺序;活动图,用于系统的功能建模,并具强调对象间的控制流。
11、系统分析报告:数据流图、数据字典和加工说明应该成为系统分析报告的主体。并且一份完整的系统分析报告应该包括如下内容。
组织情况概述
现行系统概述
系统逻辑模型
新系统在各个业务处理环节拟采用的管理方法、算法或模型
与新系统相配套的管理制度和运行体制的建立
系统设计和实施的初步计划
用户领导审批意见
12、系统设计的目的和任务:主要目的是为系统制定蓝图,在各种技术和实施方法中权衡利弊,精心设计,合理使用种种资源,最终形成系统的详细设计方案。
系统设计的任务分为两个步骤:首选是把总任务分解为许多基本的、具体的任务。合理地组织这些具体任务可以构成总任务,称为总体结构设计,也称为概要结构设计; 其次是为各个具体任务选择适当的技术手段和处理方法,即详细设计。
系统总体结构设计原则:分解-协调原则
自顶而下原则
信息隐蔽、抽象原则
一致性原则
明确性原则
模块间耦合尽可能小,模块内组合尽可能紧凑
模块的扇入系数和扇出系数要合理
模块的规模要适当
模块化设计: 模块是组成系统的基本单位,应该具备4个元素,分别是,输入和输出、处理功能、内部数据、程序代码。
模块结构图, 是采用HIPO图(分层输入-处理-输出)形式绘制而成的框图。它主要关心模块的外部属性,即上下级模块、同级模块之间的数据传递和调用关系。它主要由5种基本符号表示:模块、调用、数据、控制和转接。
存储设计:首先要解决数据的整体结构设计,然后要确定数据资源分布和安全保密属性。
13、系统详细设计
代码设计
输出设计 --确定输出内容、选择输出设备与介质、确定输出格式
输入设计 --输入原则:最小量、简单性、早检验、少转换
处理过程设计 --总体结构设计将系统分解成许多模块,并决定每个模块的外部特征,即功能和界面。计算机处理过程的设计则是要确定每个模块的内部特征,包括局部的数据组织、控制流、每一步的具体加工要求及实施细节等。
处理过程的关键是,用一种合适的表达方法来描述每个模块的执行过程。常用的描述方式有图形、语言和表格3类。例如,程序流图、盒图NS、形式语言、决策树、决策表。盒图就是用一个盒子表示一个步骤,可以嵌套,只能从上头进入下头输出,因此限制了控制转移,保证了程序的良好结构。
用户界面设计 --包括菜单方式、会话方式、操作提示以及操作权限管理方式等。权限管理一般是通过入网口令和建网时定义该节点级别来实现的。
安全控制设计 --包括数据处理和环境两方面
系统设计说明书
一份完整的系统设计说明书应包括:
1)引言
背景--摘要--工作条件/限制--参考和引用资料--专门术语定义
2)系统总体设计方案
模块设计--代码设计--输入设计--输出设计--数据库设计说明--模型库及方法库设计--网络设计--安全保密设计--实施方案说明书。
从系统调查、系统分析到系统设计是信息系统开发的主要工作,它们的工作量应占到总开发量的70%。
14、系统实施的任务: 按总体设计方案购置和安装计算机网络系统;
软件准备--其中编写程序是一个重要任务;
人力培训;
数据准备;
试运行。
程序设计:主要依据是系统设计阶段的HIPO图、数据库结构和编码设计。
结构化程序设计方法:适用于某些过程不规范、模块划分不细或有特殊业务处理需要模块程序量较大时。主要强调3点规则:模块内部程序各部分要按自顶向下的结构划分;各程序部分应按功能组合;各程序间联系尽量使用调用子程序实现。
快速原型式方法:首先将HIPO图中具有普遍性的功能模块集中实现,构造系统原型,再对一些特定的功能和模块进行补充。
面向对象的程序设计方法:OOD?
15、软件测试方法:分为人工测试和机器测试。
人工测试,又称为代码审查。
机器测试,分为黑盒测试、白盒测试。
黑盒测试--也称为功能测试,主要测试软件的外部特性。
白盒测试--也称为结构测试,根据程序内部结构、逻辑,以程序的路径和过程进行测试。
软件测试步骤:可以分为4步,如下
1)单元测试,即模块测试
2)组装测试,即集成测试。又分为非增量式集成和增量式集成。前者可以对模块进行并行测试,后者使测试更彻底。
3)确认测试,进一步检查软件的功能和性能是否与用户要求的一致。以系统方案说明书为基础,检查软件有效性。
确认测试首先要进行有效性测试以及软件配置审查,然后进行验收测试和安装测试,最后经各部门认可后交付使用。
4)系统测试,将已经确认的软件、硬件、外设及网络结合起来,进行系统的各种组装测试和确定测试。
调试:试探法、回溯法、对分查找法、归纳法、演绎法。
16、系统转换
实际运行,是对系统最好的检验和测试方法。这个阶段的工作有:
对系统进行初始化、输入各原始数据记录;
记录系统运行数据和状况;
核对新、老系统的输出结果;
考察输入方式(方便、效率、误操作)
测试响应速度
系统转换方式:直接转换、并行转换、分段转换。
17、系统维护,系统的可维护性可以定义性的定义为维护人员理解、改正、改动和改进这个软件的难易程序。
系统可维护性的评价指标:可理解性、可测试性、可修改性。
文档,是软件可维护性的决定因素。
系统维护主要包括硬件设备的维护、应用软件的维护和数据的维护。
18、系统评价,分为广义和狭义两种。广义的评价是指从系统开发的开始到结束的每一阶段都需要进行评价。狭义的评价是指在系统建成并投入运行之后进行的全面和综合的评价。
从总体上可以将广义评价分为立项评价、中期评价、结项评价。
19、系统运行管理
运行管理制度:包括种类机房安全运行管理制度,和信息系统的其他管理制度。
日常运行管理内容:包括系统运行情况记录、审讯追踪、审查应急措施落实、系统资源管理、软件及文档管理