可行性研究

本文介绍了可行性研究的任务、过程及方法,包括系统流程图、数据流图和数据字典的绘制与应用,帮助读者理解如何评估项目的可行性和制定合理的实施方案。

可行性研究的任务

可行性研究的目的,就是用最小的代价在尽可能短的时间内确定问题是否能解决。

可行性研究过程

  1. 复查系统规模和目标
  2. 研究目前正在使用的系统
    1. 仔细分析现有系统的文档资料和使用手册,了解系统可以做什么、为什么这样做、系统的代价。注意不要过多了解系统的实现细节
    2. 画出描绘现有系统的高层系统流程图
    3. 请有关人员检验对现有系统的认识是否正确
  3. 导出新系统的高层逻辑模型
    1. 数据流图
    2. 数据字典
  4. 进一步定义问题:循环1-3步骤
  5. 导出和评价供选择的解法
    1. 在数据流图上划分不同的自动化边界,导出不同的物理方案
    2. 考虑技术可行性,初步排除一些不现实的系统
    3. 考虑操作可行性
    4. 考虑经济可行性
    5. 为可行的方案制定实现进度表
  6. 推荐行动方针
    1. 分析可行方案的成本/效益
    2. 提出一种最好的解法
    3. 向客户说明选择该方案的理由
  7. 草拟开发计划
    1. 估计对各类开发人员和各种资源的需求情况
    2. 估计系统生命周期每个阶段的成本
    3. 给出下一阶段(需求分析)的详细进度表和成本估计
  8. 书写文档提交审查
    1. 将可行性研究的各个步骤的工作结果写成清晰的文档
    2. 请用户、客户组织的负责人和评审组审查

系统流程图

系统流程图强调的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程,是物理过程

系统流程图举例
某装配厂有一座存放零件的仓库,仓库中现有的各种零件的数量以及每种零件的库存量临界值等数据记录在库存清单主文件中。当仓库中零件数量有变化时,应该及时修改库存清单主文件,如果哪种零件的库存量少于它的库存量临界值,则应该报告给采购部门以便定货,规定每天向采购部门送一次定货报告。
图片名称

分层思想

1. 画出高层次的系统流程图,表明系统的关键功能
2. 分别把每个关键功能发展到适当的详细程度,画在单独的一页纸上

数据流图

数据流图与物理描述无关,只是用一种图形与此相关的注释来表示系统的逻辑功能,即所开发的系统在信息处理方面要做什么,但不涉及具体的技术细节,因此,所描述的内容必须是面向用户的。

数据流图的组成成分

1. 原点和终点(正方形或正方体)
2. 处理(圆角矩形或圆形)
3. 数据存储(开口矩形或两条平行横线)
4. 数据流(箭头)

注意:数据存储和数据流都是一种数据,而不是一种操作,数据存储是处于静止状态的数据,数据流是处于运动中的数据。操作是一种数据处理。

画数据流图的步骤

1. 确定所开发系统的外部项,即数据的来源和去处。
2. 确定整个系统的输出数据流和输入数据流,把系统作为一个加工环节,画出关联图。
3. 确定系统的主要信息功能,按此将系统分解成几个加工环节(子系统),确定每个加工的输出与输入数据流,考虑是否要对输出数据流进行数据存储。
4. 根据自顶向下、逐层分解的原则,对上层图中全部或部分加工环节进行分解。
5. 划分自动化边界。

画数据流图的注意事项

1. 自顶向下、逐层分解。
2. 处理超过9个时,将每个主要功能细化为一张数据流分图。 
3. 编号

数据流图的用途

1. 系统分析师与审查人员信息交流的工具
2. 系统分析师分析和设计的工具
3. 可根据划分的自动化边界考虑系统的物理实现

数据流图举例

为方便旅客,某航空公司拟开发一个机票预订系统。旅行社把预订机票的旅客信息(姓名、性别、工作单位、身份证号码、旅行时间、旅行目的地等)输入进该系统,系统为旅客安排航班,印出取票通知和账单,旅客在飞机起飞的前一天凭取票通知和账单交款取票,系统校对无误即印出机票给旅客。

0层图

0

1层图

1层图

数据字典

数据字典是对数据流图中包含的所有数据的定义的集合。数据流图和数据字典共同构成系统的逻辑模型。

