如何写系统分析书

需求分析报告 需求分析报告 1 引言 在市场经济中,进销存管理是企业运作的重要环节。随着企业规模的发展壮大,商品数量急剧增加,有关商品的各种信息量也成倍增加。企业需要实时动态地对商品的各种信息进行统计分析为了便好地增加业务量,另外不少企业通过分公司或代理商把产品推向最终用户,这些分公司或代理商分布在不同的地理位置,跨空间、跨时间的频繁业务信息交流是这些企业业务活动的主要特点。在这种形势下,传统的人工传递信息和数... 阅读详情

如何写系统分析书 

如何写系统分析书
想和大家一起来谈谈在软件工程中我们所做的第一步:系统分析。希望我们中国的代码人能吸取更多更好的理论和实际的经验,有符合我们实际情况的系统分析、开发方法、步骤以及文档。系统分析,我个人认为它应该是能体现系统的灵魂性的文档。该文档应有什么内容,表达什么意思是我想在这里与大家探讨的问题。我觉得在系统分析书中应该有以下内容(视项目而定):

  1、 系统需求说明 说明系统是一个什么样的系统,用市场上现有的系统来类比,用客户(或是我们自己)需要一个什么样的系统进行说明,力求完整。并对系统的发展可扩充性进行描述(现在没有哪个系统是一次OK的)。说明与现有的系统有什么相同什么不同,说明未来系统的发展方面以及可移值性等能预见的事情。

  2、 系统资源说明 对系统所需要的软件、硬件资源进行说明。描述系统所需要的所有的TCO成本。包括人员、时间、设备、系统、一次性投入资金、持续性投入资金这样的所有资源。

  3、 系统可行性分析 对系统的实施中的资源进行分析,说明投入的合理性和必然性,对其中的所有不可预见性的投入进行合理的量化说明,来说明系统的实施的可行性。

  以上为我所想到的系统分析说明书中应出现的前三种文档,不知大家有什么想法,请赐教。

