当前课程知识点:软件工程 >  第1章 初识软件工程  >  1.6 业界人士谈软件工程 >  海芯科技创始人施侃乐访谈

返回《软件工程》慕课在线视频课程列表

海芯科技创始人施侃乐访谈在线视频

海芯科技创始人施侃乐访谈

下一节:讨论题

返回《软件工程》慕课在线视频列表

海芯科技创始人施侃乐访谈课程教案、知识点、字幕

我们是一家专门从事于

3D打印的技术公司

我们致力于去做下一代的

智能3D打印的操作系统

和3D打印机

在我们整个的开发过程里面

有很多人

做了很多软件方面的研究

和开发的工作

而这里面最主要的一些工作

跟我们的软件工程

其实是息息相关的

我们就是这样的一家公司

提供3D打印机的操作系统

把3D打印这个概念

引入到我们的日常生活中来

让4岁以上的小孩子

就能够玩起来3D打印机

那么说到操作系统

这是一个软件的范畴

在制作整个3D打印的操作系统的

这个过程里面

我们涉及到软件工程的方方面面

在这里呢

我们也结合这样的课程

我们为大家介绍三点

我们在日常开发的过程中

涉及到了哪些方面

像我们公司

在100多个员工里面

有大部分是软件的开发人员

而这些开发人员里面

很大部分呢

很大部分我们的设计师

都是软件工程这门课的学生

我们在创业的

最开始的十几个创始人里面

大部分也都是刘强老师的学生

在开发软件的过程中

我们注意到

做一个软件

并不仅仅是把这个软件做出来

而更重要的

是把这个软件做成一个好用

能用和易用的软件

在这个开发过程里面

涉及到我们的平衡

那么就是软件的质量

和软件的开发周期

这两者之间的平衡

而软件工程

其实是解决这样的问题的一个

解决方案

软件工程里面

提供了很多开发的模型

包括我们的瀑布式的开发

我们的敏捷式的开发等等

而不管采用什么样的开发的流程

我们最主要是解决的是

面临特别大的市场的挑战

我们如何能够在最短的时间内

开发出最快捷 有效

和易用的软件来

我们做了全世界的第一款

基于3D打印机的操作系统

那么在开发这个过程中

其实我们遇到了

非常非常多的问题

在这些问题里面最主要的

是大量的软件开发的困难

如何让大家并行地一起工作

和一起解决

那么这就是软件工程里面

涉及到的项目管理

和项目协同这样方面的概念

软件工程

为我们提供了很多

项目管理的模型和方法

它教我们如何让很多人

一起开发这个软件

让一起开发的这个软件

还能够同时运行在同一台机器上

这是一件非常非常了不起的事

在书里面经常有人说

软件是这个世界上

最复杂的一件工程

为什么呢

因为软件体现在每个人

不同思维的耦合

那么我们在做这样一款

三维打印机上的操作系统的时候

事实上也遇到了这些问题

我们在打印机的

设计的这块的代码里面

有很多很多超过几十个的模块

那么我们有几十个开发人员

同时去写这样的程序

那么这个中间大家可以想象

遇到了哪些的问题

这中间包括我们工程方面的

代码的耦合

这就涉及到软件工程里面

提供的代码的管理

我们用Subversion的方式

来管理我们很多版本的代码

那也涉及到我们

这个软件开发的过程中

任务的管理

我们之前用track

现在用更多的先进的

这种管理方法

去管理我们的整个的任务和团队

让我们软件开发的进程

按照一步一步地往前推动

那么在这个整个的过程中

其实每一个环节都涉及到

我们软件工程的内容

而所以软件工程对我们来说

不仅仅是一个课程

而更重要的是实践的过程

和推动我们软件项目往前走的

一个必要的工具

那么第二者呢

我们也谈谈这个软件

大家都在说

这个软件是一个非常非常容易

出错的一个系统

当IBM去发布

它的第一款操作系统的时候

已知的Bug就成百上千

而我们的操作系统

事实上暴露在用户面前

这个中间涉及到的问题和Bug

非常非常的少

为什么呢

因为这几十年来

