微软研发方法

微软研发方法
微软研发方法

微软研发方法

------------------------------------------------------------------------一个伟大的软件后面都有一个伟大的故事,一个伟大的软件后面也有一个伟大的方法。

—题记

当Windows 2000通过胎死腹中的危机,终于如凤凰涅般再生时,微软决定给整个产品组成员拍照一张合影,以纪念那个历史时刻的产生。到了拍照那一天,微软人发觉,他们只有把摄像师安排在飞机上才能干好这件事儿——因为Windows 2000产品组整整有5000人!

“团队=软件”,微软软件开发治理理论的基础能够如此一个恒等式来表达,软件能够忠实地展现制造它的团队的一切优点和缺点。软件业中没有两个完全相同的失败,但最常见的莫过于新版本跟不上对手的脚步,微软开发模式的精髓之一,便是通过产品组团队中每个成员对职责的承诺来操纵产品的开发过程,保证新产品准时地、经常地被推出。

这正是软件业最大的金科玉律!

开发周期四时期

微软的产品开发遵循一个完整的开发周期,那个产品开发周期被分为四个时期:规划时期、开发时期、测试时期(也叫稳固化时期)和产品发送/出品时期(参见图1)。

微软中国研发中心中文技术部经理李东女士告诉记者,在产品的规划时期要做三件事:拟定基于客户数据的目标描述、基于目标描述的规格/特性说明和基于规格说明和特性优先级制定的进度表。规划时期中最重要的情况是让整个产品组的成员对共同的目标形成共同的认同。一座伟大建筑的产生往往只缘于一位伟大建筑师的不朽奉献,但一个伟大软件的设计却需要成百上千人的智力制造。

第二个时期是开发时期,那个时期也叫要紧里程碑时期。微软的任何一个产品组在那个时期都将依照特性将项目划分成若干个子项目,每一个子项目的完成就对应于一个里程碑。在李东的体会中,一样微软中国研发中心会在那个时期把产品划分成2~3个里程碑。Milestone1(第一个里程碑,简写为M1)内要完成的是核心的特性和功能,或今后需被共享的部件。那些将对产品稳固性形成专门大阻碍的功能,也应该被放到Milestone1。Milestone2能够放比milestone1次要一些、但也是比较重要的特性和功能。Milestone3放的特性和功能对核心特性和功能的依靠性不大,有的甚至可能依照市场的变化重新评估和取舍。总体来说,应依照特性和功能在结构上的重要性来决定它应当被放在M1、M2或M3来做。

在每一个子项目(里程碑)内,进度表应当具体到每一个开发人员,而且进度表中应当加入缓冲时刻。在子项目的执行过程中,程序经理(其角色下面详述)负责和谐开发过程并更新规格说明,在开发人员编码、优化和调试的同时,测试人员进行Bug测试及报告,直到特性稳固化之后,里程碑才达到。开发时期有一个微软所有的产品组都会用到的重要里程碑:代码完成(CC:Code Complete)。达到那个里程碑,意味着所有特性的编码任务全部完成,特性的集成测试通过后,除解决Bug以外,不再有新的代码进来。代码完成是明显的界线,标志着产品能够交付测试。至此开发周期进入第三个时期。

第三个时期是稳固化时期,也叫测试时期,或叫QA时期。测试人员对软件做各种各样的测试,其中开发和测试工作是始终并存进行的:测试人员发觉Bug,开发人员解Bug,测试人员再检测那个Bug是不是解了。假如你是一个程序经理,那个时候去看记录Bug的数据库,会发觉一大堆Bug急剧涌现,随着一个个Bug被解,Bug量逐步递减。当Bug量操纵到某一个特定范畴内就能够发Beta版,进行外部测试。那个时期程序经理要跟踪监督用户的反馈,开发人员及时解决用户发觉的Bug。Beta测试终止之后,再通过一段时刻的测试,就会达到零错误版本(ZBR)里程碑,零错误版本里程碑的达到,并不意味着没有Bug或遗漏的功能,而是标志着团队的成品达到了事先规划的品质水平,能够向公布候选(RC)里程碑进军了。值得注意的是,作为RC的产品,应包含出品之前所必须具备的全部文档资料。公布候选(RC)可能会经历RC0、RC1、RC2 等(最佳情形是RC0测试之后没有一点问题,那是最后要公布的那个产品了),但如RC0以后又发觉了Bug,同时大伙儿认为那个Bug必须要解,就又出来RC1,Windows 2000确实是通过RC3之后才进入产品发送/出品时期的。

产品有了稳固的版本就进入最后的时期——产品发送/出品时期。关于研发队伍来讲,十月怀胎、小孩终于出世的那一天确实是发送投产(RTM——Release To Manufacture)。RTM之后到用户真正拿到那个软件产品之前还要通过我们耳熟能详的产品公布会(Launch Event),因此,这部分工作差不多被微软的研发机构移交给市场和销售机构,由产品经理完成相应的产品宣传策划,把产品推向市场。

微软经典团队角色

微软的产品组典型的人员角色有几类(参见图2)。一类是产品规划(Product Planner)和产品治理(Product Management)。产品规划的使命是通过研究,向产品组提供诸如用户需求、市场导向、竞争对手和产品方向的分析,确保产品满足客户的需要;产品治理的使命是确定获利市场,同客户沟通产品的价值。这两个角色相当于对产品的规划以及产品的销售。一类是程序经理(或叫程序治理:Program Management),他负责整个产品开发过程的和谐,是微软各产品组中专门重要的一个角色。

开发人员(Development)、测试人员(Testing)、可用性测试员(Usability Testing)之类,在微软也是一些比较专门的角色。此外还有:Beta测试人员(Betas),假如那个产品需要汉化的话;本地化项目治理(Localization Project Manager);用户教育(User Education);最后是售后支持(Product Support),等等。

尽管微软的产品组角色定位专门清晰,但这些产品组多为横向组织,由多个部门的成员组成。比如产品治理属于微软的销售机构,而售后支持属于售后服务机构等等。微软不同机构和部门之间的协作性极强,这是保证微软按时完成高质量产品的重要缘故之一。

在微软的产品开发周期中,每一个角色在不同的时期有不同的侧重。在规划时期,作用比较大的是产品规划和程序经理。开发时期明显是开发人员的作用比较大,测试人员则在第三个时期“QA时期”专门重要,然而程序经理在这两个时期的作用都专门重要。

产品规划人员对产品阻碍最大的作用表达在规划时期。那个时期的产品规划需做用户问卷调查,用各种各样的研究手段来试图了解用户的需求,并创建目标描述。那个时期产品治理也收集用户需求,但他要紧调查的是市场走向,他关怀的是如何与客户沟通产品的价值。产品规划在整个产品开发周期中总是充当一个用户代言人的角色。产品治理在第一时期和最后时期发挥作用,产品治理必须设法了解新产品的获利市场所在,同时专门好地同客户沟通产品的价值。

相比于产品规划和产品治理,程序经理与程序经理之后的角色与产品具体开发过程更直截了当相关。

专门角色——程序经理

在微软的产品组中,程序经理的角色专门专门,他是惟一在产品开发周期的前三个时期都显得专门重要的角色。

程序经理在规划时期要贯彻和推进目标描述,书写功能/特性规格说明,创建要紧的进度表。规格说明是基于产品规划所产生的目标描述来具体定义特性的实现步骤,目标描述文档是基于大量用户的调查报告和各种研究方法得出的用户的需求,定位产品的目标。但这只是给出了一个大方向,程序经理必须把那个大方向细化成若干个具体的特性,这些特性不仅要满足目标功能的要求,而且又必须是程序开发人员能够明白得的语言。比如Word某一版要支持HTML,产品规划只定目标,但程序经理就要把那个目标细化成几个具体的特性。

在第二个时期,程序经理要治理整个开发工作的进度,检查开发人员的实现是否与规格说明相吻合,而且要使团队目标集中、齐心协力。假如在开发过程中有什么特性的变化,或者某些功能在设计时专门好但在实际开发中显现问题,程序经理便要负责其更新规格说明,还要与产品规划、测试人员沟通项目的进展状态,和谐开发过程中显现的问题。代码完成里程碑达到之后即开始大规模的测试,程序经理那时的作用就更大了,他要制定和操纵每个Bug的优先级,做取舍决定,发送Beta版并收集用户反馈,确保产品按时达到发送候选(RC)。

一句话,程序经理的中心任务是保证软件高质量并按时出品。由于总是要在品质与进度上找到平稳点,程序经理必须精于“引导、驱策、鼓舞、要求”团队做出最好的软件和表现出最好的工作效能。

