什么是软件开发

软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程。

软件开发是一项包括需求捕捉,需求分析,实现和测试的系统工程

软件开发有哪些困难?

软件开发的本质困难

复杂性

不可见性

可变性
一致性

The Mythical Man-Month 人月神话Frederick P.Brooks.J:

对本质难题的进一步分析

三个本质难题因项目而异

四大本质难题相互促进

本质难题的变化带动软件方法(过程)演变

软件项目管理和软件过程管理

软件发展三大阶段

软硬件一体化阶段(50年代~70
年代)

软件完全依附于硬件
   软件作坊

软件成为独立的产品(70年代~90年代)

网络化和服务化(90年代中期迄今)

软件完全依附于硬件

软件应用典型特征
   软件支持硬件完成计算任务
   功能单一
   复杂度有限
   几乎不需要需求变更

·软件开发典型特征
   ◆硬件太贵
   ◆团队以硬件工程师和数学家为主

软件作坊

·软件应用典型特征 
   功能简单
   规模小

·软件开发典型特征
   很多非专业领域的人员涌入软件开发领域
   高级程序语言出现
   质疑权威文化盛行

典型软件过程和实践

“Code and fix”

软件成为独立产品

软件应用特征
   摆脱了硬件束缚(OS)
   功能强大
   规模和复杂度剧增

个人电脑出现 –> 普通人成为软件用户
   ·需求多变
   ·兼容性要求

来自市场的压力

典型软件过程和实践

·方法之一:形式化方法

·方法之二:结构化程序设计和瀑布模型

网络化和服务化

·软件应用特征
   ◆功能更复杂,规模更大用户数量急剧增加(这会带来什么问题?)
   ◆快速演化和需求不确定
   ◆分发方式的变化(SaaS)

典型软件过程和实践

迭代式:大型软件系统的开发过程也是一个逐步学习和交流的过程,软件系统的交付不是一次完成,|而是通过多个迭代周期,逐步来完成交付。

更深化的网络化和服务化

软件应用典型特征
   随处可见(pervasive)
   用户需求多样性进一步凸显
   软件产品和服务的地位变化
   错综复杂的部署环境

近乎苛刻的用户期望

多:功能丰富

快:快速使用,及时更新

好:稳定,可靠

省:用户的获得成本低,最好免费

·软件开发典型特征

◆空前强大的开发和部署环境——XaaS

·IaaS

·PaaS

·SaaS,FaaS,etc.

盛行开源和共享文化

盛行敏捷

软件工程的潜在支撑力量获得了长足进步(AI,
Bigdata,Cloud,etc.)

典型软件过程和实践—DevOps

·方法论基础是敏捷软件开发、精益思想以及看板
Kanban方法。

·以领域驱动设计为指导的微服务架构方式
大量虚拟化技术的使用

·一切皆服务XaaS(Xas a Service)的理念指导

·构建了强大的工具链,支持高水平自动化

The Three Ways-The First Way

·概念
   充分理解工作流(开发-运维客户)
   流量最大化(小批量、缩小任务间隔、缺陷控制)
   不断为了整体目标的实现而优化工作流



·部分关键实践和方法
   持续构建、集成以及交付;
   按需创建环境;
   限制半成品(WIP);
   构建支持顺利变更的安全系统;看板(任务可视化)

The Three Ways-The Second Way

概念 
   价值流(开发-运维-客户)的快速持续反馈
   避免问题再次发生
    (或者快速发现和修复)
   从源头上保证质量

部分关键实践和方法
   适时停止生产线

持续改进
   构建自动化测试套件,确保代码随时可部署
   Dev和Ops共享目标和pain
   远程监测手段(自动化)

The Three Ways-The Third Way

概念
   ◆创建培育良好的文化(不断尝试、重复和练习)

部分关键实践和方法
   ◆营造勇于创新、敢于冒险以及高度信任的企业文化
   确保至少20%资源投入在非功能需求上
   不断鼓励和强化改进