我们的软件工程

取得了长足的进展

而软件工程在这个过程中

管理的是一个什么事

就是让我们的软件的品质提高

让我们的软件出现的问题

越来越少

在我们整个开发

这个操作系统的过程中

我们涉及到如何用计算机

去跟我们的硬件系统耦合

大家都知道3D打印机

是一个硬件和软件

耦合在一起的这样的一个设备

如何通过它们之间的耦合

尽量地减少问题

而这些方面的问题

事实上非常难以调试

因为我们要涉及到

用我们的单片机

去控制我们的硬件系统

控制我们的每一个电机进行运转

那么还涉及到

我们有一个特别大的屏幕

这个屏幕上面的程序

如何去控制我们的单片机

那么这个中间每一个环节

都可能蕴含着非常非常多的错误

我们用什么方法去进行测试

去进行度量

那么是软件工程告诉我们的

软件工程里面

有一个非常重要的内容

就是如何进行软件的质量保证

和测试管理

对我们的开发工作而言

其实我们的开发团队

采用了三种层面的测试

那么这三种层面的测试

分别是我们的单元测试

我们的集成测试

和我们的用户的使用的测试

单元测试

就是让我们每一个开发人员

都能够在写好自己的那一个函数

写好自己那一个模块的同时

同时做好整个软件的问题的检测

和测试工作

那么这个其实依赖于本身

软件开发人员的个人的素质

但是呢

我们软件工程

是解决一个什么问题

是通过规范的方式

和制定规则

让我们每一个人发挥的效能

是相同的

让我们软件的开发

不依赖于我们每一个人的

具体的能力的强弱

让我们的软件的品质

是均一化的 可以保证的

那么当我们所有的人

都把自己的程序写好以后

把所有的内容放在一起

我们要做集成测试

我们的集成测试

其实非常复杂

那么包括我们的硬件的集成测试

硬件和软件的集成测试

和软件上层的集成测试

那么这个中间

还有大量的软件测试的方法

要等待我们去做

那么最终呢

我们要做消费者的

这个用户的使用测试

我们往往请很多的小孩子

请很多的非专业的用户

去尝试使用我们的软件

那么这个就好像是

最早年的时候

微软也请很多很多的消费者

来使用

提供很多很多的用户

测试的反馈

来使我们的整个的开发得到迭代

那么这块是用户测试

我们认为这一块非常非常的重要

如果没有软件工程

为我们铺设的这些方法

和道路的话

可能我们现在的软件开发

还停留在几十年前

做一个软件出现很多很多问题

这样的问题中

那么软件工程的开发

不是一个人的工作

它不是做一个小的程序

我们做一个软件

所谓的软件

就是很多人把自己的智慧

和代码集合在一起

这样的一种集成的体

软件的这种集成体开发的过程中

也涉及到很多的模式

有的朋友就在问

我们每一个人

都有自己的开发方式

每一个人都有自己的开发方法

那么在这些开发方法

使用的过程中

可能每一个人都有自己的习惯

软件工程是解决什么问题呢

就是让不同的开发人员

把自己的使用习惯

都归结成一些规则

让我们每一个人写出来的代码

都是同样的思维

同样的思路

看起来像一个人写的代码

那么这就是软件工程中间

有很多的模式

我们把这个模式叫做设计模式

我们公司里头

采用的很多开发方式

也正是因为使用了

这些标准的设计模式

使得所有人思考这个软件

想这个问题的方式

都得到了统一

因此所有人的代码

可以在这个方面得到一致化

得到统一

那么软件工程介绍了

十几种开发的模式

设计的模式

我们在软件工程的课里面

也会一一地学到

而想跟大家交流的是

这些设计模式

在我们实实在在的开发过程中

事实上都得到了特别广泛的应用

而正是因为我们

科学地使用了这些设计模式

才使得我们几十个

开发人员的工作

能够耦合在一起

能够最终做出我们的产品来

这是相当不容易的一个工作

从总体上来讲

我们做了几十年的

这种软件开发的研究

到现在来讲

从最开始的操作系统

到我们现在的

3D打印机上的操作系统