在微软不同的团队里,程序经理所做的情况也有一定的差别。有偏技术性的设计功能的程序经理,他们是团队中的关键人物;有一种程序经理被叫做Release Program Manager,他的要紧任务是操纵开发流程;还有的程序经理会做一些客户需求调查的工作,定位产品方向。不管如何,程序经理的差不多素养第一是要有专门好的沟通技巧,具有设身处地为他人着想的本领;其次考虑问题周全,能处理复杂的情形;此外,程序经理要对开发产品所使用的技术专门熟悉,对用户需求的明白得力也要专门好。比如在具体的开发过程中,测试人员发觉Bug越多越好,但开发人员却期望Bug越少越好,程序经理要善于和谐二者的矛盾;在产品的开发过程中通常会显现人员突然流淌的现象,或者硬件环境出了问题,或者外边竞争对手显现变化,程序经理对这些要反应专门机敏,有能力做出对公司、产品和客户阻碍最小的果断的取舍和决定。

微软的开发人员无疑是每一个产品组中专门重要的角色。一个头衔是软件设计工程师(SDE——Soft Design Engineer)的开发人员的级别有可能比某一个经理要高专门多。在微软,开发人员依照他本身知识和能力的不同分为不同的级别,顶级的开发人员负责整个软件的结构设计,中间有负责某一功能类的结构设计师,最底层的开发人员只完成规定的模块实现。好的结构设计对产品的稳固性、可扩充性专门重要,专门是对一个由多人参与的项目而言更是如此。在产品组中,最厉害的开发人员是整个产品结构的设计师。应该说,微软每一个产品中都有几个核心开发人员来操纵整个产品的结构,其他开发人员则在他的领导之下共同完成开发工作。

可用性测试的重要

所有用过微软产品的人会有一种感受,微软产品专门易用。如何使产品做到易用?微软的方法是通过重视可用性测试(Usability Testing)来实现。可用性测试的使命是通过在产品开发周期的各个时期加入客户资料和信息来使产品更有用、适用和易用。

在产品开发周期的第一个时期可用性测试就要展开工作,比如,微软中国研发中心的产品组会把产品的新特性做一个模拟的模型,找用户来试用,产品组的可用性测试人员便会在试用过程中预备录音机、摄像头,把用户的行为摄下来,说的话录下来,按的键记录下来,研究他们对产品的反应,以便把产品设计调整到足够好。

微软中国研发中心中文处理组有一个产品“微软拼音输入法”,其最早的关心功能是用鼠标右键击活菜单,这是Windows常用的菜单风格,然而通过前期的可用性测试,李东他们发觉中国用户适应了用鼠标左键,专门少用右键,如此用户专门难找到微软拼音的关心功能。后来微软中国研发中心把“关心”放在显示专门明显的地点——输入法状态条上,如此,按左键就能使用关心功能。“用户的需求可能跟你想的不一样,这就要真正倾听用户的呼声,让用户来试用,看用户的反应,来决定修改你的产品”,李东告诉记者,微软中国研发中心如此的例子专门多。

在第二个开发时期,当开发人员达到M1,能看到产品的最重要的特性时,可用性测试人员要随时反馈设计好不行,假如要有个别的改动,则在M2中将M1的某些功能改动加进来。可用性测试人员要明白得用户的工作领域、行为和心理,微软公司总部有专门多做可用性测试的人员是心理学方面的专家。用户的感受只有通过可用性测试人员分析、明白得成对功能的描述,或者对功能的反馈,才能使产品开发人员能够明白得并改进。

里程碑式的开发模式的好处

综观微软对软件开发周期过程的治理,其精髓的做法一是将大项目划分成若干个子项目的里程碑式的开发模式;其次,通过对产品组各人员角色对职责的承诺来操纵产品的开发过程,以保证产品的进度和质量。

不管是小软件依旧大软件,里程碑的概念在微软所有的软件开发中都会被用到。这也是微软在软件开发上摸索多年凝聚所得。国内软件企业的开发大多是从有一个方法就开始做,不分什么时期,但往往因为软件功能太多,不同的人负责不同模块,到产品的最后时期再去集成和测试,大量原先没有估量到的问题都“冒”了出来,这时再去“动”各个部分,时刻确信要推迟。这种模式将导致两个问题:一是质量无法操纵,二是时刻无法操纵。

李东认为,在微软里程碑式的开发模式下,做同样大的产品,因为按子项目来划分里程碑,每一个子项目都通过一定的稳固化时期,再进入到第二个子项目的时候,确实是基于一个相对稳固的一部分子项目基础之上的行为,如此就将风险或错误的累加分散和降低。以局部的质量操纵来保证整体产品的进一步稳固,能使得质量和进度得以专门好的操纵。而且,把一个大的项目分散到不同的时期来完成,能够灵活地去增加或减少一些功能,否则,把增加或减少功能集中到最后集成时期,而且是在不稳固的环境下来做,困难可想而知。这确实是里程碑式的开发模式优秀之处所在。尽管里程碑的做法在成本上比较高——为了和谐出大伙儿对里程碑一致的价值观,为了和谐出里程碑的衡量准则,如此等等,团队必须付出大量时刻和精力,承担比较大的痛楚,但这是惟一能够确保开发成功的方式。

国内软件企业的开发模式多为“大拿领衔制”,通常公司十多个技术人员中间有一个技术“大拿”,剩下人辅助他,把那个产品的所有代码写完,则软件就算完成了。“大拿领衔制”脱不去小作坊的味道,尽管保证了“技术大拿”的制造性,却失去了软件研发过程应有的规范。

软件企业的制造性和制度要相辅相成。在微软的所有里程碑中,“代码完成”里程碑(code complete milestone),是一个重要的分界线。在代码完成之前,产品组自由发挥制造力,最需要大量的交互和碰撞。代码完成之后,则需严格按照里程碑完成进度。进入测试时期,微软通常把里程碑分得更细致,比如Beta、零错误版本、公布候选、RTM等等。每个里程碑都不是简单的摆设,而是有严格的规定,快到里程碑的时候开发人员不能做没到里程碑时的修改,“原先一个Bug如何改都能够,但到里程碑邻近的时候,就要求只能改动最重要的Bug”,微软中国研发中心副总经理徐汕开发Windows 2000时曾与副总裁吵过架,“我们觉得中文版需要这项功能,但当时差不多太晚了,大伙儿争吵了专门长时刻,最后依旧不能改。”为保证软件按进度完成,靠近里程碑时需要“收敛”,而收敛惟一的方法确实是少做情况。过了一个里程碑,产品比往常的质量就要好许多。通过一个一个里程碑来收敛,那个项目可不能偏离目标专门远。从代码完成到RTM是微软软件开发周期中专门重要的过程,那个时候差不多完成充分发挥智力的时期,而规范成为更重要的要素。(注:本文只给出了微软团队工作方式的常规模式,具体的实践模式可参考微软Visual C++事业部总监吉姆·麦卡锡所著书《微软团队成功要领》。)

微软研发方法(下)Bug“指挥棒”

想真正保证软件项目如期完成,不仅取决于开发人员,更取决于测试人员。

———题记

项目经理经常犯的错误之一,是以为只要雇用软件工程师就行,其他的人都不必要,或是让软件工程师占整个团队专门高的比例。他们也许认为开发人员越多,写出来的程序也越多,这是错误的概念。项目的目的是为了完成软件,而不是完成更多的程序代码。在开发团队中,实际有一些工作是不适宜交给软件工程师做的。

要想真正保证软件项目如期完成,不仅取决于开发人员,更取决于测试人员。软件开发看起来是在赶进度,而不是在演奏交响乐:交响乐是和谐有序而文雅的,而软件开发却更像是一堆移山倒海、蜂拥而至的工作。交响乐任何两个音符都不能相互抵触,整体表现出来的才是一段优美的音乐。在一切都不确定的软件开发过程中,让测试人员的“Bug指挥棒”来使大伙儿明白什么时候该表现,明白什么时候该退后一点,正是微软将软件开发过程带向高潮的不二法则!

测试组不是开发组的助手

看起来没有谁比微软更重视测试的力量。在微软的产品组中,测试组是与产品规划组、产品治理组、开发

组和用户教育组等并列的队伍。测试与软件成本的关系是,发觉产品中存在的问题越早,开发费用越低,产品质量越高,软件公布后爱护费用越低。在微软开发周期的四个时期中,测试的目的在于保证软件质量,满足设计的要求和客户的需求;系统地揭示出不同类型的错误,并耗费最少时刻和最小工作量;降低软件的开发成本和爱护成本。

软件开发过程中开发人员专门可能因为一些偶发的小事,或某种无关的灵感而不知不觉中偏离了实际的需要,临时不记得了什么才是产品最该有的功能,把他们拉回原定轨道中的正是测试工程师。测试人员的职责是配合整个项目组保证按照预定的时刻表完成达到预定设计目标的产品。测试人员的工作是具有整体性、连续性的软件开发活动中的一环,而不是偶然拿出来点缀一下。软件产品的质量是由用于测试的资源、产品的功能和项目的时刻表来决定的,是三者的平稳。对任何的一个产品组来说,不管是主观,依旧客观上,都要重视测试工程师的存在,这是产品质量的重要保证。

