画数据流图,数据字典怎么做 Ipo图?

项目编号: S×××-

项 目 承 担 部 门:

本文档 使 用部门: □主管领导 ■项目组

□客户(市场) ■维护人员 □用户

说明编写这份概要设计说明书的目的,并指出预期的读者。

列出文件中用到的专门术语的定义和外文首字母的原词组。

列出用的着的参考资料,如:

本项目的经核准的计划任务书或合同,上级机关的批文。属于本项目的其他已发表的文件本文件中各处引用的文件、资料、包括所需用到的软件开发标准。

对《需求规格说明书》进行复审,如有变更需要在本节进行说明。

以下内容描述软件概要设计的整体范围,其主要信息来自于《需求规格说明书》。

2.3 设计约束、限制

3. 软件系统结构设计

3.1 复审数据流、控制流

复审需求分析阶段对软件的功能需求的描述(如系统的DFD图和IDEF0图)是否合理和精化。否则,应在本节进行进一步分解和精化。

通过变换映射(如基于DFD或基于IDEF0 的结构设计),并采用适当的优化准则进行软件结构的优化。该过程可在本节中分段落进行描述。

已得到优化的软件体系结构用结构图(Structure Chart)进行描述。描述的内容包括:

3.2.1 软件程序结构图

画出软件体系结构的树状层次。

给出软件模块的命名规则,保证模块名称在项目内的唯一性和无二义性。

可用IPO图结合下表对每一软件模块进行描述。

本节说明《需求规格说明书》中的各项功能需求已在软件体系结构中得到分配。 可用如下的二维表说明各项功能需求与软件模块的对应关系。

此表可以采用其他适用形式,如拆分为两张表:功能需求对应模块、模块对应功能需求,

说明软件可复用的数据、接口和模块。复用既指可利用的现有构件资源,也指软件中可抽取的新建构件。

本章对软件所使用的数据进行定义和概要设计。本章内容在项目的其他文档中若有描述,请在相应小节指明。

对需求分析阶段形成的数据字典进行复审和精化。

定义软件使用的数据项,可能包括:名称、简称、类型、长度、别名等。

4.3 数据库结构设计

将需求分析阶段形成的实体模型转化为数据库系统支持的数据库模型。如根据E-R图或IDEF1x图建立数据库的物理模型。

4.4 数据结构与程序的关系

给出本系统内所使用的每个数据结构的名称、标识符,说明各个数据结构与访问这些数据结构的各个程序模块间的对应关系,可采用如下的矩阵图的形式:

说明数据存储文件的逻辑结构、文件组织方式、容量、存取权限等。

5.1 用户界面设计规则

分析《需求规格说明书》中的用户特点,设计交互、信息显示和数据输入等用户界面规则。若有的话,列出用户的强制标准和开发单位的强制标准。

说明软件内部模块间的接口安排。

说明本系统同外界的所有接口的安排,包括软件与硬件之间的接口,本系统与各支持软件之间的接口关系。

内部和外部的接口设计必须结合模块内部的数据验证和出错处理。

说明每种可能的出错或故障情况,并对他们命名和编号;给出出错时的信息显示界面;和相应的

说明为了系统维护的方便而在程序内部设计中作出的安排,指明哪些功能和数据需要维护及其实现维护功能的模块。

第二篇:软件工程模板概要设计说明书 6900字

编写:XXX 审核: 批准: 受控状态: 发布版次:1.0 编号:

XXX概要设计说明书 内部文档

中软培训实训基地 第 2 页 共 11 页

XXX概要设计说明书 内部文档

第 3 页 共 11 页 中软培训实训基地

XXX概要设计说明书 内部文档

XXX概要设计说明书 内部文档

? 本说明书目的在于明确说明系统各功能的实现方式,指导开发员进行编码。 ? 本说明书的预期读者为:XXX等。

待开发软件系统的名称:XXX

此软件系统任务提出者:XXX

此软件系统任务开发者:XXX

此软件系统任务用户:XXX

属于本项目的其他已发表的文件。

本文件中引用的其他文献、资料以及软件开发标准。

系统包括的范围:XXX。

中软培训实训基地 第 5 页 共 11 页

XXX概要设计说明书 内部文档

XXX概要设计说明书 内部文档

XXX概要设计说明书 内部文档

2.2.2 关键技术与算法

简要说明本系统中的主要技术与算法。这部分是概要设计的核心!!!

简要说明本系统中的最主要的数据结构。

说明在本系统的运行过程中不得不包含的人工处理过程(若有的话)。指出该处理过程在系统中的前后相关的功能及操作。该过程出现的原因,输入、输出、处理过程。

此部分主要对关键功能进行设计,描述其实现方式。

如果对详细设计要求不高,也可在下面的部分中包括对详细设计的功能说明,不必另建详细设计文件。此部分主要对各模块功能进行分解,尽量能细化到每一个操作。同时附以特征界面和数据表设计。

在本系统中为员工日常办公常用功能,包括个人信息维护、日程安排、名片夹、通讯录,并且能够查看个人的待办工作、已办工作、催办工作。当个人忘记密码时,由其通过电话向系统管理员询问密码。

中软培训实训基地 第 8 页 共 11 页

XXX概要设计说明书 内部文档 4 系统数据结构设计

在面向对象的设计方法中,数据也可以作为一个对象来处理,如果数据附属于某一对象,可以将其纳入该对象的属性管理之中。所以在面向对象的设计过程中,对数据的设计是在对对象的设计过程中完成的。

列出本系统使用的主要数据结构,包括它们的名称、标识符及数据项等。

4.3 数据结构与系统元素的关系

说明各个数据结构与访问这些数据结构的各个系统元素之间的对应关系。将数据和系统的程序模块有机地结合起来。可以进一步向系统最终的数学模型(程序语言)靠近。

说明将向用户提供的接口,以及系统的回答信息。即用户在系统运行过程中提供的输入操作,及系统相应的输出信息。输入操作包括是否通过界面、通过读取数据文件等方式实现。

说明本系统同外界的所有接口,包括与硬件、各支持软件之间的接口关系。指出输入、输出方,接口数据的特点等。

说明本系统的初始化过程。以流程的方式描述系统依次的动作,包括内存使用情况、数据初始化、对象的初始化等。

