《构建之法》读书笔记

Drajun Drajun     2022-10-10     293

关键词:

目录

软件工程的阶段... 1

好的单元测试标准:... 1

代码复审... 2

结对编程... 2

软件开发流程... 3

敏捷流程    Scrum.. 3

MSF. 5

需求分析... 5

典型用户和场景... 6

规格说明书(Spec)--包括 功能说明书和技术说明书(设计文档) 8

用户体验... 9

软件测试... 10

质量保证... 11

关于IT行业的创新... 11

 

 

 

软件工程的阶段

1、         需求分析;

2、         设计阶段;

3、         实现阶段;

4、         稳定阶段;

5、         发布阶段;

6、         维护阶段。

 

好的单元测试标准:

1、         在最低的功能/参数上验证程序的正确性;

2、         单元测试由最熟悉该程序代码的人来写;

3、         单元测试过后,机器状态保持不变;

4、         测试效率要高;

5、         单元测试应产生可重复、一致的结果;

6、         若程序引用的其它模块比较耗时,可以人为构造数据;

7、         应覆盖所有代码路径;

 

代码复审

1、         定义:看代码是否在“代码规范”的框架内正确地解决了问题;

2、         方式:自己复审、他人复审;

3、         复审目的:找出错误、发现需要改进的地方、互相学习;

4、         其它复审:设计复审、测试计划复审和文档复审;

 

结对编程

说明:

一对程序员面对同一个显示器,使用同一个键盘同一个鼠标一起工作,他们一起分析,一起设计,一起写测试用例,一起编码,一起做单元测试,一起做集成测试,一起写文档等;

好处:

  1. 两个人合作解决问题的能力更强
  2. 给开发人员带来更多的信心;
  3. 更有效地交流,相互学习和传递经验;

 

软件开发流程

5、         瀑布模型(Waterfall Model)

 

适用范围:

  ·产品定义稳定,产品正确性非常重要,需要每一步的验证;

  • ·产品模块之间的接口、输入和输出能很好地用形式化的方法定义和验证;
  • ·使用的技术非常成熟,团队成员都很熟悉这些技术;
  • ·负责各个步骤的子团队不能做到频繁交流;

   

 

敏捷流程    Scrum

6、           敏捷开发原则:

  • ·尽早并持续地交付有价值的软件以满足顾客需求;
  • ·欢迎需求变化,并利用这种变化来提高用户的竞争优势;
  • ·经常发布可用的软件,发布时间能短则短;
  • ·业务人员和开发人员在项目开发过程中应每天共同工作;
  • ·以有进取心的人为项目核心;
  • ·面对面交流时最有效的沟通方式;
  • ·可用的软件是衡量项目进展的主要目标;
  • ·敏捷流程应保持可持续的发展;
  • ·保持简明——尽可能简化工作量的技艺;
  • ·时时总结如何提高团队效率,并付诸行动;

 

7、           敏捷开发的步骤:

第一步:找出完成产品需要做的事情(Product Backlog),每一项工作的时间估计为天;

 

第二步:决定当前冲刺(Sprint)需要解决的事情——Sprint Backlog,将整个产品的实现划分为几个互相联系的冲刺;产品订单上的任务进一步细化,以小时为单位(16小时以内),团队成员根据自身领取任务;

 

第三步:冲刺(Sprint),冲刺阶段不受外部影响,有任何需求变动都留待冲刺结束后再讨论;

冲刺期间每天开一个‘每日例会’,各成员汇报工作进度,报告下一步计划,以及遇到的问题;

 

第四步:得到软件的一个增量版本,发布;然后又在此基础上进一步计划增量的新功能和改进;

 

8、           敏捷开发过程中的问题:

(1)   各个需求和任务之间是有依赖关系的,除了优先级外,怎么在计划中体现依赖关系?

(2)   有些任务需要很长时间做,后面的任务又基于这个耗时任务;

有任务很困难无人认领;

(3)   例会流于形式(改进:定义好任务究竟是什么,记载完成这个任务需要多少时间);

(4)   代码完成->集成测试->Alpha发布->设计上的BUG修复->代码完成->再测试->检验是否够好了->发布;

 

9、           适用范围

              方式

客观因素

敏捷(Agile)

计划驱动(Plan-driven)

形式化开发方法(Formal Method)

产品可靠性要求

容忍经常出错

较高

极高

需求变化

经常变化

不经常

固定

团队人员数量

不多

较多

不多

人员经验

资深人员带队

中层技术人员为主

资深专家

公司文化

鼓励变化

崇尚秩序,按时交付

精益求精

例子

微博网站

办公软件,商业用户用的软件

复杂系统的核心组件,科学计算

 

MSF

10、     基本原则

(1)  推动信息共享与沟通;

(2)  为共同的远景而工作;

(3)  充分授权和信任;

(4)  各司其职,对项目共同负责;

(5)  交付增量的价值;

(6)  保持敏捷,预期和适应变化;

(7)  投资质量;

(8)  学习所有的经验;

(9)  和顾客合作;

 

需求分析

11、     找准需求的步骤

(1)  获取和引导需求(需求捕捉);

