软件过程与管理

管理信息系统——诺兰阶段模型:

前三个——计算机时代、后三个——信息时代

  • 初始阶段:计算机刚进入企业,只作为办公设备使用;企业对计算机基本不了解,少数人使用,并不普及
  • 传播阶段:企业对计算机有一定了解应用需求增加;但此时缺少规划和计划,应用水平不高,IT整体效用无法显现
  • 控制阶段:IT投资增长快,但收益不理想,于是在客观上要求组织协调,解决数据共享问题;一些职能部门内部实现网络化,如财务系统、人事系统等;但软件系统之间存在壁垒、“信息孤岛”,信息系统呈现单点、分散的特点,系统和资源利用率不高
  • 集成阶段:企业的IT建设开始由分散和单点发展成体系。建立集中式的DB及显影的IS;增加大量硬件,预算费用迅速增长
  • 数据管理阶段:信息成为企业的重要资源;企业开始选定统一的数据库平台、数据管理体系和信息管理平台,统一数据的管理和使用,各部门、各系统基本实现资源整合、信息共享。IT系统的规划及资源利用更加高效。
  • 成熟阶段:企业真正把IT同管理过程结合起来,将组织内部、外部的资源充分整合和利用,从而提升了企业的竞争力和发展潜力。

第一讲

生命周期模型与软件过程

典型生命周期模型

  • 瀑布模型
    • 最基本最有效、严格按照需求 ->分析->设计->编码->测试的阶段进行;
    • 保证整个软件产品较高的质量,保证缺陷能够提前的被发现和解决;
    • 前期需求不明确,而又很难短时间明确清楚的项目则很难很好的利用瀑布模型
  • 螺旋模型
    • 遵从瀑布模型的.即需求->架构->设计->开发->测试的路线,将瀑布模型的多个阶段转化到多个迭代过程中。
    • 螺旋模型的每一次迭代只包含了瀑布模型的某一个或两个阶段.。如第二次迭代重点是需求,第三次迭代是总体设计和后续设计开发计划等。
    • 因此这是和RUP提倡 的迭代模型是有区别的,RUP(Rational Unified Process统一软件开发过程)的每一次迭代都会包含需求,设计,开发和测试等各个阶段的活动。RUP迭代的目的在于逐步求精而不是仅仅完成瀑布模型某一阶段的工作.
  • 增量和迭代式模型
    • 假设现在要开发 A,B,C,D四个大的业务功能,每个功能都需要开发两周的时间
    • 对于增量方法而言可以将四个功能分为两次增量来完成,第一个增量完成A,B功能,第二 次增量完成C,D功能;先一后二
    • 对于迭代开发来将则是分两次迭代来开发,第一次迭代完成A,B,C,D四个基本业务功能但不含复杂的业务逻辑,而第二个功能再逐渐细化补充完整相关的业务逻辑原型法;逐步完善
  • 原型法
    • 启发式的方法,没有经验,没有过多需求分析,需要调研和挖掘功能的时候使用
  • 快速和敏捷方法论

管理的目的——为了让软件过程在开发效率、质量等方面有着更好的性能绩效

软件过程的历史演变和经典工作

三大阶段

  • 软硬件一体化阶段(50年代~10年代)
    • 软件完全依附于硬件
    • 软件作坊
  • 软件成为独立的产品(70年代~90年代)
  • 网络化和服务化(90年代中期至今)
    • 软件功能更复杂,规模更大
    • 用户数量急剧增加
    • 快速演化和需求不确定
    • 分发方式的变化(SaaS)

成熟度模型 CMMI模型

  • Level1: Initial
  • Level2: Managed
  • Level3: Defined
  • Level4: Quantitatively Managed
  • Level5: Optimizing

过程改进模型而非软件过程或者软件过程模型

敏捷宣言

  • 个体和互动胜过流程和工具
  • 可以工作的软件胜过详尽的文档
  • 客户合作胜过合同谈判
  • 响应变化胜过遵循计划

典型软件实践方法

  • XP方法:偏重于工程实践的描述
  • SCRUM:管理框架和管理时间
  • Kanban:精益生产;可视化工作流、限定WIP、管理周期时间
  • 开源软件开发

DevOps是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。”

软件开发典型特征

  • 空前强大的开发和部署环境——XaaS
    • IaaS
    • PaaS
    • SaaS、FaaS
  • 共享文化
  • 潜在支撑——AI, Bigdata, Cloud…

典型Devops实践和方法

  • 方法论基础是敏捷软件开发精益思想看板方法
  • 以领域驱动设计为指导的微服务架构方法
  • 大量虚拟化技术的使用
  • 一切皆服务XaaS
  • 构件强大的工具链,支持高水平自动化

用户名1:15801939795 密码:gGvs3ib4kxeLvvE

用户名2:18801595789 密码:DevOpsFrank

敏捷软件开发;敏捷宣言

Agile敏捷 Lean精益

看板方法

渐进增量式的过程改进方法学

可视化工作流程——项目可视化

使用物理白板——信息辐射器;电子看板——冰箱

使用白板

  1. 为每个工作项建立一个记事贴

  2. 用列映射团队工作流——可视化工作流

    • 每列标识工作流的一部分
    • 应当包含工作全部阶段,从工作进入到工作离开团队
    • PDCA:检视并调整

所有的工作显示在白板上,信息传递给所有人,沟通交流成本被极大地降低

白板上的工作项

  • 工作项描述
  • 电子系统中的唯一标识
  • 完成期限
  • 谁在处理这个工作项
  • 工作类型(bug or 常规工作)

    尽可能保证每个工作项的工作量不要偏差太大(3天)

限制进行中的工作

个人效率团队效率

减少在制品使快速流过整个工作流,可以使前置时间缩短

个人效率下降,但团队的效率增加了

在制品规模高会有工作闲置;在制品规模低会有人要闲置

精益 Lean

起源于制造业 丰田

  • 消除浪费
  • 增强学习
  • 尽量延迟决定:早期很多信息是得不到的
  • 尽快发布
  • 下放授权
  • 内置完整性
  • 全局优化

消除浪费

任何不能为用户创造价值的做法都是浪费

  • 创建不必要的功能和产品
  • 需求管理不当
  • 返工
  • 不必要的复杂解决方案
  • 过度认知负担
  • 心理压力
  • 等待、多任务(相互等待)WIP
  • 无效沟通

PSP 个体软件过程

TDD(Test-Driven Development, 测试驱动开发)已经成为现代软件开发中非常重要的概念之一。

CI(Continuous Integration)持续集成,最重要的服务对象是TDD,它是一个集合概念,包括自动构建build项目,自动分析代码,自动测试,自动邮件报告,自动预编译检查,自动发布等等,这些都围绕一个中心词“Auto”,当然它不能帮您自动完成代码 :)。所有这些操作,直接解放了项目管理者,每日构建集成(Build every day)将会很大程度上提高项目的稳定性,代码的健壮性及随时反馈。

本文标题:软件过程与管理

文章作者:松子

发布时间:2018年11月01日 - 18:11

最后更新:2022年03月26日 - 02:03

博文链接:https://songzi.info/post/3c6c6472/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

0%