中软培训实训基地 第 9 页 共 11 页

XXX概要设计说明书 内部文档

a. 说明对系统施加不同的外界运行控制时所引起的各种不同的运行模块组合,说明每种运行所历经的内部模块和支持软件。

b. 说明每一种外界运行控制的方式方法和操作步骤。

c. 说明每种运行模块组合将占用各种资源的情况。

d. 说明系统运行时的安全控制。

说明本系统的结束过程。以流程的方式描述系统退出时依次的动作,包括内存释放情况、对象的释放等。

一般情况下系统出错设计和系统维护设计不应简化,但对特定情况下(如用户需求中未明确规定或项目周期较短、经费较少、项目复杂程度较少等)这两部分的设计可以简化。

包括出错信息表、故障处理技术等。

说明故障出现后可能采取的变通措施,包括:

a. 后备技术 当原始系统数据万一丢失时启用的副本的建立和启动的技术。

b. 降效技术 使用另一个效率稍低的方法来求得所需结果的某些部分,如手工操作和数据的人工记录。

c. 恢复和再启动技术 使系统从故障点恢复执行或使系统从头开始重新运行的方法。 8 系统维护设计

说明为了系统维护的方便,在程序内部设计中作出的安排。

说明在程序中专门安排用于系统检查与维护的检测点。

中软培训实训基地 第 10 页 共 11 页

XXX概要设计说明书 内部文档

8.2 检测专用模块的设计

说明在程序中专门安排用于系统检查与维护的专用模块。

说明在本设计中没有解决而系统完成之前应该解决的问题。

中软培训实训基地 第 11 页 共 11 页

这次历时两周的课程设计,对于我们来说确实收获了不少。

第一天我们查找资料、了解有关的知识,相互探讨,了解图书管理系统的需求,做好需求分析后,开始系统的设计,画出E-R图,写出各个实体的属性。

对于数据库的创建,虽然出现很多的问题,但经过探讨之后我们都能够很好的解决,这便让我们体会到上课专心听讲的重要性。

对于所需表的创建是一个比较简单的内容,问题主要是存储过程和触发器的创建,在请教老师后,最后还是解决了各种难题。

接下来就是用delphi设计界面阶段了,由于对delphi知识掌握的不全面,很多问题也是不得其解,比如一开始时对数据的链接上。

通过自己的复习和巩固,还有相互讨论,出现的一些问题也迎刃而解了。

这次的图书管理系统设计不仅使我们学会了把数据库的各个模块联系起来,并与Delphi相连接,更让我懂得了如何设计一个系统,了解了系统设计的过程,通过这次实习,我也了解到要设计一个好的系统并不是一件容易的事,听了老师的建议我们才知道,自己设计的系统存在很多的缺陷,还需要从各方面得以改善。

我们相信,只要自己肯努力、肯奋斗,总是会有收获的。

9、设有关系模式R(E,F,G,H),函数依赖F={ E→G,G→E,F→(E,G),H→(E,G),

(1)求出R的所有候选关键字;(2)根据函数依赖关系,确定关系模式R属于第几范式;(3)将R分解为3NF,并保持无损连接性和函数依赖保持性;(4)求出F的最小函数依赖集。

(1)R的候选关键字为:(F,H)

(4)最小函数依赖集为:{ E→G,G→E,F→G,H→G }

按定理),我接触到Microsoft 公司的.NET产品。

那个时候我已经学过vc和asp,因为windows程序设计实验的课的关系,接触过vb,但是没有专门去学他,因为习惯了c++里面的class,int,觉得vb的sub,var 看着就不是很顺心。

我是一个好奇心很强的人,突然看到了一个号称“.net是用于创建下一代应用程序的理想而又现实的开发工具”,而且主推c#语言,由于对c语言的一贯好感,我几乎是立刻对他产生了兴趣。

我就开始了对c#的学习,任何语言都不是孤立存在的,所以数据交互是很重要的,暑假的时候我把我们这学期的课本数据库系统概论看了一遍。

我记得以前用c语言编程的时候,数据是在内存中申请空间,譬如使用数组等等。

这个时候就是数据库站出来的时候啦,于是我又装上了sql server2000,以前学asp的时候用的是access,那个时候只是照着人家做,理论是什么也不是很清楚。

来到学校后,随着这学期的数据库课程大赛开始了,我有一个看法就是我自己应该具备的能力不是我会多少,而是我应该具备快速学会东西的能力。

我们有时候很容易被一些专业名词说吓着,包括什么建模,软件工程,数据分析,数据挖掘等等。

我身边就有很多同学被这些纸老虎所唬住,而没有勇气去接触他们,总是说这个太难了之类的退堂鼓的话,他们低估了自己的潜力同时也压抑住了他们自己的好奇心。

其实都是纸老虎,又不是什么国家科研难题,只是去用一些工具,发明工具是很难,但是用一个工具就容易多了,just do it

我记得我做这个数据库之前,我们老师说要做好前期分析,我就在网上搜索用什么分析工具好。

最后我选择了roseUML建模工具。

在此之前,我脑袋里面没有软件建模的思想,什么UML建模对我而言就是一张空白的纸。

但是真正接触后并没有想象的那么难,有什么不懂的上网去搜索,这是一个信息横流的世界,有google,baidu就没有不能解决的知识难题。

以及后来的数据库分析的时候用到的powerdesigner也是一样。

开发的时候我想过用什么架构,c\/s模式

我就上网搜索现在最流行的架构是什么。

结果搜到了MVC架构,就是你啦。

我决定用这个架构,不会,没关系,咱学。

前期工作准备好后,那么我就得把我暑假学的.net加以实践。

这个时候我更加深入的了解了利用数据集的图书馆管理系统。

并最后非常荣幸的获得了大赛的一等奖以及以及新技术应用奖。

与其临渊羡鱼,不如退而结网。

这次数据库课程设计给我的最大的印象就是如果自己有了兴趣,就动手去做,困难在你的勇气和毅力下是抬不了头的。

从做这个数据库开始无论遇到什么困难,我都没有一丝的放弃的念头。

出于对知识的渴望,出于对新技术的好奇,出于对一切未知的求知。

