bug终结者 团队作业第一周

时间:2021-01-27 20:50:53

bug终结者 团队作业第一周

小组组员及人员分工

小组成员

  • 组长:
  • 20162323 周楠
  • 组员:
  • 20162302 杨京典
  • 20162322 朱娅霖
  • 20162327 王旌含
  • 20162328 蔡文琛
  • 20162329 张旭升

人员初步分工(今后可能会根据具体工作进行调整)

Program Manager

周楠

是团队的行政领导,带领大家在项目中工作,学习

负责开发/测试之外的一些事务和项目进度的管理

利用人脉,对小组成果进行后期宣传,推广

小组博客的撰写者

Project Manager

朱娅霖

负责绝对客观公正地对各组员的工作进行考核

负责开发/测试之外的一些事务和项目进度的管理

小组博客的主要撰写者

张旭升

负责具体代码实现

推动全组同学学习,教会大家写代码

杨京典

负责具体代码实现

推动全组同学学习,教会大家写代码

王旌含

前期负责提供思路及大致方向

中期协助写代码

在后期进行测试,寻找bug,提出不足及改进方案

蔡文琛

前期负责提供思路及大致方向

中期协助写代码

在后期进行测试,寻找bug,提出不足及改进方案

《构建之法》阅读

1. 概论

  • 1.1 软件 = 程序 + 软件工程
    • 一个复杂的软件不但要有合理的软件架构、软件设计与实现,还要有各种文件和数据来你、描述各个程序文件之间的依赖关系、编译参数、链接参数等等。这些都是软件构建的过程。
    • 源代码管理,配置管理,质量保障,软件测试,需求分析,软件维护,用户体验
  • 1.2 软件工程是什么
    • 软件的特殊性。复杂性,不可见性,易变性,服从性,非连续性
    • 软件工程与计算机科学联系紧密,但软件工程更注重实践、应用,计算机科学更注重理论研究。
    • 软件工程的目标——用户满意的,可靠的,流程质量高的,可维护的

2. 个人技术和流程

  • 2.1 单元测试
    • VSTS
    • 单元测试应该在最基本的功能、参数上验证程序的正确性
    • 单元测试必须由最熟悉代码的人来写
    • 单元测试应该覆盖所有代码路径 那么我们该如何确认单元测试是否覆盖所有路径了呢?
    • 回归测试
  • 2.2 效能分析工具
    • 抽样
    • 代码注入
  • 2.3 个人开发流程
    • PSP(Personal Software Process)
    • 多花时间在需求分析和测试上面
  • 2.4 实践
    • 单一职责原则
    • WC项目

3. 软件工程师的成长

  • 3.1 个人能力的衡量与发展
  • 3.2 软件工程师的思维误区
    • 分析麻痹
    • 不分主次,想解决所有依赖问题
    • 过早优化
    • 过早扩大化、泛化
    • 画扇面
  • 3.3 软件工程师的职业发展
  • 3.4 技能的反面

4. 两人合作

  • 4.1 代码规范
  • 4.2 代码风格规范
    • 缩进、行宽、括号、{ }、分行、命名、下划线、大小写、注释
  • 4.3 代码实际规范
    • 函数
    • goto 什么是goto?
    • 错误处理:参数处理,断言
  • 4.4 代码复审
    • 自我复审
    • 同伴复审
    • 团队复审
  • 4.5 结对编程
    • 极限编程
  • 4.6 两人合作的不同阶段和技巧
    • 正确给予反馈

5 团队和流程

  • 5.1 非团队和团队
  • 5.2 软件团队的模式
  • 5.3 开发流程

6 敏捷流程

  • 6.1 敏捷的流程简介
  • 6.2 敏捷流程的问题和解法
  • 6.3 敏捷的团队
  • 6.4 敏捷总结
  • 6.5 敏捷的问答

7. 实战中的软件工程

  • 7.1 MSF简史
  • 7.2 MSF基本原则
  • 7.3 MSF团队模型
  • 7.4 MSF过程模型
  • 7.5 实战中的软件工程