作为开发前期的工作,还应该包括:总体设计和详细设计。

  总体设计这个阶段必须回答的关键问题:概括地说,应该如何解决这个问题?

  首先,应该考虑几种可能的解决方案。例如,目标系统的一些主要功能是用计算机自动完成还是用人工完成;如果使用计算机,那么是使用批处理方式还是人机交互方式;信息存储使用传统的文件系统还是数据库……
  通常至少应该考虑下述几类可能的方案:

  低成本的解决方案

  系统只能完成最必要的工作,不能多做一点额外的工作。
  中等成本的解决方案 

  这样的系统不仅能够很好地完成预定的任务,使用起来很方便,而且可能还具有用户没有具体指定的某些  功能和特点。虽然用户没有提出这些具体要求,但是系统分析员根据自己的知识和经验断定,这些附加的能力  在实践中将证明是很有价值的。

   高成本的"十全十美"的系统

   这样的系统具有用户可能希望有的所有功能和特点。系统分析员应该使用系统流程图或其他工具描述每种  可能的系统,估计每种方案的成本和效益,还应该在充分权衡各种方案的利弊的基础上,推荐一个较好的系统  (最佳方案),并且制定实现所推荐的系统的详细计划。如果用户接受分析员推荐的系统,则可以着手完成本  阶段的另一项主要工作。

  上面的工作确定了解决问题的策略以及目标系统需要哪些程序,但是怎样设计这些程序呢?

  结构设计的一条基本原理就是程序应该模块化,也就是一个大程序应该由许多规模适中的模块按合理的层次结构组织而成。总体设计阶段的第二项主要任务就是设计软件的结构,也就是确定程序由哪些模块组成以及模块间的关系。通常用层次图或结构图描绘软件的结构。

  详细设计总体设计阶段以比较抽象概括的方式提出了解决问题的办法。详细设计阶段的任务就是把解法具体化,也就是回答下面这个关键问题:"应该怎样具体地实现这个系统呢?"这个阶段的任务还不是编写程序,而是设计出程序的详细规格说明。这种规格说明的作用很类似于其他工程领域中工程师经常使用的工程蓝图,它们应该包含必要的细节,程序员可以根据它们写出实际的程序代码。通常用 HIPO 图(层次图加输入/处理/输出图)或PDL语言(过程设计语言)描述详细设计的结果。

  我想这样的文档系统的思路是一个慢慢积累的过程,如JJX同志所说,我们现在有太多的形式上的东东,它并不是一个程序员真正需要的系统分析/设计书,对于系统的设计到实施到最后的代码以及验收有太多的改动和变化,我们正在一个极不规范的系统中生存,所以我们不可能有太多的选择,只能抄抄应付了事。所以与大家一起探讨一个真正适合我们的文档模式,这个模式或是说模板能为我们的代码工作减少负担,带来更多的动能

  就目前的开发思路,应用环境和编程方法来说,传统的需求分析-系统分析-概要设计-详细设计-……已越来越不行了,因为:

  1、 现在的应用和以前大不一样。现在的应用是一种庞大的集成,包括跨平台,网络,数据库等等,而且新技术的出现越来越快,任何人都无法精通甚至是掌握全部技术。简单例子:现在有Windows,Unix,Linux等平台,有SQL Server,Oracle,Sybase等数据库,有C++,VB,Delphi等工具,谁能全部精通呢?如果不能,那么如何确定是Windows+SQL Server+Delphi好还是Unix+Oracle+C++合适?

  2、 客户没有需求。我做过银行、电信等大客户及各种小客户,他们无一另外的说"我要做一个OA系统","我要做一个企业网","我要做一个……"。可他们无法确定要实现什么,因为很少有用户是真正由于业务的需求而做项目的;而且他们也不清楚能够实现什么(因为他们不懂notes,不懂企业网)。

  3、 需求与环境的变化。由于在项目开发前客户没有实质性的需求,加上软件开发人员不熟悉客户的业务,就导致在开发过程中需求的不断变化,严重时将导致分析与设计作废。

  4、 对象化的工具和过程化的程序现在的开发工具已经很对象化了,而我们开发的程序却很过程化。也就是说你虽然努力的模块化,层次化,可只要运行环境有所变化,你还要不断地修改再修改。
  
  上述的实际情况说明我们确实需要把实际中的做法修改一下。一个项目如果做到了80%的时候才真正明确这个系统是什么样子的话,我认为是设计者的失败。所以在设计阶段不但应该做好传统做法的各种文档和论证,而且,应该做一些具体的设计工作。比如,系统的整体运行设计及系统各功能模块的具体设计。而且这些设计应当都有详细的设计说明书。当这些说明书完成后,应当能做到:随便找个程序员他都能只通过看某功能模块的设计说明书就能够开始代码的开发而不用再重新思考该怎样去做了,程序员在这里就真的只是一个设计者的实现工具。当然,也象某些兄弟说的那样,现在的系统都越来越繁杂、越来越庞大、越来越向集成性质靠拢,似乎是没有多少人能掌握具体用什么做效果如何,但关键就在这里。莫非真的没有人能做到这点吗?非也!只不过是目前的显示情况是,设计人员的水平偏低,有些公司的设计人员根本就没有多少的开发经验,他又怎能了解太多的系统呢。

  系统设计在目前看来似乎是个拿钱多干活少的工作,这是不正常的现象。培养一个程序员根本不用花多大的力气,一个人只要不太笨不太蠢,给他一个机会,相信就能掌握某门技术或方法。但要掌握若干种方法,就不是能够通过速成解决的了。问题也在于此。目前似乎所有的系统设计人员都能够设计所有的东西。其实不然。很多人都有知识的局限性,这就决定他只能对某些方向的东西做出决策和设计。客户固然不知道他要做什么,但我们应该知道。如果在前期能够多接触用户、多深入实际,把设计人员当成客户工作中的一员,他就能够真正了解到客户的需求,当然也就能够为他做出合适的设计。

  至于说到各种系统之间的好坏对比,我想,任何东西都没有绝对,有的只是某些方面的权衡。比如性能或空间的权衡、价格和性能的权衡和功能侧重上的权衡等等如此而已。计算机里的东西没有哪一样的存在不是包含了这种权衡在内的。虽然从商务上似乎总想说服用户什么东西好什么东西不好,其实从技术上讲无所谓好和不好,有的只是区别及该区别所针对的问题而已。这就象有人总在争论Linux和Window到底谁好一样。或许从"技术"上讲,Linux比Window好,但这其实并不公正,因为漂亮的GUI界面和友好的人际交互同样应该是"技术"中应该考虑到的一部分。把所有的东西结合起来一看就知道没有绝对的好。所以,不见得非要在用户决定之前由系统设计的人员事先来为各种方案做个排队,只需要了解用户的需求,然后从大方向上决定一个方向再做具体设计就可以了。

  在这里我只从过去的实践角度举例来说,至于理论方面实在没时间深入。首先,认同两个说法:

  1. 项目(或说工程)有三个主要方面:功能,时间,成本。
  2. 系统分析的任务:将用户的业务逻辑转化为程序逻辑,计算时间和成本。

  让我们来做一个概要设计:
  1) 功能:简单的信息发布系统。
  2) 系统分析员根据项目的时间和成本,在充分权衡各种方案的利弊的基础上提出SQLSERVER+CORBA+DELPHI的方案……用户很满意,OK,开始详细设计:
  1) 为方便用户的安装使用三层结构。
  2) 客户端包含信息分布和查询两个模块。
  3) 使用各种图或语言描述各种函数,过程,模块,层次……一切顺利,开始编码……编码完成,用户试用,这时用户提出:在客户端要能实时跟踪信息的变化,而你却发现DELPHI的CORBA不支持回调!转用其它方按时间上不可能,补救措施也不灵(比如使用timer,但客户的网络环境不允许多个用户的频繁刷新),怎么办?

  分析一下问题出在哪里:

  1) 有人会说系统分析员不真正了解客户的需求,可这不可能(项目时间的限制)也不现实(不可能让分析员到每个岗位都去操作一下)。

  2) 有人会说系统分析员的知识和经验不足,可现实却是分析员认为应该的客户觉得没必要,而客户觉得必须的分析员又不可理解。这是不同的工作造成的,俗话说隔行如隔山。

  3) 有人会说系统分析员的水平不够,可问题绝大部分是出在细节而不是大方向上,掌握全部细节可能吗?这就是一个长期困扰我的问题:细节(而不是方向)往往成为成功与失败的关键(注意,这里的成功是包含了时间和成本的),而细节是不可能全部发现与分析清楚的。

  如何在这种不完整的需求上构造完整的系统呢?或是根本不可能呢?这种问题我遇到过多次──当然都是别人做的设计。但我认为这个过程中不足的地方就是:把东西做死了,没有切实地为用户着想。很多人在做设计时,可能考虑的最多的是实现上的方便,而不是系统的扩展及更新。需知道,用户的需求是在不断变化的,如果总是在设计前就"善意"地替用户假设,是难以预料后事的结局的。所以我想,在设计阶段就因该把可能出现的问题都摆到桌面上讨论,包括其特点、效果和后果,而不是自以为是地、好心地替用户"假设"。其实一个系统设计的优劣,其系统的扩展性能是一个很重要的指标,一个单纯就事论事地针对某件事情而做出的"专用"系统是没有任何远见的。