我完成了这次数据库课程设计,不过这只是我学习路上的驿站,未来十年.NET的核心技术就是XML[至少微软是这么宣传的],我会继续学习它,包括jave公司的j2ee我也很想试试,语言本来就是相通的,just do it

语言并不重要毕竟它仅仅是工具,用好一个工具并不是一件值得为外人道的事情,主要是了解学习思想。

古语说的好:学无止境啊

我很庆幸我参加了这次数据库大赛,让我确实打开了眼界。

机械设计心得体会1000个字左右

这次的课程设计对于我来说有着深刻的意义。

这种意义不光是自己能够独立完成了设计任务,更重要的是在这段时间内使自己深刻感受到设计工作的那份艰难。

而这份艰难不仅仅体现在设计内容与过程中为了精益求精所付出的艰辛,更重要的是背负恶劣的天气所付出的决心与毅力!也许自己太过于执着,从设计开始就落在大家的后面。

不过还好,很快就将基本的数据设计与整理出来,不至于远离大家的进度。

有些结构设计上还是不太明白为什么要那样设计。

看来自己学的东西太少了

感觉设计对我们这些刚刚入门(或者在某种意义上来说还是门外汉)就是按照条条款款依葫芦画瓢的过程,有的时候感觉挺没有劲的。

反正按照步骤一定可以完成设计任务,其实不然。

设计过程中有许多内容必须靠我们自己去理解,去分析,去取舍。

就拿电动机型号选择来说,可以分别比较几种型号电动机总传动比,以结构紧凑为依据来选择;也可以考虑性价比来选择。

前者是结构选择,后者确实经济价格选择。

而摆在我们面前的却是两条路,如何将两者最优化选择才是值得我们好好深思的。

通过这次的设计,感慨颇多,收获颇多。

更多的是从中学到很多东西,包括书本知识以及个人素质与品格方面。

感谢老师的辛勤指导,也希望老师对于我的设计提出意见。

2.课程设计是机械设计当中的非常重要的一环,本次课程设计时间不到两周略显得仓促一些。

但是通过本次每天都过得很充实的课程设计,从中得到的收获还是非常多的。

这次课程设计我得到的题目是设计一个单级锥齿轮减速器,由于理论知识的不足,再加上平时没有什么设计经验,一开始的时候有些手忙脚乱,不知从何入手。

在老师的谆谆教导,和同学们的热情帮助下,使我找到了信心。

现在想想其实课程设计当中的每一天都是很累的,临答辩那两天更是一直画图到深夜两点才爬到床上去。

有的同学更是选择了一整夜的学习画图找资料。

其实正向老师说得一样,设计所需要的东西都在书上了,当时自己老是想找到什么捷径来完成这次任务。

但是机械设计的课程设计没有那么简单,你想copy或者你想自己胡乱蒙两个数据上去来骗骗老师都不行,因为你的每一个数据都要从机械设计书上或者机械设计手册上找到出处,不让的话就麻烦了。

我因为这个就吃了不少的亏,比如在我设计减速器的装配草图时我没有太注意相关尺寸,致使我设计的箱体出现了较大的结构错误,间接导致了我以后的装配图的步履维艰。

虽然种种困难我都已经克服,但是还是难免我有些疏忽和遗漏的地方。

完美总是可望而不可求的,不在同一个地方跌倒两次才是最重要的。

抱着这个心理我一步步走了过来,最终完成了我的任务。

再设计过程中培养了我的综合运用机械设计课程及其他课程理论知识和利用生产时间知识来解决实际问题的能力,真正做到了学以致用。

在此期间我我们同学之间互相帮助,共同面对机械设计课程设计当中遇到的困难,培养了我们的团队精神。

在这些过程当中我充分的认识到自己在知识理解和接受应用方面的不足,特别是自己的系统的自我学习能力的欠缺,将来要进一步加强,今后的学习还要更加的努力。

本次课程设计不仅仅是对自己所学的知识的一次系统总结与应用,还是对自己体质的一次检验,检验结果是不合格。

在本次课程设计当中,由于天冷,也由于课程设计的环境艰苦,许多的同学都感冒了,更有几个同学是刚打完点滴,就开始设计,精神可嘉。

我在这次课程设计当中,也不幸得感了冒,现在设计完了就可以好好地睡上一觉了。

本次课程设计由于时间的仓促,还有许多地方有不足之处。

再加上课程设计选在临近期末考试期间进行,就更显得不是很人性话了。

但是艰难困苦玉汝于成,机械设计课程设计看来我是无法忘记的了

学习数据结构的心得体会

请简要的叙述一下数据库的主要设计过程

数据库技术是信息资源管理最有效的手段。

数据库设计是指:对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,有效存储数据,满足用户信息要求和处理要求。

A、需求分析阶段:综合各个用户的应用需求(现实世界的需求)。

B、在概念设计阶段:形成独立于机器和各DBMS产品的概念模式(信息世界模型),用E-R图来描述。

C、在逻辑设计阶段:将E-R图转换成具体的数据库产品支持的数据模型,如关系模型,形成数据库逻辑模式。

然后根据用户处理的要求,安全性的考虑,在基本表的基础上再建立必要的视图(VIEW)形成数据的外模式。

D、在物理设计阶段:根据DBMS特点和处理的需要,进行物理存储安排,设计索引,形成数据库内模式。

开发的,主要任务就是从工具中选出你想要的控件,然后在控件响应函数中填充代码,完成相应的事件响应。

这里遇到的最大问题是页面的排版问题,因为自己是第一次开发网站,造成了自己设计的界面风格单调,不太美观,现在就尽量做到页面的整齐。

这个阶段主要做的就是:写代码→编译→调试→写代码。

这一个月中我学到了很多东西,技术方面就是学会了用ASP.Net编写网站,最重要的是让我经历了软件工程化的所有阶段,让我对整个软件工程有了感性的认识,而且将大学三年所学到的知识进行了一次系统的串联,更重要的是学会了如何跟项目团队中的成员沟通问题,这是一个宝贵的实践经验。

经验,知识,百科,个人图书馆,在线图书馆

关于《经验,知识,百科,个人图书馆,在线图书馆》用户点评二、

在软件开发中,需求分析阶段主要文档是?