罗马不是一天建成的。早期的微软开发队伍中也没有设立单独的测试组。那个时候的微软几百个人做几个项目,通常是程序员写完程序了,自己测试一下就算完事。后来微软的项目越来越大,软件越来越复杂,写代码和测试的工作要平行进行,慢慢产生了独立的测试组。一个重要的数字是,微软产品组中测试人员和开发人员的比例大约是1∶1。事实上,要想真正保证软件项目如期完成,不仅取决于开发人员,更取决于测试人员。

测试组独立于开发组之外的好处在于,程序员总是倾向于认为自己设计的代码足够好,独立的测试组能够使测试人员在不带任何假设的情形下从不同的角度来测试软件,有利于保证软件的质量始终得到操纵,并使测试资源得到重用和不断改进。然而,测试组独立于开发组之外,并不意味着程序员写完代码就扔过“墙壁”,等待测试工程师找到所有的bug,当测试人员认为他的工作确实是测试程序,而开发人员认为他的工作确实是写程序给测试人员测试时,假如你是项目经理,要小心了!开发人员的优越感会使测试人员感受自己是被鄙视的少数民族,这势必会阻碍到软件的品质。程序人员在写完代码、改正问题后必须完成差不多的测试,比如代码的路径测试、单元测试和问题验证等。产品质量操纵,存在于开发过程的每一个环节中。

有一个见笑,微软的测试人职员作时刻长了,都有挑刺儿的适应,下了班见了太太做的饭都要评判一番。对微软来说,那些聪慧、细致、认真,有耐心,追求完美的产品,对用户有负责任的态度,思维方式独立又开放,既有足够的技术背景,但又情愿学习新的技术的测试工程师更容易得到“老总”的青睐。

软件测试的时期性

软件开发的过程就像是一支队伍正在急行军,但跑着跑着这支队伍就会“散了架”,设立里程碑的作用就看起来是到了某一个“点”,大伙儿必须要重新整理步伐,实现同步。就测试组的工作模式而言,测试的时期划分是与项目的进度相对应的。也确实是说,测试人员应当与项目组的其他人员始终保持以相同的步伐“跑步”的状态,与整个项目的每一个里程碑配合,完成相应的测试工作。

把大项目划分成若干子项目的里程碑式的开发模式是微软软件开发治理的精髓做法,如上一期《微软研发方法(上)》所述,在微软的每一个产品开发周期中都有以下几个重要的里程碑:CC(Code complete:代码完成);Beta测试;RC(Release Candidate:候选公布);RTM(Release To Manufacture:投入生产),测试人员和产品组的其他人员一起,共同达到每一个里程碑。一个完整的测试循环应当包括运行所有的测试用例、Beta标准测试、bug校验和解所有的bug、随机测试。好的测试循环能够保证对软件质量有一个全面完整的评判,每个里程碑之前至少要有一个完整的测试循环。

在微软的产品开发周期中,在规划时期当开发人员在做打算、编进度,进行功能实现的可行性研究,对打算的功能进行反馈时,测试人员应当研究规格说明,编写测试打算;在第二个时期即开发时期,当开发人员在编写代码、测试和调试的同时,测试人员应当开始设计测试用例,开发自动测试工具和程序,熟悉必需的环境、工具、软件和硬件,不断地丰富测试用例,直到达到CC(代码完成)里程碑——那个时候的软件能够进行一次整体测试,用户界面可能不完美但能够工作,可能有专门多明显的bug。

进入开发周期的第三时期,测试人员大显身手,展开大规模的测试,比如系统级整体测试,交互性和深层测试。测试之后,测试人员应当对新增的功能说“不”,直至达到Bate测试里程碑。达到那个里程碑,意味着所有的Beta致命问题差不多被修正和关闭,所有打算的功能都差不多在软件中并能工作,产品稳固,大部分界面还能够,尽管可能只是一部分,但差不多有了在线关心和用户手册,即使是公布了也可不能引起负面的阻碍。

Beta测试的目的是确定产品是否能在估量的各种硬件平台和操作系统中正常运行,尽管Beta测试的反馈意见专门有参考价值,但除非存在重大问题,否则不应对功能集再做修改,所有建议和反馈都留在下一版中再考虑纳入。Beta测试之后就要向RC和RTM进军。测试人员要着重测试Beta后的变动。到达RC,意味着软件质量状态为没有活跃的bug(Active bug);没有悬而未决的事;差不多稳固了一段时刻,如一周内专门少或没有变动,或变动专门小。假如RC后的测试没有发觉新的需要改的bug,能够达到RTM,随后查病毒,验证光盘,检查内容。

需要注意的是,在整个时期性的软件测试过程中,质量不仅仅是测试组的责任。一定要防止完全依靠测试组来保证质量的做法,否则结果只能是质量差、进度延迟。采纳Zero-Defect策略的好处在于,能够同时保证产品的质量、进度和功能集,尽早发觉和修正产品中的bug,始终把产品的状态和bug数量操纵在能够治理的范畴之内,程序员应该修正所有的优先级为一级(P1)的bug才能写新的代码。

同时测试组应当开发一些好的测试治理工具,比如测试用例治理工具和bug的治理工具等等。测试工程师应当细化测试子区域,重视测试用例的数量和质量,对bug状态的变化要反应迅速。要防止仅以bug多少来评判工程师的工作。

bug的发觉和治理

在微软的测试人员看来,那些功能没有实现或与规格说明不一致的问题是bug;不能工作(死机、没反应)的部分是bug;不兼容的部分是bug;边界条件未做处理是bug;界面、消息、提示不够准确是bug;有时把尚未完成的工作也作为一个bug。微软把软件中常见的bug类型归为以下几类:功能错误;用户界面错误;边界值相关错误;初始化错误;运算错误;内存相关错误;硬件相关错误和文档错误。

测试工程师发觉bug之后所采取的措施,第一应当是去方法验证是不是自己的偶然失误造成bug显现,如不是则应赶忙建立每一个新的bug记录,包括具体的再现步骤、环境、屏幕等;尽可能地分析产生bug 的缘故;设计合适的优先级和严峻级别,要记住,测试人员的目标不是找出更多的bug,而是改进产品的质量;依据bug的优先级和严峻级别分派给某一个相应的人,如程序员、项目经理和测试组的负责人等。

一样来说,bug在数据库中有三种状态:活跃(Active)、被解(Resolved)、关闭(Closed)。这三个状态在微软通常用“红黄绿”三个颜色来代表。活跃状态指的是测试人员新建一个bug时的状态,必须分派给相应的设计人员、开发人员或者是用户教育人员,说明bug的状态是等待纠正的。被解状态指的是设

计人员、开发人员或者用户教育人员修正bug后的状态,必须重新分派给报告bug的测试人员,说明bug 差不多得到修正,但等待校验。关闭状态指的是测试人员校验完成并关掉之后的状态,说明bug差不多得到修正,并完成了校验,但假如同样的问题再次显现后,还可能重新激活成活跃状态,则又开始了另一轮的状态循环。活跃bug数量的变化趋势是,一样在代码完成前专门少,代码完成后增长专门快,接近Beta 测试时会下降,接近RC时奔向零。因此依据每天新建的bug数量与修正的bug数量相比较和处于活跃状态的bug数量亦可判定产品质量和里程碑的信号。

永久有缺憾是所有智力活动的特点。软件一定有数不清的缺点,问题不是在于判定那个产品好与不行,而是决定修改哪一部分从而能够使产品比较能被用户同意或喜爱。微软把那个判定并修改的过程称为“急救术”。在急诊室中大夫必须专门迅速地观看患者面临的所有问题,采取最急迫必要的急救医疗措施,然后再依优先级分别施救。微软产品组也一样,他们把bug的严峻性分为四个级别:导致死机;要紧问题,导致严峻的问题,如某个小功能未实现;小问题,不太严峻,如提示信息不太准确;微小的问题,如有个别错别字。把bug的优先级分为四个级别:尽快修正;每个里程碑终止前必须修正;假如时刻承诺就修正;低优先级。微软有“bug法庭”,通常由程序经理召集,由项目经理、开发负责人、测试负责人组成,可依照产品的功能区域分成具体的“bug急救小组(bug triage team)”,审查每一个bug,选择和修改产品中最重要的错误,决定相应解决方案,尽量使大部分的用户在大部分的时刻内都能够使用愉快。因此,“bug 法庭”开会的频度取决于处于哪一个时期。

测试组应当有一个区域专门放置记录所有bug的数据库。那个数据库应当是整个产品组的中央记录和操纵区,而且其中所有的记录都无法删除,关于每个记录只能一直添加内容。测试组应当有与项目组所有成员交流与沟通的公用工具;与bug mail配合,能依照bug的当前状态及时通知bug的当前责任人;有效地跟踪项目的进展,为产品公布提供判定标准;能积存测试人员成果。