大家还会遇到各种

智能设备上的操作系统

还会遇到我们更多的

复杂的系统的软件

而这些软件的开发过程中

我们之所以能够做出这样的软件

之所以能够保证这些软件

能够健康 有效地运行

最重要的一点就是

我们采用了

科学的软件工程的管理方法

这些科学的管理方法

是让我们每一个开发人员的智慧

能够耦合在一起

能够让他们以规范的方式

互相配合

最后做出我们的软件来

那么在软件工程开发的过程中

人始终是最重要的

对于我们而言

整个开发过程中

人的几个基本的素质

我们认为是特别重要的

第一点

首先就是这个人

应该拥有极强的代码的阅读

和理解的能力

以及书写代码的这个能力

而第二点呢

其实对于整个行业

和这个软件发展来看更重要

就是每一个软件的工作人员

需要有一个极强的责任心

责任感

和对整个软件产业的敬畏之心

这种敬畏

不仅仅是包括对于

前人工作的敬畏

更重要的是对于我们用户的体验

用户的感知的敬畏

我们每一个软件的开发人员

要以满腔的热情

投入到书写代码的工作

测试的工作中去

而更重要的是

要从自己的开发工作中

自我反省 自我提升

在这个提升的过程中呢

不仅仅是要对自己的代码

自己的程序负责任

同时也需要对自己的代码和程序

为用户做出的这样的体验负责任

让我们每一个用户

使用到咱们的程序的时候

都表现出完美的体验和感受

那么第三点呢

我们认为

一个合格的软件工程师

应该具备的素质

就是职业的道德

这个中间包括

对代码的品质的保证

以及对整个公司的秘密的保护

等等等等

这些方面的素质

那么第四点我们认为很重要的是

每一个程序员

需要和其他的程序员

具有一个协同的能力

这中间包括人与人

是如何相处

人与人之间如何交换自己的代码

开发的心得

以及交流自己的开发的经验等等

那么这些每一个素质

对于我们的开发人员讲

都是不可或缺的

在我们的公司

也有非常多的开发人员

我们从

很多的开发人员的面试过程中

几乎是100个人员里面

能够选择一两个开发人员

加入到我们的团队里面去

而这些加入到公司的开发人员

至少具有以上的四种特质

我们认为这样的开发人员

是能够在软件开发的过程中

为整个公司做出贡献

和做出一个完整的软件的

最后

还是希望大家能够喜欢这门课

然后也希望

通过我们这个亲身的实践

告诉大家

软件工程不仅仅是一个学科

而更重要的是几十年来

软件开发的经验的总结

这些经验对于我们来说

极其的宝贵

这使得我们

可以让很大的软件设计的团队

耦合在一起

制作出大家日常生活中

用的各种各样的软件

当然

这个中间也包括

我们的3D打印的操作系统

希望大家喜欢这门课

也希望大家能够在这门课里面

学到很多的知识

谢谢大家

软件工程课程列表:

第1章 初识软件工程

-1.1 软件无处不在

--讲课视频

-1.2 软件的本质特性

--讲授视频

-1.3 软件工程的产生与发展

--讲授视频

-1.4 软件工程的基本概念

--讲授视频

-1.5 软件质量实现

--讲授视频

-1.6 业界人士谈软件工程

--海芯科技创始人施侃乐访谈

-测验题--作业

-讨论题

--讨论题

-作业题

--第一张 作业题

第2章 编写高质量代码

-2.1 编程过程与规范

--讲课视频

-2.2 良好的编程实践

--讲课视频

-2.3 Python集成开发环境

--讲课视频

-2.4 代码静态检查

--讲课视频

-2.5 代码性能分析

--讲课视频

-2.6 结对编程实践

--讲课视频

-2.7 刘贺谈软件工程

--讲课视频

--讨论

-测验题--作业

-作业题

--第二章 作业题

第3章 单元测试

-3.1 单元测试概述

--讲课视频

-3.2 黑盒测试方法

--黑盒测试方法

-3.3 白盒测试方法

--基本概念

--代码覆盖标准

--基本路径测试