一、需求获取阶段 在需求获取阶段,需要做好收集和管理两件事。 这些需求既有产品经理主动挖掘的,也有从用户、运营、业务方、领导等渠道被动获取的,无论哪个渠道来的需求,都需要有一个正式的地方进行管理,也就是我们通常所说的需求池。 不过,对于多方关注的重点需求,通过需求池来向各方同步就不太合适了: 一是因为需求池内容太多、太杂,向业务方、领导汇报的时候会有很多干扰信息,难以快速抓住重点; 二是因为需求池里面可能有些需求不适合完全公开。 这时我们就需要使用《事项跟踪表》来单独跟进,形式上用Excel、PPT都可以。 而放在《事项跟踪表》里的需求,也要在需求池里记录下来,即需求池是做全量需求管理的,《事项跟踪表》是做重点需求跟进、汇报的。 二、需求分析阶段

关于《经验,知识,百科,个人图书馆,在线图书馆》用户点评九、

UI界面设计的需求分析方法

UI界面设计的需求分析方法
软件界面是人与计算机之间的媒介。用户通过软件界面来与计算机进行信息交换。因此,软件界面的质量,直接关系到应用系统的性能能否充分发挥,能否使用户准确、高效、轻松、愉快地工作,所以软件的友好性、易用性对于软件系统至关重要。目前国内软件开发者在设计过程中很注重软件的开发技术及其具有的业务功能,而忽略了用户对软件界面的需求,影响软件的易用性、友好性;对界面设计的研究也集中在界面设计技术、设计手段上面。软件开发人员在设计时以经验为参考依据,缺乏对实际用户需求的了解。而软件的友好性、易用性同用户特征紧密相联,同样的软件界面,不同用户可能有绝然相反的评价。因此分析用户特征、了解用户需求和操作习惯,是开发软件界面的必有步骤,必须引起足够重视。
本文讨论了一种界面需求分析的方法,意在探讨研究如何完成针对系统所有用户的界面需求定义,从而开发为用户所接受的界面。讨论该方法的目的在于帮助设计人员快速明确用户的界面需求,让用户充分参与到界面需求分析中,从而在最终界面需求说明中体现用户的思想,满足用户要求。
通常一个软件界面的元素包括界面主颜色、字体颜色、字体大小、界面布局、界面交互方式、界面功能分布、界面输入输出模式。其中,对用户工作效率有显著影响的元素包括:输入输出方式、交互方式、功能分布,在使用命令式交互方式的系统中,命令

软件设计时什么是需求分析?

需求分析和概要设计有什么区别


一、过程不同 1、需求分析:是开发人员经过深入细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而确定系统必须做什么的过程。 2、概要设计:是一个设计师根据用户交互过程和用户需求来形成交互框架和视觉框架的过程。 二、任务不同 1、需求分析:是软件计划阶段的重要活动,也是软件生存周期中的一个重要环节,该阶段是分析系统在功能上需要“实现什么”,而不是考虑如何去“实现”。 2、概要设计:是一个在用户研究和设计之间架起桥梁,使用户研究和设计无缝结合,将对用户目标与需求转换成具体界面设计解决方案的重要阶段。 三、规则不同 1、需求分析:侧重表达理解问题的数据域和功能域。对新系统程序处理的数据,其数据域包括数据流、数据内容和数据结构。而功能域则反映它们关系的控制处理信息。 2、概要设计:是把需求分析得到的系统扩展用例图转换为软件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划分、建立模块的层次结构及调用关系、确定模块间的接口及人机界面等。 参考资料来源:百度百科-需求分析 参考资料来源:百度百科-概要设计