(2)  分析和定义需求;(定义需求的内涵,需求的量化);

(3)  验证需求;(验证是否分析准确);

(4)  在软件生命周期管理需求;(需求会变化,技术会发展);

 

12、     获取用户需求:

(1)  焦点小组;(用户代表和项目的利益相关者一起讨论)

(2)  深入面谈;(招募目标用户做试验)

(3)  对需求卡片分类;(讨论->明晰定义->归类->排序)

(4)  用户调查问卷;

(5)  用户日志研究;

(6)  人类学调查;(融入到目标用户当中去)

(7)  快速原型法;(做一个简单的例子或模型给用户,得到反馈)

(8)  A/B测试;(用两个不同风格的界面给用户使用,得到反馈)

 

13、     竞争性需求分析的框架:

(1)  Need 需求

(2)  Approach 做法

(3)  Benefit 好处

(4)  Competitors 竞争

(5)  Delivery 推广

 

典型用户和场景

14、     典型用户的模板:

(1)  名字(越自然越好)

(2)  年龄

(3)  收入

(4)  该典型用户的比例和重要性

(5)  使用这个软件的典型场景

(6)  使用本软件/服务的环境

(7)  生活/工作情况

(8)  知识层次和能力

(9)  用户的动机、目的和困难(困难即需要解决的问题)

(10)            用户偏好;

 

15、     场景

(1)  背景

  • ·典型用户;
  • ·用户的需求/需要解决的问题;
  • ·假设;

(2)  场景

  • ·关于这个场景的文字描述。
  • ·列出这个故事出彩的地方,软件哪些功能让用户特别满意逻辑和界面设计要注意哪些因素,第一次使用和多次使用的用户在体验上有何区别对待;
  • ·其它资料;

 

规格说明书(Spec)--包括 功能说明书和技术说明书(设计文档)

16、     功能说明书(Functional Spec)模板:

(1)  Spec目标是什么,Spec的目标不包括什么;(定义好相关概念);

(2)  Spec的用户和典型场景;

(3)  Spec用到了哪些术语,它们的定义是什么?

(4)  用户是如何使用软件的功能的?

(5)  边界条件(比如输入内容的上限和下限,数量变化….)

(6)  功能有什么副作用,对于其它功能有无依赖关系;

 

17、     功能驱动的设计步骤:

(1)  构造总体模型;

(2)  构造功能列表;

(3)  制定开发计划;

(4)  功能设计阶段;

(5)  实现具体功能;

 

二、     从Spec到实现步骤:

1、         估计开发任务所需的时间;

2、         写快速原型代码看一下效果;

3、         看到初始效果和了解了实现的细节后,写设计文档;

4、         根据设计文档写代码;

5、         复审、重构、单元测试;

6、         得到一个可以测试的版本;

7、         修复BUG;

8、         签入;

 

用户体验

1、         要素:

(1)  用户的第一印象

(2)  从用户的角度考虑问题

(3)  记住用户的选择

(4)  短期刺激和长期影响

(5)  不让用户犯简单的错误

(6)  用户体验和质量;

 

2、         评价用户体验的标准:

(1)  尽快提供可感触的反馈;

(2)  系统界面符合用户的现实惯例;

(3)  用户有自用控制权;

(4)  一致性和标准化;

(5)  适合各种类型的用户;

(6)  帮助用户识别、诊断并修复错误;

(7)  有必要的提示和帮助文档;

 

软件测试

1、         测试工作中的文档:

(1)  测试计划;

(2)  测试设计说明书;

(3)  测试用例;

(4)  错误报告;

(5)  测试报告;

 

2、         不同阶段中的测试:

(1)  远景和计划阶段:讨论测试计划和测试设计说明书;

(2)  开发阶段:

开发人员要写单元测试,测试人员写BVT(构建验证测试);

对每一个成功的构建运行功能测试/场景测试;

功能逐渐完善,进行集成测试,进行非功能性测试(压力、效能、可用性、安全性….);

(3)  稳定阶段:根据验收标准进行验收测试;Alpha/Beta测试;回归测试;

(4)  发布阶段:把尽可能多的测试用例自动化,为下一个版本测试工作做好准备;

 

质量保证

1、         软件工程的质量体现:

(1)  软件开发过程的可见性;

(2)  软件开发过程的风险控制;

(3)  软件内部模块,项目中间阶段的交付质量;

(4)  开发成本的控制;

(5)  内部质量指标的完成情况;

 

关于IT行业的创新

1、         一些似是而非的观点:

(1)  灵光一闪,伟大的创新就紧随其后;

(2)  大家都喜欢创新;

(3)  好的想法会赢;

(4)  创新者都是一马当先;

(5)  要成为领域的专家,才能创新;

(6)  技术的创新是关键;

(7)  成功的团队更能创新;

 

第一周读书笔记《构建之法》(代码片段)

构建之法读书笔记#wmd-previewh1color:#0077bb  构建之法读书笔记沈三景PB15061249软件工程读书笔记 前言开学前两周,杂事颇多,没有充足的时间阅读《构建之法》,只能每天在睡前阅读约半小时,故只看了前三章。虽如此... 查看详情

