1、软件项目开发过程软件项目开发过程中国科学院软件研究所2软件项目软件项目v什么是软件项目完成特定目的、符合用户特定需求的软件所需的组织结构和过程、规范的集合v软件项目的实施需要周密的部署,合理的规章制度,符合项目的路线(软件过程),良好的项目管理和人员安排。中国科学院软件研究所3相关流程相关流程v 软件管理特点 v 软件生存期过程 确定需求 开发策划 需求分析 概要设计 详细设计 编码与调试 测试 软件集成、联调 内部确认 复制、交付、安装 试运行、用户验收 运行、维护 退役v 软件管理 配置与变更管理 环境、工具和技术 有关软件的法规和标准 周密策划以保证 v 软件质量管理体系 八项质量管理原
2、则 过程方法 基于过程的质量管理体系模式 实施质量管理体系的意义 实施质量管理体系工作重点 企业发展力量分析中国科学院软件研究所4软件管理特点软件管理特点v 软件产品的特点 软件产品的质量,完全取决于其设计和开发水平 软件需求的模糊性、变化性使软件产品难以成熟 任何一个软件产品,或多或少总会存在一些故障(BUG) 软件人员广泛存在的不规范的开发习惯使开发过程难以管理 软件质量指标难以量化 软件测试理论和技术尚未解决软件产品正确性的验证问题v 软件产品质量特性:满足需求能力的一系列特性总和 功能、可靠性、易用性、效率、维护性、可移植性v 软件管理必须在市场(用户)需求和软件成熟性之间进行权衡 中
3、国科学院软件研究所5软件生存期过程软件生存期过程v确定需求v开发策划v需求分析v概要设计v详细设计v编码与调试v测试v软件集成、联调v内部确认v复制、交付、安装v试运行、用户验收v运行、维护v退役中国科学院软件研究所6确定需求确定需求v确定外部用户需求上级下达的软件开发课题本单位根据市场需要确定的开发课题用户合同要求的软件开发任务v输出可行性分析报告v技术、经济、社会可行性,风险对策合同及评审记录v产品要求得到规定和满足v单位有能力满足规定的要求 中国科学院软件研究所7开发策划开发策划v 确定开发目标v 确定项目开发的技术路线(开发的出发基线、对现有产品的复用、委托开发等)v 确定应遵循的标准
4、、法律和法规v 选任开发项目经理v 划分开发阶段v 确定各阶段的输入和输出文件v 确定质量控制点(评审点、验证点和确认点)及其实施的责任人、实施方式等v 设计项目开发进度v 确定开发人员并分配职责v 提出开发所需资源(软件、硬件开发环境及工具软件、设备、资金等)要求并予以落实v 制定配置管理计划和质量保证计划中国科学院软件研究所8开发策划开发策划( (续续) )v输出策划报告开发项目实施计划配置管理计划质量保证计划等中国科学院软件研究所9需求分析需求分析v确保项目的开发符合用户的需求(可测试性)v确定设计输入任务委托书/招标书前期对用户的需求调研资料可行性分析报告/投标书合同等 v编制内部需求
5、规格(说明)书v需求变更控制中国科学院软件研究所10需求的层次需求的层次-业务需求、用户需求和功能需求业务需求、用户需求和功能需求中国科学院软件研究所11需求的开发和管理需求的开发和管理中国科学院软件研究所12需求验证需求验证v验证是为了确保需求说明准确、完整地表达必要的质量特点v客户的参与在需求验证中占有重要的位置v审查需求文档v以需求为依据编写测试用例v编写用户手册v确定合格的标准中国科学院软件研究所13测试需求测试需求v测试需求有很多分类方法,最普通的一种就是按照商业功能分类v把需求分解成单元的好处:测试需求是测试用例的基础,分成单元可以更好地进行设计详细的测试需求是用来衡量测试覆盖率的
6、重要指标测试需求包括各种测试设计和开发以及所需资源 v最好分解到功能点中国科学院软件研究所14概要设计概要设计v确保产品的总体结构和模块间的关系与用户需求的一致性 v内容总体方案设计逻辑框图接口及通讯协议选用现有产品软件的选用边界(约束)条件的设计运行环境设计等v输出概要设计说明书中国科学院软件研究所15详细设计详细设计v详细设计说明书与概要设计说明书是否相一致 v内容算法设计数据格式设计实现流程设计人机界面设计测试用例设计操作设计等v输出详细设计说明书软件组装计划测试计划及测试用例安装手册(初稿)使用说明书(初稿)产品标准(初稿)中国科学院软件研究所16编码与调试编码与调试v内容编写程序代码
7、:源代码目标代码可执行代码此阶段还包括部分软件模块的局部测试、集成与联调根据待开发软件的规模、控制点及人员安排,可细分为多个小阶段v输出软件(源代码、目标代码、可执行代码及相关数据文件)文档(帮助文件等)v保证编码风格的一致性,易读性;增强软件源码的可维护性中国科学院软件研究所17测试测试v按测试发生的顺序划分模块测试:是对单个软件模块的测试单元测试:是对各个软件功能单元的测试组装测试:是对各软件单元之间的互联测试集成测试:是对硬件装置、设备和软件的加入性测试系统测试:项目组所在部门组织的对完成集成的系统的测试(是否满足产品规格要)确认测试:单位质量控制部门进行的测试(是否满足产品规格要求)验
8、收测试:在现场安装、调试结束并经试运行后,与顾客一起,就满足合同情况进行的测试(是否满足合同要求)中国科学院软件研究所18测试测试( (续续) )v与顺序无关的测试联合测试:当软、硬件分头开发完成时,对其组合体进行的测试回归测试:对因排除不符合项而采取的措施是否产生了其他副作用而进行的确认性测试专项测试:针对某些具体测试项进行的确认性测试。例如:边界条件测试等。v应根据开发规模,尽可能进行独立测试。为了保证测试的可信性,被测试的软件应以源代码的形式提交,同时说明生成可执行代码的环境和方法。由测试人员生成可执行代码,进行测试。 中国科学院软件研究所19软件开发的软件开发的V字模型字模型v 不可能
9、在需求开发阶段真正进行任何测试,因为还没有可执行的软件v 可以在开发组编写代码之前,以需求为基础建立概念性测试用例,并使用它们发现软件需求规格说明中的错误、二义性和遗漏,还可以进行模型分析中国科学院软件研究所20对对V模型的质疑模型的质疑在部分阶段延迟进行单元测试和集成测试在不同阶段上提前进行测试设计中国科学院软件研究所21X模型模型v 适应现实v 单元测试、集成测试不断迭代v 强调探索性测试中国科学院软件研究所22统计数字统计数字每千行源代码所包含的bug数,cmm1级为11.95个,cmm2为5.52个,cmm3为2.39个,cmm4为0.92个,而cmm5则只有0.32个中国科学院软件研
10、究所23软件集成、联调软件集成、联调v应按计划对所开发的软件模块进行组装并与硬件一起联调v根据需要,规定应填写的调试记录中国科学院软件研究所24内部确认内部确认v在模拟环境下运行,并监视、记录运行情况v根据任务书或合同的要求进行比照,检查其是否满足使用要求v对运行情况、测试结果及文档的齐套性、正确性和一致性进行评审,达到确认中国科学院软件研究所25复制、交付、安装复制、交付、安装v软盘复制、光盘刻录v交付时的版本标识和登记v安装(派技术人员安装或由用户自行安装)v记录软件安装实施计划软件安装环境最低需求软件安装记录中国科学院软件研究所26试运行、用户验收试运行、用户验收v以用户验收的方式进行最
11、终确认v结论软件设计与需求的一致性程序编码与软件设计的一致性文件描述与程序的一致性文件的成套性、完整性、准确性和标准化程度是否通过验收中国科学院软件研究所27运行、维护运行、维护v收集使用中发现的问题和顾客意见v针对运行中出现的问题,按设计更改程序进行控制v记录用户服务记录表中国科学院软件研究所28退役退役v编写软件退役报告,并进行评审中国科学院软件研究所29配置与变更管理配置与变更管理v基线的确立v配置项的存取v配置管理实施v配置项的标识v配置项的变更控制v配置项的状态记录v配置项的检查和评审v控制对构成软件产品的各配置项的标识、管理、更改活动,保证软件配置项的完全性和正确性,防止非预期的使
12、用v软件配置项的范围合同、技术文档、质量记录等中国科学院软件研究所30媒体控制媒体控制v对软件存放介质(媒体)的要求和规定v软件的复制(软件的生产过程)v媒体的标识:规则、执行者v媒体的贮存(防潮、防火、防磁、防静电、防病毒)v媒体的包装、运输中国科学院软件研究所31文档资料控制文档资料控制v各开发阶段应形成的文档,对其拟、审、批的规定v编制文档资料所依据的标准和规范v开发过程中应形成的质量记录v文档与软件之间的一致性检查v文档资料的归档与发放中国科学院软件研究所32版本管理版本管理v 分类 开发过程中的版本 交付软件产品的版本v 管理对象 软件 文档 为该产品开发的工具软件v 操作 配置管理
13、人员,配备一台计算机(或服务器) 开设开发库、受控库和产品库 访问权限 对入库和出库软件的控制中国科学院软件研究所33版本管理版本管理(续续)v 开发库存放正在开发(编写)或调试(修改)、自测的软件和文档v 受控库存放开发各阶段测试通过的软件、文档和工具软件的版本并给以标识。转入下一阶段时,从此处发放用作下一阶段开始工作的初始版本v 产品库存放可交付及已交付软件、文档及支持文件的版本v 各库内所存放的软件和文档,应定期备份,以防止开发成果的意外丢失(文件重写、介质损坏、意外事故、非法访问病毒,黑客,故意破坏等)并保证可追溯性中国科学院软件研究所34环境、工具和技术环境、工具和技术v开发所需的硬
14、件环境v测试所需的硬件环境(包括模拟用户环境所必要的输入、输出设备)v开发平台软件(操作系统、编程语言、编译环境、调试工具等)v管理软件v诊断软件v测试软件v辅助性软件(防病毒软件等) 中国科学院软件研究所35有关软件的法规和标准有关软件的法规和标准v 软件产品管理办法v 计算机信息系统集成资质管理办法(试行)v 计算机软件保护条例v ISOIEC 122071995信息技术软件生存周期过程v ISOIECTR 15504软件过程评估v GBT1900032001质量管理和质量保证标准第3部分:GB信息技术软件生存周期过程v GBT190011994在软件开发,供应、安装和维护中的使用指南v
15、GBT1250490计算机软件质量保证计划规范v GBT1250590计算机软件配置管理计划规范等中国科学院软件研究所36周密策划以保证周密策划以保证 v 开发人员应具备一定的资格或能力v 开发环境(软件和硬件平台)是适用的v 编制足够的控制程序和工作规范(例如开发过程控制程序、变量命名规则、代码书写规范、注释规范等)v 编制测试用例并在使用前对用例本身进行验证v 编制各阶段测试计划,明确规定测试方法以及测试结果的记录要求、评价方式和接收准则v 实施配置管理,控制软件产品(代码和文档)版本和更改过程中国科学院软件研究所37软件质量管理体系软件质量管理体系v 质量体系文件 质量手册 文件控制 记
16、录控制 v 管理职责 质量方针、质量目标 职责、权限与沟通 管理评审 v 资源管理 人力资源 基础设施和工作环境 v 产品实现 产品实现的策划 与顾客有关的过程 设计和开发 采购 开发和服务提供 监视和测量装置的控制 v 测量、分析和改进 监视和测量 不合格品控制 数据分析 改进 中国科学院软件研究所38八项质量管理原则八项质量管理原则v以顾客为关注焦点v领导作用v全员参与v过程方法v管理的系统方法v持续改进v基于事实的决策方法v与供方互利的关系中国科学院软件研究所39过程方法过程方法 中国科学院软件研究所40基于过程的质量管理体系模式基于过程的质量管理体系模式中国科学院软件研究所41实施质量
17、管理体系的意义实施质量管理体系的意义v管理法治化v职责更分明v接口更明确v监督机制加强v焦点得到控制v竞争能力增强中国科学院软件研究所42实施质量管理体系工作重点实施质量管理体系工作重点v规范管理制度v增进内部沟通v提高服务质量v增强社会信心中国科学院软件研究所43小结小结v小结中国科学院软件研究所44软件开发中的困境软件开发中的困境v如何指定符合项目的计划v项目应该如何去完成v如何按期提交项目v如何降低项目的风险v项目中的人员流动很频繁怎么办v如何合理的安排已有人员v项目不断变大,文档和程序不断的增多v用户的需求在不断的变化v项目中的人员在增加,如何管理好v项目的质量如何控制中国科学院软件研
18、究所45软件开发过程的模型软件开发过程的模型v简单式(构建维护)v瀑布式v敏捷开发v统一软件开发过程中国科学院软件研究所46简单式简单式修改直到用户满意修改直到用户满意系统使用系统使用消亡消亡思路或者客户需求思路或者客户需求构建第一个版本构建第一个版本中国科学院软件研究所47简单式过程开发特征简单式过程开发特征v系统在没有任何规范和规则的情况下就开发v没有明确的设计,设计思路都在开发者的头脑中v这种开发方法对于使用周期很短的小项目可用v随着时间的推移,系统的维护越来越困难v系统在交付使用时,有可能会出现一系列的错误,前期和后期维护成本都很高v在大型项目和商用项目中极少使用中国科学院软件研究所4
19、8瀑布式瀑布式设计阶段设计阶段实现阶段实现阶段集成阶段集成阶段需求阶段需求阶段细化阶段细化阶段使用阶段使用阶段消亡消亡每个阶段做完时进行每个阶段做完时进行验证验证中国科学院软件研究所49瀑布式开发瀑布式开发v 70年代流行的开发方法v 自上而下的开发方法v 每个阶段都有软件质量管理组核实后再进行下一阶段的开发v 每一阶段都有测试v 每个阶段都形成了明确的文档v 文档并不总能和系统相符合v 细化的文档使得系统的用户和开发人员难于理解和分辨系统的关系v 阶段之间的对应和检查变得困难、维护代价高v 变更应对能力差中国科学院软件研究所50敏捷开发敏捷开发v快速适应系统需求的变化v提高软件生产率v突出企
20、业自身特点,体现企业核心能力v支持动态联盟和虚拟组织v面向业务目标持续改进和重组中国科学院软件研究所51敏捷开发的特征敏捷开发的特征v轻量级的开发过程v基于时间vJust Enoughv并行v基于组件的软件工程中国科学院软件研究所52敏捷开发过程敏捷开发过程v软件的需求是难以预期的,开发方法必需适应变化的需求,在快速的迭代中不断改进v小组成员并不完全按照完整的方法进行开发,而v根据具体问题和情况,灵活地去除非增值活动v仅仅执行一些必须的活动,使用必须的规则,编v写必须的文档v人的因素被放在第一v适合互联网时代的开发要求中国科学院软件研究所53主要敏捷开发方法主要敏捷开发方法veXtreme P
21、rogramming (XP)vSCRUMvDSDMvAdaptive Software Development (ASD)vFeature Driven Development (FDD)vCrystal FamilyvRational RUP & UML中国科学院软件研究所54统一软件开发过程统一软件开发过程v用例驱动用例:能向用户提供有价值的系统的某种功能v以架构为中心软件架构:系统的最重要的静态和动态特征v迭代和增量式迭代:工作流程的重复、每次的活动都以上次的活动为基础中国科学院软件研究所55用例驱动用例驱动v用户所希望和需要的是什么v系统能为每个用户提供什么功能v用例所描述和代表的是
22、用户与系统交互的一个过程,而这个过程满足了用户的某些需求v所强调的是系统的功能中国科学院软件研究所56以架构为中心以架构为中心v刻画了系统的整体设计,忽略了细节设计,刻画最重要的部分。v什么是最重要的呢?依赖于判断。判断的依据是经验。v构架的设计价值取决于执行该任务的人的素质v受用户需求(用户可能会增加那方面的需求)、软件应用平台(计算机硬件、操作系统、数据库、网络等)、实施问题、遗留系统集成等的影响中国科学院软件研究所57用例和架构用例和架构v用例是系统的功能和外衣v架构是系统的内在形式v两方面必须并行进化v架构只考虑核心功能(5-10%)v架构设计原则:先考虑与用例无关的不会变动的方面考虑
23、考虑最重要的功能需求子集中国科学院软件研究所58迭代和增量式迭代和增量式v控制迭代过程,划分每次迭代的目标v迭代原则:架构上先实现最粗略的部分功能上先实现最重要的每次迭代尽可能的划分的细,迭代数量不能太少每次迭代要有规范的检查机制v增量式每次迭代增加一部分设计和实现中国科学院软件研究所59统一软件过程的生命周期统一软件过程的生命周期v在软件过程中,不断的向用户提供新的版本v每次形成的版本构成了一个循环中国科学院软件研究所60每个版本形成的过程每个版本形成的过程v每次循环由四个阶段构成初始v想法-产品v系统向用户提供的功能是什么v系统的架构是什么样子的v开发计划、开支如何、人员安排细化v详细说明
24、产品的功能v设计系统的架构构造v构造能运行的产品移交v产品手册、测试手册、用户培训、技术支持中国科学院软件研究所61产品版本形成的迭代过程产品版本形成的迭代过程中国科学院软件研究所62核心工作流程和四个阶段核心工作流程和四个阶段中国科学院软件研究所63产品版本的相关模型产品版本的相关模型v用例模型:系统的功能和用户的关系v分析模型:提炼用例,将用例的实现分配给一组对象v设计模型:静态结构和动态结构子系统、类、接口v实现模型:类、接口到组件的映射v实施模型:组件到部署物理节点的映射v测试模型:测试用例和用例的映射中国科学院软件研究所64产品版本的相关模型产品版本的相关模型中国科学院软件研究所65
25、模型间的依赖关系模型间的依赖关系v迭代的过程使得每次迭代过程中依赖关系的复杂程度降低中国科学院软件研究所66软件过程具体化软件过程具体化v没有通用的软件过程组织因素:组织结构、文化、管理、能力、经验等领域因素:应用领域的熟悉、竞争对手的提供产品的影响生命周期因素:时间、专业技能技术因素:程序设计语言、开发工具、数据库系统、框架等中国科学院软件研究所67Capability Maturity Model软件能力成熟度模型软件能力成熟度模型v迄今为止学术界和工业界公认的有关软件工程和管理实践的最好的评价模型。v为评估软件组织的生产能力提供了标准。v为提高软件组织的生产过程指明了方向。中国科学院软件
26、研究所68CMM概述概述 一个成熟软件组织具有在全组织范围内管理软件、开发过程和维护过程的能力 规定的软件过程被正确无误地通知到所有员工 工作活动均按照已规划的过程进行,并通过可控的先导性试验和费效分析使这些过程得到改进 对已定义过程中的所有岗位及其职责都有清楚的描述 通过文档与培训使全组织有关人员对已定义的软件过程都有很好的理解,从而使其软件过程所导致的生产率和质量能随时间的推移得到改进。中国科学院软件研究所69CMM基本概念基本概念v 软件过程软件过程:人们用于开发和维护软件及其相关过程的一系列活动,包括软件工程活动和软件管理活动。v 软件过程能力软件过程能力:描述(开发组织或项目组)遵循
27、其软件过程能够实现预期结果的程度,它既可对整个软件开发组织而言,也可对一个软件项目而言。v 软件过程性能软件过程性能:表示(开发组织或项目组)遵循其软件过程所得到的实际结果,软件过程性能描述的是已得到的实际结果,而软件过程能力则描述的是最可能的预期结果,它既可对整个软件开发组织而言,也可对一个特定项目而言。v 软件过程成熟软件过程成熟:一个特定软件过程被明确和有效地定义,管理测量和控制的程度。中国科学院软件研究所70CMM基本概念基本概念v 软件能力成熟度等级软件能力成熟度等级:软件开发组织在走向成熟的途中几个具有明确定义的表示软件过程能力成熟度的平台。v 关键过程域关键过程域:每个软件能力成
28、熟度等级包含若干个对该成熟度等级至关重要的过程域,它们的实施对达到该成熟度等级的目标起到保证作用。这些过程域就称为该成熟度等级的关键过程域,反之有非关键过程域是指对达到相应软件成熟度等级的目标不起关键作用。归纳为:互相关联的若干软件实践活动和有关基础设施的一个集合。中国科学院软件研究所71CMM基本概念基本概念v 关键实践关键实践:对关键过程域的实践起关键作用的方针、规程、措施、活动以及相关基础设施的建立。关键实践一般只描述“做什么”而不强制规定“如何做”。整个软件过程的改进是基于许多小的、渐进的步骤,而不是通过一次革命性的创新来实现的,这些小的渐进步骤就是通过一些关键实践来实现。v 软件能力
29、成熟度模型软件能力成熟度模型:随着软件组织定义、实施、测量、控制和改进其软件过程,软件组织的能力也伴随着这些阶段逐步前进,完成对软件组织进化阶段的描述模型。中国科学院软件研究所72CMM1v第一级:初始级 在初始级,企业一般不具备稳定的软件开发与维护的环境。常常在遇到问题的时候,就放弃原定的计划而只专注于编程与测试。 中国科学院软件研究所73CMM2v第二级:可重复级 在这一级,建立了管理软件项目的政策以及为贯彻执行这些政策而定的措施。基于过往的项目的经验来计划与管理新的项目。 中国科学院软件研究所74CMM3v第三级:定义级 在这一级,有关软件工程与管理工程的一个特定的、面对整个企业的软件开
30、发与维护的过程的文件将被制订出来。同时,这些过程是集成到一个协调的整体。这就称为企业的标准软件过程。 中国科学院软件研究所75CMM4v第四级:定量管理级 在这一级,企业对产品与过程建立起定量的质量目标,同时在过程中加入规定得很清楚的连续的度量。作为企业的度量方案, 要对所有项目的重要的过程活动进行生产率和质量的度量。软件 产品因此具有可预期的高质量。中国科学院软件研究所76CMM5v第五级:(不断)优化级 在这个等级,整个企业将会把重点放在对过程进行不断的优化。企业会采取,以达到预防缺陷 的目标。同时,分析主动去找出过程的弱点与长处有关过程的有效性的资料,作出对新技术的 成本与收益的分析,以
31、及提出对过程进行修改的建议。中国科学院软件研究所77CMM五级五级中国科学院软件研究所78项目自动取款机系统项目自动取款机系统v构建需求v储蓄用户使用三种功能中国科学院软件研究所79系统关键用例系统关键用例v关键功能点的关注v取款中国科学院软件研究所80分析用例分析用例中国科学院软件研究所81系统分析模型静态建模系统分析模型静态建模中国科学院软件研究所82系统分析模型动态建模系统分析模型动态建模中国科学院软件研究所83系统设计模型系统设计模型中国科学院软件研究所84三种模型的关系三种模型的关系中国科学院软件研究所85设计模型类设计设计模型类设计(静态静态)中国科学院软件研究所86设计模型动态建模设计模型动态建模中国科学院软件研究所87设计模型子系统分组设计模型子系统分组中国科学院软件研究所88实现模型实现模型中国科学院软件研究所89测试模型测试模型