需求的定义包括从用户角度(系统的外部行为),以及从开发者角度(一些内部特性)来阐述需求.
关键的问题是一定要编写需求文档.我曾经目睹过一个项目中途更换了所有的开发者,客户被迫与新的需求分析者坐到一起.系统的分析人员说:"我们想与你谈谈你的需求."客户的第一反应便是:"我已经将我的要求都告诉你们前任了,现在我要的就是给我编一个系统".
而实际上,UGGs,需求并未编写成文档,因此新的分析人员不得不从头做起.所以如果只有一堆邮件、会谈记录或一些零碎的未整理的对话,你就确信你已明白用户的需求,那完全是自欺欺人.
需求的另外一种定义认为需求是"用户所需要的并能触发一个程序或系统开发工作的说明".有些需求分析专家拓展了这个概念:"从系统外部能发现系统所具有的满足于用户的特点、功能及属性等".这些定义强调的是产品是什么样的,而并非产品是怎样设计、构造的.而下面的定义则从用户需要进一步转移到了系统特性:
需求是指明必须实现什么的规格说明.它描述了系统的行为、特性或属性,是在开发过程中对系统的约束.
从上面这些不同形式的定义不难发现:并没有一个清晰、毫无二义性的"需求"术语存在,真正的"需求"实际上在人们的脑海中,这个人们主要是指客户,但一般情况下,用户并不能描述自己的需要,只就需要系统分析人员根据用户的自己语言的描述整理出相关的需要再进一步和客户核对.系统分析员和客户需要确保所有项目风险承担者在描述需求的那些名词的理解上务必达成共识.
任何文档形式的需求(例如如下将要描述的需求规格说明书)仅是一个模型,一种描述.
开发软件系统最为困难的部分就是准确说明开发什么.最为困难的概念性工作便是编写出详细技术需求,这包括所有面向用户、面向机器和其它软件系统的接口.同时这也是一旦做错,将最终会给系统带来极大损害的部分,并且以后再对它进行修改也极为困难.
目前,国内产品的庞杂,一家企业可能有几个系统并立运行,它们之间接口是系统开发人员最头痛的问题.
对于商业最终用户应用程序,企业信息系统和软件作为一个大系统的一部分的产品是显而易见的.但是对于我们开发人员来说,并没有编写出客户认可的需求文档,我们如何知道项目于何时结束?而如果我们不知道什么对客户来说是重要的,那我们又如何能使客户感到满意呢?
然而,即便并非出于商业目的的软件需求也是必须的.例如库、组件和工具这些供开发小组内部使用的软件.当然你可能偶尔勿需文档说明就能与其他人意见较为一致,但更常见的是出现重复返工这种不可避免的后果,而重新编制代码的代价远远超过重写一份需求文档的代价,这些血的教训正在国内的软件开发者身上发生.
近来,我遇到一个开发小组开发包括代码编辑器在内的一套内部使用的计算机辅助软件.不幸的是,当他们开发完这个工具后,发现这个工具不能打印出源代码文件,使用者当然希望有这个功能.结果这个小组只好手工抄写源代码文档以供代码检查.这说明那怕需求明确无误并构思准确,如果我们没有编写文档,软件达不到期望目标也只能是咎由自取了.
相反的情况,我曾见一个要集成到"错误跟踪系统"中的简单界面写了一页需求说明.而操作系统系统管理员在为处理脚本时发现简单的一张需求清单竟是如此有用.他们依据需求对系统进行测试时,此系统不仅非常清晰地实现了所有必需功能,而且未发现任何错误.
事实上,需求文档在开发过程中一直起指导作用.
可把整个软件需求工程研究领域划分为需求开发和需求管理两部分更合适,如图4-1所示:
图4-1 需求工程域的层次分解示意图
需求开发可进一步分为:问题获取、分析、编写规格说明和验证四个阶段.这些子项包括软件类产品中需求收集、评价、编写文档等所有活动.需求开发活动包括以下几个方面:
确定产品所期望的用户类别.
获取每个用户类的需求.
了解实际用户任务和目标以及这些任务所支持的业务需求.
分析源于用户的信息以区别用户任务需求、功能需求、业务规则、质量属性、建议解决方法和附加信息.
将系统级的需求分为几个子系统,并将需求中的一部份分配给软件组件.
了解相关质量属性的重要性.
商讨实施优先级的划分.
将所收集的用户需求编写成文档和模型.
评审需求规格说明,确保对用户需求达到共同的理解与认识,并在整个开发小组接受说明之前将问题都弄清楚.
需求管理需要"建立并维护在软件工程中同客户达成的合同" .这种合同都包含在编写的需求文档与模型中.客户的接受仅是需求成功的一半,开发人员也必须能够接受他们,并真正把需求应用到产品中.通常的需求管理活动包括:
定义需求基线(迅速制定需求文档的主体).
评审提出的需求变更、评估每项变更的可能影响从而决定是否实施它.
以一种可控制的方式将需求变更融入到项目中.
使当前的项目计划与需求一致.
估计变更需求所产生影响并在此基础上协商新的承诺,这种承诺具体体现在项目解决方案上.
让每项需求都能与其对应的设计、源代码和测试用例联系起来以实现跟踪.
在整个项目过程中跟踪需求状态及其变更情况.
以上几点说明是我总结了成功实施项目后系统分析人员的经验,同时也根据国内外的其他系统实施的相关成功经验,进行了总结.
下面这些定义是需求工程领域中常见术语的定义.
软件需求包括三个不同的层次:业务需求、用户需求和功能需求(也包括非功能需求).
1.业务需求(business requirement)反映了组织机构或客户对系统、产品高层次的目标要求,它们在项目视图与范围文档中予以说明.
2.用户需求(user requirement) 文档描述了用户使用产品必须要完成的任务,这在使用实例(use case)文档或方案脚本说明中予以说明.
3.功能需求(functional requirement)定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求.
在软件需求规格说明书 (SRS)中说明的功能需求充分描述了软件系统所应具有的外部行为.软件需求规格说明在开发、测试、质量保证、项目管理以及相关项目功能中都起了重要的作用.对一个大型系统来说,软件功能需求也许只是系统需求的一个子集,因为另外一些可能属于子系统(或软件部件).
作为功能需求的补充,软件需求规格说明还应包括非功能需求,它描述了系统展现给用户的行为和执行的操作等.它包括产品必须遵从的标准、规范和合约;外部界面的具体细节;性能要求;设计或实现的约束条件及质量属性.所谓约束是指对开发人员在软件产品设计和构造上的限制.质量属性是通过多种角度对产品的特点进行描述,从而反映产品功能.多角度描述产品对用户和开发人员都极为重要.
下面以一个字处理程序为例来说明需求的不同种类.业务需求可能是:"用户能有效地纠正文档中的拼写错误",该产品的包装盒封面上可能会标明这是个满足业务需求的拼写检查器.而对应的用户需求可能是"找出文档中的拼写错误并通过一个提供的替换项列表来供选择替换拼错的词".同时,该拼写检查器还有许多功能需求,如找到并高亮度提示错词的操作;显示提供替换词的对话框以及实现整个文档范围的替换.
从以上定义可以发现,需求并未包括设计细节、实现细节、项目计划信息或测试信息.需求与这些没有关系,它关注的是充分说明你究竟想开发什么.项目也有其它方面的需求,如开发环境需求或发布产品及移植到支撑环境的需求.尽管这些需求对项目成功也至关重要,但它们并非本书所要讨论的.
不重视需求过程的项目队伍将自食其果.需求工程中的缺陷将给项目成功带来极大风险,这里的"成功"是指推出的产品能以合理的价格、及时地在功能、质量上完全满足用户的期望.下面将讨论一些需求风险.
不适当的需求过程所引起的一些风险:
客户经常不明白为什么收集需求和确保需求质量需花费那么多功夫,开发人员可能也不重视用户的参与.究其原因:一是因为开发人员感觉与用户合作不如编写代码有意思;二是因为开发人员觉得已经明白用户的需求了.在某些情况下,与实际使用产品的用户直接接触很困难,而客户也不太明白自己的真正需求.但还是应让具有代表性的用户在项目早期直接参与到开发队伍中,并一同经历整个开发过程.
系统人员在实践过程中,也有些感觉,在实施一家公司的项目时,若无足够的用户参与,系统人员获得的需求是片面的,不完整的,这样系统在需求之初就埋下风险.
2. 用户需求的不断增加
在开发中若不断地补充需求,项目就越变越庞大以致超过其计划及预算范围.计划并不总是与项目需求规模与复杂性、风险、开发生产率及需求变更实际情况相一致,这使得问题更难解决.实际上,问题根源在于用户需求的改变和开发者对新需求所作的修改.
要想把需求变更范围控制到最小,必须一开始就对项目视图、范围、目标、约束限制和成功标准给予明确说明,并将此说明作为评价需求变更和新特性的参照框架.说明中包括了对每种变更进行变更影响因素分析的变更控制过程,有助于所有风险承担者明白业务决策的合理性,即为何进行某些变更,相应消耗的时间、资源或特性上的折中.
产品开发中不断延续的变更会使其整体结构日渐紊乱,补丁代码也使得整个程序难以理解和维护.插入补丁代码使模块违背强内聚、松耦合的设计原则,特别是如果项目配置管理工作不完善的话,收回变更和删除特性会带来问题.如果你尽早地区别这些可能带来变更的特性,你就能开发一个更为健壮的结构,并能更好地适应它.这样设计阶段需求变更不会直接导致补丁代码,同时也有利于减少因变更导致质量的下降.
模棱两可是需求规格说明中最为可怕的问题.它的一层含义是指诸多读者对需求说明产生了不同的理解;另一层含义是指单个读者能用不止一个方式来解释某个需求说明.
模棱两可的需求会使不同的风险承担者产生不同的期望,它会使开发人员为错误问题而浪费时间,并且使测试者与开发者所期望的不一致.一位系统测试人员曾告诉我,她所在的测试组经常对需求理解有误,以致不得不重写许多测试用例并重做许多测试.
处理模棱两可需求的一种方法是组织好负责从不同角度审查需求的队伍.仅仅简单浏览一下需求文档是不能解决模棱两可问题的.如果不同的评审者从不同的角度对需求说明给予解释,但每个评审人员都真正了解需求文档,这样二义性就不会直到项目后期才被发现,那时再发现的话会使得更正代价很大.
"画蛇添足"是指开发人员力图增加一些"用户欣赏"但需求规格说明中并未涉及的新功能.经常发生的情况是用户并不认为这些功能性很有用,以致在其上耗费的努力"白搭"了.开发人员应当为客户构思方案并为他们提供一些具有创新意识的思路,具体提供哪些功能要在客户所需与开发人员在允许时限内的技术可行性之间求得平衡,开发人员应努力使功能简单易用,而不要未经客户同意,擅自脱离客户要求,自作主张.
同样,客户有时也可能要求一些看上去很"酷",但缺乏实用价值的功能,而实现这些功能只能徒耗时间和成本.为了将"画蛇添足"的危害尽量减小,应确信:你明白为什么要包括这些功能,以及这些功能的"来龙去脉",这样使得需求分析过程始终是注重那些能使用户完成他们业务任务的核心功能.
5. 过于精简的规格说明
有时,客户并不明白需求分析有如此重要,于是只作一份简略之至的规格说明,仅涉及了产品概念上的内容,然后让开发人员在项目进展中去完善,结果很可能出现的是开发人员先建立产品的结构之后再完成需求说明.这种方法可能适合于尖端研究性的产品或需求本身就十分灵活的情况.但在大多数情况下,这会给开发人员带来挫折(使他们在不正确的假设前提和极其有限的指导下工作),也会给客户带来烦恼(他们无法得到他们所设想的产品).
大多数产品是由不同的人使用其不同的特性,使用频繁程度也有所差异,使用者受教育程度和经验水平也不尽相同.如果你不能在项目早期就针对所有这些主要用户进行分类的话,必然导致有的用户对产品感到失望.例如,菜单驱动操作对高级用户太低效了,但含义不清的命令和快捷键又会使不熟练的用户感到困难.
据统计,导致需求过程中软件成本估计极不准确的原因主要有以下五点:频繁的需求变更、遗漏的需求、与用户交流不够、质量低下的需求规格说明和不完善的需求分析.
对不准确的要求所提问题的正确响应是"等我真正明白你的需求时,我就会来告诉你".基于不充分信息和未经深思的对需求不成熟的估计很容易为一些因素左右.要作出估计时,最好还是给出一个范围.未经准备的估计通常是作为一种猜测给出的,听者却认为是一种承诺.因此我们要尽力给出可达到的目标并坚持完成它.
6.需求分析人员和用户的合作关系
优秀的软件产品是建立在优秀的需求基础之上的.而高质量的需求来源于客户与开发人员之间有效的交流与合作.通常,开发人员与客户或客户代理人,如市场人员间的关系反而会成为一种对立关系.双方的管理者都只想自己的利益而搁置用户提供的需求从而产生摩擦,在这种情况下,不会给双方带来一点益处.
只有当双方参与者都明白要成功自己需要什么,同时也应知道要成功合作方需要什么时,才能建立起一种合作关系.由于项目压力与日渐增,所有风险承担者有着一个共同的目标这一点容易被遗忘.其实大家都想开发出一个既能实现商业价值,又能满足用户需要,还能使开发者感到满足的优秀软件产品.
软件客户需求权利书列出了十条关于客户在项目需求工程实施中与分析人员、开发人员交流时的合法要求.每一项权利都对应着软件开发人员、分析人员的义务.而软件客户需求义务书也列出了十条关于客户在需求过程中应承担的义务.如果愿意,可以将其作为开发人员的权利书.
1:要求分析人员使用符合客户语言习惯的表达
需求讨论应集中于业务需要和任务,故要使用业务术语,你应将其教给分析人员,而你 不一定要懂得计算机的行业术语.
2:要求分析人员了解客户的业务及目标
通过与用户交流来获取用户需求、分析人员才能更好地了解你的业务任务和怎样才能使产品更好地满足你的需要.这将有助于开发人员设计出真正满足你的需要并达到你期望的优秀软件.为帮助开发人员和分析人员,可以考虑邀请他们观察你或你的同事是怎样工作的.如果新开发系统是用来替代已有的系统,那么开发人员应使用一下目前的系统,这将有利于他们明白目前系统是怎样工作的,其工作流程的情况,以及可供改进之处.
3:要求分析人员编写软件需求规格说明
分析人员要把从你和其他客户那里获得的所有信息进行整理,以区分开业务需求及规范、功能需求、质量目标、解决方法和其它信息.通过这些分析就能得到一份软件需求规格说明.而这份软件需求规格说明便在开发人员和客户之间针对要开发的产品内容达成了协议.软件需求规格说明书可以用一种你认为易于翻阅和理解的方式组织编写.要评审编写出的规格说明以确保它们准确而完整地表达了你的需求.一份高质量的软件需求规格说明能有助于开发人员开发出真正需要的产品.
4:要求得到需求工作结果的解释说明
分析人员可能采用了多种图表作为文字性软件需求规格说明的补充.因为如工作流程图那样的图表能很清楚地描述出系统行为的某些方面.所以需求说明中的各种图表有着极高的价值.虽然它们不太难于理解,但是你很可能对此并不熟悉.因此可以要求分析人员解释说明每张图表的作用或其它的需求开发工作结果和符号的意义,及怎样检查图表有无错误及不一致等.
5:要求开发人员尊重你的意见
如果用户与开发人员之间不能相互理解,那关于需求的讨论将会有障碍,共同合作能使大家"兼听则明".参与需求开发过程的客户有权要求开发人员尊重他们并珍惜他们为项目成功所付出的时间.同样,客户也应对开发人员为项目成功这一共同目标所作出的努力表示尊重与感激.
6:要求开发人员对需求及产品实施提供建议,拿出主意
通常,客户所说的"需求"已是一种实际可能的实施解决方案,分析人员将尽力从这些解决方法中了解真正的业务及其需求,同时还应找出已有系统不适合当前业务之处,以确保产品不会无效或低效.在彻底弄清业务领域内的事情后,分析人员有时就能提出相当好的改进方法.有经验且富有创造力的分析人员还能提出增加一些用户并未发现的很有价值的系统特性.
7:描述产品易使用的特性
你可以要求分析人员在实现功能需求的同时还要注重软件的易用性.因为这些易用特性或质量属性能使你更准确、高效地完成任务.例如,客户有时要求产品要"用户友好"或"健壮"或"高效率",但这对于开发人员来说,太主观了并无实用价值.正确的应是:分析人员通过询问和调查了解客户所要的友好、健壮、高效所包含的具体特性.
8:调整需求,允许重用已有的软件组件
需求通常要有一定的灵活性.分析人员可能发现已有的某个软件组件与你描述的需求很相符.在这种情况下,分析人员应提供一些修改需求的选择以便开发人员能够在新系统开发中重用一些已有的软件.如果有可重用的机会出现,同时你又能调整你的需求说明,那就能降低成本和节省时间,而不必严格按原有的需求说明开发.所以说,如果想在产品中使用一些已有的商业常用组件,而它们并不完全适合你所需的特性,这时一定程度上的需求灵活性就显得极为重要了.
9:获得满足客户功能和质量要求的系统
每个人都希望项目获得成功.但这不仅要求你要清晰地告知开发人员关于系统"做什么"所需的所有信息,而且还要求开发人员能通过交流了解清楚取舍与限制.一定要明确说明你的假设和潜在的期望.否则,开发人员开发出的产品很可能无法让你满意.
1:给分析人员讲解你的业务
分析人员要依靠你给他们讲解的业务概念及术语.但你不能指望分析人员会成为该领域的专家,而只能让他们真正明白你的问题和目标.不要期望分析人员能把握你们业务的细微与潜在之处,他们很可能并不知道那些对于你和你的同事来说理所当然的"常识".
2:抽出时间清楚地说明并完善需求
客户很忙,经常在最忙的时候还得参与需求开发.但无论如何,你有义务抽出时间参与"头脑风暴"会议的讨论,接受采访或其它获取需求的活动.有时分析人员可能先以为明白了你的观点,而过后发现还需要你的讲解.这时,请耐心一些对待需求和需求的精化工作过程中的反复,因为它是人们交流中的很自然的现象,何况这对软件产品的成功极为重要.
3:准确而详细地说明需求
编写一份清晰、准确的需求文档是很困难的.由于处理细节问题不但烦人而且又耗时,故很容易留下模糊不清的需求.但是,在开发过程中,必须得解决这种模糊性和不准确性.而你恰是为解决这些问题作出决定的最佳人选.不然的话,你就只好靠开发人员去正确猜测了.在需求规格说明中暂时加上待定(to be determined, TBD也可采用汉语拼音略写"DQD:待确定")的标志是个不错的办法.用该标志可指明了哪些需要进一步探讨、分析或增加信息的地方.不过,有时也可能因为某个特殊需求难以解决或没有人愿意处理它而注上TBD标志.尽量将每项需求的内容都阐述清楚,以便分析人员能准确的将其写进软件需求规格说明中.如果你一时不能准确表述,那就得允许获取必要的准确信息这样一个过程.通常使用所谓的原型技术.通过开发的原型,你可以同开发人员一起反复修改,不断完善需求定义.
正如一位建筑师为你修建房屋,分析人员将要求你做出一些选择和决定.这些决定包括来自多个用户提出的处理方法或在质量特性冲突和信息准确度中选择折衷方案等.有权做出决定的客户必须积极地对待这一切,尽快做处理、做决定.因为开发人员通常只有等你做出了决定才能行动,而这种等待会延误项目的进展.
5:尊重开发人员的需求可行性及成本评估
所有的软件功能都有其成本价格,开发人员最适合预算这些成本(尽管许多开发人员并不擅长评估预测).你所希望的某些产品特性可能在技术上行不通,或者实现它要付出极为高昂的代价.而某些需求试图在操作环境中要求不可能达到的性能或试图得到一些根本得不到的数据,开发人员会对此作出负面的评价意见,你应该尊重他们的意见.有时,你可以重新给出一个在技术上可行、实现上便宜的需求,例如,要求某个行为在"瞬间"发生是不可行的,但换种更具体的时间需求说法("在50ms以内",但若没有准确的技术分析不能轻易下结论),这就可以实现了.
6: 划分需求优先级别
大多数项目没有足够的时间或资源来实现功能性的每个细节.决定哪些特性是必要的,哪些是重要的,哪些是好的,是需求开发的主要部分.只能由你来负责设定需求优先级,因为开发者并不可能按你的观点决定需求优先级.开发者将为你确定优先级提供有关每个需求的花费和风险的信息.当你设定优先级时,你帮助开发者确保在适当的时间内用最小的开支取得最好的效果.在时间和资源限制下,关于所需特性能否完成或完成多少应该尊重开发人员的意见.尽管没有人愿意看到自己所希望的需求在项目中未被实现,但毕竟是要面对这种现实的.业务决策有时不得不依据优先级来缩小项目范围或延长工期,或增加资源,或在质量上寻找折衷.
7:评审需求文档和原型
4章讨论的,无论是正式的还是非正式的方式,对需求文档进行评审都会对软件质量提高有所帮助.让客户参与评审才能真正鉴别需求文档是否的确完整、正确说明了期望的必要特性.评审也给客户代表提供一个机会,给需求分析人员带来反馈信息以改进他们的工作.如果你认为编写的需求文档不够准确,就有义务尽早告诉分析人员并为改进提供建议.通过阅读需求规格说明,很难想象实际的软件是什么样子的.更好的方法是先为产品开发一个原型.这样你就能提供更有价值的反馈信息给开发人员,帮助他们更好地理解你的需求.必须认识到:原型并非是一个实际产品,但开发人员能将其转变、扩充成功能齐全的系统.
8:需求出现变更要马上联系
不断的需求变更会给在预定计划内完成高质量产品带来严重的负面影响.变更是不可避免的,但在开发周期中变更越在晚期出现,其影响越大.变更不仅会导致代价极高的返工,而且工期也会被迫延误,特别是在大体结构已完成后又需要增加新特性时.所以一旦你发现需要变更需求时,请一定立即通知分析人员.
9:应遵照开发组织处理需求变更的过程
为了将变更带来的负面影响减少到最低限度,所有的参与者必须遵照项目的变更控制过程.这要求不放弃所有提出的变更,对每项要求的变更进行分析、综合考虑,最后作出合适的决策以确定将某些变更引入项目中.
10:尊重开发人员采用的需求工程过程
软件开发中最具挑战性的莫过于收集需求并确定其正确性.分析人员采用的方法有其合理性.也许你认为需求过程不太划算,但请相信花在需求开发上的时间是"很有价值"的.如果你理解并支持分析人员为收集、编写需求文档和确保其质量所采用的技术,那么整个过程将会更为顺利.尽管去询问分析人员为什么他们要收集某些信息,或参与与需求有关的活动.
系统分析人员在开发过程中可能会遇到以下问题,一些很忙的客户可能不愿意积极参与需求过程,而缺少客户参与将很可能导致不理想的产品.故一定要确保需求开发中的主要参与者都了解并接受他们的义务.如果遇到分歧,通过协商以达成对各自义务的相互理解,这样能减少今后的摩擦.
需求开发的最终成果是:客户和开发小组对将要开发的产品达成一致协议.协议综合了业务需求、用户需求和软件功能需求.就像我们早先所看到的,项目视图和范围文档包含了业务需求,而使用实例文档则包含了用户需求.你必须编写从使用实例派生出的功能需求文档,还要编写产品的非功能需求文档,包括质量属性和外部接口需求.只有以结构化和可读性方式编写这些文档,并由项目的风险承担者评审通过后,各方面人员才能确信他们所赞同的需求是可靠的.
你可以使用以下三种方法编写软件需求规格说明:
用好的结构化和自然语言编写文本型文档.
建立图形化模型,这些模型可以描绘转换过程、系统状态和它们之间的变化、数据关系、逻辑流或对象类和它们的关系.
编写形式化规格说明,这可以通过使用数学上精确的形式化逻辑语言来定义需求.
由于形式化规格说明具有很强的严密性和精确度,因此,所使用的形式化语言只有极少数软件开发人员才熟悉,更不用说客户了.虽然结构化的自然语言具有许多缺点,但在大多数软件工程中,它仍是编写需求文档最现实的方法.包含了功能和非功能需求的基于文本的软件需求规格说明已经为大多数项目所接受.图形化分析模型通过提供另一种需求视图,增强了软件需求规格说明.
如果解决了您的问题请采纳!

