管理信息系统——诺兰阶段模型:
前三个——计算机时代、后三个——信息时代
- 初始阶段:计算机刚进入企业,只作为办公设备使用;企业对计算机基本不了解,少数人使用,并不普及
- 传播阶段:企业对计算机有一定了解应用需求增加;但此时缺少规划和计划,应用水平不高,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精益
看板方法
渐进增量式的过程改进方法学
可视化工作流程——项目可视化
使用物理白板——信息辐射器;电子看板——冰箱
使用白板
为每个工作项建立一个记事贴
用列映射团队工作流——可视化工作流
- 每列标识工作流的一部分
- 应当包含工作全部阶段,从工作进入到工作离开团队
- PDCA:检视并调整
所有的工作显示在白板上,信息传递给所有人,沟通交流成本被极大地降低
白板上的工作项
- 工作项描述
- 电子系统中的唯一标识
- 完成期限
- 谁在处理这个工作项
工作类型(bug or 常规工作)
尽可能保证每个工作项的工作量不要偏差太大(3天)
限制进行中的工作
个人效率、团队效率
减少在制品使快速流过整个工作流,可以使前置时间缩短
个人效率下降,但团队的效率增加了
在制品规模高会有工作闲置;在制品规模低会有人要闲置
精益 Lean
起源于制造业 丰田
- 消除浪费
- 增强学习
- 尽量延迟决定:早期很多信息是得不到的
- 尽快发布
- 下放授权
- 内置完整性
- 全局优化
消除浪费
任何不能为用户创造价值的做法都是浪费
- 创建不必要的功能和产品
- 需求管理不当
- 返工
- 不必要的复杂解决方案
- 过度认知负担
- 心理压力
- 等待、多任务(相互等待)WIP
- 无效沟通
PSP 个体软件过程
TDD(Test-Driven Development, 测试驱动开发)已经成为现代软件开发中非常重要的概念之一。
CI(Continuous Integration)持续集成,最重要的服务对象是TDD,它是一个集合概念,包括自动构建build项目,自动分析代码,自动测试,自动邮件报告,自动预编译检查,自动发布等等,这些都围绕一个中心词“Auto”,当然它不能帮您自动完成代码 :)。所有这些操作,直接解放了项目管理者,每日构建集成(Build every day)将会很大程度上提高项目的稳定性,代码的健壮性及随时反馈。