第一章 DevOps概述的更多相关文章

  1. 第一章 数据库概述、MySQL的安装和配置

      第一章 数据库概述.MySQL的安装和配置   1.为什么要使用数据库 最早是纸质文件来存储数据 缺点:不易保存,占用空间大 计算机出现以后,采用软件来进行保存(excel) 缺点:容易损坏 文件 ...

  2. Laxcus大数据管理系统2.0(2)- 第一章 基础概述 1.1 基于现状的一些思考

    第一章 基础概述 1.1 基于现状的一些思考 在过去十几年里,随着互联网产业的普及和高速发展,各种格式的互联网数据也呈现爆炸性增长之势.与此同时,在数据应用的另一个重要领域:商业和科学计算,在各种新兴 ...

  3. [OpenGL红宝书]第一章 OpenGL概述

    第一章 OpenGL概述 标签(空格分隔): OpenGL 第一章 OpenGL概述 1 什么是OpenGL 2 初识OpenGL程序 3 OpenGL语法 4 OpenGL渲染管线 41 准备向Op ...

  4. 数据结构(Java语言描述)-第一章:概述

    第一章 概述 1.0 序言 自己为啥要学数据结构嘞,我觉得主要有以下三个原因: 前段时间在看并发编程时,发现aqs,corrunthashmap等底层都用到了数据结构,主要的有队列,还有链表,学习数据 ...

  5. C#本质论读书笔记:第一章 C#概述|第二章 数据类型

    第一章 1.字符串是不可变的:所有string类型的数据,都不可变,也可以说是不可修改的,不能修改变量最初引用的数据,只能对其重新赋值,让其指向内存中的一个新位置. 第二章 2.1 预定义类型或基本类 ...

  6. Struts2框架学习第一章——Struts2概述

    本章要点 —  Web应用的发展 —  Model 1和Model 2 —  MVC思想 —  MVC模式的优势 — 常用MVC框架及其特征 —  Struts 1的基本结构及其存在的问题 —  We ...

  7. 第一章 JQuery概述

    1.JQuery的作用:访问和操作DOM元素控制页面样式对页面事件进行处理扩展新的JQuery插件与Ajax技术完美结合注:JQuery能完成的效果js都能完成,但是JQuery的开发效率更高,代码更 ...

  8. C# 本质论 第一章 C#概述

    学习新语言最好的办法就是动手写代码. 库(或称为类库)的文件扩展名是.dll,其中dll代表"动态链接库(Dynamic Link Library)". 不要在标识符中使用单词缩写 ...

  9. Java第一章----Java概述+环境搭建

    写在前面的话: Java基础的东西看过好几遍,但是过一段都就忘记了,所以这次我决定花费一些时间整理一个系列博客供以后方便查阅.此系列根据Java编程思想+Java核心技术两本书整理而来,这两本书也是我 ...

随机推荐

  1. Java 使用 Maven BOM 统一管理版本号

    一个中大型的 Java 项目往往包含若干 JAR 包,这些 JAR 包有着不同的版本号.如果这些 JAR 包单独发布,然后直接通过版本号引用相应的 JAR 包,不同版本的兼容性维护将变得十分麻烦.为了 ...

  2. 06_pytorch的autograd操作

    06_pytorch的autograd操作 目录 一.引言 二.Variable 2.1 Variable 的数据结构 2.2 反向传播 2.3 autograd 求导数和手动求导数 三.计算图 3. ...

  3. 数据结构之链表(JavaScript描述)

    链表数据结构   链表存储有序的元素集合,但不同于数组,链表中的元素在内存中并不是连续防止的.每个元素由一个存储元素本身的节点和一个只想下一个元素的引用(也称为指针或链接)组成 类似的例子 创建链表 ...

  4. openpyxl 库

    1. 简介与安装 2.具体示例 2.1 获取workbook与sheet对象 2.2 访问单元格及其值 2.3 写数据 2.4 设置样式 1. 简介与安装 openpyxl 简介 openpyxl 是 ...

  5. CAP 5.0 版本发布通告

    前言 今天,我们很高兴宣布 CAP 发布 5.0 版本正式版.同时我们也很高兴的告诉你 CAP 已经有越来越多的用户并且变得越来越流行. 在 5.0 版本中,我们主要致力于更好的支持 .NET 5 以 ...

  6. red and black(BFS)

    Red and Black Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 40685   Accepted: 22079 D ...

  7. 逆向工程第005篇:跨越CM4验证机制的鸿沟(下)

    一.前言 本文是逆向分析CM4系列的最后一篇,我会将该游戏的序列号验证机制分析完毕,进而编写出注册码生成器. 二.分析第二个验证循环 延续上一篇文章的内容,来到如下代码处: 图1 上述代码并没有特别需 ...

  8. POJ2446 二分匹配

    题意:       给你一个n*m的格子,问你能不能用1*2的格子把他铺满,有的位置是不能被铺的. 思路:      水题,直接把个相邻的并且都是可以铺的点连一条边然后匹配一遍就行了,提醒一个地方,就 ...

  9. Android平台的so注入--LibInject

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/53890315 大牛古河在看雪论坛分享的Android平台的注入代码,相信很多搞An ...

  10. LA3266田忌赛马

    题意:       田忌和齐王赛马,两个人每人n匹马,每个马都有自己的速度,赢一场得到200分,输一场失去200分,平则不得分,问田忌可能得到的最高得分是多少? 思路:       又是一个比较经典的 ...