怎样根据系统需求设计软件界面

假设,现在你有了软件项目的功能、需求等定义,那么,大概的步骤如下: 运行IDE软件 -> 建立工程项目 -> 写界面、代码 -> 调试 -> 解决可能的错误 -> 生成最后的版本。 ========================= 开发一个完整的应用程序,大概流程,参考资料如下: 第一步:需求调研分析 1相关系统分析员向用户初步了解需求,然后用word列出要开发的系统的大功能模块,每个大功能模块有哪些小功能模块,对于有些需求比较明确相关的界面时,在这一步里面可以初步定义好少量的界面。 2 系统分析员深入了解和分析需求,根据自己的经验和需求用WORD或相关的工具再做出一份文档系统的功能需求文档。这次的文档会清楚列出系统大致的大功能模块,大功能模块有哪些小功能模块,并且还列出相关的界面和界面功能。 3 系统分析员向用户再次确认需求。 第二步:概要设计 首先,开发者需要对软件系统进行概要设计,即系统设计。概要设计需要对软件系统的设计进行考虑,包括系统的基本处理流程、系统的组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和出错处理设计等,为软件的详细设计提供基础。 第三步:详细设计 在概要设计的基础上,开发者需要进行软件系统的详细设计。在详细设计中,描述实 现具体模块所涉及到的主要算法、数据结构、类的层次结构及调用关系,需要说明软件系统各个层次中的每一个程序(每个模块或子程序)的设计考虑,以便进行编码和测试。应当保证软件的需求完全分配给整个软件。详细设计应当足够详细,能够根据详细设计报告进行编码。 第四步:编码 在软件编码阶段,开发者根据《软件系统详细设计报告》中对数据结构、算法分析和模块实现等方面的设计要求,开始具体的编写程序工作,分别实现各模块的功能,从而实现对目标系统的功能、性能、接口、界面等方面的要求。   第五步:测试 测试编写好的系统。交给用户使用,用户使用后一个一个的确认每个功能。 第六步:软件交付准备 在软件测试证明软件达到要求后,软件开发者应向用户提交开发的目标安装程序、数据库的数据字典、《用户安装手册》、《用户使用指南》、需求报告、设计报告、测试报告等双方合同约定的产物。 《用户安装手册》应详细介绍安装软件对运行环境的要求、安装软件的定义和内容、在客户端、服务器端及中间件的具体安装步骤、安装后的系统配置。 《用户使用指南》应包括软件各项功能的使用流程、操作步骤、相应业务介绍、特殊提示和注意事项等方面的内容,在需要时还应举例说明。 第七步:验收 用户验收。

我要回帖

更多关于 数据字典怎么做 的文章

 

随机推荐