第四章学习笔记
一、代码规范
1、代码风格规范。主要是文字上的规定,看似表面文章,实际上非常重要。
代码风格的原则是:简明,易读,无二义性。包括了:缩进、行宽、括号、断行与空白的{}行、分行、命名、下划线、大小写、注释。
2、代码设计规范。牵扯到程序设计、模块之间的关系、设计模式等方方面面的通用原则。
包括:函数、goto、错误处理。
二、代码复审
包括:自我复审、同伴复审、团队复审
代码复审的目的:
1、找出代码的错误。
2、发现逻辑错误,程序可以编译通过,但是代码的逻辑是错的
3、发现算法错误,比如使用的算法不够优化,边界条件没有处理好等
4、发现潜在的错误和回归性错误
5、发现可能需要改进的地方
6、教育开发人员,传授经验,让更多的成员熟悉项目各部分的代码,同时熟悉和应用领域相关的实际知识
列举一个简单的代码复审核查表:
1、概要部分
2、实际规范部分
3、代码规范部分
4、具体代码部分
5、效能
6、可读性
7、可测试性
三、结对编程
1、结对编程的好处:
①在开发层次,结对编程能提供更好的设计质量和代码质量,两人合作解决问题的能力更强。
②对开发人员自身来说,结对工作能带来更多的信心,高质量的产出能带来更高的满足感。
③在企业管理层次上,结对能更有效地交流,相互学习和传递经验,分享知识,能更好地应对人员流动。
总之,如果运用的得当,结对编程可以取得更高的投入产出比。
四、两人合作的不同阶段和技巧
1、萌芽阶段
2、磨合阶段
3、规范阶段
4、创造阶段
5、解体阶段
第八章学习笔记
软件需求:
1.获取和引导需求
2.分析和定义需求
3.验证需求
在软件产品的生命周期中管理需求
如用以下不同角度划分
1.对产品功能性的需求
2.对产品开发过程的需求
3.非功能性需求
4.综合需求
获取用户需求——用户调查
1.焦点小组
2.深入面谈
3.卡片分类
4.用户调查问卷
5.用户日志研究
6.人类学调查
7.眼动跟踪研究
8.快速原型调研
等软件做好了再去找用户做调查,未免太费时,并且修改的成本很高。能否快速地取得用户的反馈?这时不妨拿一些纸张模型,让用户去使用,得到反馈。
9.A/B测试
如果你的产品已经有一些用户在用,你想对用户界面做一些改进,但是又不知道到底有多少用户会喜欢新的界面,怎么办?此时就可以运用A/B测试来获取改进方向。
竞争性需求分析的框架
1. N(Need,需求)
这个需求可以是明确的、公开的也可能是说不清道不明的
2. A(Approach,做法)
3. B(Benefit,好处)
4. C(Competitors,竞争)
D(Delivery,推广)
功能的定位和优先级
杀手功能(Core)/ 外围功能(Context)
我们的竞争对手和用户已经决定了一些此类产品必须要满足的需求,不能满足这些需求,产品就入不了用户和评论员的法眼,当然,还有许多功能是辅助性的。
又得到另一种划分
必要需求(Mission Critical)/ 辅助需求(Enabling)
这四种划分结合起来,就得到了功能分析的四个象限。
杀手功能:OCR文字识别技术,可以在屏幕上取词解释,拥有独家权威词典,等等。
外围功能:良好的界面设计,在各个平台上都能运行。
必要需求:单词短语释义的准确性(如果达不到这一点,用户就不会来使用)。
辅助需求:可以做各种皮肤(这也许能让一些用户更喜欢这个软件,但不是决定因素)。
资源有限,我们对不同功能有哪些办法呢?有下面五种办法。
维持——以最低成本维持此功能。
抵消——快速地达到“足够好”、“和竞争对手差不多”。
优化——花大力气做到并保持行业最好。
差异化——产生同类产品比不了的功能或优势(我有人无的优势,或者一个数量级以上的优势)。
不做——砍掉一个功能也是一个办法,我们并不一定要做所有的功能。