手把手教你搞定爱思唯尔LaTeX投稿:从模板到PDF生成的全流程避坑指南 本文详细介绍了使用LaTeX投稿爱思唯尔期刊的全流程避坑指南,包括模板选择、文件结构规范、投稿系统文件上传策略、PDF生成与检查等关键步骤。特别强调了避免常见错误如宏包冲突、图片丢失和参考文献问题,并提供了投稿后的应急方案和高阶自动化校验脚本,帮助研究者顺利完成投稿。 阅读详情

相关推荐

密码学:一文看懂Base64算法

Base64常常在我们开发中出现,我们可能只知道它是一串乱码(看不懂的符号),知道有时候知道我们需要把一些数据进行base64编码,有时候需要进行Base64解码。但是却不知道它的作用是什么?它存在的意义是什么?还有它是如何生成的?如何编码和解码?上述的疑问相信在你读完本篇文章之后烟消云散。下面开始正文。Base64是什么?它和加密解密操作有什么关系吗?没错,这就是经过Base64编码后的字符串。对它解码后,我们获得以下内容点个关注,是对我持续创作的最大的鼓励!

Shujie 1万+

需求分析怎么写

需求分析是系统开发过程中的一个重要步骤。它的目的是通过收集和分析需求来确定客户的需要,并且为软件开发提供清晰的方向。 在写需求分析时,通常需要从如下几个方面入手: 目标:明确需求分析的目的,以及所要解决的问题。 背景:描述需求分析的背景信息,包括当前的状态、期望的结果等。 范围:确定需求分析的范围,包括要分析的主体、所涉及的功能、约束条件等。 方法:描述需求分析所使用的方法,包括访谈、问卷...

