湖南大学高级软件开发过程
高级软件开发过程重点知识梳理
1. 绪论
- 软件过程定义:从软件需求定义开始到软件废弃为止,跨越整个生命周期内的系统开发、运行、维护等全部活动及其相关项的总和。
- 软件发展三阶段:程序设计、软件工程、软件过程
- 软件过程能力评估标准和改进方案:CMM, ISO, 6 西格玛
- 生命周期模型:瀑布模型、原型模型、螺旋模型、喷泉模型
- 软件过程与软件工程的关系:包含关系
- 软件过程模式的意义:
- 四要素
- 快速把握软件过程的本质、原则、规范、特点、策略等
- 分析优缺点
2. Rational 统一开发过程
三大特点:
- 用力驱动
- 以架构为中心
- 迭代与增量
工作流程不仅仅指活动,还表明了角色、活动、工件是一个逻辑整体。
RUP 二维结构图
- 静态特征:纵轴的内容组织
- 动态特征:横轴的时间组织
- RUP 独特的地方
- 并行化
- 阶段内部迭代
- 工作流中多出的几个新的概念
- 明确的里程碑
九大核心工作流程
- 核心过程
- 业务建模
- 需求
- 分析设计
- 实施
- 测试
- 部署
- 核心支持
- 配置、变更管理
- 项目管理
- 环境
- 核心过程
工件:模型、元素、文档、源代码、可执行文件、工具等。
四阶段:
- 先启(目标)
- 精化(架构)
- 构建(初始化、产品是否稳定、迭代次数最多)
- 产品化(产品发布、用户是否满意)
五大角色
- 分析员
- 开发人员
- 测试员
- 经理
- 其他角色
角色的意义(两步走):
- 迭代计划时,确定角色
- 人员计划时,考虑个体的技能特长,分配角色
角色方面的缺陷:未给出角色的组织管理方式、角色之间的地位和交互关系。
用例的缺点及其解决方法:非功能性需求表现不足,可用补充说明文档解决。
架构视图:
- 用例模型视图
- 分析模型视图
- 设计模型视图
- 实施模型视图
- 实现模型视图
- 补充【架构必须留有复用和进化空间】
RUP 的优点
- 二维迭代,有利于降低风险,适应新需求
- 可配置,具有通用性
- 包含四要素的详尽的阐述
- 有现成的使用工具,具有操作性、可实现性
RUP 的缺点
- 四要素关系及其优先级未给出
- 生命周期各元素的关旭和优先级未给出
- 人员之间的优先级和协作方式未给出
- 产品和方法之间的优先级未给出
3. 敏捷开发过程
4 条基本价值观
- 个体和交互胜过过程和工具(人员、生命周期、方法)
- 可以工作的软件胜过面面俱到的文档(产品)
- 客户合作胜过合同谈判(人员)
- 响应变化胜过遵循计划(方法)
12 条基本原则
1、我们的最高目标是,通过尽早和持续地交付有价值的软件来满足客户。
2、欢迎对需求提出变更——即使是在项目开发后期。要善于利用需求变更,帮助客户获得竞争优势。
3、要不断交付可用的软件,周期从几周到几个月不等,且越短越好。
4、项目过程中,业务人员与开发人员必须在一起工作。
5、要善于激励项目人员,给他们以所需要的环境和支持,并相信他们能够完成任务。
6、无论是团队内还是团队间,最有效的沟通方法是面对面的交谈。
7、可用的软件是衡量进度的主要指标。
8、敏捷过程提倡可持续的开发。项目方、开发人员和用户应该能够保持恒久稳定的进展速度。
9、对技术的精益求精以及对设计的不断完善将提升敏捷性。
10、要做到简洁,即尽最大可能减少不必要的工作。这是一门艺术。
11、最佳的架构、需求和设计出自于自组织的团队。
12、团队要定期反省如何能够做到更有效,并相应地调整团队的行为。- 分类:
- 生命周期(1,3,7,8)
- 人员(4,5,6,11,12)
- 产品(无)
- 方法(2,9,10)
- 分类:
计划游戏(制定细致度逐渐降低的计划)
持续集成
结对编程
隐喻(全局视图、未来影像)
4. 微软开发过程
术语
- 项目前景与项目范围
- 功能说明书
- 程序经理
过程原则
- 制定计划时兼顾未来的不确定因素
- 通过有效的风险管理减少不确定因素的影响
- 经常生成过度版本,并进行快速测试来提高产品的稳定性和可预测性
- 快速循环、递进的开发过程
- 从产品特性和成本能控制出发创造性的工作
- 创建确定的进度表
- 使用小型项目组并发的完成工作,并设置多个同步点
- 将大型项目分解为多个可管理的单元,以便快速的发布产品
- 用产品的前景目标和概要说明指导项目开发工作——先基线化,后冻结
- 避免产品走形
- 使用原型验证概念,进行开发前的测试
- 零缺陷观念
- 非责难式的里程碑评审会
组队原则
- 小型的、多元化的项目组
- 角色依赖、职责共享
- 专深的技术水平和业务技能
- 以产品发布为中心
- 明确的目标
- 客户的主动参与
- 分享产品的前景
- 所有人都参与设计
- 认真从过去的项目中吸取经验
- 共同管理、共同决策
- 项目组成员在同一地点办公
- 大型项目组也像小型项目组那样运作
微软过程生命周期
相当于 RUP 的生命周期的精简版,但是微软生命周期的特色在于其每个阶段设置的缓冲时间
- 构想(先启)
- 计划(精化)
- 开发(精化)
- 稳定(构建)
- 发布(产品化)
微软角色划分
以前的项目经理被拆分为产品经理和程序经理,因为这项目经理往往身兼两个角色,而这两个角色之间存在着矛盾。
- 产品经理
- 程序经理
- 开发工程师
- 测试工程师
- 用户体验人员
- 发布管理人员
角色间的关系
- 对等
- 相互协作的方式是交流和沟通
角色合并原则
- 开发人员不能兼任其他角色
- 不能试图合并两个有明显利益冲突或制约关系的职能角色
角色合并结论
- 最小的项目组需要 3 个成员:产品经理、程序经理、开发工程师
微软均衡三角形
结论:四要素之间相互制约,任何一条边的改变都会对剩余的边造成影响。
微软项目均衡矩阵
- 执行方法
RUP/AP/微软过程的关系
三者相互交叉、相互重叠,又相互区别互不包含
微软每日编译生成机制
湖南大学高级软件开发过程相关推荐
- 招聘|青岛旭升招聘高级软件工程师、3D视觉算法工程师
点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 公司介绍: 青岛旭升视觉有限公司是一家专注于机器人3D视觉引导与工业3D测量领域的高新技术企业,独立发 ...
- 高级软件工程师的职责范围
在上一篇随笔<软件架构师之职责范围>中评论,yongfa365希望能看到.NET高级软件工程师的职责范围.我思前想后,还是决定说一下自己在这方面的愚见,希望大家不吝赐教. 什么是" ...
- 软件工程和软件开发过程
Boehm:运用现代科学技术知识来设计并构造计算机程序及为开发.运行和维护这些程序所必需的相关文件资料. IEEE:软件工程是开发.运行.维护和修复软件的系统方法. Fritz Bauer:建立并使用 ...
- 软件开发过程包括哪几个阶段?
Boehm:运用现代科学技术知识来设计并构造计算机程序及为开发.运行和维护这些程序所必需的相关文件资料. IEEE:软件工程是开发.运行.维护和修复软件的系统方法. Fritz Bauer:建立并使用 ...
- 软件架构师之职责范围和高级软件工程师的职责范围
什么是"高级软件工程师",这个职位到底该做些什么,相信大家都有答案.在目前很多国内软件企业中,如果你是"高级软件工程师",那么从需求分析 ,设计,开发,测试,甚 ...
- J2EE高级软件工程师面试题集
第一章:J2EE高级软件工程师面试题集 --JAVA基础部分 1.面向对象的特征有哪些方面1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不 ...
- 高级软件工程师要掌握的技能
软件工程师考试(高级)大纲 一.考试说明 1.考试要求: (1)理解软件工程管理的概念和任务: (2)理解软件生存期过程: (3)理解软件工程标准: (4)掌握需求分析.测试.维护基本技术: (5)掌 ...
- 2022年高级软件水平考试考前复习题及答案
2022年高级软件水平考试考前复习题及答案,根据最新高级软件水平考试大纲与历年真题汇总编写,包含高级软件水平考试常考重点题型与知识点,有助于考生复习备考高级软件水平考试,取得好成绩. 1.软件重用是指 ...
- [架构之路-131]-《软考-系统架构设计师》-软件工程-1-软件工程方法大全(软件开发过程方法、软件开发过程模型、逆向工程、净室软件工程)
前言: 第3章 软件工程 3.1 软件开发过程方法 3.1.1 什么是软件工程 软件工程是一门研究用工业硬件生产的工程化方法构建和维护有效.实用和高质量的软件的学科. 它涉及程序设计语言.数据库.软件 ...
- 在统一软件开发过程中使用UML
如何在统一软件开发过程中使用UML? 起始阶段常用UML图 在起始阶段,通常有用例图.类图.活动图.顺序图等UML图的参与. 获取用户需求之后首先要将这些需求转化为系统的顶层用例图. 在确定了用例之后 ...
最新文章
- Eclipse常用设置
- suse mysql root密码忘记_SUSE11.4 找回 mysql root 密码?网上能找到的所有方法都试过了,不行......
- 混凝土地坪机器人_创新引领 快速建造丨临时设施大项目部使用机器人等五项技术刷新建设新效率...
- java语言适合编写什么_01--Java语言概述与开发环境 最适合入门的Java教程
- Apache状态监测集重启
- 微软宣布12月15日关闭开源软件托管平台CodePlex
- maven打包:找不到符号 符号: 方法 getXxx()
- 19个神经元控制自动驾驶汽车,MIT等虫脑启发新研究登Nature子刊
- 使用linux批量引物设计,干货分享:如何快速设计多条qPCR引物?
- 调用栈(call stack)
- python中什么是句柄_python中的句柄操作的方法示例
- matlab贝塔分布,怎么拟合贝塔分布函数
- php选课删除选课成绩统计,高校选修课平时成绩管理系统
- 广告行业常用英文词汇
- Manjaro第二天
- 向日葵(SunLoginClient_10.5.0.29)RCE验证
- diy 单片机 自动浇花_单片机自动浇花系统(附原理图、仿真文件、源程序)
- WPF网络图片保存编辑_se7en3_新浪博客
- 四节传送带plc梯形图_基于PLC的四节传送带设计.ppt
- idea插件开发(5)-Swing图形化设计