隐秘武器:测试用例和测试打算

概括来看,微软测试的精髓做法是:系统可重用的测试用例;以问题(bug)发觉和跟踪为核心的测试活动;独立的测试人员;基于产品规划、产品设计规格的测试打算;与整个项目配合的基于里程碑的软件测试周期。而基于产品规划、产品设计规格的测试打算和系统可重用的测试用例则是微软的“隐秘武器”。

在微软,测试打确实是关心测试人员治理测试项目和发觉bug的重要工具,是纲领性文件。测试打算明确了项目的测试任务、测试内容清单,这些内容不能只存在于测试人员的脑海里,而必须被项目经理、开发经理所了解,测试打算必须增强测试任务和测试实施过程的沟通,具有指导性。测试打算还必须提供组织治理测试项目的框架结构,关心操纵进度。

测试打算涉及的范畴应当有产品概述、测试策略、测试的方法学、测试区域、测试的配置(软件环境、硬件环境、网络环境)、测试周期(与项目的里程碑配合)、测试资源的规划、风险分析和案例等。测试打算不是一成不变的。尽管测试打算在产品设计时期就开始被撰写,但在后来的开发过程中会随着项目进度表的改变而改变。

一个好的测试用例有以下几个特点:第一,是最有可能抓住错误的;其次,不是重复的、余外的;第三,一组相似测试用例中最有效的;最后,不要太简单,也不要太复杂。因此,在测试人员设计测试用例时应当遵循以下原则:在人员变化和新项目中能够重用;能够分类;测试的内容不重复;储存在测试用例的数据库中;在项目进行过程中可不断增强。

设计测试用例时的一些通常考虑“点”是:依照产品规格测试差不多功能;设计一般用户的使用方案;设计稀有或专门的使用方案;与系统其他组成部分的配合(如FAX和上网可能都要用到调制解调器,测试中要考虑对设备的共享);考虑专门情形(比如内存和硬件的冲突等);设计极端情形(比如内存泄漏、破坏性测试等)。

软件开发过程管理规范

软件开发过程管理规范文件管理序列号:[K8UY-K9IO69-O6M243-OL889-F88688]

0 引言 如果要提高软件开发人员的开发质量,必须有相应的考核制度,有了制度后才能推动开发人员想方设法改善自已的开发质量。目前研发对软件开发的过程缺乏细粒度的度量,所以不能依据有效的度量数据来考核开发人员的工作绩效,大部份只是凭考核人主观意志来考核,不能形成对被考核人有效的说服力。此绩效考核办法旨在结合实际情况合理客观地评价开发效率和质量。 1 目的 对软件开发的过程所产生的软件项的质量和过程进行定量的评价,用评价的结果指导软件的开发过程,不断地提高软件开发质量水平,并依据度量记录来考核软件开发人员的工作绩效。 2 软件项包括 1)技术文档:主要包括:可行性分析报告、需求分析报告、软件功能规格说明、开发计划、系统设计报告、测试文档、用户手册、总结报告等; 2)计算机程序。 3 度量数据的来源 1)项目计划; 2)评审报告; 3)测试报告; 4)问题报告; 5)软件维护记录; 4 质量度量

4.1 度量指标 主要根据各类软件项检查表的检查指标来确定,例如,软件需求规格说明书检查表(见附录1),有10个检查指标,则根据具体项目检查侧重点不同,可从中选择相应的检查指标作为度量指标。 4.2 质量等级 1)软件项的质量等级的确定根据度量综合指标进行。 2)度量综合指标计算公式为:Total = ∑QiMi。 3)其中i=1,2,...n代表指标数量; 4)Q代表度量的指标; 5)M代表度量的指标Q在整个指标体系中所占的权重系数,对不同的开发项目可能不同,此系数根据开发的不同着重点给出。 度量指标权重系数表: 序号指标权重 1 指标1 权数1 2 指标2 权数2 3 指标3 权数3 4 指标4 权数4 5 指标5 权数5 加权平均分 1.0 6)质量评价:一般地,根据度量综合指标值,有以下评分标准。 质量评价计分标准表 序号得分质量评价

软件开发流程

快视信息软件开发流程规范: 用户需求:软件项目首先由客户经理(CM,Custom Management)接洽客户的较大的需求。这时的需求叫市场需求(或叫用户需求),客户经理会进行各个项目的安排,即对项目的启动时间和发布时间进行规划和设置。 项目经理(PM,Project Management)对客户经理负责。项目经理的需求是根据客户经理给的,项目经理不和用户(客户)直接接触(通过客户经理接触),负责和用户进行需求洽谈和沟通的是客户经理。一个项目的需求在一般情况下是不准变更的,如果有需求理解方面的不清楚可以进行沟通,但是需求是不变更的。如果用户有新的需求,一般规划在下一个版本中。因为需求变更了,这个目的时间就要进行调整,就不能按计划进行和完成。客户经理提交给项目经理的是需求规格说明书。 一、项目开工会 在项目经理领到客户经理分配给的需求后,做项目计划,具体做项目人员的确定、需求的分解(需求分解到每个人)、代码量的估计,项目各个阶段时间的划分和工作量的计划、质量指标的设定。这时项目经理需要输出的文档是项目需求分解任务书、项目计划PPT、及做好整个项目需要填写的一系列表格。然后组织项目组成员和客户经理CM、QA(质量审计经理)进行项目开工会。这时这个项目就算真正启动,计算工作量时,即计算这个项目总共花了多少个工时,工时是项目经理做计划的时间也算在内,再加上项目开工会和后续各个阶段总共花的总工时数,还有各个阶段开会所花的时间。在项目开工会上,各个成员就明确了这个项目是属于增强型项目,还是其他项目的项目性质,增强型项目的意思是说在原来上一版本的基础上又根据新的需求进行增强型开发。还有要明确项目最后开发出的新增代码量有多少,最后要明确每个人的需求任务,接下来着手进行SRS的写作。 二、SRS阶段:System/Software Requirment Specification 软件需求规格说明 在项目开工会后,项目组就开始按照在项目开工会上项目经理的需求任务分解的任务开始进行SRS的写作。 一般项目经理给你的一个子需求任务,你这时需要分解为更小的需求。一般一个需求的写作是按这样进行的。先简单介绍这个需求,然后把这个需求设计成黑盒的形式,即输入,处理过程、输出。这些都需要写详细,任何一个需求都写成这种形式,输入是什么,处理过程是什么,输出结果是什么。处理过程需要用Visio或者PPT画出处理流程图,流程图要很详细。每一步的各种情况都要表示和考虑到。对异常情况也要考虑和进行处理。还有要说明在原来的基础上怎么改动,具体方法要进行说明。设计的数据库表结构,要给出脚本,SQL语句,表结构需说明每个字段,哪些是主键,你在这个需求处理过程中哪里使用了哪些表,需要进行哪些操作,都需要说明。这里需要设计和编制《数据库设计说明书》文档。该文档中描述该系统中设计出的所有的数据库表结构和各字段类型。还有多个操作对象要画序列图表示出按时序的处理过程。这个SRS文档就相当于我们平时毕业设计或者一个题目的详细设计阶段达到的水平,甚至比它更详细。每个项目组成员都把自己的需求的SRS文档写出来之后放到配置库中,然后每个人对项目组其他成员的(非自己的)SRS文档进行Review(评审),对每个SRS文档在每页发现或者纠正的错误数不能低于一定的数目,而且要保留批注记录,经过Review的(保留批注的)文档要放到配置库的Review文件夹下,这是进行项目质量指标收集的重要依据,是QA 进行调阅和审计的资料。项目经理要对SRS文档、SRS Review文档进行汇总。在汇总后组织项目组全体成员进行SRS阶段会议,对每个人写的SRS进行评审会议(讨论和提意见),对别人给你提的修改意见你要一一进行说明,说明为什么不改,怎么改的,是什么问题,问题严重程度属于什么级别,而且都要填表,也是QA进行审计的内容。开完会后如果每个人完成的都差不多,然后安排半天或者一天的时间进行返工,主要是进行修改文档,按在会上讨论的结果和别人给你的Review 文档结果(评审结果)进行准一修改和完善。然后再进行SRS阶段开会,如果都做的比较到位和具体、符合要求,即关闭SRS阶段。这时SRS阶段的花费的工时数和一些质量活动指标就出来了,比如你这个SRS文档写了几页,每页的错误数是多少,返工修改用了多少时间,然后这些这个比率也会自动计算出来。进而可以判断这个阶段的质量。每个项目组成员在每天工作完毕后都要进行Time Sheet 的填写,必须具体到半个小时,这是统计和分析的需要。填写必须真实。 三、UTP、STP阶段(UTP、STP写作) UTP Unit Test Plan 单元测试计划 STP System Test Plan

常用项目管理工具