8. 需求分析

  • 8.1 软件需求
  • 8.2 软件产品的利益相关者
  • 8.3 获取用户需求——用户调研
  • 8.4 竞争性需求分析
  • 8.5 功能的定位和优先级
  • 8.6 计划和估计
  • 8.7 分而治之

9. 项目经理

  • 9.1 PM是啥
  • 9.2 微软PM的来历
  • 9.3 PM做开发和测试之外的所有事情
  • 9.4 领导力——高效的团队讨论
  • 9.5 PM和风险管理

10. 典型用户和场景

  • 10.1 典型用户和典型场景
  • 10.2 用例
  • 10.3 规格说明书
  • 10.4 功能驱动的设计

11. 软件设计与实现

  • 11.1 分析和设计方法
  • 11.2 图形建模和分析方法
  • 11.3 其它设计方法
  • 11.4 从Spec到实现
  • 11.5 开发中的源代码管理
  • 11.6 实战中的源代码管理
  • 11.7 代码完成

12. 用户体验

  • 12.1 用户体验的要素
  • 12.2 用户体验设计的步骤和目标
  • 12.3 评价标准
  • 12.4 贯穿多种设备的用户体验

13. 软件测试

  • 13.1 基本名词解释及分类
  • 13.2 各种测试方法
  • 13.3 实战中的测试
  • 13.4 运用测试工具

14. 质量保障

  • 14.1 软件的质量
  • 14.2 软件的质量保障工作

15. 稳定的发布阶段

  • 15.1 从代码完成到发布
  • 15.2 不同频率和不同覆盖范围的渐近分布
  • 15.3 发布之后——事后诸葛亮会议

16. IT行业的创新

  • 16.1 创新的迷思
  • 16.2 创新的时机
  • 16.3 创新的招数
  • 16.4 魔方的创新
  • 16.5 创新和作坊

17. 人,绩效和职业道德

  • 17.1 领导力
  • 17.2 领导力——知人善任
  • 17.3 领导力——带领团队成长
  • 17.4 猪、鸡和鹦鹉的故事
  • 17.5 其实还是人的问题
  • 17.6 绩效管理
  • 17.7 萝卜与白菜
  • 17.8 软件工程师的职业道德

提出问题

  • 问题1: 成为一个好的程序员需具备哪些条件与素养?

  • 问题2:没有多少项目经验,基础又不是很好的话,该怎样提高自己的能力,该如何调整自己呢?

  • 问题3:在结对编程中,如何才能更好地分配两个人的工作?如果由于某些原因,你的同伴未能完成相应的任务,可是这个任务必须马上要提交,这时候该怎么做?

  • 问题4:做软件测试必须有哪些的知识储备?

  • 问题5:100%的代码覆盖率并不等同100%的正确性,那么要怎么样才能保证100%的正确性?

  • 问题6:软件质量的保证涉及太多方面,哪一方面是最重要的?哪一方面是最容易出纰漏的?

王旌含:对于我们团队的模式来说,我认为我们现在处于业余团队模式,或者更像是明星模式,而最优的模式当然是功能团队模式,这个模式将沟通、协作的作用发挥到了极致。在我们团队的萌芽期,我们应该如何摆脱懒散、打酱油的情况?如何能向功能团队的模式进发。是团队当前所面对的最大的难题。

秘密团队模式和一窝蜂团队模式都具有很大的*度,为什么秘密团队模式却有效的多?

书中提到了过早优化的问题,那么如果编写的程序过大,等到编写完的时候再优化是不是会很繁琐?

如何能有效的确定优化和泛化的时机,是软件的优化达到最佳效果?

蔡文琛:JAVA开发流程设计和前期框架构建的重要性。程序开发团队应该如何组织?在使用程序时,用户是否需要详细的使用方法,为什么?对于用户的短期刺激和长期影响,哪个更有参考性?程序开发是否需要设计者的感情设计?