software-engineering-digest

software engineering

软件概念、工程目标、软件发展不同阶段、软件危机

历史

从程序—软件—工程
开始软件更像是艺术家的创作,重在挖掘计算机的潜力。
航空与软件的相似

软件分类: os,app

软件危机: 易变性、复杂性、不可见性、服从性, 提升编程效率

软件工程目标

软件的成功以商业的成功为恒量

  1. 开发一款符合用户需求的软件
  2. 在某一时间之前
  3. 软件可维护与可持续发展

知识拓展

游戏是如何运行的?
UI + 逻辑 + DB

软件工程师的个人成长之路

初级,中级,高级
需求分析—分析设计—评估工作量– 可行性分析–代码实现–测试–维护

能力发展:

  1. 积累开发相关知识
  2. 积累问题领域知识
  3. 通用软件设计思想、工程思想
  4. 提升职业技能:发表意见、组织、管理、沟通交流、
  5. 实际成果

职业发展
软件开发是一门工程、艺术、手艺

软件质量的恒量

代码量、规模-功能点、质量、时间

PM 的故事

product Manager , Project Manager , Program Manager

  1. product Manager: 长颈鹿(高瞻远瞩)
  2. project Manager: 狐狸(思维缜密、注重时间成本)
  3. Program Manager:鹰(集大成者)

微软 PM 的来历(保罗-艾伦)
交流成本的上升需求,开发人员更专注于技术性

PM 的技能和工作要求
开发和测试外的工作同行重要。

  • 功能类设计
  • 对商业和客户非常了解
  • 广泛经验,知识、商业、拓展能力

PM 最重要的任务

  • 完成目标
  • 平衡资源
  • 创建、维护软件规格说明书

PM 能力要求

  • 沟通理解、快速学习
  • 分析、管理、(重要、紧急)
  • 专业能力
  • 自省、总结

PM 风险管理
人员、技术、流程、环境

  • 流程(成本、预算、需求)
  • 环境(政策、法律、市场)
    解决风险、承受风险、规避风险
    软件开展要有前瞻性。(竞争对手以及摩尔定律)
    应急计划、把风险变为机遇

代码规范

团队精神
风格规范:简明、易懂、无二义
设计规范:函数、类、(能封装就不要用类,最小开销)

结队编程

why how what
例子: 船长、大副、二副
起因:代价高、专业、高速
优势:攻坚、审核、避免英雄主义
注意事项:3/4 小时互换
how:

- 阻击手
- 观察手
- 交换,时间,不存在上下级关系,好的环境

沟通的方式:
断言、共识(桥梁)、说服、吸引

团队

高效率、高水准的完成任务

团队模式:

- 主治医生
- 明星模式(主治医生的极限)
- 社区
- 秘密团队
- 特工
- 交响乐团(比较无聊,适合大型软件,adobe windows )
- 爵士音乐模式
- 功能团队模式(微服务)
- 官僚模式

流程模式:

- 敏捷
- 瀑布
- 改进式瀑布
- RUP 统一模型(集大成者)、UML 统一建模语言、里程牌(每个阶段是一个小迭代)
- 老板流程
- 渐近发布

管理相信一线员工的直觉,要能给钱

如何解决分岐

- 独裁、投票、咨询(打击团队信心)、轮流决策、达成共识

萌芽–磨合–规范化–创造–高度自治

MSF 微软解决方案框架-方法论(9 条原则)

  1. 信息公开
  2. 共同远景
  3. 充分授权与信任
  4. 各司其职(管理、开发、测试、发布、体验)
  5. 重视商业价值和渐进价值
  6. 保持敏捷、预期、和变化
  7. 投资质量
  8. 经验分享
  9. 与客户一起工作

绩效管理

猪、鹦武、鸡

敏捷开发

燃尽图

用例与规格说明书
技术规格说明书

功能驱动开发

  1. 问题领域专家(架构、主程)
    输出:总体模型,E-R 图,数据流,事件流

  2. 功能、业务活动之间关系

  3. 开发计划
  4. 方法、类属性

文案的重要性

代码复审,效能评估


--Write by Marcustar,关关雎鸠,在河之洲
目录
Download 相册