常用项目管理工具—本人看到的文章,共享 ---来源:不详。 随着IT行业的发展,IT行业内的项目拓展和投资比比皆是。为了提高项目管理水平,赢得市场竞争,特别是在加入WTO后在国内、国际市场上拥有与国际接轨的项目管理人才,越来越多的业界人士正通过不同的方式参加项目管理培训并力争获得世界上最权威的职业项目经理(PMP)资格认证。同时,大部分的IT行业项目管理人士正尝试使用项目管理软件对自己的项目进行辅助管理,为了方便大家的使用,现对项目管理作一简要介绍。 目前市场上项目管理软件种类较多,具有代表性的为微软项目管理软件2000,但大多以美国项目管理协会(PMI)的项目管理理论为基础,在使用过程中要注意以下内容: 一、项目管理软件特征 1.预算及成本控制 大部分项目管理软件系统都可以用来获得项目中各项活动、资源的有关情况。人员的工资可以按小时、加班或一次性来计算,也可以具体明确到期支付日;对于原材料,可以确定一次性或持续成本;对各种材料,可以设立相应的会计和预算代码。另外,还可以利用用户自定义公式来运行成本函数。大部分软件程序都应用这一信息来帮助计算项目成本,在项目过程中跟踪费用。项目过程中,随时可以就单个资源、团队资源或整个项目的实际成本与预算成本进行对比分析,在计划和汇报工作中都要用到这一信息。大多数软件程序可以随时显示并打印出每项任务、每种资源(人员、机器等)或整个项目的费用情况。 2.日程表 日程表程序主要用来对项目中各个单项资源或一组资源确定工作时间。可以用这些日程表计算出项目的进度计划。大部分系统软件都对基本工作时间设置一个默认值,比如星期一到星期五,早上8点到下午5点,中间有一小时的午餐时间。对于各个单项资源或一组资源,可以修改此日程表。例如:修改上、下班时间,按非工作时间输入公司假期,输入各种换班(白天、夜晚),包括节假日以及数量单位(小时、天、周)。汇报工作进程时要用到这些日程表,它通常可以根据每个单项资源按天、周或月打印出来,或者将整个项目的日程打印成一份全面的,可能有墙壁大的项目日程表。 3.电子邮件 一些项目管理软件程序的共同特征是可以通过电子邮件发送项目信息。这一功能使得用户不必通过打印机或屏幕显示,直接从电子邮件中获得信息。通过电子邮件,项目团队成员可以了解重大变化,比如最新的项目计划或进度计划,可以掌握当前的项目工作情况,也可以发出各种业务表格。 4.图形 对于有大量活动事项的项目工程,人工制出一份甘特图或网络图,或人工进行修改制图是一件极其乏味而又容易出错的工作。当前项目管理软件的一个最突出的特点是能在最新数据资料的基础上简便、迅速地制作各种图表,包括甘特图及网络图。有了基准计划后,任何修改就可以轻易地输入到系统中,图表自动会反映出这些改变。项目管理软件可以将甘特图中的任务连接起来,显示出工作流程。特别是用户可以仅用一个命令就在甘特图和网络图之间来回转换显示。另外,图形和表格通常有以下功能供用户使用: . 进行任务和关系的交互式操作处理。例如,通过图表连接任务,改变优先关系或通过扩展活动持续显示功能来改变活动持续时间。

软件开发过程规范

【最新资料,Word版,可自由编辑!】

目录 1.前言 (3) 1.1 目的 (3) 1.2 对象 (3) 1.3 要求 (3) 1.4 适用范围 (3) 1.5 软件开发过程模型 (3) 1.6 开发过程划分 (4) 2.技术过程规范部分 (4) 2.1 概述 (4) 2.2 业务建模阶段 (4) 2.3 需求阶段 (6) 2.4 分析设计阶段 (8) 2.5 实现阶段 (10) 3.管理过程规范部分 (11) 3.1 概述 (11) 3.2 接受项目 (12) 3.3 重新评估项目范围和风险(对于较大项目) (12) 3.4 制定开发计划 (13) 3.5 迭代开发管理 (13) 3.6 监控项目的实施 (14) 3.7 结束项目 (15)

软件开发过程规范 前言 目的 本规范的目的是使整个软件产品开发及项目工程阶段清晰,要求明确,任务具体,便于规范化、系统化及工程化。有利于提高软件生命周期的控制及管理,提高所开发软件的质量,缩短开发时间,减少开发和维护费用,使软件开发活动更科学、更有成效。 对象 本规范面向产品生命周期的所有相关人员,包括管理人员、开发人员、质管人员。 要求 具有软件开发管理职能的人员要求熟知项目开发的各阶段过程和各阶段过程相应的规范。 适用范围 适用于产品开发生命周期中的除产品提交外的其他全部过程;规范分为两部分:技术过程规范和管理过程规范,分别适用于软件开发过程中的技术性活动和管理性活动。 软件开发过程模型 本规范所采用的软件开发过程模型为简化的RUP开发过程模型;软件开发过程是体系结构为中心,用例驱动和风险驱动相结合的过程迭代。

软件开发过程详解

软件开发过程详解 软件开发过程即软件设计思路和方法的一般过程,包括设计软件的功能和实现的算法和方法、软件的总体结构设计和模块设计、编程和调试、程序联调和测试以及编写、提交程序。 生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。软件开发过程覆盖了需求、设计、实现、确认以及维护等活动。需求活动包括问题分析和需求分析。问题分析获取需求定义,又称软件需求规约。需求分析生成功能规约。设计活动一般包括概要设计和详细设计。概要设计建立整个软件系统结构,包括子系统、模块以及相关层次的说明、每一模块的接口定义。详细设计产生程序员可用的模块说明,包括每一模块中数据结构说明及加工描述。实现活动把设计结果转换为可执行的程序代码。确认活动贯穿于整个开发过程,实现完成后的确认,保证最终产品满足用户的要求。维护活动包括使用过程中的扩充、修改与完善。 1.需求分析 1.1 需求分析的特点和任务 需求分析是软件开发的第一步。获取需求的一个必不可少的结果是对项目中描述的客户需求的普遍理解。一旦理解了需求,分析者、开发者和客户就能探索出描述这些需求的多种解决方案。参与需求获取者只有在他们理解了问题之后才能开始设计系统,否则,对需求定义的任何改进,设计上都必须大量的返工。把需求获取集中在用户任务上—而不是集中在用户接口上—有助于防止开发组由于草率处理设计问题而造成的失误。有几种原因使需求分析变得困难:(1)客户说不清楚需求;(2)需求自身经常变动;(3)分析人员或客户理解有误。 需求获取、分析、编写需求规格说明和验证并不遵循线性的顺序,这些活动是相互隔开、增量和反复的。当你和客户合作时,你就将会问一些问题,并且取得他们所提供的信息(需求获取)。同时,你将处理这些信息以理解它们,并把它们分成不同的类别,还要把客户需求同可能的软件需求相联系(分析)。然后,你可以使客户信息结构化,并编写成文档和示意图(说明)。下一步,就可以让客户代表评审文档并纠正存在的错误(验证)。这四个过程贯穿着需求分析的整个阶段。需求获取可能是软件开发中最困难、最关键、最易出错及最需要交流的方面。需求获取只有通过有效的客户—开发者的合作才能成功。分析者必须建立一个对问题进行彻底探讨的环境,而这些问题与产品有关。为了方便清晰地进行交流,就要列出重要的小组,而不是假想所有的参与者都持有相同的看法。对需求问题的全面考察需要一种技术,利用这种技术不但考虑了问题的功能需求方面,还可讨论项目的非功能需求。确定用户已经理解:对于某些功能的讨论并不意味着即将在产品中实现它。对于想到的需求必须集中处理并设定优先级,以避免一个不能带来任何益处的无限大的项目。 1.2.需求分析的一般方法

软件项目标准开发流程