-3.4 单元测试工具

--单元测试工具

--html

-测验题--作业

-作业题

--第三章 作业题

--作业题附件

第4章 软件开发过程

-4.1 软件过程

--讲课视频

-4.2 软件过程模型

--讲课视频

-4.3 敏捷开发过程

--讲课视频

-4.4 微软公司开发过程

--邹欣经理自我介绍

--微软开发过程之一

--微软开发过程之二

-测验题--作业

第5章 团队开发管理

-5.1 团队组织与管理

--讲课视频

-5.2 项目沟通管理

--讲课视频

-5.3 软件项目计划

--讲课视频

-5.4 软件项目估算

--讲课视频

-测验题--作业

-讨论题

--讨论

第6章 敏捷开发与配置管理

-6.1 敏捷开发之Scrum

-- 敏捷开发之Scrum

--html

-6.2 用户故事与估算

--讲课视频

-6.3 团队协作工具Tower

--Tower工具介绍(1)

--Tower工具介绍(2)

-6.4 配置管理

--讲课视频

-6.5 配置管理工具Git

--讲课视频

-测验题--作业

-作业题--作业

第7章 需求获取

-7.1 需求工程师

--讲课视频

-7.2 需求定义

--讲课视频

-7.3 需求的类型

--讲课视频

--讲课视频(2)

-7.4 需求工程过程

--讲课视频

-7.5 需求的主要来源

--讲课视频

-7.6 需求获取技术

--讲课视频

--讲课视频二

--讲课视频三

-7.7 撰写需求文档

--讲课视频

-测验题--作业

-讨论题

--讨论

第8章 用例建模

-8.1 用例建模概念

--讲课视频

-8.2 用例建模过程

--讲课视频

-8.3 用例建模精讲

--讲课视频

-8.4 建模工具介绍

--讲课视频

-8.5 微信抢票应用案例

--讲课视频

-测验题--作业

-讨论题

--讨论

第9章 面向对象分析与设计

-9.1 面向对象分析

--讲课视频

-9.2 CRC卡片分拣法

--讲课视频-1

--讲课视频-2

-9.3 面向对象设计

--讲课视频-1

--讲课视频-2

-9.4 类图建模

--讲课视频-1

--讲课视频-2

-第9章 面向对象分析与设计--测验题

-讨论题

--讨论

第10章 行为建模

-10.1 顺序图概念

--讲课视频

-10.2 顺序图建模

--讲课视频

-10.3 顺序图风格

--讲义视频

-10.4 状态建模

--讲课视频

-10.5 状态图

--讲课视频

-10.6 状态图精讲

--讲义视频

-测验题--作业

-讨论题

--讨论

第11章 软件系统设计

-11.1 软件体系结构概念

--讲授视频

-11.2 软件设计原则

--讲授视频

-11.3 软件体系结构风格(一)

--讲授视频

-11.4 软件体系结构风格(二)

--讲授视频

-11.5 软件体系结构风格(三)

--讲授视频

-11.6 软件设计过程

--讲授视频

-11.7 Web系统架构设计

--讲授视频

-11.8 数据库选择策略

--讲授视频

-测验题--作业

-作业题

--html

--html

--html

-作业题--作业

第12章 软件交互设计

-12.1 交互设计概述

--讲授视频

-12.2 交互设计目标

--讲授视频

-12.3 GUI设计原则

--讲课视频

-12.4 KLM效率模型

--Video

-12.5 Fitts定律

--讲授视频

-12.6 交互设计过程

--讲授视频

-测验题--作业

第13章 软件系统测试

-13.1 软件测试概念

--讲课视频

-13.2 软件测试类型

--讲课视频

-13.3 软件功能测试

--讲课视频

-13.4 软件性能测试

--讲课视频

-测验题--作业

第14章 软件交付与维护

-14.1 软件部署与交付

--讲课视频

-14.2 软件演化与维护

--讲课视频

-测验题--作业

第15章 期末考试与总结

-第一部分:基础知识

-第二部分:编程与测试(选做)

--编程与测试(选做)

海芯科技创始人施侃乐访谈笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。