weixin_35750483的博客 4930

缠论 公式 自动画线 画笔 中枢 买卖点 源代码

【代码】缠论 公式 自动画线 画笔 中枢 买卖点 源代码。

weixin_40835859的博客 2万+

软件需求说明书(高校课程表)

@[TOC]软件需求说明书(高校课程表系统) 编写此文档的目的是让用户理解此软件,便于开发人员进行理解和交流,反映出用户问题的结构,可以作为软件开发工作的基础和依据以及确认测试和验收的依据。 本次待开发的软件为高校课程表系统。 用户通过使用该软件可以查询自己的详细课程信息,包括课程,教室,上课时间以及老师的信息。同时学们生还可以进行交流私信聊天,讨论问题,同学之间相互启发,促进学习。学生在登陆账号...

xmingy254的博客 896

「转载」vaptcha 等手势验证码图像识别与轨迹提取(思路)

作者:文安哲 从博客重开以后就说要更文章,鸽了蛮久了,赶紧补上一篇嫖嫖各位老公的流量。 最近看群里面大家讨论研究手势验证码比较多,然后我也顺带研究做了一下,给各位老公们分享一下做的过程。 首先,一起来康康手势验证码长啥样! 大概就是长这个样子,需要按照图像中的那条轨迹再图片上滑动,不得不说这类验证码确实体验感拉满,让人很想立马关掉这个网站。 那么言归正传,这类验证码该怎么做识...

AI悦创·编程私教1v1 3597

NXP S32k3 MCAL EMIOS PWM配置

NXP s32k 配置 EMIOS PWM

Leon_0125的博客 2701

毕业设计-计算机毕业设计-需求分析、概要设计、详细设计——我是这么写的(模板)

123132

wnrun的博客 7万+

【实战教程】OpenClaw接入MySQL数据库实战指南

本文介绍了在虚拟机Ubuntu中访问宿主机Win11中MySQL数据库的配置方法,重点包括创建远程用户、权限配置和安全设置。首先在MySQL中创建具有只读权限的用户并刷新权限,然后调整服务器设置允许远程连接。文章还提供了某金融机构财富管理系统的数据库设计方案,包含理财产品表、客户表和份额表的核心结构,其中金额字段使用DECIMAL类型确保精度,并设置唯一键约束。文末强调测试环境配置完成后应恢复安全更新模式以保障生产环境安全。

海兰 8700

如何写系统分析书 (转)

如何写系统分析书 (转)如何写系统分析书 作者:邓磊   想和大家一起来谈谈在软件工程中我们所做的第一步:系统分析。希望我们中国的代码人能吸取更多更好的理论和实际的经验,有符合我们实际情况的系统分析、开发方法、步骤以及文档...

cizn2013的博客 344

使用 Simulink + Simscape Electrical 实现一个变压器耦合式单相全波整流器的仿真模型

本文介绍了基于Simulink的变压器耦合式单相全波整流器建模与仿真方法。详细说明了从项目创建、模块添加、电路搭建到参数配置的完整建模过程,重点分析了整流器的效率与损耗特性,包括变压器损耗和二极管导通损耗。通过仿真展示了输入输出波形特征,并提出了选用高效元件、优化变压器设计等改进建议。该案例为电力电子系统建模提供了实用参考,有助于深入理解整流电路工作原理和性能优化方法。

amy_mhd的博客 187

新手必看!手把手教你在群晖 NAS 上玩转 Docker 容器(Container Manager)!(群晖 NAS 如何创建 Docker 容器以及 Compose 部署项目)

新手必看!手把手教你在群晖 NAS 上玩转 Docker 容器(Container Manager)!(群晖 NAS 如何创建 Docker 容器以及 Compose 部署项目)

XiaoqiangClub的博客 5162
上一篇: 需求分析的20条法则
下一篇: 软件需求说明书
pplk
博客等级 码龄21年 3粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值