1、需求分析是怎样做的?(自己理解着说) 需求分析是构建软件系统的一个重要过程。 一般,把需求类型分成三个类型: 1、业务需求(business requirement)反映了组织机构或客户对系统、产品高层次的目的要求,它们在项目视图与范围文档中予以说明。 2、用户需求(user requirement) 文档描述了用户使用产品必须要完成的任务,这在使用实例文档或方案脚本说明中予以说明。 3、功能需求(functional requirement)定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。 业务需求和用户需求是软件需求分析的基础,也是软件构建的前提。系统分析员通过对业务需求和用户需求的分解,将其转换成克一形式化描述的软件功能需求。开发软件系统最为困难的部分,就是准确说明开发什么。这就需要在开发的过程中不断的与用户进行交流与探讨,使系统更加详尽,准确到位。这就需要确定用户是否需要这样的产品类型以及获取每个用户类的需求。 4、客户也经常是矛盾的。事实上,很少有客户能够明确的知道怎样的一个系统对自己是最有益处的,他们往往在集中方案之间徘徊,于是经常产生需求的变动。生产厂商经常陷入客户自己的矛盾之中。 客户的负面影响可能对于能够在预算内按时完成项目产生很大的影响。尽管客户需要对需求的质量负责任,但是,当一个软件项目因为客户事先没有预料到的情况而导致失败的时候,即使客户不会追究开发方的责任,就软件项目本身而言,也已经是失败的。 总结: 良好的需求分析是软件成功的基础。以上是作者对需求分析工作实践的一次小结以及综合性的思考,是对需求分析本身所做的一次分析。在此基础上,作者提出了逆向沟通的设想,即系统分析员主动进行沟通,提出指导性意见。当软件融合了客户和系统分析员双方智慧,其质量将会进一步得以提高。 2、 6周 (比较合理的代码行数是多少,如果多了,我是怎么切割的)500行,例如:实现数据3、如何将用户登录的信息保存? 用户登陆页面将每个用户的信息使用session保存下来,例如: session.setAttribute("UserID","ytang"); 如果用到用户的登陆信息,再从session根据session.getAttribute("userID")所存储的信息例如在项目1中的应用 4.软件项目开发流程应该是什么样子的? 1。需求分析和获取; 2。界面的设计和修改,直到用户可以接受; 3。后台数据库的建立,做成几张表,写几个存储过程; 4。前台模块的编写和调试; 5。项目的实施和维护;

微软项目管理软件Project_2007中文教程(上)

JS Here Project 2007中文教程(上) Benhao 2010-8-24

目录 Project入门 (3) 1.1 使用Project管理项目 (4) 1.2 启动Project Standard (5) 1.3 启动Project Professional (8) 1.4 视图 (13) 1.5 报表 (18) 1.6 创建新项目计划 (21) 1.7 设置非工作日 (23) 1.8 输入项目属性 (25) 1.9 小结 (26) 创建任务列表 (27) 2.1 输入任务 (27) 2.2 估计工期 (29) 2.3 输入里程碑 (32) 2.4 分阶段组织任务 (33) 2.5 链接任务 (35) 2.6 记录任务 (38) 2.7 检查任务工期 (40) 2.8 小结 (42) 设置资源 (43) 3.1 设置人员资源 (43) 3.2 设置设备资源 (46) 3.3 设置材料资源 (48) 3.4 设置成本资源 (49) 3.5 输入资源费率 (49) 3.6 为单个资源调整工作时间 (51) 3.7 记录资源 (54) 3.8 小结 (54)

Project入门 本章内容: ?了解Microsoft Office Project 2007产品系列 ?了解优秀的项目管理工具如何帮助完成任务 ?启动Project Standard或Project Professional,辨别Project窗口的主要组成部分 ?使用视图以不同方式显示项目计划的详细信息 ?使用报表打印项目计划的详细信息 ?创建项目计划和输入项目开始日期 ?设置项目的工作和非工作时间 ?输入项目计划属性 项目管理是一门实践丰富的艺术与科学。不论您正在参与项目管理,还是将要进行项目管理,阅读本书都是一个绝佳的学习机会。 就其核心而言,项目管理是一种融合技能与工具的“工具箱”,有助于预测和控制组织工作的成果。除了项目,组织还有其他工作。项目(如电影项目)与持续业务(Ongoing Operation)(如工资单服务)截然不同,因为项目是临时性的工作,产生唯一性的成果或最终结果。凭借优秀的项目管理系统,您可以解决以下问题: ?要取得项目的可交付成果,必须执行什么任务,以何种顺序执行? ?应于何时执行每一个任务? ?谁来完成这些任务? ?成本是多少? ?如果某些任务没有按计划完成,该怎么办? ?对那些关心项目的人而言,交流项目详情的最佳方式是什么? 良好的项目管理并不能保证每个项目一定成功,但不良的项目管理却会是失败的成因之一。 在您的项目管理工具箱中,Microsoft Office Project 2007应是最常用的工具之一。本书会介绍如何使用Project建立项目计划(包括任务和资源的分配),如何使用Project中扩展的格式化特性来组织和格式化项目计划的详细信息,如何跟踪实际工作与计划是否吻合,以及当工作与计划脱轨时如何采取补救措施。 如果是刚刚接触项目管理,可以在此处暂停,先阅读附录A,然后再继续阅读本章。这样做不会占用多长时间,有助于恰当地评估和组织自己的项目日程安排需求,进而利用Project建立稳固的计划。 本书的大部分练习围绕着一个虚构的电影公司 (Southridge Video and Film Productions)展开。您任职于电影公司的可能性不大,但您肯定看过电视广告或电影。每个电视广告或电影就是一个项目,事实上,有一些还是相当复杂的项目,涉及成百上千的资源但时间限制却很严苛。Southridge Video遇到的许多日程安排问题,您可能都会觉得似曾相识,如此一来,

标准的软件开发过程

标准的软件开发过程 软件开发的标准过程包括六个阶段,而六个阶段需要编写的各类文件达14种之多,在每个阶段需要编写哪些文件,以及这些文件的主要内容见下: 1.可行性与计划研究阶段 可行性研究报告:在可行性研究与计划阶段内,要确定该软件的开发目标和总的要求,要进行可行性分析、投资一收益分析、制订开发计划,并完成应编制的文件。 项目开发计划:编制项目开发计划的目的是用文件的形式,把对于在开发过程中各项工作的负责人员、开发进度、所需经费预算、所需软、硬件条件等问题作出的安排记载下来,以便根据本计划开展和检查本项目的开发工作。 2.需求分析阶段 软件需求说明书:软件需求说明书的编制是为了使用户和软件开发者双方对该软件的初始规定有一个共同的理解,使之成为整个开发工作的基础。内容包括对功能的规定对性能的规定等。 数据要求说明书:数据要求说明书的编制目的是为了向整个开发时期提供关于被处理数据的描述和数据采集要求的技术信息。 初步的用户手册:用户手册的编制是要使用非专门术语的语言,充分地描述该软件系统所具有的功能及基本的使用方法。使用户(或潜在用户)通过本手册能够了解该软件的用途,并且能够确定在什么情况下,如何使用它。 3.设计阶段 概要设计说明书:概要设计说明书又可称系统设计说明书,这里所说的系统是指程序系统。 编制的目的是说明对程序系统的设计考虑,包括程序系统的基本处理流程、程序系统的组织结构、模块划分、功能分配、接口设计。运行设计、数据结构设计和出错处理设计等,为程序的详细设计提供基础。

详细设计说明书:详细设计说明书又可称程序设计说明书。编制目的是说明一个软件系统各个层次中的每一个程序(每个模块或子程序)的设计考虑,如果一个软件系统比较简单,层次很少,本文件可以不单独编写,有关内容合并入概要设计说明书。 数据库设计说明书:数据库设计说明书的编制目的是对于设计中的数据库的所有标识、逻辑结构和物理结构作出具体的设计规定。 测试计划初稿:这里所说的测试,主要是指整个程序系统的组装测试和确认测试。本文件的编制是为了提供一个对该软件的测试计划,包括对每项测试活动的内容、进度安排、设计考虑、测试数据的整理方法及评价准则。4.实现阶段 模块开发卷宗(开始编写):模块开发卷宗是在模块开发过程中逐步编写出来的,每完成一个模块或一组密切相关的模块的复审时编写一份,应该把所有的模块开发卷宗汇集在一起。 编写的目的是记录和汇总低层次开发的进度和结果,以便于对整个模块开发工作的管理和复审,并为将来的维护提供非常有用的技术信息。 用户手册完工 操作手册:操作手册的编制是为了向操作人员提供该软件每一个运行的具体过程和有关知识,包括操作方法的细节。 测试计划终稿: 5.测试阶段 模块开发卷宗(此阶段内必须完成) 测试分析报告:测试分析报告的编写是为了把组装测试和确认测试的结果、发现及分析写成文件加以记载。 项目开发总结报告:项目开发总结报告的编制是为了总结本项目开发工作的经验,说明实际取得的开发结果以及对整个开发工作的各个方面的评价。

软件开发方法与过程

