软件产品通用规范
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件产品通用规范
软件开发,过程与思想
计算机软件尤其是数据库软件,成为了当代计算机应用的主流。
因此软件开发人员就
必须掌握正确的开发手段,了解软件开发的主要过程,这样心中对软件项目才有清醒的认
识,才能达到事半功倍的效果。
本文就软件开发过程中的一些方法,结合本人开发过的一
些软件项目做一些详细论述。
1 开发前的准备工作
一般软件项目在开发前都有系统任务书,主要规定软件的开发目标、主要任务、功能
、性能指标及研制人员和经费、进度等安排,作为系统设计开发和检验的基本依据。
系统任务书的基本框架如下:
(1)引言
包括编写目的,背景,参考资料。
(2)系统的目标及任务
包括系统建设目标,系统的主要任务,系统性能指标,系统标准化要求。
(3)系统的结构及功能
包括系统应用组成及结构,系统主要功能。
(4)系统的规模及进度要求
包括系统规模,系统研制进度,人员计划。
但是系统任务书只是这个软件项目的一个基本要求,针对具体情况,软件开发人员和
需求分析人员就要联合对软件项目的细节进行具体分析,必要时还要进行实地调研,然后
共同商讨写出系统的需求分析,需求分析的编写目的在于:
a.
说明系统在军事方面、技术方面、经济方面和社会条件方面实现的可行性和必要性;
b.
分析原系统(工作环境)现状,描述待开发系统的详细需求,提供用户和开发人员之间沟通
的基础,提供项目设计的基本信息。
需求分析报告的基本框架如下:
(1)概述
包括编写目的,背景,参考资料,术语及缩写词。
(2)对现有系统的分析
(3)待开发系统的详细需求
包括功能需求,使用范围,业务流程,用户界面,输出要求,故障处理。
(4)使用环境
包括网络环境,硬件环境,软件环境,与其他系统的关系,安全与保密。
(5)可行性分析
包括可行性分析,经济可行性分析,人员可行性分析,影响待开发系统的主要因素。
(6)结论意见
2 软件开发过程
有了系统任务书和需求分析报告,软件设计人员就要对软件项目的实现进行系统分析,系统分析包括系统的总体方案,系统的设计说明,作为软件设计的依据。
具体说明如下
2.1 系统总体方案
在系统开发单位和用户充分交互、理解的基础上,提出系统的技术构架,对系统功能
、性能等主要指标作描述,对实现方法和要求作规定,是系统进行详细设计的依据。
系统总体方案基本框架包括:
(1)引言
包括:编写目的,背景,参考资料,术语及定义。
(2)项目概述
包括:
--项目的主要内容
--系统需求分析:①用户需求调查分析②现行系统的现状调查分析。
--系统功能:①系统的功能要求②系统主要技术性能。
--系统的数据要求:①基础数据②业务数据③交换数据④其它数据。
--系统的设计要求:①技术结构要求②系统划分及其接口要求③系统运行环境要求④
系统标准化综合要求。
(3)实施总计划
包括:进度,预算,问题和措施。
2.2 系统设计说明
根据《系统总体方案》提出的系统构架、功能、性能及数据要求,确定系统的物理结
构,说明系统主要技术方面的设计和采用的技术方法以及系统的标准化约束等,是系统实
施的基本依据。
就本人曾经开发过的一个软件项目,说明其基本框架:
(1)引言
包括:编写目的;背景;条件和限制;参考资料;术语及定义。
(2)系统总体技术方案
包括:
--概述:①系统目标②基本要求。
--系统设计:
①系统结构
a、应用结构。
b、功能结构。
c、技术结构。
②系统功能设计:根据以上的分析,功能设计自然
包括业务管理功能设计、综合查询功能设计、邮件收发功能设计、数据库接口设计、
文电接口设计。
在对这些功能进行综合分析的基础上,开始进行数据库表的设计。
在对表
的设计过程中,既要考虑到关系数据库冗余字段的处理,又要考虑到系统运行的速度和实
现的方便性等综合因素,笔者在实际开发后认为这两种考虑比例可以为7:3。
③系统安全设计:可以考虑以下一些安全设计思想,例如系统的数据传输通过电子邮件实现
,要求电子邮件内部只传代码,不传涉密数据;系统的数据库操作需要充分利用Oracle数
据库的事务提交和回滚机制,确保业务处理的完整性和一致性;系统的数据结构应充分利
用存储空间,在不同的用户之间通过数据冗余提高整个系统的数据安全性;系统中存贮的
用户口令、备份口令、数据库连接信息等重要数据,必需经过安全加密。
④Oracle数据库自动优化设计:对于Oracle数据库可以进行数据库配置,可以大大提高大数
据量查询速度,笔者已经做过尝试,并已经成功应用。
⑤友好界面设计:对于一个良好的应用系统当然需要设计良好的使用界面。
2.3 软件开发
对于开发语言的选择因人而易,开发数据库系统我比较倾向于DELPHI,因为它对于数
据库开发的支持是很完善的。
在软件实现方面,上面已经说明了一种客户/服务器结构,但
是这种结构本身也包含了一些问题,例如客户/服务器结构经常把应用系统的企业逻辑编写
在客户端的应用程序中,因此当应用系统需要改变时,所有在客户端的应用系统都必须改
变,这对于MIS系统的维护来说成本太高了;为了解决这些重复开发应用系统的成本以及为
了增加应用系统的重复使用性发挥面向对象分析/面向对象设计的功能,就必须导入所谓的
应用程序服务器,软件开发人员以一种特定的组件形式,例如Microsoft的COM/DCOM,CORB
A对象,或是Enterprise Java
Bean等,组装企业的逻辑程序代码。
这种经过组装,能够执行特定企业功能的对象便称为"
企业对象",然后把这些企业对象分发到此应用程序服务器。
由于本文不是专门讨论多层系
统的文章,所以只是简单提一下,不再赘述。
程序设计中要注意合理的程序设计结构,可以将所有的公用组件放在一起。
例如Delph
i语言中可以新建一个单元,将所有编写的函数放在这个单元里,其他单元均可以调用,还
可以新建一个数据模块(Datamodule),将所有的公共数据库控件放在这里,可以减少系统
资源浪费,优化数据库程序设计。
关于程序设计中的技巧很多,这里也不再赘述。
3 软件开发后的工作
软件项目在开发完成后还要进行系统测试,以测试开发出的软件的功能和性能是否达
到预定要求。
项目成功九要素
一般来说,项目完成了既定目标,满足了项目三要素:时间进度、成本控制、质量要求,
就可以认为项目是成功的。
但有时候项目的成果被顾客接受就可以认为成功。
比如在IT行
业里,产品研发突破原定时间、成本要求的情况非常普遍,但是如果最终项目得以技术实现,
而且被顾客接受,也算做成功。
不过,企业还是应该根据自己的实际情况制定有利于企业发
展的项目成败标准,比如项目延期不超过30%进度算达标这样的指标。
对于投资类项目,所谓"项目成功"具有不同的判别标准,项目本身实现只是一个方面,
项目产生的经济收益,社会影响,环境影响等都会成为评价项目成功程度的指标。
研发类项
目通常已通过项目的客户验收为成功的标志点,投资类则不限于此,可能会在项目完工并运
行一段时间(比如2年)后进行项目后评价环节,在项目的后评价中最后给出项目成败的最
终评判。
达到项目成功的方法
项目的成败受到四个方面的影响,即项目组内环境、项目所处的组织环境、客户环境、
自然社会环境。
从可控角度,通常需着重考虑前三个方面。
把前三个方面放在整个项目生命
周期进行考察,可以得到影响项目成败的因素。
以下从项目运行环境、项目计划、项目监控及项目沟通、过程改进和技术革新、项目经
理素质等几个方面总结获得项目成功的方法。
要素一、良好的项目运行环境
1)流程:
最迟在项目启动的前期,应该定义一套适合于具体项目的流程体系,这是项目成功的制
度化保证。
使流程得到不断优化,使用最简的优化流程。
2)组织机构:
选择合适的项目管理组织架构,以及团队成员选择,建立激励考评机制。
在同一个管理
平台上并行运作多个项目的组织,倾向于选择矩阵式结构;对于项目期限特别长的专项投资
项目也可能选用纯粹项目管理模式;项目存在多个子项目组的复杂协调,且项目存在比较大
的技术瓶颈的项目宜选择强矩阵式,就是有一个全职的项目经理承担管理性工作,以使技术
经理把大部分经理花在攻克技术难关上。
"人"是项目成功的最关键因素,选用具备必要技能、能与小组很好融合、具有强的责
任心和事业心的成员进入小组,将极大的促进项目的成功。
把责任、绩效与奖励捆绑在一起,实施目标管理,采取必要的激励措施。
一套行之有效
的激励考评体系将极大调动团队成员的积极性。
3)内部支持环境
多数情况下,项目组织并不作为一个单独的经济实体存在,它依托于特定的管理平台。
相对于外部客户来说,这属于内部支持环境。
理顺项目运行内环境的内容包括,汇报渠道、
财务联系、人力资源以及公司内部其它职能管理机构的联系。
要素二、强将手下无弱兵
项目经理是项目的灵魂人物,项目经理的素质包括在业务和技术和管理三个方面不断提
升自己、领导能力、市场与客户意识、还要特别关注团队文化的建设。
一个成功的项目经理应该倡导有魅力的团队文化。
现代社会,人们对工作赋予了更多的
精神需求。
一个有魅力的团队文化应该包括认可和尊重、自信和信任、分工协作的良好平衡、
愉快和上进的气氛、遵守共同规范、多层次交流和沟通等。
好的团队文化最终达到吸引人才、
留住人才、激励人才的作用。
要素三、计划先行
"凡事预则立,不预则?quot;讲的就是项目策划的重要性。
项目策划的结果是形成文档
化的项目计划。
策划阶段是很容易被忽视的阶段,任务书下达后,匆匆忙忙投入到项目中
往往为项目的挫折甚至失败埋下了伏笔。
项目计划应该包括项目内容、时间进度、预算、需
要的各方面支持性条件,项目风险预测等。
需要特别强调的是计划是个动态过程,一定要进行维护,否则计划就名存实亡了。
对于
不确定性很大的活动可以把计划制订的粗一点,然后随着项目的推移周期性的滚动细化,这
就是所谓的"滚动式计划方法",应用此法,可有效的减少计划的维护量。
总之,即使"计划
赶不上变化",但一定要"跟上变化"。
仔细鉴别获取的项目基本数据,尽可能进行量化估计将使得计划更加客观科学。
项目基
本数据可能包括以往进行类似项目的工作量数据、效率数据、WBS(工作分解结构)等。
要素四、对控制点进行有力度的管理
使目标管理和过程管理相结合。
过程管理要求有适当的方法提供项目的透明度,消除"
项目黑箱"。
所谓"项目黑箱"就是管理者只关心和只能了解到项目的输入和输出,项目的运
作过程不了解,项目缺乏控制。
这种状况会带来很大的风险,一旦项目运行存在偏差,只能
在项目完成后被发现,大大增加了纠偏的难度,甚至已无法纠正。
项目的监控大致按照如下
的四个步骤执行:获取项目过程信息、分析判断、采取纠偏措施、验证。
要素五、交流通畅
项目计划、进度和项目范围必须能够被项目成员方便的得到,以确保大家是在统一的平
台上朝者同一个目标前进。
为此,需要建立必要的内部邮件系统或采用适当的图表和模版以
增强沟通效果。
要素六、实事求是的决策
项目运作的过程时刻要记的不要脱离实际,包括各级计划的制定和决策过程中,"头脑
发热"或"市场压力"形成的不切实际的项目计划往往从计划那一刻就注定要失败的。
此外还应该注意,并不是好的东西就一定适合于自己的项目。
时髦的理念、新颖的方法、
流行的工具并不一定会对项目的成功起促进作用。
项目经理一定要对项目所处的内外环境有
冷静的认识。
要素七、确保项目平稳运作
虽然存在不同项目管理者的管理风格差异,但是总体来说,在项目中引入大的变革尽量
要采取渐进的方式。
这包括过程的改进、新技术的引进和组织架构调整等。
类似的变革应该
进行足够的影响分析。
必要时,可以进行试点和评估,然后再大面积引进。
要素八、项目管理人员责权对等
责权对等是管理学的基本原则。
之所以会出现责权不匹配的情况,多数是因为,上级管
理者不能信任下属的能力和做到有效授权。
项目出现问题进行检讨时,往往才发现项目经理
并不能对所出现的问题负责,问题的根源往往是高层经理在信息不完整的情况下做出的决策
造成的。
要素九、项目委托方的密切配合
项目委托方显然对项目的成功负有一定的责任,特别是项目需求分析阶段。
多数项目都
应该任命委托方项目经理,明确合同双方的责任,对于项目前期的工作给予密切的协作。
那些到了项目验收时才关注项目的业主态度是危险的。
项目成功的12个关键原则
1、项目经理必须关注项目成功的三个标准
简单地说,一是准时;二是预算控制在既定的范围内;三是质量得到经理和用户们的赞
许。
项目经理必须保证项目小组的每一位成员都能对照上面三个标准来进行工作。
2、任何事都应当先规划再执行
就项目管理而言,很多专家和实践人员都同意这样一个观点:需要项目经理投入的最重
要的一件事就是规划。
只有详细而系统的由项目小组成员参与的规划才是项目成功的唯一基
础。
当现实的世界出现了一种不适于计划生存的环境时,项目经理应制定一个新的计划来反
映环境的变化。
规划、规划、再规划就是项目经理的一种生活方式。
3、项目经理必须以自己的实际行动向项目小组成员传递一种紧迫感
由于项目在时间、资源和经费上都是有限的,项目最终必须完成。
但项目小组成员大多
有自己的爱好,项目经理应让项目小组成员始终关注项目的目标和截止期限。
例如,可以定
期检查,可以召开例会,可以制作一些提醒的标志置于项目的场所。
4、成功的项目应使用一种可以度量且被证实的项目生命周期
标准的信息系统开发模型可以保证专业标准和成功的经验能够融入项目计划。
这类
模型不仅可以保证质量,还可以使重复劳动降到最低程度。
因此,当遇到时间和预算压力需
要削减项目时,项目经理应确定一种最佳的项目生命周期。
5、所有项目目标和项目活动必须生动形象地得以交流和沟通
项目经理和项目小组在项目开始时就应当形象化地描述项目的最终目标,以确保与
项目有关的每一个人都能记住。
项目成本的各个细节都应当清楚、明确、毫不含糊,并确保
每个人对此都达成了一致的意见。
6、采用渐进的方式逐步实现目标
如果试图同时完成所有的项目目标,只会造成重复劳动,既浪费时间又浪费钱。
俗
话说,一口吃不成个胖子。
项目目标只能一点一点地去实现,并且每实现一个目标就进行一
次评估,确保整个项目能得以控制。
7、项目应得到明确的许可,并由投资方签字实施
在实现项目目标的过程中获得明确的许可是非常重要的。
应将投资方的签字批准视
为项目的一个出发点。
道理很简单:任何有权拒绝或有权修改项目目标的人都应当在项目启
动时审查和批准这些项目目标。
8、要想获得项目成功必须对项目目标进行透彻的分析
研究表明,如果按照众所周知记录在案的业务需求来设计项目的目标,则该项目多
半会成功。
所以,项目经理应当坚持这样一个原则,即在组织机构启动项目之前,就应当为
该项目在业务需求中找到充分的依据。
9、项目经理应当责权对等
项目经理应当对项目的结果负责,这一点并不过分。
但与此相对应,项目经理也应
被授予足够的权利以承担相应的责任。
在某些时候,权利显得特别重要,如获取或协调资源,
要求得到有关的中小企业的配合,做相应的对项目成功有价值的决策等等。
10、项目投资方和用户应当主动介入,不能被动地坐享其成
多数项目投资方和用户都能正确地要求和行使批准(全部或部分)项目目标的权力。
但伴随这个权力的是相应的责任——主动地介入项目的各个阶段。
例如,在项目早期要帮助
确定项目目标;在项目进行中,要对完成的阶段性目标进行评估,以确保项目能顺利进行。
项目投资方应帮助项目经理去访问有关的中小企业和目标顾客的成员,并帮助项目经理获得
必要的文件资料。
11、项目的实施应当采用市场运作机制
在多数情况下,项目经理应将自己看成是卖主,以督促自己完成投资方和用户交付
的任务。
项目计划一旦批准项目经理应当定期提醒项目小组成员该项目必须满足的业务需求
是什么,以及该怎样工作才能满足这些业务需求。
12、项目经理应当获得项目小组成员的最佳人选
最佳人选是指受过相应的技能培训,有经验,素质高。
对于项目来说,获得最佳人
选往往能弥补时间、经费或其它方面的不足。
项目经理应当为这些最佳的项目成员创造良好
的工作环境,如帮助他们免受外部干扰,帮助他们获得必要的工具和条件以发挥他们的才能。
软件工程的七条基本原理
1、用分阶段的生命周期计划严格管理
有人经统计发现,在不成功的软件项目中有一半左右是由于计划不周造成的,可见把建
立完善的计划作为第一条基本原理是吸取了前人的教训而提出来的。
在软件开发与维护的漫长的生命周期中,需要完成许多性质各异的工作。
这条基本原理
意味着,应该把软件生命周期划分成若干个阶段,并相应地制定出切实可行的计划,然后严
格按照计划对软件的开发与维护工作进行管理。
Boehm 认为,在软件的整个生命周期中应该
制定并严格执行六类计划,它们是项目概要计划,里程碑计划,项目控制计划,产品控制计
划,验证计划,运行维护计划。
不同层次的管理人员都必须严格按照计划各尽其职地管理
软件开发与维护工作,绝不能受客户或上级人员的影响而擅自背离预定计划。
2、坚持进行阶段评审
当时已经认识到,软件的质量保证工作不能等到编码阶段结束之后再进行。
这样说至少
有两个理由:第一,大部分错误是在编码之前造成的,例如,根据Boehm 等人的统计,设
计错误占软件错误的63%,编码仅占37%;第二,错误发现与改正得越晚,所需付出的代价
也越高。
因此,在每个阶段都进行严格的评审,以便尽早发现在软件开发过程中所犯的错误,
是一条必须遵循的重要原则。
3、实行严格的产品控制
在软件开发过程中不应随意改变需求,因为改变一项需求往往需要付出较高的代价,但
是,在软件开发过程中改变需求又是难免的,由于外部环境的变化,相应地改变用户需求是
一种客观需要,显然不能硬性禁止客户提出改变需求的要求,而只能依靠科学的产品控制技
术来顺应这种要求。
也就是说,当改变需求时,为了保持软件各个配置成分的一致性,必须
实行严格的产品控制,其中主要是实行基准配置管理。
所谓基准配置又称基线配置,它们
是经过阶段评审后的软件配置成分(各个阶段产生的文档或程序代码)。
基准配置管理也称
为变动控制:一切有关修改软件的建议,特别是涉及到对基准配置的修改建议,都必须按照
严格的规程进行评审,获得批准以后才能实施修改。
绝对不能谁想修改软件(包括尚在开发
过程中的软件),就随意进行修改。
4、采用现代程序设计技术
从提出软件工程的概念开始,人们一直把主要精力用于研究各种新的程序设计技术。
60
年代末提出的结构程序设计技术,已经成为绝大多数人公认的先进的程序设计技术。
以后又
进一步发展出各种结构分析(SA)与结构设计(SD)技术。
实践表明,采用先进的技术既可
提高软件开发的效率,又可提高软件维护的效率。
5、结果应能清楚地审查
软件产品不同于一般的物理产品,它是看不峥摸不着的逻辑产品。
软件开发人员(或开
发小组)的工作进展情况可见性差,难以准确度量,从而使得软件产品的开发过程比一般产
品的开发过程更难于评价和管理。
为了提高软件开发过程的可见性,更好地进行管理,应该
根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,从而使得所得到
的结果能够清楚地审查。
6、开发小组的人员应该少而精
这条基本原理的含义是,软件开发小组的组成人员的素质应该好,而人数则不宜过多。
开发小组人员的素质和数量是影响软件产品质量和开发效率的重要因素。
素质高的人员的开
发效率比素质低的人员的开发效率可能高几倍至几十倍,而且素质高的人员所开发的软件中
的错误明显少于素质低的人员所开发的软件中的错误。
此外,随着开发小组人员数目的增加,
因为交流情况讨论问题而造成的通信开销也急剧增加。
当开发小组人员数为N 时,可能的通
信路径有N(N?/FONT>1)/2条,可见随着人数N的增大,通信开销将急剧增加。
因此,组
成少而精的开发小组是软件工程的一条基本原理。
7、承认不断改进软件工程实践的必要性
遵循上述六条基本原理,就能够按照当代软件工程基本原理实现软件的工程化生产,但
是,仅有上述六条原理并不能保证软件开发与维护的过程能赶上时代前进的步伐,能跟上技
术的不断进步。
l因此,Boehm提出应把承认不断改进软件工程实践的必要性作为软件工程
的第七条基本原理。
按照这条原理,不仅要积极主动地采纳新的软件技术,而且要注意不断
总结经验,例如,收集进度和资源耗费数据,收集出错类型和问题报告数据等等。
这些数据
不仅可以用来评价新的软件技术的效果,而且可以用来指明必须着重开发的软件工具和应该。