1、第2章 问题定义和可行性研究 SOFTWARE ENGINEERING 2.1 问题定义 2.1.1问题定义阶段的主要任务 弄清用户需要计算机解决问题根本所 在,及项目所需的资源和经费。2.1.2所需时间 当系统要求较少并且不太复杂时,一、两天就可以完成;当系统要求比较大并且复杂时,要组织一个问题定义小组,花费一、两个星期的时间。SOFTWARE ENGINEERING 2.1 问题定义 2.1.3文档系统目标和范围说明书 内容:(1)项目名称 (2)问题描述 (3)项目目标(解决现行系统存在的 问题)(4)项目范围 (5)可行性研究 SOFTWARE ENGINEERING 2.1 问题定义
2、 2.1.4实例 某校教材销售系统系统目标和范围说明书 项目:教材销售系统 问题:人工发售教材手续烦琐、易出错 项目目标:建立一个高效率、无差错的微机教材销售系 统 项目范围:利用现有微型计算机,软件开发费用不超过 15000元 初步设想:建议在系统中增加对缺书的统计与采购功能 可行性研究:建议进行大约5天的可行性研究,研究费 用不超过1000元 SOFTWARE ENGINEERING 2.2可行性研究 2.2.1可行性研究阶段的主要任务 用最小的代价在尽可能短的时间内确定 问题是否能够解决。SOFTWARE ENGINEERING 2.2可行性研究 2.2.2内容:(1)技术可行性(使用现
3、有的技术能实现这个系统吗?)对用户要求的功能、性能以及实现系统的各项约束条件进行分析,看是否能够作成一个可接受的系统。现行系统调查:基本功能、存在的问题、运行费用、与其他系统 的接口。资源分析:是否能够得到需要的软件、硬件资源;系统开发所 需的各类人员(管理人员、专业技术人员);工作 环境。风险分析:在给定约束条件下,判断能否设计并实现系统所需 的功能和性能。技术分析:分析当前的科学技术是否支持系统开发的全过程。SOFTWARE ENGINEERING 2.2可行性研究 2.2.2内容:(2)经济可行性 (这个系统的经济效益能超过它的开发成本吗?)估计开发费用以及新系统可能带来的收益,将两者进
4、行权衡,看结果是否可接受。成本/效益分析(3)操作可行性 (系统的操作方式在这个拥护组织内行得通吗?)软件能否被有效的使用;开发过程中能否得到用户方的必要支持;软件使用所带来的影响用户方能否接受。SOFTWARE ENGINEERING 2.2可行性研究 2.2.3步骤 (1)复查系统规模和目标 (2)研究目前正在使用的系统 (3)导出新系统的高层逻辑模型 (4)重新定义问题 (5)导出评价供选择的解法 (6)推荐行动方针 (7)草拟开发计划 (8)书写文档提交审查 SOFTWARE ENGINEERING 2.2可行性研究 2.2.4文档系统开发计划 阅读对象:系统开发的主管部门、软件技术人
5、员和用户 内容:(1)引言:编写的目的、背景、引用的参考文献 (2)项目概述:工作内容、条件及限制、产品及 成果、运行环境、验收标准。(3)实施计划:任务分解;工作进度安排;成本 预算;关键问题(资源计划)。(4)人员组织及分工:(5)交付期限:(6)专题计划要点:SOFTWARE ENGINEERING 2.2可行性研究 资源计划:人力资源:系统分析员、管理人员、专业技术人员;硬件资源:宿主机:在软件开发阶段使用的计算机和有关外部设备;目标机:指运行所开发软件的计算机和外部设备;专用软件开发时,所需的特殊硬件设备:如过程控制软件所需的D/A、A/D转换器等专用设备。软件资源:支持软件:操作系
6、统、编译程序、数据库、图形包等。实用软件:可复用的软件部件库。SOFTWARE ENGINEERING 2.2可行性研究 2.2.5实例 某校财务处工资管理系统开发计划 1.引言 本项目开发计划是为某校工资管理系统的开发而编写的,主要阐明系统开发过程中人员的组织分配、项目开发进度、开发过程中的关键问题、应交付用户的产品及时间等。SOFTWARE ENGINEERING 2.2可行性研究 2.2.5实例 某校财务处工资管理系统开发计划 2.项目概述 2.1工作内容 本项目工作主要分为三个阶段:第一阶段为系统分析阶段,主要对项目的可行性及用户需要进行分析,并编写文档;第二阶段为系统设计阶段,包括对
7、软件的总体和详细设计阶段以及程序代码编写;第三阶段为测试阶段,并写出测试分析报告、项目开发总结报告。2.2条件与限制 目前本项目开发所需的软件、硬件均已具备,没有其他的条件限制。SOFTWARE ENGINEERING 2.2可行性研究 2.2.5实例 某校财务处工资管理系统开发计划 2.3产品 工资管理系统:FOXPRO程序 主要功能:收集数据:将每个职工的水电费数据收集起来。工资核算:根据扣款及水电费计算出当月应发工 资和实发工资。打印工资:产生工资总表、工资分类表等各种统计报表。SOFTWARE ENGINEERING 2.2可行性研究 2.2.5实例 某校财务处工资管理系统开发计划 2
8、.4运行环境 硬件:486以上微机、LQ-1600打印机各一台 软件:WINDOWS 95以上操作系统平台 2.5验收标准(1)输入测试计划中所有测试用例,结果符合测试计划的要求。(2)用户对系统界面满意。SOFTWARE ENGINEERING 2.2可行性研究 2.2.5实例 某校财务处工资管理系统开发计划 3.实施计划 3.1任务分解 阶段 工作量/人月 软件可行性研究及计划 0.25 需求分析 0.75 软件计划 2.25 编码 1 测试 0.75 SOFTWARE ENGINEERING 2.2可行性研究 2.2.5实例 某校财务处工资管理系统开发计划 3.2进度 3.3预算 硬件资
9、源:586微机一台,打印机一台。软件资源:WINDOWS操作系统,VISUAL FOXPRO数据库管理系统 成本估算:设备费1.2万元,开发费1万元,共2.2万元 3.4关键问题(1)程序员与编程语言的熟练程度。(2)程序员对需求说明书的理解程度。(3)编码阶段程序员工作是否受到干扰。(4)系统分析员文档提交是否及时。SOFTWARE ENGINEERING 2.2可行性研究 2.2.5实例 某校财务处工资管理系统开发计划 4.人员组织及分工 系统分析员1名,负责系统分析。程序员1名,负责程序编写及测试。5.交付期限 XX年XX月XX日 SOFTWARE ENGINEERING 2.2可行性研
10、究 2.2.6文档可行性研究报告 内容:概述:用户名称、拟建系统名称、开发单位名称 系统目标:近期目标、长期目标 现行系统描述 存在的主要问题 建议的新系统 结论 系统开发计划 SOFTWARE ENGINEERING 2.2可行性研究 2.2.7系统分析员(1)分析员的责任 是用户和管理人员的顾问;从各个方面收集数据和信息,应作综合解答;准备文档和管理报告;负责软件需求规格说明的开发;参与评审。SOFTWARE ENGINEERING 2.2可行性研究 2.2.7系统分析员(2)分析员的素质 熟悉计算机技术;有能力从互相冲突或混淆的原始材料中提取合理部分;了解有关用户领域知识,知识面广;有良
11、好的口头、书面表达能力;有抽象、创造性思维能力,能分清主次,能“有树见林”。SOFTWARE ENGINEERING 2.3系统流程图 2.3.1定义:系统流程图是描绘物理系统的传统工具。基本思想:是用图形符号以黑盒子形式描绘系统里面的每个部件(程序、文件、数据库、表格、人工过程等)。系统流程图表达的是信息在系统各部件之间流动的情况,而不是对信息进行加工处理的控制过程。SOFTWARE ENGINEERING 2.3系统流程图 2.3.2符号(1)基本符号 处理 输入/输出 数据流 SOFTWARE ENGINEERING 基本符号 SOFTWARE ENGINEERING 2.3系统流程图(
12、2)系统符号 把广义的输入/输出操作具体化为读/写 存储在特殊设备上的文件(或数据库),把一般的处理具体化为特定的程序或手工操作等。SOFTWARE ENGINEERING 系统符号 SOFTWARE ENGINEERING 2.3系统流程图 2.3.3符号使用 当以概括的方式抽象的描绘一个物理系统时,仅使用基本符号就够了;当需要更具体的描绘一个物理系统时,还需使用系统符号。SOFTWARE ENGINEERING 2.3系统流程图 2.3.4实例 某装配厂有一放零件的仓库,仓库中现有的各种零件的基本信息及库存量临界值记录在库存清单主文件中。当库存量有变化时,应及时修改库存清单主文件;若库存量
13、小于临界值,报告给采购部门,每天送一次定货报表。该厂使用一台计算机处理更新库存清单主文件和产生定货报表的任务。零件库存量每一次变化称为一个事务,由CRT终端输入计算机;系统重点库存清单程序对事务进行处理,更新存储在磁盘上的库存清单主文件中,并且把必要的定货信息写在磁带上。最后,每天由报告生成程序读一次磁带,并且打印出定货报告。SOFTWARE ENGINEERING 库存清单系统的系统流程图 SOFTWARE ENGINEERING 作业:画出下述系统的系统流程图 考虑一个修改磁带上主文件的系统.文件管理员把修改信息穿孔在卡片上,系统读入穿孔卡片上的信息并按照记录号把修改信息顺序排列好.然后系
14、统逐个读入主文件上的记录,根据记录上的校验码校核每个读入的记录,丢掉出错的记录,按照修改信息修改余下的记录,产生的新文件存储在磁盘上.最后,系统印出一份修改报告供文件管理员参阅.SOFTWARE ENGINEERING 2.4数据流图(DFD)2.4.1定义(Data Flow Diagram)数据流图是描绘系统的逻辑模型,图中没有任何具体的物理元素,只是描绘信息在系统中流动和处理的情况。SOFTWARE ENGINEERING 2.4数据流图(DFD)2.4.2组成成分及符号表示(1)外部实体(External Entity)(数据的源点/终点)指系统外又与系统有联系的人或事物。表达该系统数
15、据的外部来源或去处。如:顾客、工人、单位或另一个系统等。SOFTWARE ENGINEERING 2.4数据流图(DFD)2.4.2组成成分及符号表示(2)处理(Process)指对数据的逻辑处理功能,也就是对数据的变换功能,任何改变数据的操作都是处理。如:一系列程序、单个程序或程序的一部分。SOFTWARE ENGINEERING 2.4数据流图(DFD)2.4.2组成成分及符号表示(3)数据流(Data Flow)指处理功能的输入或输出,是运动中的数据。如:信件、票据等。(4)数据存储(Data Store)是静止状态的数据,表示数据保存的“地方”。这个地方并不是指保存数据的物理地点或物理
16、介质,而是指数据存储的逻辑描述。如:可以表示一个文件、文件的一部分、数据库的元素或记录的一部分等。SOFTWARE ENGINEERING 2.4数据流图(DFD)2.4.3附加符号-表示数据流之间是“与”的关系;+-表示数据流之间是“或”的关系;-表示只能从中选一个。(互斥关系)SOFTWARE ENGINEERING 数据流图的符号 SOFTWARE ENGINEERING 2.4数据流图(DFD)2.4.4分层数据流图的画法(1)遵循的原则:只须考虑系统必须完成的基本逻辑功能,完全不需要考虑如何具体的实现这些功能。SOFTWARE ENGINEERING 2.4数据流图(DFD)2.4.4分层数据流图的画法(2)实例 一家工厂的采购部每天需要一张定货报表,表中列出所有需要再次定货的零件,报表按零件编号排序。对于每个需要再次定货的零件列出下列数据:零件编号、名称、定货数量、目前价格、主要供应者、次要供应者。零件入库或出库成为事务,通过放在仓库的CRT终端把事务报告给定货系统。当某种零件的库存数量少于库存量临界值时就应该再次定货。SOFTWARE ENGINEERING SOFTWA