(1)软件开发过程是什么? 软件开发过程是按照软件工业化的标准定义的心之所向,所向披靡 ?在软件开发中必须具有的一系列过程规范; ?软件开发过程是定义在软件中的软件需求、软件设计、软件编码、软件测试、软件部署的实现目标和规范化的管理方法论; ?软件开发过程是保证软件工业化生产的法典;?软件开发过程做的是:定义标准和为了达到标准的路; ?软件开发过程要改善的是:软件开发的效率和质量; ?软件开发过程的实现最重要的是:人。 (2)大多数软件项目失败的原因: a)不完整、不现实的项目需求 b)对需求的变更束手无策 c)脆弱的架构 d)采用不成熟的技术 e)测试的不充分性 f)拙劣的进度计划和评估 g)缺乏资源 h)不具备项目管理方法 i)缺少管理层的支持 (3)软件工程的三个要素:方法、工具和过程(4)A software project failed if It is delivered late It is runs over the budget It does not satisfy the customer’s need It is of poor quality Classical software development methods have not solved software crisis.传统的软件开发方法没有能够解决软件危机。 (5)A software engineer’s job: a)Make a working plan.制定工作计划 b)Carry out it.(Do their work according to this plan)按照此计划工作 c)Try his/her best to produce high-quality products.尽最大努力生产 出高质量产品 (6)3 Key aspects a)Quality products 高质量产品 b)Expected costs c)On agreed schedule (7)Summary of PSP PSP is a framework designed to teach software engineers to do better work Estimate and plan →track →improve quality Quality methods take time to learn and practice,but it will help you in you engineering career Establish goals →measure quality → understand the process → change and reure process → measure & analyze the results → recycle improving Identify the tasks you do (8)敏捷软件开发宣言 个体和交互胜过过程和工具 可以做到工具的软件胜过面面俱到的文档 客户合作胜过合同谈判 响应变化胜过遵循计划 敏捷开发的原则: 1、我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。 尽早交付具有部分功能的系统和质量系统之间具有很强的相关性 2、即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。 关于态度的声明,敏捷过程的参与者不惧怕变化,努力保持软件结构的灵活性。 3、经常性地交付可以工作的软件,交付的间隔可以从几周到几个月,交付的时间越短越好。 关注的目标是交付满足客户需要的东西。它们是敏捷实践区别其他过程的特征所在。 4、在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。 有意义的、频繁的交互,必须对软件项目进行持续不断地引导。 5、围绕被激励起来的个人来构建项目。给他们提供所需要的环境和支持,并且信任他们能够完成工作。 人被认为是项目取得成功的最重要的因素。 6、在团队内部,最具有效果并且富有效率的传递信息的方法就是面对面的交谈。首要的、默认的沟通方式。 7、工作的软件是首要的进度度量标准。 敏捷项目通过度量当前软件满足客户需求的数量来度量开发速度。 8、敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期、恒定的开发速度。不是 50米短跑,而是马拉松。以快速但是可持续的速度行进。 9、不断关注优秀的技能和好的设计会增强敏捷能力。

国内项目管理软件哪个好

国内项目管理软件哪个好 导读: 随着互联网技术的飞速发展,项目管理技术也得以快速进步。一款好的项目管理软件,能够让整个企业高效运作、迅速成长。随着现代项目需求日趋复杂和个性,挑选一个好用的项目管理软件还是非常有必要的。那么国内项目管理软件都有哪些好用的呢?下面就让小编带大家一起来看看市吧。 免费获取甘特图软件:https://www.360docs.net/doc/cc11647602.html,/project/gantt/ NO.1 Edraw Project 这是一款专业的企业级项目管理软件,你可以用它轻松地创建甘特图进行项目规划,同时还可以一键快速生成各种报表。随时随地掌控项目的进度。除此之外,Edraw Project还支持与数据进行完美交互,能够将制作好的项目管理甘特图导出为Excel格式或者PDF文档,也能将Excel格式一键自动生成甘特图,十分便捷。 NO.2 Asana Asana是一款免费的项目管理应用程序,它有一个直观的任务管理系统,允许用户可视化目标,跟踪时间。除此之外还有日历功能,可以将团队任务直接映射到仪表板上,不过暂时还无法离线使用。

NO.3 NavalPlan NavalPlanNavalPlan是一款基于Web的项目规划软件、项目监测软件和项目控制软件。可以进行超负荷的资源分配控制、挣值管理、工作报告的成本分析管理,还可以进行规划方案、多任务进度测量、质量表单管理等。 NO.4 Wrike Wrike属于一款比较偏年轻化的管理工具,它比较适合小团队合作,用户可以在其无限数量的项目上进行隐私设置,并与Wrike 的实时活动流进行交互。同时Wrike也提供了移动版本,可以随时随地进行管理项目进程。

软件开发过程

软件开发过程 一. 规范 规范应当是从简单到复杂的,我们首先制定的规范并不复杂,只是对如何使用异常机制的一些定义。要获得这些规范并不困难,大部分介绍异常的技术资料中都给出了很多的建议。理解并使用它们,仅此而已。 1、对不正常的条件使用异常,尽可能准确的使用预定义的异常。这一目标来自于Effective Java中的条款39和条款42。其目的是为了能够正确的使用异常。使用系统提供的异常能够减少代码,提高代码的可读性(特别是新人不需要了解自定义的异常结构)。大多数情况下,系统提供的异常已经足够用了。 2、尽可能多的收集异常发生时的上下文信息。异常之所以比返回码优秀的一个原因就是它能够将错误类型化,提供比错误代码多得多的信息。因此,我们实在没理由不使用这一功能。 3、正确的使用异常转义,并保留原异常信息。异常转义的目的是为了让客户端能够得到易于理解的类型。我们想象一个用户登录的情境,假设用户数据保存在一个文件中,当文件中找不到用户名的相关记录的时候抛出一个RecordNotFoundException异常,系统截获了这个异常,并将其发布给用户,问题在于,用户会觉得非常的奇怪,为什么会是记录没有找到呢?因此,建立一个IllegalUserException异常会更适合于这种情况。 4、针对不同的抽象层次定义不同的异常。正如我们在第三点中提到的,RecordNotFoundException异常并不适合于用户这个层次。但是,这个异常对于程序员调试代码就很有意义了。 5、将异常发布到合适的地方。有计算机的地方就一定有输入和输出。如果把异常发生时的信息收集看作输入,那么异常的输出是什么呢?可能是错误的提示信息,可能是一个显示错误信息的网页,可能是日志中的记录,可能是一条短信,也可能是一封EMail。这些就是异常的输出形式。此外,异常的输出还需要正确的确定对象,对用户来说,异常只要有一个友好的提醒方式就够了,但对于管理者来说,异常需要记录下来,或是通过异步消息进行通知。 这就是规范,你也可以把它称为最佳实践、建议等名词。当然,它还可以更加的细化,但事情总有个过程,一开始把问题弄得过于复杂未必是一件好事,你说呢? 二.技能 有了规范是一回事,能否把规范运用起来则取决于人员的技能。在有一部描述清末的电影中,有这样一个情节,留学归来的知识分子为了提高民众的知识水平,不惜花费巨资免费发放报纸,这一举措大受欢迎,可惜大部分的民众都不识字,他们要报纸的原因只是这东西烧火很方便。 所以其次要解决的问题就是,大部分的程序员没有足够的异常处理经方面的技能。如果程序员没有这方面的概念,你把一本异常管理最佳实践放在他的面前会有用吗? 学会使用异常并不困难,困难的是如何让程序员正确的使用异常。什么时候使用系统定义的异常。什么时候使用自定义的异常,自定义异常又该如何设计。这些都是程序员的技能问题。基于这种思路,首先做的是培训,而培训的目标是让程序员理解异常的机制,让程序员能够把异常运用到工作中。培训不等于上课,因为我们的目标是能够影响程序员的行为,单靠上课是无法达成目标的,因此我们把几种方式综合使用。一般来说,程序员对未知的技术总是

微软Project项目管理软件简介

微软Project项目管理软件简介 版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。http://d ingwe i.b lo g.51cto.co m/194576/34135有些朋友可能对微软的Project产品比较陌生,今天我来做个简要介绍。 微软的Project软件是Office办公软件的组件之一,是一个通用的项目管理工具软件,它集成了国际上许多现代的、成熟的管理理念和管理方法,能够帮助项目经理们高效准确的定义和管理各类项目。 根据美国项目管理协会的定义,项目的管理过程被划分成5个阶段(过程组)。 这些过程组是相互联系的:一个过程组的输出可能是另外一个过程组的输入,并且这些过程有可能是连续的。微软的Project软件能够在这5个阶段中分别发挥重要的作用: 1、建议阶段: ?确立项目需求和目标 ?定义项目的基本信息,包括工期和预算 ?预约人力资源和材料资源 ?检查项目的全景,获得干系人的批准 2、启动和计划阶段: ?确定项目的里程碑、可交付物、任务、范围 ?开发和调整项目进度计划 ?确定技能、设备、材料的需求 3、实施阶段: ?将资源分配到项目的各项任务中 ?保存比较基准,跟踪任务的进度 ?调整计划以适应工期和预算的变更 4、控制阶段: ?分析项目信息 ?沟通和报告 ?生成报告,展示项目进展、成本和资源的利用状况 5、收尾阶段: ?总结经验教训 ?创建项目模板 ?整理与归档项目文件 总之,使用Project软件,我们不仅可以创建项目、定义分层任务,使项目管理者从大量烦琐的计算绘图中解脱出来,而且还可以设置企业资源和项目成本等基础信息,轻松实现资源的调度和任务的分配。在项目实施阶段,Project能够跟踪和分析项目进度,分析、预测和控制项目成本,以保证项目如期顺利完成,资源得到有效利用,提高经济效益。 Project产品可以分为以下几个不同的版本: Project Standard:标准版,只能用于桌面端,适用于独立进行项目管理的PM。