数据字典的组成成分

1. 数据流
2. 数据流分量(数据元素)
3. 数据存储
4. 处理 

由于数据处理的定义用其他工具更方便,因此数据字典主要由对数据的定义组成。除了数据定义外,数据字典还应包含关于数据的其他信息,有:一般信息(名字,别名,描述等)、定义(数据类型,长度,结构等)、使用特点(值范围,使用频率,使用方式)、控制信息(来源,用户,使用它的程序,改变权,使用权等)和分组信息(父结构,从属结构,物理位置)。

定义数据的方法

数据元素组成数据的方式有下述3中基本类型

1. 顺序:以确定次序连接两个或多个分量,X = a + b表示X由a和b组成
2. 选择:从两个或多个可能的分量中选取一个,X = [a | b]表示X由a或b组成
3. 重复:指定的分量重复0次或多次,下限{}上限,X = 2{a}6表示重复2到5次a
4. 可选:一个分量是可有可无的,即重复0次或一次,X = (a)表示a可出现也可不出现

数据字典举例

北京某高校可用的电话号码有以下几类:校内电话号码由4位数字组成,第1位数字不是0;校外电话又分为本市电话和外地电话两类,拨校外电话需先拨0,若是本市电话则再接着拨8位数字(第1位不是0),若是外地电话则拨3位区码再拨8位电话号码(第1位不是0)。
请用定义数据字典的方法,定义上述的电话号码。

电话号码=[校内电话号码|校外电话号码]
校内电话号码=非零数字+ 3 位数字   
校外电话号码=[本市号码|外地号码]
本市号码=数字零+8位数字
外地号码=数字零+3位数字+8位数字
非零数字=[1|2|3|4|5|6|7|8|9]
数字零=0
3位数字=3{数字}3       
8位数字=非零数字+7位数字
7位数字=7{数字}7
数字=[0|1|2|3|4|5|6|7|8|9]
### 软件问题的定义 软件问题的定义是指在开发新系统之前,明确需要解决的核心问题及其边界的过程。这一阶段的主要目的是通过详细的调查和分析,确定系统的背景、目标以及约束条件[^2]。具体来说: - **问题背景**:说明当前存在的业务或技术挑战为何需要一个新的软件解决方案。 - **开发必要性**:评估是否有足够的理由去启动这个项目,即是否真的需要开发该系统。 - **开发条件**:确认是否存在必要的资源和技术支持来完成项目的实施。 - **问题范围**:清晰界定待解决问题的具体领域,防止需求蔓延导致项目失控。 这些要素共同构成了对一个问题全面而精确的理解基础,从而为后续工作提供指导方向。 ### 可行性分析方法 #### 1. 技术可行性 技术可行性的核心在于判断现有技术水平能否满足预期的功能需求。这通常涉及以下几个方面: - 是否存在成熟的技术方案可以借鉴或者直接采用; - 当前团队成员技能水平是否能够胜任所需任务; - 所需软硬件设施的成本效益比如何计算等操作细节都需要仔细考量[^1]。 ```python def check_technical_feasibility(available_resources, required_skills): """ 检查给定条件下技术上的可执行度 参数: available_resources (list): 已有可用资源列表 required_skills (set): 完成此项目所需的技能集合 返回值: bool: 如果所有必需项都已具备则返回True;否则False """ return all(skill in available_resources for skill in required_skills) ``` #### 2. 经济可行性 经济可行性主要关注于成本收益分析,确保投入产出比例合理。它包括但不限于初始投资估算、运行维护费用预测以及长期经济效益评估等内容[^1]。 #### 3. 操作可行性 操作可行性侧重考察实际运作过程中可能遇到的各种障碍因素,并制定相应的规避措施。比如用户接受程度测试、培训计划安排等方面均属于此类别考虑范畴之内[^1]。 #### 4. 法律与道德可行性 最后一点也是非常重要的一环就是法律合规性和社会伦理审查环节。任何违反法律法规或是违背公众价值观的行为都应该被严格禁止并重新规划直至完全符合标准为止[^1]。 ### 总结 通过对以上几个维度深入细致的研究探讨之后得出结论才能最终决定某个特定想法是否值得进一步推进落实成为现实中的产品服务形式之一部分[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值