1、第一章(第一讲)软件工程概述本讲的主要内容1.有关软件工程及其课程2.软件产业的发展背景3.软件、软件产品及其特点4.软件危机5.软件工程1、About Software Engineering内容丰富,课时有限(抓紧课外时间)基本概念、原理、规律软件开发方法、工具和环境,软件开发过程软件开发管理,软件产品规范新兴学科,发展迅速实践性强参考书籍参考书籍 软件工程实践者的研究方法第六版,Roger S.Pressman,机械工业出版社 软件工程第六版,Ian Sommerville,机械工业出版社 软件工程理论与实践第二版,Shari Lawrence Pfleeger,高等教育出版社 实用软件
2、工程第二版,郑人杰、殷人昆、陶永雷,清华大学出版社有关SE的一些组织及网站 SWEBOKThe Software Engineering Body of Knowledge ACMAssociation for Computer Machinery IEEE 卡耐基.梅隆大学的SEI对软件工程最浅显的认识 对工程的认识 需求分析的重要性 设计与实现仅仅是软件工程的一小部分 规范与标准的重要性 工具的重要性 质量的意义及重要性人们对软件开发的新认识 个人技巧 团队意识 效率第一 清晰度第一Return2、软件产业发展的背景 人类社会正经历着一场前所未有的由工业社会向信息社会的巨变,软件产业“任重
3、道短”。从1991年起,信息产业保持了1020%的增长速度。2000年,全球IT产业的产值为5000亿美元。2001年,全球IT产值首次超过汽车工业和钢铁工业。硬、软件开发人员的比例为1:8 软件,正处于信息技术的核心位置,触及到人类社会的各个角落和人类文化的各个层次。全球10大软件企业,有7个在美国,2个在日本。在这辉煌的另一面,“软件危机”一直折磨着软件业界。人类社会已经发展到信息时代 茹毛饮血的石器时代 文明初肇的青铜时代 工业革命的蒸汽时代 社会化大生产的电气时代 信息膨胀的数字时代Return计算机科学技术的巨大作用 开拓人类认识自然改造自然的新资源物质资源、能量资源信息资源 增添了
4、人类发展科学技术的新手段理论推倒、科学实验、虚拟与现实 提高了人类创造文化的新工具人的行为、思想、言语、行动 引起了人类工作方式与生活方式的变化Return软件的历史 第一个写软件的人是Augusta Ada Lovelace,1860年尝试为机械式计算机写软件,但失败了。晶体管的发明为存储器的大量应用提供了基础。50年代,第一台电子计算机的问世,以写软件为职业的人开始出现。60年代,美国大学开始授予计算机专业的学位,有了软件课程。在通用硬件普及的初期,软件的通用性却是很有限的。软件开发也没有什么系统的方法可以遵循,是个人电脑的思维过程,带有强烈的个人色彩。Return3、软件的定义 Soft
5、ware=Program+Data+Document 其中:程序是按照事先设计的功能和性能要求执行的指令序列;数据是使程序能够正常操纵信息的数据结构;文档是与程序开发维护和使用有关的各种图文资料。软件产品的特性 是一种逻辑实体,具有高度复杂性和抽象性。软件发过程有别于一般物质的制造过程。一旦研制开发成功,就可以大量拷贝同一内容的副本。软件没有磨损、老化的问题,其生命周期曲线不符合所谓的“浴缸曲线”。对硬件和环境的依赖性,导致软件移植问题。尚未完全摆脱手工作坊式的开发方式,生产效率低下。软件的成本相当昂贵。软件工作牵涉到很多社会因素。涉及机构、体制和管理方式、人们的观念和心理。时间图1.1 浴缸
6、曲线故障率Failure rate实际的曲线理想的曲线故障率时间图1.2 软件故障曲线Change软件的分类 可以按功能、规模、工作方式、可靠性高低等进行划分 有关软件的词汇Custom softwareGeneric softwareEmbedded softwareSafety-critical softwareCOTS(Commercial Off-the-shelf)I will create a software to update the database.(some software,a piece of software,a software system)Return4、软件
7、危机(Software Crisis)首次提出:1968年北大西洋公约组织在联邦德国召开的国际学术会议上。软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。可以把软件危机概括为两个方面的问题软件开发十分困难,难以满足不断增长且日趋复杂的需求;如何维护数量不断膨胀的软件产品。Crisis or Depression or Chronic Affliction?从软件工程几十年的发展历程来看,软件危机不是”crisis”所能形容的,而更象”chronic affliction”,是一种顽固的慢性痛苦。软件危机的根本原因是软件系统高度复杂、难于驾驭和软件开发所带有的个人色彩。软件危机
8、的具体表现 对开发成本和进度的估计常常不准确。开发成本超出预算和不能按时交付一再拖延的现象并不罕见。用户对“已完成”系统不满意的现象经常发生。软件质量往往靠不住。Bug一大堆,Patch一个接一个。软件的可维护程度非常之低,即“维护墙”问题。软件通常没有适当的文档资料。软件成本在整个系统中比重逐年提高。软件开发生产率的提高赶不上硬件发展和需求增长。软件危机产生的原因 软件本身的特点所决定的。软件开发和维护的方法不正确(在不断地发展之中)忽视软件开发前期的需求分析;开发过程没有统一的、规范的方法论的指导,缺乏过程管理,文档资料不齐全,忽视人与人的交流;忽视测试工作,所提交的软件质量不高;轻视软件
9、的维护。硬件技术和产品的发展速度远远大于软件。计算机应用普及社会对软件的依赖对软件的需求、质量和可靠性的要求巨增。设计问题、资源问题使得我们难以支持和增强已有的软件,即所谓的“维护墙”问题。Return5、软件工程 1968年秋季,NATO(北约)的科技委员会召集了近50名一流的编程人员、计算机科学家和工业界巨头,讨论和制定摆脱“软件危机”的对策。Fritz Bauer在会议上首次提出“软件工程”概念。软件工程的目标低成本高质量按时交付软件工程定义 软件工程是一门研究如何用系统化、规范化、数量化等工程原则和方法进行软件开发和维护的学科。软件工程包括两方面内容:软件开发技术和软件项目管理。软件开
10、发技术包括软件开发方法学、软件工具和软件工程环境。软件项目管理包括软件度量、项目估算、进度控制、人员组织、配置管理、项目计划等。Fritz Bauer的定义 软件工程是为了经济地获得可靠的,能在实际的机器上高效运行的软件而建立和使用的科学的工程原则。IEEE的定义 软件工程是(1)将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化思想应用于软件开发过程中,(2)上述方法的研究。软件工程的本质特性 关注大型程序的构造 软件工程的中心课题是控制复杂性 软件需求不断变化 旨在提高软件开发的效率 团队合作是软件工程顺利实施的关键 软件必须有效支持它的用户 由一种文化背景的人
11、替另一种文化背景的人创造产品软件工程原则(软件工程原则(1)质量原则质量原则 避免产生缺陷(具有恰当的标准、规范、质量审计过程等)确保尽早地发现缺陷并加以改正 辨别和消除产生缺陷的原因和征兆 根据标准和规范对生产的各个过程进行独立审计(SEI-CMM等)软件工程原则(软件工程原则(2)管理原则管理原则 规定任务和职责 制定工作计划 按照计划跟踪进度 不断地完善计划 在CMM中有一个PDCA循环(Plan,Do,Check,Action)软件工程原则(软件工程原则(3)工程原则工程原则 分析问题 分解任务 控制各个部门之间的关系 为了更好地贯彻这些原则,实现软件工程的目标,我们必须连接软件工程的
12、思想,研究软件工程的工具、方法、过程和质量管理。B.W.Boehm 软件工程基本原理软件工程基本原理1)用分阶段的生命周期计划严格管理2)坚持进行阶段评审3)实行严格的产品控制4)采用先进的程序设计技术5)开发过程具有可见性,所获结果清楚,便以审查6)开发人员少而精7)承认不断改进软件工程实践的必要性基线(Baseline)通过正式复审的规格说明或中间产品(artifact),可以作为进一步开发的基础,并且只有通过正式的变更控制过程才能改变它。(IEEE)基线的特征具有明确的标识具有明确的内容经过正式审批严格控制变更里程碑(Milestone)里程碑是用来说明项目进展情况的事件,通常把一个开发
13、活动的结束或一项开发任务的完成定义为一个里程碑。里程碑必须与软件开发工作的进展情况密切相关,里程碑作为任务完成的标志必须非常明显,即里程碑具有很高的可见性。软件工程总体面临的困难与风险 复杂性与大量的细节(火星探测器的失败)技术的不确定性(技术的发展与开发人员对技术的理解程度都不同)由于交流障碍而引起的需求不确定性 需求是持续变化的 不断的修改所带来的错误使得软件退化 人为和市场的风险 软件费用、可靠性、生产率、重用问题难以解决Return第一章(第二讲)软件工程过程本讲的主要内容1.软件工程方法学2.软件生命周期3.软件过程4.软件过程模型1、软件工程方法、软件工程方法学学通常把软件生命周期
14、全过程中使用的一整套技术方法的集合成为软件工程方法学(methodology),也成为范型(paradigm)软件工程方法学的3个要素方法工具过程传统的软件工程方法学结构化范型或生命周期方法学要么面向行为以功能分解为主(基于数据流图的结构化分析与设计方法),要么面向数据(Jackson方法)面向对象方法学 以数据为中心,把数据和对数据的操作紧密地结合起来,用对象分解代替传统的功能分解。面向对象方法学的4个要点把对象作为融合数据和操作的统一的构件把所有对象都划分成类子类自动拥有父类中定义的数据和操作,即继承对象间仅能通过发送消息互相联系Return2、软件生存周期、软件生存周期 软件生存周期(L
15、ife Cycle)是指一个软件从提出开发要求开始直到该软件报废为止的整个时期。把整个生存周期划分为若干阶段,使得每个阶段有明确的任务,使规模大、结构复杂和管理复杂的软件开发变得容易控制和管理。软件生存周期各阶段的划分应遵循的基本原则:各阶段的任务应尽可能相对独立,同一阶段各项任务的性质尽可能相同,从而降低每个阶段任务的复杂程度,简化不同阶段之间的联系,有利于软件项目开发的组织管理。软件生命周期的阶段划分软件生命周期的阶段划分 软件定义阶段问题定义可行性研究需求分析 软件开发阶段总体设计详细设计编码和单元测试综合测试 运行阶段软件维护软件定义阶段软件定义阶段 问题定义:关于问题性质、工程目标和
16、工程规模的扼要描述 可行性研究,即高层的分析和设计过程,以回答是否存在可行的解决方法。需求分析:准确的“做什么”的描述。软件开发阶段软件开发阶段 概要设计结构设计,系统设计建立软件的总体结构,即模块结构 详细设计算法设计,过程设计设计每个模块的结构,IPO图或PDL语言 编码与单元测试生成源程序代码和单元测试方案、数据和结果,由编程人员进行 综合测试 通过各种测试和调试,是软件达到预订的要求软件运行阶段软件运行阶段 维护维护通过各种必要的维护活动使系统持久地满足用户的需要 四种类型的维护四种类型的维护改正性维护适应性维护完善性维护预防性维护Return软件开发的四个要素 人员 项目 产品 过程
17、过程产品项目人员工具参与者结果自动化模板3、软件工程过程、软件工程过程 一个过程定义了为达到每个确定的目标,需要什么人在什么时间以何种方式做何种工作(Goal,Who,When,How,What)。软件工程过程规定了获取、供应、开发、操作和维护软件时,要实施的过程、活动和任务。其目的是为各种人员提供一个公共的框架,以便用相同的语言进行交流。Cont.一个开发机构为开发特定的软件需要制订一系列的工作步骤(软件工程过程),其中包含和涉及软件工程所有参与者的各种活动、任务。基本的软件过程活动包括:规格说明、开发、确认和演进。CMM的软件工程过程包含获取、供应、开发、操作、维护、管理、支持七个过程。软
18、件过程因素包括四个方面技术工具人员组织模式过程定义的作用 Process vs Music score 用于对 Customer,User,Developer,Manager的指导,一个广泛适用的过程使得所有参与人员更好地理解自己所扮演的角色、他人做什么。促使过程的有机结合和改善,获得“最好过程”可以使公司内部的培训标准化。由于过程的可重复性,利于开发进度的安排,利于成本估算。统一过程(RUP)RUP的突出特点用况驱动(系统功能)以构架为中心(表现形式)迭代和增量开发(过程实施)ReturnUML(Unified Modeling Language)1994,OO思想已经贯穿整个软件生存期,具
19、有影响的OOA&D方法达50余种。UML是一种对软件密集型系统进行可视化、详述、构造和文档化的建模语言,主要用于分析和设计阶段的系统建模。UML 2.01994Booch方法方法Rumbaugh OMT Coad/YourdonFire Smith 方法方法 Jacobson OOSE1995.10发布发布Unified Method 0.81996.6发布发布UML 0.9不包含过程指导不包含过程指导Rational联合联合12家公司家公司成立成立UML组织,形成组织,形成UML 1.0,1997.1提交提交给给OMG1997.11.4,OMG采纳采纳UML 1.12002发布发布UML 2
20、.04、软件过程模型、软件过程模型 模型所谓模型是为了理解事物而对事物做出的一种抽象,它忽略不必要的细节,是事物的一种抽象形式、一个规划、一个程式。软件开发模型软件开发全部过程、活动和任务的结构框架。软件过程模型的种类软件过程模型的种类 瀑布模型 快速原型模型针对事先不能完成定义需求的软件开发原型系统重在“快速”周期开发模型(增量和迭代模型)完整的体系结构的实现确定多次迭代 螺旋模型考虑风险因素,由Boehm提出 喷泉模型多次重复,无间隙适用于面向对象技术(复用技术)瀑布模型瀑布模型瀑布模型(Waterfall Model)软件生存周期模型 (Classic Life Cycle Model)
21、线性顺序模型(Linear Sequential Model)问题定义需求分析概要设计详细设计编码测试维护瀑布模型的三个特点瀑布模型的三个特点 阶段间具有顺序性和依赖性 推迟实现的观点 质量保证的观点Cost to changeAfter release图1.3 The impact of changeDefinitionDevelopment1.56x 1x60100 x计划需求分析概要设计详细设计编码测试维护环维护环计划需求分析运行评价编码设计The Waterfall Model With Maintenance Circle运行维护需求分析概要设计详细设计编码单元测试集成测试验收测试P
22、rototyping系统测试ValidateVerifyThe Waterfall Model With Prototyping瀑布模型的优点瀑布模型的优点 开发过程基本上是线性顺序的,便于管理 基于“明确、完备的需求”,可以获得好的开发效果运行、维护需求分析概要设计详细设计编码单元集成测试验收测试系统测试Validate RequirementsVerify DesignThe V ModelOperational Specification ModelOperational Specification(problem-oriented)Transformed Specification(i
23、mplementation oriented)TEST Execute and ReviseSystem Requirements(sometimes informal or incomplete)DeliveredSystemTransformational ModelTransform nFormal Specification problem-oriented Transform 2TEST Compare withrequirements;Update as neededSystem Requirements(sometimes informal or incomplete)Deliv
24、eredSystemTransform 1Formal Development RecordSequence of transformationsPlus rationale for themThe Phased Development ModelBuild Release 2Build Release 1Build Release 3Use Release 2Use Release 1Use Release 3TimeProduction systemDevelopment systemDevelopersUsersThe Incremental and Iterative ModelInc
25、remental DevelopmentIterative DevelopmentcreateformatcreateeditformatcreateEasyquickMore stylescreatePasteeasyMore stylescreatePasteclumsystylescreate增量开发的优点增量开发的优点 能在较短的时间内向用户提交可以完成主要功能的产品 逐步增加产品的功能,使用户有充裕的时间学习和适应新产品,减少一个全新的产品给客户组织带来的冲击The Spiral Model螺旋模型的优点螺旋模型的优点 有利于已有软件的重用 有助于把软件质量作为软件开发的一个重要目标
26、 减少了过多测试或测试不足所带来的风险 软件维护与软件开发没有本质区别问题定义系统测试需求分析概要设计详细设计编码单元测试维护集成测试提交运行The Software Development Process in Reality示例分析一 假设你开发一软件,其功能是把读入的浮点数开平方,所得到的结果精确到小数点后4位。一旦实现并测试完成后,该产品将被抛弃。你打算选用哪种过程模型?示例分析1、需求很明确2、实现浮点数开平方的算法也很成熟不需要原型过程模型不需要原型过程模型3、一旦实现并测试完成后,该产品将被抛弃,可以不考虑产品的进化问题4、规模相对较小,功能比较单一不需要增量模型或螺旋过程模型不
27、需要增量模型或螺旋过程模型总之,使用瀑布模型即可总之,使用瀑布模型即可示例分析二 你负责 一个项目,其工作是管理公司已被广泛应用的字处理软件的新版本开发。由于市场竞争激烈,公司规定了严格的完成期限并且已经对外公布。你打算采用哪种过程模型?为什么?示例分析1.旧版本相当于一个原型,没必要再专门旧版本相当于一个原型,没必要再专门开发一个原型系统开发一个原型系统2.公司软件工程师对该软件很熟悉,有开公司软件工程师对该软件很熟悉,有开发字处理软件的丰富经验,具备采用增发字处理软件的丰富经验,具备采用增量模型开发字处理软件的技术水平量模型开发字处理软件的技术水平3.该软件广泛使用,需要进一步的改进和该软
28、件广泛使用,需要进一步的改进和扩充,以形成更新的版本扩充,以形成更新的版本4.结论:增量模型结论:增量模型Return技术审查和管理复审技术审查和管理复审 任务:在软件生存周期的每个重要的里程碑(一般是每个阶段结束时),对工程项目的成本,实际花费的经费,投资回收的前景,项目的进度等经济因素从管理角度进行审查。目的:不让错误进入下一个阶段 技术审查也是降低软件成本的一个重要措施 在技术审查合格之后再进行管理复审软件开发工具 软件工具一般是指为了支持软件人员开发和维护活动而使用的软件。软件工具发展的三个阶段工具箱软件开发环境SDE计算机辅助软件工程CASE(Computer Aided Softw
29、are Engineering)工具应该支持软件生命周期的各个阶段Requirements ManagementVisual ModelingProgramming ToolQuality AssuranceReturn1.什么是软件危机?它有哪些具体表现?2.什么是软件工程?它有哪些本质特征?3.什么是软件过程?它与软件工程方法学有何关系?4.试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明各种模型的使用范围。5.什么是基线?应有哪些基本特征?6.什么是里程碑?应有哪些基本特征?作业一作业一第二章(第三讲)可行性研究与成本效益分析本讲的主要内容1.问题定义与可行性研究2.可行性
30、研究的任务3.可行性研究的步骤4.系统流程图5.成本/效益分析GO1、问题定义 问题是什么?问题性质工程目标或前景(vision)工程规模和范围(scope)问题定义阶段结束的标准提交有关规模和目标的报告书 软件可行性研究 软件可行性研究的目的用最小的代价在尽可能短的时间内确定该软件项目是否能够开发,是否值得去开发。结束标准描述系统的高层逻辑模型成本效益分析关于“是否可行”的明确回答 Return2、软件可行性研究的任务 技术可行性 经济可行性 社会可行性 操作可行性 Return3、软件可行性研究的步骤(1)确定项目规模和目标(2)研究正在运行的系统(3)建立新系统的高层逻辑模型(4)导出和
31、评价各种方案(5)推荐可行的方案(6)编写可行性研究报告Return可行性研究是高层的分析和设计可行性研究报告(1)引言(2)可行性研究前提(3)对现有系统的分析(4)所建议系统的技术可行性分析(5)所建议系统的经济可行性分析(6)社会因素可行性分析(7)其它可供选择方案(8)结论意见4、系统流程图 系统流程图是描绘物理系统中各个元素的图形符号的集合,它表达了系统中各个元素之间的信息流动的情况。可行性研究要根据项目的概要范围、功能、性能等需求,以概括的形式描述现有系统的高层的逻辑模型,并通过概要的设计得到所建议的系统物理模型。常用符号见P29图2.1和图2.2Return一个库存管理系统的系统
32、流程图订货信息库存管理模块报告生成模块订货报告库存文件输入变更记录I/O显示磁盘联机存储处理文档5、成本/效益分析 目的:将开发成本与可能取得的效益比较和权衡,从经济角度评价开发一个新的软件项目是否可行。效益分为有形效益和无形效益有形效益可以用货币的时间价值、投资回收期、纯收人等指标进行度量无形效益主要从性质上、心理上进行衡量,很难直接进行量的比较。成本估计技术 代码行技术 任务分解技术 自动估计成本技术成本/效益分析的方法 货币的时间价值货币的时间价值 (示例见P41)F=P(1+i)F=P(1+i)n n P=FP=F(1+i)(1+i)n n投资回收期投资回收期 纯收入纯收入 投资回收率
33、投资回收率P=FP=F1 1(1+i)+F(1+i)+F2 2(1+i)(1+i)2 2+.+F+Fn n(1+i)(1+i)n n Return项目开发计划 项目概述项目概述:主要工作;软件功能、性能;条件;用户及合同承包者承担的工作、完成期限及其它条件限制;应交付的程序名称,所使用的语言及存储形式;应交付的文档。实施计划实施计划:任务的划分,各项任务的责任人;开发进度,按计划应完成的任务,用图表说明每项任务的开始时间和完成时间;说明项目的预算,各阶段的费用支出预算。人员组织及分工人员组织及分工 交付期限交付期限1.什么是软件危机?它有哪些具体表现?2.什么是软件工程?它有哪些本质特征?3.
34、什么是软件过程?它与软件工程方法学有何关系?4.试比较瀑布模型、快速原型模型、增量模型和螺旋模型的优缺点,说明各种模型的使用范围。5.什么是基线?应有哪些基本特征?6.什么是里程碑?应有哪些基本特征?作业一作业一什么是软件过程?它与软件工程方法学有何关系?软件过程是为了开发出高质量的软件产品软件过程是为了开发出高质量的软件产品所需完成的一系列任务的框架,它规定了所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤。完成各项任务的工作步骤。软件过程定义了运用技术方法的顺序、应软件过程定义了运用技术方法的顺序、应该交付的文档资料、为保证软件质量和协该交付的文档资料、为保证软件质量和协调软件变
35、化必须采取的管理措施,以及标调软件变化必须采取的管理措施,以及标记完成了相应开发活动的里程碑。记完成了相应开发活动的里程碑。软件过程是软件工程方法学的软件过程是软件工程方法学的3 3个重要组成个重要组成部分之一(方法、工具、过程)。部分之一(方法、工具、过程)。Return各种过程模型的特点及使用范围 瀑布模型瀑布模型三个特点三个特点文档驱动文档驱动适应需求比较明确和稳定的项目适应需求比较明确和稳定的项目 快速原型模型快速原型模型目标系统通常能够满足用户的真实需求目标系统通常能够满足用户的真实需求能够有效避免在软件开发后期的较大返工,从而能够有效避免在软件开发后期的较大返工,从而有效降低软件开
36、发成本有效降低软件开发成本开发过程基本上是线性顺序的开发过程基本上是线性顺序的适应规模大、复杂性高的项目适应规模大、复杂性高的项目CONT.增量模型增量模型能在较短的时间内向用户提交可以完成主要功能能在较短的时间内向用户提交可以完成主要功能的产品的产品逐步增加产品的功能,使用户有充裕的时间学习逐步增加产品的功能,使用户有充裕的时间学习和适应新产品,减少一个全新的产品给客户组织和适应新产品,减少一个全新的产品给客户组织带来的冲击带来的冲击开发的产品具有良好的可扩充性开发的产品具有良好的可扩充性需要首先设计出开放的软件体系结构,故要求软需要首先设计出开放的软件体系结构,故要求软件工程师有较高的技术
37、水平件工程师有较高的技术水平CONT.螺旋模型螺旋模型及时识别和分析风险及时识别和分析风险构件原型也是降低某种类型风险(如需求不真实构件原型也是降低某种类型风险(如需求不真实的风险,技术方法不当的风险等)的方法的风险,技术方法不当的风险等)的方法对可选方案和约束条件的强调有利于已有软件的对可选方案和约束条件的强调有利于已有软件的重用重用有助于把软件质量作为软件开发的一个重要目标有助于把软件质量作为软件开发的一个重要目标减少了过多测试或测试不足所带来的风险减少了过多测试或测试不足所带来的风险软件维护与软件开发没有本质区别软件维护与软件开发没有本质区别适用于内部开发的大型软件项目适用于内部开发的大
38、型软件项目Return基线(Baseline)基线是通过正式复审的规格说明或中间产品基线是通过正式复审的规格说明或中间产品(artifact),artifact),可以作为进一步开发的基础,并可以作为进一步开发的基础,并且只有通过正式的变更控制过程才能改变它。且只有通过正式的变更控制过程才能改变它。基线的特征基线的特征具有明确的标识具有明确的标识具有明确的内容具有明确的内容经过正式审批经过正式审批严格控制变更严格控制变更Return里程碑里程碑(Milestone)里程碑是用来说明项目进展情况的事件,里程碑是用来说明项目进展情况的事件,通常把一个开发活动的结束或一项开发通常把一个开发活动的结束或一项开发任务的完成定义为一个里程碑。任务的完成定义为一个里程碑。里程碑必须与软件开发工作的进展情况里程碑必须与软件开发工作的进展情况密切相关,里程碑作为任务完成的标志密切相关,里程碑作为任务完成的标志必须非常明显,即里程碑具有很高的可必须非常明显,即里程碑具有很高的可见性。见性。Return