微软开发工具介绍

微软开发工具介绍 1 VSTS结构图 微软目前的企业开发解决方案套件是Visual Studio 2005 Team System产品系列. Visual Studio 2005 Team System的组成及功能 Visual Studio 2005 Team System 提供了全面紧密集成并支持可扩展的开发工具和软件生命周期集成的基础平台。VSTS可以实现软件开发团队在一个统一的平台上进行团队开发,实现团队成员之间的高效协作和沟通,实现与第三方产品的无缝集成(需求管理工具Borland CaliberRM、配置管理工具StarTeam、测试工具LoadRunner等等),有效的降低在软件项目管理上的难度,大大地提高团队项目的开发效率,集成的多种测试功能确保了项目的质量。 Visual Studio 2005 Team System直接支持以下项目团队成员角色的协同作业:

? 架构师:Visual Studio 2005 Team Architect Edition 包括集成、高效的工具,用于直观地构建面向服务的解决方案,这些解决方案从部署环境的初始状态开始设计。 ? 开发人员:Visual Studio 2005 Team Developer Edition 为开发人员提供高级的静态分析、代码剖析、代码涵盖以及单元测试工具,使团队能够在整个生命周期中尽早、频繁地规划质量。 ? 测试人员:Visual Studio 2005 Team Test Edition 构建于开发人员版本之上,更好地为测试人员提供了用于管理和运行各种测试(包括单元测试、手工测试和Web 测试)的工具,以及使团队能够在应用程序部署之前检验其性能的高级负载测试工具。 ? 项目管理人员:Visual Studio 2005 Team Foundation Server 提供了一组针对软件项目管理人员的项目内容管理工具:Microsoft Excel、Microsoft Project 和Windows SharePoint Services。VSTS与Microsoft Office 集成,项目管理人员不再需要手工将数据从这些应用程序映射到供工程团队使用的数据。项目站点提供仪表盘式的项目状态视图,以及向下追溯风险承担者的功能。丰富的团队项目实时报表提供了从整个团队工作流数据服务器(Visual Studio 2005 Team Foundation Server)中收集的汇总数据,便于项目管理人员作出实时的项目决策。另外,Visual Studio 2005 Team System采用基于业界公认的,并可扩展的MSF for CMMI和MSF for Agile等经典项目过程模版来驱动生命周期,大大提高了软件项目管理的规范性, 大大降低了项目管理人员的管理难度。 2 Visual Studio 2005 Team Suite Visual Studio 2005 Team Suite是Visual Studio 2005中最高端产品,是各个角色版本(Software Architects, Developer, Tester, Database Professionals)的开发工具的总和。

软件开发规划项目规范标准

软件项目开发和管理规范 本文阐述软件项目开发和管理的流程规范,作为软件项目开发的高级指引,本规范定义了软件开发的各个阶段以及每个阶段的工作活动和工件,但不对活动和工件的细节作过多规定。在项目开发过程中,每个项目根据自身的需要确定这些活动和工件的细节。 项目阶段 图2-1 项目开发的五个阶段 ?启动阶段 这个阶段的工作目的是决定一个项目是否需要启动。为了达到这个目的,首先要明确项目的总体战略目标,对项目的需要建立认同。即确定到底需要做什么、开发什么产品或提供什么服务,以及需要解决什么样的问题和需要满足客户或市场的什么要求等,同时还要总结项目工作的范围、所需资源、大约开支、各种风险,以及该项目不执行的其他替代选择等。这些代表了对整个项目目标从战略角度和宏观层次所进行的分析,通过项目的意向书总结出来,由此确证客户或项目发起人和赞助者的要求与期望,并帮助他们判定项目是否上马。项目意向总结书的通过及项目被批准上马形成了这个项目的起始点。 ?计划阶段 这个阶段的工作是为整个项目做计划。项目开始后,首先要确定项目的具体范围,明确定出项目到底要做什么,总结、归纳并定出产品的功能。然后进一步制定项目的计划,列出每项具体工作,并建立所有工作任务的重要性及顺序;确定每项工作的执行人和所需资源;根据人员的配置和能力设定各项工作和整个项目的完成时间表。 ?执行阶段

这个阶段的工作是通过执行项目的计划来完成项目的任务。它包括落实一切所需资源,如:人员、设备、费用、技术、信息,由管理者领导全体项目参与者开展各项工作。同时跟踪各项具体工作和整个项目的进度,定期向全体项目人员及项目的发起人报告项目状态。 ?控制阶段 这个阶段的工作是确证项目工作的结果符合项目的计划。它通过对项目结果的衡量和审核,与项目计划所期望的结果进行比较,找出实际结果与计划的差别,并制定处理措施。这个阶段的工作还包括对项目进程中出现的任何更改要求进行审核和批准。同时调解项目进程中出现的各种问题,如:对缺乏的资源的补偿调节;对项目的进度表及各项具体工作的优先级或顺序的修订。 ?结束阶段 这个阶段的工作是确保项目的最终结果或提交物达到计划的要求,并对完成的结果作可接受的确认。还包括在项目完成之后的收尾工作,对整个项目的经历进行总结,修订项目文档,用户培训等。 阶段完成标志 在项目开发过程中,当一个阶段完成后才会开展下一个阶段的工作;另外,“某个阶段完成”通常被定义为项目的一个里程碑,里程碑标识了项目的进度,它是项目开发和控制的重要参考,对整个项目有重要的意义。因此,“确证某个阶段是否已经完成”的工作非常有重要。 ?每一个阶段的结束以它特定任务的完成为象征 只有当某个阶段中被规定的所有工作任务都完成了,这个阶段才算真正结束,整个项目才可以进入到下一个阶段中去。反过来说,要是阶段中某个任务没有全部完成,按照项目的定义,整个阶段就不能算是完成,因此项目就不能进入到下一个阶段去。 ?衡量阶段结束的工作结果必须是实在的交付品 阶段中的任务是否完成是透过任务活动中产生的交付品来体现的,交付品必须是可交付的、非抽象的、实质的并且可以通过用衡量的方法来判断是否真正地完成了的具体事物。如:某一阶段的完成是以建造一个样品或完成某分文件作为象征。任何项目阶段的结束,都应该有这样的实质性东西的完成作为象征。 ?跨阶段的进程以阶段结尾的合格验证和审核来决定 当一个阶段结束时,在进入到下一个阶段之前所需要做的工作应包括对交付品进行合格验证,并检查这一阶段的工作质量和效率,由此判断是否可以进入到下一个阶段。这些检验象征了一个阶段的结尾终点,表示项目的进程离开了上一个阶段而进入了下一个阶段。

软件开发流程-论文

毕业设计(论文)题目:软件开发流程管理 班级:11工升 学号:1000303071 姓名: 指导教师: 2014年11月

从软件开发最初至今,不断地有新的软件开发技术产生,但是在软件开发能力和质量方面却始终存在达不到预计目标这一问题。每一个软件开发的最大目标,就是最大限度提高质量与生产率。而影响质量与生产率的三个关键因素:过程、人和技术,因此,我们除了提高技术能力,培养更多优质人才之外,还需要制定一套软件开发过程管理标准,并在软件开发过程中对这一标准不断地完善,以达到提高软件质量与生产率的目标。 本文结合CMM(软件过程成熟度模型),对软件开发、维护全过程进行标准化、规范化管理,制定出软件开发管理标准。 关键词:软件开发过程,管理标准

第一章软件开发的概念及目的 (4) 第二章软件开发流程划分及开发环境 (4) 2.1.软件开发阶段划分 (4) 2.2.软件开发环境需求........................... 错误!未定义书签。第三章软件开发过程中存在的问题 .................... 错误!未定义书签。 3.1.对用户方需求的掌握不全面................... 错误!未定义书签。 3.2.对软件的价值认识不清晰..................... 错误!未定义书签。 3.3.跟用户方的合作不顺利....................... 错误!未定义书签。 3.4.开发队伍的结构不合理....................... 错误!未定义书签。 3.5.软件开发管理制度不健全..................... 错误!未定义书签。 3.6.开发团队人员不稳定......................... 错误!未定义书签。第四章软件开发流程管理规范 . (10) 4.1.什么是CMM (10) 4.2.结合CMM制定开发流程管理方案 (11) 4.2.1软件项目生命周期模型................... 错误!未定义书签。 4.2.2需求分析流程图及描述................... 错误!未定义书签。 4.2.3设计流程图及描述....................... 错误!未定义书签。 4.2.4编码流程图及描述....................... 错误!未定义书签。 4.2.5测试流程图及描述....................... 错误!未定义书签。 4.2.6验收流程图及描述 (22) 第四章软件开发行业前景 (23) 参考文献........................................... 错误!未定义书签。

相关文档
最新文档