构建之法——读书笔记

第8章需求分析8.1软件需求 寻找需求:1.获取和引导需求(Elicitation)        软件团队需要找到软件的利益相关者,了解和挖掘他们对软件的需求,引导他们表达出对软件的需求。 2.分析和定... 查看详情

《构建之法》第四&十七章读书笔记

  《构建之法》第四&十七章读书笔记一.        前言    再次阅读《构建之法》,愈发被其中生动有趣的举例吸引。作为一本给予软件工程学生的书籍,其不以枯燥的理论知... 查看详情

构建之法——读书笔记

第七章MSFWhatisMSF?——MicrosoftSolutionFramework(微软解决方案框架)即一个方法论,也就是微软推荐的软件开发方法。MSF基本原则:MSF没有像敏捷那样搞一个宣言,但是它也有一套思想框架—9条基本原则 1.推动信息共享与沟通(... 查看详情

《构建之法》第4.17章读书笔记

 《构建之法》第4.17章读书笔记第四章原文语句:      异常不能跨过DLL或进程的边界来传递信息,所以异常不是万能的。提出问题:      1.什么是DLL?DLL是来解决什么问题的?网上... 查看详情

构建之法——读书笔记

  《构建之法》第十&十一章主要讲述了在软件设计前期的需求分析问题上的方法和实践经验,分为“典型用户和场景”以及“软件设计与实现”。其中第十章大部分内容包含:用户的分类(典型用户可以包括以下内容... 查看详情

《构建之法》读书笔记

目录软件工程的阶段...1好的单元测试标准:...1代码复审...2结对编程...2软件开发流程...3敏捷流程   Scrum..3MSF.5需求分析...5典型用户和场景...6规格说明书(Spec)--包括功能说明书和技术说明书(设计文档)8用户体验...9软... 查看详情

构建之法——读书笔记

第五章5.1非团队和团队团队特点:1.有一致的集体目标,要一起完成这目标。       2.团队成员有各自的分工,互相依赖合作,共同完成任务。非团队特点:各自行动,独立把任务完成,有人不辞而别,... 查看详情

构建之法——读书笔记

第六章敏捷流程在软件工程的语境里,“敏捷流程”是一系列价值观和方法论的集合。敏捷开发的原则:        1.尽早并持续地交付有价值的软件以满足顾客需求。       &nbs... 查看详情

《构建之法》读书笔记

...一节软件工程课上,杨老师力荐同学们务必要人手一本《构建之法》第二版。课上说到这本书无论是对学习软件工程学科的学生,还是教授软件工程课程的老师,或是从事软件开发行业的相关人员,都是一本令人受益良多,大开... 查看详情

《构建之法》读书笔记01

  今天阅读了邹欣老师的《构建之法:现代软件工程》的第一章,也回想起了我之前对于软件和硬件的一些思考,在这里一并总结。  首先谈软件工程,在计算机技术刚刚发明的时候,跟其他的行业一样,肯定是没有工程这... 查看详情

读书笔记——《构建之法》

...成长,写出更优秀的博客。那么下面开启正文吧。  《构建之法》一书面向初级程序开发者,讲述个人开发、小组开发、团队开发中所要注意到的问题。有助于本学期软工课程的机会,我第一次能够担任一个较大小组(8人)... 查看详情

《构建之法》读书笔记

     项目经理     介绍了产品经理——正确地做产品与项目经理——正确地做流程。以及微软的职位名称。微软产品团队三足鼎立的角色分配就是PM、开发、测试。PM负责除产品开发和测试之... 查看详情

《构建之法》读书笔记二

 这周读了《构建之法》的第二章。第二章主要讲到了个人技术和流程。 软件是由多人合作完成的,不同人员的工作相互有依赖关系。一个团队需要一定的流程来管理开发活动,每个工程师在软件生命周期所做的工作也应... 查看详情

构建之法——读书笔记

本周粗略的过了一遍第12章。第12章用户体验其实,计算机软件的用户界面(UserInterface,UI)和用户体验(UsereXeperience,UX)是一个有着丰富内容的学术领域,软件工程师们在长期工作中也积累了很多相关的经验。 无论软件还... 查看详情

《构建之法》读书笔记

...工程包括一下领域:源代码管理+需求分析+程序设计+软件构建+软件测试+软件维护+生命周期管理等,广泛意义的软件工程,还包括用户体验、用户界面设计(UID)等;软件工程决定了软件质量。文中还提到软件工程和计算机科学的... 查看详情

《构建之法》读书笔记一

本周先看了《构建之法》的第一章。这一章介绍的理论和知识点有计算机科学的领域、软件的特性、软件工程、软件工程与计算机科学的关系,还向我们详细介绍了软件工程的定义与组成部分。其中有三个推论:程序=数据结构+... 查看详情

《构建之法》读书笔记

   在第四章的两人合作中,了解到代码的规范特别重要。“代码规范”可以分成两部分:代码风格规范。主要是文字上的规定,看似表面文章,实际上非常重要。代码设计规范。牵涉到程序设计、模块之间的关系、设... 查看详情