当前课程知识点:软件工程与软件自动化 > 第一章 软件工程基础 > 1.2 万变不离其宗 > 授课视频3/3
测试阶段呢
我们可以理解为是亡羊补牢式的
就是说我们软件产品的质量
前面你怎么做的,暂且不表
到了测试阶段,OK
我们要保证产品出厂之前我要做最后的测试
检验合格盖章出去了,不合格退回来
测试里面据说这是一个很典型的
某公司招测试工程师的一个面试题
给你一台冰箱,你怎么测?
等面试人员回答的时候
一般情况下考察你两个方面
常规的回答就是这个冰箱外观上有没有破损啊
门能不能正确的开
温度够不够等等,这是常规的
或者说是我们正常人的思维
那么还有一种极端的
也就是冰箱呢,如果在电压不稳的情况下
它会不会正常运转
我断了电了,它的保温时间是多少,等等
就是这种,我们认为异想天开的
极端情况下可能出现的情况
只有面试者对这两个部分都考虑到了,OK
我们认为你也是一个,最起码在思维上
适合做测试人员
测试涵盖内容比较多
最基本的单元测试
说到这个单元测试比较有意思
我们可以认为所有的测试都是测试工程师做的
但只有单元测试是程序员来做的
但是单元测试对整个软件产品的质量
有一个举足轻重的地位
也就是说我们产生产品,
后面我们做集成,做系统测试的时候
那我们单个部件
单个模块的质量差
那会导致集成在一起的时候
导致无穷无尽的这种问题
所以说,我们首先保证我们自己的模块这种单元没有问题
然后在一块集成的时候,我们要重点测的就是
配合问题,时序问题
那部署呢,我们一般强调的是
开发环境和生产环境
我们现在做开发的时候用的开发环境
但是人家用户生产的时候
人家的环境可能和我们不一样
那我们要把我们现在的代码
放到我们的生产环境当中去看有没有问题
在部署的时候呢,因为本身的Bug可能没有被发现
那么在生产环境当中更容易暴露
在部署的时候还要考虑的问题就是
我们要发现我们的软件系统
最终在真实的生产环境当中的环境兼容性问题
比如说客户的操作系统和我们开发的操作系统可能不完全一样
他用的数据库版本也不相同
都可以对我们的软件的运行造成影响
在部署的时候我们一般要强调
随着这个自动化技术的发展
我们现在对这个自动化部署越来越重视
比如说我们现在下载的一些软件
这些软件往往都会自动的更新
在手机上可能由于权限的问题,就问你
我要更新,你同不同意
你也可以设置说自动的更新
这样的话呢,当这个软件有新的版本发布之后
用户根本不需要做任何的处理
系统会自动的完成更新
这种自动化的部署
可以极大的降低我们的部署成本
比如说在早期的时候
我们新发布了一个补丁或者一个版本的时候
我们要通过光盘呀,通过ftp服务器呀
来通知客户,让你下载完之后或者把光盘邮给你
然后你进行一个更新,成本很高
现在呢,随着网络技术和自动化技术的发展
我们的这种自动化部署,现在非常成熟
维护阶段我们要解决什么问题呢
首先我们知道,维护分成四大类
第一类维护,改正性维护
就是说原来软件上有Bug
现在我放到生产环境当中去了
人家发现了,OK,发现了我们就改呀
有错误就必须得改
这类问题,改正性这种维护
适应性维护就是说
用户的(软件)用着用着,我们的软件本身没有问题对吧
但是你要换操作系统了
人家换了数据库了,环境变化了
我们软件发现在新的操作系统下运行有问题,OK
那我们必须要做一些维护
完善性维护,这个完善性维护现在占的比例越来越高
比如说,用户在使用的过程当中,业务发生了变化
或者说他的需求发生了变化
他就想呢,我能不能加一个这个呢
能不能改一个这个呢
这种完善性的维护实际上就是用户的需求变更
从开发阶段一直延续到了维护阶段
而且我们在讨论软件需求的时候还会讨论到
说需求无时无刻都会存在
那最后一个是预防性维护了
我将来可能会有什么问题,我先给他解决了
这里面最典型的是千年虫
2000年的时候
原来两位数的这个计算机软件
1995年,就95俩字
到了2000年的时候,变成00年了
原来是两位存储,现在变成四位存储
还没到2000年的时候
几乎所有的软件公司,全球所有的软件公司
都会对这个产品进行预防性的维护
这是一个很经典的预防性维护的例子
在整个软件开发活动当中
我们没有提管理,不是管理不重要
而是因为它太重要了
所以我们单独的拿过来说
在整个软件开发活动当中
管理活动应该贯穿从头到尾
这里我们要提几点
第一点我们要了解一下二八理论
这二八理论在社会生活当中应用太普遍了
比如说银行,20%的高端客户贡献给银行80%的利润
那么在各个领域我们都有对应的二八理论的出现
拿我们软件开法来说
这是我们的知识结构
比如说开发人员我们叫技术人员
技术人员掌握80%的技术和20%的管理
这是我们的二八理论
那很多程序员,我们讲的是技术控
不仅仅是程序员,其他开发员也有这种现象
就是技术控,他只对技术感兴趣
他对管理,对不起,不感兴趣,与我没关
那么这样的话
如果这个被管理者作为团队的一员
你没有任何的管理意识和被管理意识
你不了解管理者为什么要制定这样的规则
为什么那么多限制,那么你可能
如果你没有这种想法的话
你不能换位思考,因为你不具备这样的知识
那么你在这种协作过程当中就会出现
不愉快,不和谐的一些行为
那么不和谐有什么不好的地方呢
我们软件开发呀是一个高创造性的活动
所涉及到的人员,都是高创造性的人员
高智商的,高创造性的
我们很多人呢,就把我们的程序员比喻成猫
比喻成猫,灵活,有激情
现在软件工程里面有一个牧猫理论
牧羊和牧猫的区别在哪里
羊啊,绵羊很老实是吧
一个人放200头羊或500头羊都没问题
让他去哪他就去哪
让他吃他就吃,不让他吃让他回家他就走了
没什么怨言
但是猫就不一样了
你想象一下,早上你放一群猫
你要带他们出去散散步,溜溜弯
一出门所有的猫全不见了
你说回家吃饭了,这猫也没搭理你
该干嘛干嘛,也就是说牧羊与牧猫的差异
在我们软件开发活动当中
大部分的开发人员具备了猫的特性
所以说在我们管理过程当中
包括我们后面要讨论的这种目前小的团队
敏捷开发团队当中,我们一般建议的团队人员是7人
也就是说5—9人之间
你是一个leader,manager,PM
那么你手下的人最好在5到9个
不能太多,我说我管理能力强
我能管理20人,很难
这一点我们特别强调的是
无论是管理人员还是我们技术人员
都非常有必要学习我们软件工程
尤其是我们要重视工程里面的管理与被管理的技巧
基本的理论,具有一个管理与被管理的思维
好,这部分我们就讨论到这里
-1.1 软件工程的前生今世
--开篇阅读
--授课视频
-第一章 软件工程基础--1.1 软件工程的前生今世
-1.2 万变不离其宗
--授课视频1/3
--授课视频2/3
--授课视频3/3
-第一章 软件工程基础--1.2 万变不离其宗
-1.3 唯一不变的是变化
--授课视频1/3
--授课视频2/3
--授课视频3/3
--外部链接
-第一章 软件工程基础--1.3 唯一不变的是变化
-1.4 亡羊补牢为时不晚
--授课视频1/2
--授课视频2/2
-第一章 软件工程基础--1.4 亡羊补牢为时不晚
-扩展阅读与话题讨论
--扩展阅读
--话题讨论
-2.1 方法论来源于恐惧
--授课视频
-第二章 敏捷开发--2.1 方法论来源于恐惧
-2.2 敏捷是什么
--授课视频
-第二章 敏捷开发--2.2 敏捷是什么
-2.3 典型敏捷开发方法
--XP敏捷开发方法
-第二章 敏捷开发--2.3 典型敏捷开发方法
-2.4 敏捷不是万能药
--授课视频
-第二章 敏捷开发--2.4 敏捷不是万能药
-专家谈敏捷
-扩展阅读与话题讨论
--外部链接
--话题讨论
-3.1 面向对象核心概念和基本特性
-第三章 OO与UML--3.1 面向对象核心概念和基本特性
-3.2 面向对象设计基本原则
-第三章 OO与UML--3.2 面向对象设计基本原则
-3.3 通用职责分配模式(GRASP)
--通用职责分配模式
-3.3 通用职责分配模式(GRASP)--作业
-3.4 从重构到模式
--模式和设计模式
-第三章 OO与UML--3.4 从重构到模式
-3.5 使用UML设计面向对象系统
--UML综述
-第三章 OO与UML--3.5 使用UML设计面向对象系统
-3.6 主要UML模型图绘制技巧
--UML用例图
--UML类图
-第三章 OO与UML--3.6 主要UML模型图绘制技巧
-扩展阅读与话题讨论
--设计模式有毒么?
--话题讨论
-4.1 案例简介
--书籍参考
--案例说明
-4.2 对象模型之一
--授课视频1/2
--授课视频2/2
-第四章 对象模型分析--4.2 对象模型之一
-4.3 对象模型之二
--授课视频1/2
--授课视频2/2
-第四章 对象模型分析--4.3 对象模型之二
-4.4 对象模型之交互
--授课视频
-第四章 对象模型分析--4.4 对象模型之交互
-扩展阅读与话题讨论
--图书推荐
--话题讨论
-5.1 软件自动化概述
--软件自动化概述
-第五章 软件自动化技术--5.1 软件自动化概述
-5.2 典型自动化方法和工具
-第五章 软件自动化技术--5.2 典型自动化方法和工具
-5.3 文档自动化
--文档自动化视频
-第五章 软件自动化技术--5.3 文档自动化
-5.4 测试自动化
--测试自动化视频
-第五章 软件自动化技术--5.4 测试自动化
-专家访谈
-扩展阅读与话题讨论
--话题讨论
-6.1 持续集成
-第六章 CI/CD与DevOps--6.1 持续集成
-6.2 持续交付和部署
-第六章 CI/CD与DevOps--6.2 持续交付和部署
-6.3 DevOps
-第六章 CI/CD与DevOps--6.3 DevOps
-专家访谈
-扩展阅读与话题讨论
--DevOps专题
--话题讨论
-7.1 质量和质量保证
--授课视频
-第七章 软件质量保证--7.1 质量和质量保证
-7.2 软件质量模型
--授课视频
-第七章 软件质量保证--7.2 软件质量模型
-7.3 SQA组织与职责
--授课视频
-第七章 软件质量保证--7.3 SQA组织与职责
-7.4 全面软件质量管理
--授课视频
-第七章 软件质量保证--7.4 全面软件质量管理
-专家访谈
--专家访谈
-扩展阅读与话题讨论
--外部链接
--话题讨论
-8.1 软件过程综述
--授课视频
-第八章 软件过程改进--8.1 软件过程综述
-8.2 软件过程改进
--授课视频
-第八章 软件过程改进--8.2 软件过程改进
-8.3 能力成熟度模型
--授课视频
-第八章 软件过程改进--8.3 能力成熟度模型
-8.4 过程改进标准框架
--授课视频
-第八章 软件过程改进--8.4 过程改进标准框架
-扩展阅读与话题讨论
--话题讨论
-9.1软件复用综述
--授课视频
-第九章 软件复用--9.1软件复用综述
-9.2 软件构件技术
--授课视频
-第九章 软件复用--9.2 软件构件技术
-9.3 软件复用实施
--授课视频
-第九章 软件复用--9.3 软件复用实施
-9.4 微服务架构
--授课视频
-第九章 软件复用--9.4 微服务架构
-扩展阅读与话题讨论
--微服务扩展
--话题讨论
-文档提交处--文档提交