想找点云计算的网课来看看,无意中发现了这个不错的mooc:CS169.1X 云计算与软件工程。内容涵盖云计算概念,软件工程的相关理念,以及如何通过云计算满足软件工程的需求。遂打算深入学习一下,并做了如下笔记(持续更新)。
如课程所讲,软件工程是一个需要终身学习的概念,这其实更应该是一个程序员的核心技能,但往往我们都对此忽视,往往注重于单一的技能的术,而忽视最根本的道,即使是软件工程专业课,也只是沦为简单的概念背诵。希望可以通过这个课程,这个笔记,时刻提醒自己勿忘核心。
软件工程概论
SaaS: 软件即服务
- 无需担心安装/环境配置
- 无需担心数据丢失
- 易于协作同样数据
- 中心化数据
- 统一硬件系统环境:兼容性
- 易于更新:中心化
SOA:面向服务架构
- 系统由能提供服务的独立模块组成,每个模块通过接口提供服务,模块间通过接口进行通信
- 设计时最先设计接口
SaaS‘s Demand On infrastructure
- Communication: 服务可交互
- Scalability:可扩展性(增加规模服务
- 集群
- Dependability:可靠性
软件质量
- 遗留代码:遗留的功能可用的代码,质量差 不算失败
- 质量标准:可用/易于开发调试修改
- 测试
- 检验与确认:do the thing right and do the right thing
- 黑盒测试与白盒测试
- 单元/模块/集成/系统测试
- 回归测试:测试修改部分
- 测试覆盖率:覆盖率高不等于测试好
生产力因素
- 代码简洁
- 代码简短易于阅读
- 抽象等级高:高级语言
- 代码合成
- code by example
- 复用
- 复用函数
- 标准库
- 对象/类
- 设计模式
- 自动化工具
- 代码简洁
开发过程
plan-and-document
模型
- 瀑布模型
- 螺旋模型
- RUP
问题:
- 需要强大的PM
- 沟通成本
- 文档驱动
敏捷开发
- 四大宣言:个体协作/能用的软件/客户沟通/拥抱变化
- 极端编程:如果某个事是好的,则做到极致/最大化
- 测试驱动开发
- 行为驱动设计
- Scrum开发
- team size
- role:master PO
- 3个问题
- 解决冲突
结对编程
- driver
- observer
Ruby
课程的核心内容为利用Rails on Ruby搭建SaaS服务,所以Ruby也是一个重点。因为个人而言,编程语言最好的学习方法还是动手去做,因而就没有记录笔记了。下面为一些可能会用到的链接和个人的一些见解。
语言特点
列举比较特别印象深刻的或者是其它没有的
- 究极面向对象:一切变量皆对象,一切函数皆方法
- 诗歌式编程:因为调用均方法=>可省略括号=>像语句一样
- 字符串/正则良好支持
- 元编程与反射:
- 元编程:编写代码的代码
- 反射:运行时动态获取对象属性方法
method_missing
当方法在类中未定义时,进入该方法
- 函数式编程
- duck-typing: 能响应相同方法的被视作相同的类
- Module:为实现特定方法的实例提供相应的方法
相关链接
课程编程作业
环境配置(待填坑 : 大坑!
- 官方建议使用云端cloud9框架的IDE服务已被收归AWS并且停止原服务,使用还得绑定信用卡
- 本地自行搭建的cloud9服务也无法按照官方仓库wiki配置方法进行配置
- 文档没有写清楚最重要的Ruby版本要求以及相关package的
BDD和TDD
BDD:行为驱动设计
- User Story:
- As role
- to do what
- So that achieve
- 评价准则:SMART
- Specific & Measurable:场景具体且易于测量/评价
- Achievable:1轮迭代可实现
- Relevant:具有实现价值
- Timeboxed:具有时间界限
- 流程:与用户交互生产user story card,并将其添加到待办项。根据优先级与难度选取用户故事进行实现
- 任务点数评价用户故事的难度,通常投票决定
- 使用Tracker可以追踪用户故事完成情况及开发速率
TDD: 测试驱动开发
- FIRST原则:针对单元测试
- Fast
- Independent
- Repeatable
- Self-Checking
- Timely
- RSpec
SaaS应用结构
- C/S结构
- 3层结构
- Web Server
- App Server
- Database
- ActiveRecord:model自己知道如何CRUD
- DataMapper:通过mapper进行对象与数据库记录的映射
- MVC
- view: template view | transform view
- 陷阱:fat controller/view
- RESTful
Rails
- MVC
- Model:ActionRecord
- Controller:通过router转发到控制器
- View:haml
- 约定优于配置:符合约定不需配置文件,仅在不符合约定时配置文件
- 调试:RASP
- log
- interactive
敏捷开发
质量度量
- Code Smells
- SOFA原则
- Short
- One:代码只做一件事
- Few Arguments
- Abstract:抽象在同一等级
- Reek工具可分析
- ABC评分:变量,分支,条件数量
- 通过flog评分,超过20有问题
- 通过路径数量评分