1、软件开发过程四川华迪信息技术有限公司四川华迪信息技术有限公司Version1.0Version1.02022-3-22Hwadee2Overview 课程介绍 需求分析 分析设计 实施 部署课程介绍课程介绍2022-3-22Hwadee4关于本次课程o 课程目标o 预备知识o 目标听众o 日程表o 词汇表2022-3-22Hwadee5课程目标o了解软件开发活动的流程o了解软件开发活动的规范要求2022-3-22Hwadee6目标听众o 项目组成员2022-3-22Hwadee7预备知识o 了解软件工程知识2022-3-22Hwadee8日程表o 总课时:130分钟o 授课大纲:0:20介绍常
2、用的软件开发模式0:20需求分析0:20分析设计0:30实施0:20测试0:20部署共计: 130分钟2022-3-22Hwadee9oCMM:能力成熟度模型(Capability Maturity Model) oSQA:软件质量保证(Software Quality Assurance)词汇表2022-3-22Hwadee10什么是软件开发过程o 用以开发和维护软件及其相关产品(如,项目计划、设计文档、代码、测试用例、用户手册等等)的一组活动、方法、实践和变换2022-3-22Hwadee112022-3-22Hwadee12常用的软件开发过程 瀑布式开发 迭代式开发 增量式开发 演化式开
3、发 原型式开发2022-3-22Hwadee13瀑布式开发模型立项立项需求分析需求分析分析设计分析设计编码、测试编码、测试结项结项o生存周期表现为线形的一组开发活动。o开发阶段有明确的输入和输出,一个阶段的输出是下一个阶段的输入。o从一个阶段进入到下一个阶段,需要满足特定的条件。 2022-3-22Hwadee14迭代式开发模型先启阶段先启阶段精化阶段精化阶段构件阶段构件阶段产品化阶段产品化阶段 迭代开发模型将开发过程分成多个为期数周的迭代,而每个迭代包括了迭代计划、需求分析、系统设计、编程、测试及评估,而每个迭代完成时都会产生一个可运行的版本2022-3-22Hwadee15选择生命周期模型
4、o 没有适合所有人的 “帽子”o 生命周期选择应考虑:需求架构系统演进风险管理费用中途变更用户对系统进展的可视情况管理者对系统进展的可视情况管理与开发经验2022-3-22Hwadee16选择生命周期模型2022-3-22Hwadee17软件开发角色划分o 项目经理o 设计人员o 编码人员o 测试人员o 配置人员o SQAo .需求分析2022-3-22Hwadee19需求的重要性o 开发软件系统最为困难的部分就是准确说明开发什么。最为困难的概念性工作就是编写出详细技术需求,这包括所有面向用户、面向机器和其它软件系统的接口。同时这也是一旦做错,将最终会给系统带来极大损害的部分,并且以后再对它进
5、行修改也极为困难。2022-3-22Hwadee20需求问题 软件开发中的问题1. 客户表面上同意需求,但完成的产品并不能满足需求2. 需求总是变化,无法稳定3. 需求太多,无法在给定的时间完成4. 设计人员抱怨测试人员没有拿最新的需求版本来设计测试5. 项目经理发觉开发人员独自增加了新的功能,新的功能用了很长的时间进行开发,但客户认为价值不大6. 客户总是不想对项目进行验收,他们担心系统无法最终满足需要2022-3-22Hwadee21需求活动的目的 定义系统的边界和功能、非功能需求,以便涉众(客户、最终用户)和项目组对所开发的内容达成一致。 使项目组能够更好的理解需求,并达成一致。 建立软
6、件需求基线供软件工程和管理使用。 软件计划、产品和活动同软件需求保持一致。 为其它软件工程活动提供基础(如管理活动、测试活动)。2022-3-22Hwadee22需求分析流程制定需求管理计划1提取业务需求2需求开发3需求批准4基线化需求5需求变更控制6需求状态评审7制定需求管理计划提取业务需求需求开发需求批准基线化需求需求变更控制需求状态评审2022-3-22Hwadee23制定需求管理计划o 定义角色和职责 o 建立跟踪机制 o 选择需求属性 o 定义需求管理机制 o 编写需求管理计划制定需求管理计划1提取业务需求2需求开发3需求批准4基线化需求5需求变更控制6需求状态评审7制定需求管理计划
7、编写用于需求管理活动的计划。项目经理2022-3-22Hwadee24提取业务需求o 收集用户初始需求(业务需求)o 标识需求项制定需求管理计划1获取业务需求2需求开发3需求批准4基线化需求5需求变更控制6需求状态评审7提取业务需求到用户方进行需求调查,以获得项目的初始需求。项目组成员2022-3-22Hwadee25需求开发对客户的需要进行分析,并用清晰合理的方式进行描述,使客户方和开发方对开发的内容达成一致。需求开发制定需求管理计划1提取业务需求2需求开发3需求批准4基线化需求5需求变更控制6需求状态评审7需求开发项目成员2022-3-22Hwadee26确认需求正式作为项目管理和其它工程
8、活动的基础,并作为客户之间承诺对系统进行验收的基准。需求批准制定需求管理计划1提取业务需求2需求开发3需求批准4基线化需求5需求变更控制6需求状态评审7需求批准客户、高级管理者o 需求批准是一种正式的管理过程,代表相关各方达成一致的承诺o 经过需求评审的需求工件作为批准的内容2022-3-22Hwadee27此活动的目的是在经过客户和项目组的授权下,将批准的正式的软件需求工件放入配置管理系统。基线化需求制定需求管理计划1提取业务需求2需求开发3需求批准4基线化需求5需求变更控制6需求状态评审7基线化需求配置经理 o 基线化正式的需求工件正式的软件需求工件、需求跟踪工件进入配置库,作为其它相关活
9、动(管理、设计、测试等)的基础。2022-3-22Hwadee28需求变更控制制定需求管理计划1提取业务需求2需求开发3需求批准4基线化需求5需求变更控制6需求状态评审7需求变更控制配置经理 o 需求一旦建立基线后,需要通过控制流程来改变o 需求的变更需要经过双方的批准o 变更后的需求需要经过客户、用户和相关组的评审进入配置管理库,作为工作基线2022-3-22Hwadee29需求评审制定需求管理计划1提取业务需求2需求开发3需求批准4基线化需求5需求变更控制6需求状态评审7需求状态评审o 举行评审会议举行评审会议 举行需求规格说明书评审会议,需求评审人员高级管理者和项目经理通过需求状态评审监
10、控需求管理的状态。项目组通过需求状态评审对需求状况达成一致分析设计2022-3-22Hwadee31分析设计o目的软件分析设计活动是建立系统的构架,将系统的软件需求分配给软件结构,使设计适应具体的实施环境。 2022-3-22Hwadee32分析设计活动流程软件详细设计软件构架设计软件构架设计评审软件详细设计评审基线化构架基线化详细设计软件需求工件软件开发计划软件构架设计工件软件详细设计工件2022-3-22Hwadee33分析设计o角色构架设计师 设计员 配置管理员 构架评审人员 详细设计评审人员 2022-3-22Hwadee34分析设计o进入准则需求已经基线化 软件开发计划已指派了分析设
11、计活动 2022-3-22Hwadee35分析设计o输入软件需求工件软件开发计划2022-3-22Hwadee36分析设计活动介绍o构架设计 建立软件系统的构架,将系统的软件需求分配给软件结构2022-3-22Hwadee37分析设计活动介绍o构架设计评审 检查软件系统构架设计是否合理 ,包括如下几点:发现和修复缺陷 一致性确认 2022-3-22Hwadee38分析设计活动介绍o基线化构架设计 将评审通过的软件构架设计工件置于配置管理 ,作为详细设计的基础 2022-3-22Hwadee39分析设计活动介绍o软件详细设计 根据需求工件、构架设计工件,进一步精确描述软件系统,并使之适于具体的实
12、施环境 2022-3-22Hwadee40分析设计活动介绍o详细设计评审 检查软件系统详细设计是否合理 ,包括如下几点:发现和修复缺陷 一致性确认 2022-3-22Hwadee41分析设计活动介绍o基线化详细设计 将评审通过的软件详细设计工件置于配置管理,作为实施活动的基础 2022-3-22Hwadee42分析设计活动介绍o输出软件构架设计工件: 概要设计说明书、数据库设计说明书 等软件详细设计工件 : 详细设计说明书评审记录 实 施2022-3-22Hwadee44q目的:单元编码、单元测试、缺陷修复以及系统集成等工作 q主要任务:制定集成计划单元编码、测试/评审集成系统基线化目的202
13、2-3-22Hwadee45编码的任务o 编码阶段的任务就是将详细设计翻译成计算机最终可运行的软件单元、集成工作版本。 软件构架详细设计工作版本软件开发计划编码2022-3-22Hwadee46编码的任务o 编码工作对一个程序员来说是司空见惯的事,然而,如何编写出高质量的程序,还是有很多值得讨论的问题。如何选择程序设计语言?如何评价程序的质量?程序设计的风格等等。2022-3-22Hwadee47词汇表 o 代码评审代码评审(Code Review)代码评审是检查源代码与编码标准的符合性以及程序逻辑的正确性的活动,目的是发现缺陷或者是提出改进措施。o 系统集成系统集成(System Integ
14、ration)系统集成指的是将单独的软件单元合并成一个整体的软件开发活动。集成活动可以分级、分阶段进行。o 工作版本工作版本(Build)工作版本既可以是软件系统的可操作版本,也可以是具有最终产品部分功能的软件系统组成部分。o 程序单元程序单元(Unit)程序单元是项目定义的软件最小可测试单元。 2022-3-22Hwadee48软件实施活动流程图 2022-3-22Hwadee49角色 o 编码员编码员 编码员负责编码、修复代码缺陷; o 集成员集成员 负责制定集成计划、集成程序单元,创建工作版本基线;o 测试员测试员 负责执行测试活动; o 集成计划评审人员集成计划评审人员 参与集成计划的
15、评审,一般由设计员、测试、配置经理、编码员、构架设计师等组成; o 代码评审员代码评审员 评审源代码,一般由编码员(非代码作者)组成 ;2022-3-22Hwadee50进入准则 o 详细设计工件已经被基线化o 构架工件已经被基线化 2022-3-22Hwadee51输入 o 软件构架设计工件 构架设计文档主要描述 备选设计方案、软件子系统划分、子系统间接口和错误处理机制等; o 软件详细设计工件 详细设计文档主要描述将构架设计转化为最小实施单元,产生可以编码实现的设计; 2022-3-22Hwadee52活动o 制定系统集成计划 o 评审集成计划 o 单元编码及缺陷修复o 代码评审o 执行单
16、元测试o 集成程序单元o 执行集成测试o 执行系统测试o 创建最终工作版本基线2022-3-22Hwadee53制定系统集成计划 o 角色角色 集成员 o 活动描述活动描述 确定系统要实施的部分,以及实施它们的先后顺序。 确定集成的工作版本:确定集成的工作版本:根据开发计划的工作内容,将它们划分成不同的工作版本。 确定集成的策略:确定集成的策略:定义系统集成的方式。可以根据系统自身的特点,选择合适的集成策略,以及确定实施测试所需的驱动和桩模块。 2022-3-22Hwadee54评审集成计划 o 角色角色 集成计划评审人员 o 活动描述活动描述 发现缺陷,跟踪并修复缺陷。 发现和修复缺陷:发现
17、和修复缺陷:根据评审规范,评审集成计划工件。2022-3-22Hwadee55单元编码及缺陷修复 o 角色角色 编码员 o 活动描述活动描述 生产出同设计一致的源代码。 编写代码:编写代码:按照分配的任务项,编写新单元的代码,保证源代码只是设计的代码实现,并且源代码可以成功编译。 缺陷修复:缺陷修复:按照分配的任务项,修复已有代码中经过测试或代码评审发现的缺陷,并保证源代码可以成功编译。 2022-3-22Hwadee56代码评审 o 角色角色 代码评审员 o 活动描述活动描述 通过阅读他人的代码,检查代码中的缺陷。 检查编写缺陷检查编写缺陷:依照编码标准检查代码是否符合标准。检查逻辑缺陷检查
18、逻辑缺陷:根据设计工件检查代码是否正确反映且仅反映设计的内容。2022-3-22Hwadee57执行单元测试 o角色角色 测试员 o活动描述活动描述 测试员执行单元测试的目的是验证单元的内部结构以及单元实现的功能。 执行单元测试:执行单元测试:按照测试过程手工执行单元测试或运行测试脚本自动执行单元测试。 记录单元测试结果:记录单元测试结果:将单元测试结果作详细记录,并将测试结果提交给相关组。 回归测试:回归测试:对修改后的单元执行回归测试 2022-3-22Hwadee58集成程序单元 o 角色角色 集成员 o 活动描述活动描述 提供一个可以测试的集成工作版本。 生成集成工作版本生成集成工作版
19、本:按照集成计划集成并编译已经通过单元测试的程序单元。判断集成结束判断集成结束:根据集成计划判断集成是否结束。 2022-3-22Hwadee59创建最终工作版本基线 o 角色角色 集成员 o 活动描述活动描述 建立一个完整的基线化的软件工作版本。配置最终工作版本基线:配置最终工作版本基线:创建最终工作版本基线。2022-3-22Hwadee60输出 o 软件程序单元 包括了所有编码员完成的程序单元源代码; o 工作版本 按照集成计划创建的各个集成工作版本; o 集成计划软件工作版本的定义、工作版本的内容、集成的策略以及实施的先后顺序等; o 评审记录 记录评审内容、评审结果、评审意见、参与人
20、员等; 2022-3-22Hwadee61退出准则 o 最终工作版本被基线化 2022-3-22Hwadee62编码标准o 编制易于修改和维护的代码;o 编制易于测试的代码;o 必须将编程与编文档的工作统一起来;o 编程中采用统一的标准和约定,降低程序复杂性;o 限定每一层的副作用,减少耦合度;o 尽可能地重用。2022-3-22Hwadee63编程风格概述o 编程风格是在不影响性能的前提下,有效地编排和组织程序,以提高可读性和可维护性。o 从软件工程的角度来说,程序的质量主要取决于设计的质量,而编程风格在很大的程度上影响着程序的可读性、可测试性和可维护性;o 软件开发的很大部分的成本消耗在编
21、码、测试和维护阶段,因此,努力追求软件的可读性、可测试性和可维护性极其重要。2022-3-22Hwadee64编程风格(一)o 节俭化(Economy) 提供尽可能简洁的代码。o 模块化(Modularity) 把代码划分为内聚度高、富有意义的功能块。通常是把常且复杂的程序段或子程序分解为小且定义良好的程序段。o 简单化(Simplicity) 去掉过分复杂和不必要的矫揉造作。2022-3-22Hwadee65编程风格(二)o 结构化(Structure) 把程序的各个构件组织成一个有效的系统。o 文档化(Documentation) 程序能够自说明。o 格式化(Layout) 尽量使程序布局
22、合理、清晰、明了。测 试2022-3-22Hwadee67测试 软件测试是为了发现错误而执行程序的过程 软件测试是根据程序开发阶段的规格说明及程序内部结构而精心设计的一批测试用例(输入数据及其预期结果的集合),并利用这些测试用例去运行程序,以发现错误的过程2022-3-22Hwadee68测试流程制订测试计划设计测试执行单元测试执行集成测试执行系统测试评估测试制订测试计划制订测试计划设计测试设计测试执行单元测试执行单元测试执行集成测试执行集成测试执行系统测试执行系统测试评估测试评估测试2022-3-22Hwadee69角色和职责o 测试设计员测试设计员制定和维护测试计划。设计测试用例及测试过程
23、。评估测试,生成测试分析报告。 o 测试员测试员执行集成测试和系统测试。记录测试结果。 o 设计员设计员设计测试需要的驱动程序和稳定桩。o 编码员编码员编写测试驱动程序和稳定桩。执行单元测试。2022-3-22Hwadee70测试产生工件阶段产生工件制订测试计划测试计划设计测试测试用例执行单元测试单元测试通知单、单元测试日志执行集成测试集成测试通知单、集成测试日志、执行系统测试系统测试通知单、系统测试日志评估测试测试分析报告软件部署软件部署2022-3-22Hwadee72软件部署o目的确保最终用户可以正常使用软件产品2022-3-22Hwadee73软件部署o参与角色部署经理 文档开发人员
24、集成员 配置经理 软件质量保证 2022-3-22Hwadee74软件部署o进入准则软件生产部门已对软件进行打包 产品支持部门已经完成对软件的产品化包装工作 产品测试部门已经完成对软件的接受测试 配置管理部门已经建立相应的软件产品基线 2022-3-22Hwadee75软件部署流程计划部署产品发布材料验收测试创建部署单元实地验收测试产品打包提供下载站点发布测试版客户安装可下载产品最终产品通过市售2022-3-22Hwadee76软件部署活动介绍o计划部署确定发布的软件产品确定什么时候、如何向用户发布确定准备开发的用户支持材料2022-3-22Hwadee77软件部署活动介绍o开发产品支持材料用户培训材料最终用户支持材料2022-3-22Hwadee78软件部署活动介绍o开发场所验收测试部署经理审计待验收测试的软件产品和测试平台按照验收测试计划执行测试2022-3-22Hwadee79软件部署活动介绍o创建部署单元工作版本最终用户支持材料和发布说明安装工件o审批部署单元2022-3-22Hwadee80软件部署活动介绍o实地验收测试部署经理审计待验收测试的软件产品和测试平台按照验收测试计划执行测试2022-3-22Hwadee81软件部署活动介绍o产品打包部署单元、安装脚本、用户手册等2022-3-22Hwadee82Q&Ao 请提问!THANKYOU
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。