【第四周读书笔记】读构建之法第11到第16章

因为这周有个人作业,所以我看了一些比较偏向于设计方面的知识。

软件设计方面:需求分析:有哪些实体,如何抽象出属性,实体之间的关系是什么,用户的需求是什么?

设计与实现:软件是怎么解决这些需求的?

测试与发布:软件真的解决了这些需求了吗?

分析和设计:

  ①以文字为主的文档,如word,powerpoint。

  ②以图形为主构造的模型:Mind Map,ERD,DFD,UML,甚至FLOW CHART

  ③用数学语言的描述:Vienna Development Method

  ④用类语言+代码构造的描述。或者源代码加注释也可以描述。

图形建模和分析方法:

  表达实体与实体的关系:

  Mind Map:适用于鼓励探索,发散思维的场合,如头脑风暴。

  Entity Relationship Diagram:在我们分析实体之间的关系时,这就是一个理解和抽象的过程。

  Use Case Diagram:用例图:绘图简明,尽快让团队成员和利益相关者理解系统的需求。

  表达数据的流动:DFD

  ex.大学生图书管理系统包括的数据流包括:和管理机构相关的数据流,和读者相关的数据流,和新书入库相关的数据流,和时间相关的数据流。

  表达控制流:FSM有限状态自动机。

从spec到实现:

  把修改签入到代码库中:根据场景和开发任务来决定集成的次序。互相依赖的任务要一起集成。在测试场景中,要保证端到端的测试。场景的所有者必须保证场景完全通过测试,然后把场景的状态改为解决。

  标准工作过程:功能需求->复审SPEC->详细设计->实现设计->Dev自测->伙伴测试->源代码同步合并构建->签入测试->提交签入。

  

用户体验:

  计算机软件的用户界面和用户体验是一个有着丰富内容的学术领域。

  它有以下要素:

  ①用户的第一印象:用户安装软件之后,第一印象很重要。我们要考虑:用户的使用方式,怎么进入这个网站的,知道这个产品做什么,怎么尽快找到他们想要的功能。怎样在用户第一次使用时,少花时间在对用户没有价值的部分:设置,登陆,注册,填信息等等,而把大部分时间花在有价值的功能。

  ②从用户的角度考虑问题:要有同理心,理解别人的处境,心理,动机的能力。用户需要帮助,但是用户没那么笨。

  ③软件服务始终都要记住用户的选择:在每个功能都要记住用户的选择,并且始终如一。

  ④长期使用之后,软件会更好用吗?

 

同时,用户体验跟质量有冲突的时候,牺牲质量去追求用户体验么?这是一个权衡利弊的问题。都是看情况而定。

软件测试:

  按测试设计的方法分类:黑箱测试和白箱测试:黑箱是设计测试的过程中,把软件系统当作一个黑箱,无法了解和使用系统的内部结构和知识。是测试软件的行为的。白箱是设计者可以看到软件系统的内部结构,并使用软件的内部结构来选择测试数据以及具体的测试方法。  

  按测试的目的分类:功能测试:单元测试--在最基本的功能/参数上验证程序的正确性。功能测试--验证模块的功能。集成测试--验证几个互相有依赖关系的模块的功能。场景测试--验证几个模块能否完成一个用户场景。系统测试--对于整个系统功能的测试。ALPHA/BETA 测试--外部软件测试人员在实际用户环境中对软件进行全面测试。

  非功能测试:压力测试--测试软件在负载情况下能否正常工作。效能测试--测试软件的效能。可访问性测试--测试软件是否向残疾用户提供了足够的辅助功能。本地化/全球化测试。兼容性测试。配置测试--测试软件在各种配置下能否正常工作。软件安全性测试。

原文地址:https://www.cnblogs.com/gzgs/p/8668630.html