`

可理解性(Understandability)——一个扩展视角

阅读更多

   可理解性与可测试性,可维护性,可扩展性,可重用性等属性一起组成了软件开发的内部质量属性。

 

   所有这些质量属性中,我认为最重要的的就是可理解性。

 

   首先我们来看看人是如何行动的。比如我要买一个手机,我会去网上找我喜欢的牌子,了解功能,价格,售后服务等信息。了解了情况之后,我们可能去手机卖场,淘宝等地方去实施购买行为。我在这里想表达的意思是,人们在做出行动之前,都会获取用于指导行动的信息,然后再进行行动。

 

   下面,我简要描述一个典型的软件开发过程:

 

   首先,销售联系客户,了解客户的需求后,和客户达成初步合作意向。销售带领公司售前技术支持去客户那里对解决方案进行演讲,以获得客户的认可。假设经过招标,最终拿下项目。这时,我们的需求分析人员开始需求分析,包括对客户高层,中层以及终端用户的访谈,收集报表等基础数据资料。需求分析人员写就《需求分析报告》,可能的话,和美工一起,把界面原型做出来。然后,开始去客户处演示。经过几轮的交流,需求基本得到认可。

 

    需求分析人员和设计人员交流,设计人员给出系统架构设计,数据库设计以及详细设计等等。然后经过设计和开发人员的交流,开发人员根据详细设计进行编码。如果前期设计人员只给出了架构设计和数据库设计,开发人员可能承担详细设计的任务。开发人员开始编码。开发人员交付测试。测试人员进行集成测试,测试人员进行确认。部署人员进行部署发布。

 

    可以看的出来,每个人都是其中的一个沟通单元,每个人获得信息,然后输出处理结果。每个人都是流程中的一部分,信息获取的多少,正确与否,都会影响我们的行为,进而影响你的输出。如果一个地方出错了,就会不断放大,而使整个系统处于颠簸和不稳定的状态。拿设计人员做一个例子:

 

    1)接受 需求分析人员传递的信息,通过召开需求宣讲会或是需求规格说明书

    2)设计人员理解 接收到的信息。

    3)设计人员根据理解的信息进行设计

    4)设计人员编写设计说明书

 

   设计的质量取决于需求人员传递的信息,设计人员本身对需求提供信息的理解,设计人员以往的经验这三方面。

 

   这里面最容易出问题的是三个地方:

 

   a. 设计人员接受的信息,也就是需求分析人员提供的信息可能是不完整的。

   b. 设计人员本身的理解也可能产生误差,取决于经验和对领域的了解程度。

   c.  需求规格说明书本身可能是不易理解的,也就是说工作单元产生的制品不具备可理解性。

 

    所有这些都可能造成工作的浪费,造成返工。这在软件开发中已经非常常见了。

 

    如果把这种沟通抽象出来,是三个方面:

 

   1)人和人之间的可理解性。

 

     我们每天的开会,日常交流,任务分配,培训,Presentation都是在人和人的交流。如果每个人都是一个可理解性强的人,就是说有足够的理解别人的能力(倾听,实现准备),有足够的正确表达自己想法的能力(需要不断训练)。信息就不会在我们之间堵塞(部分传递),变质(错误传递)。应该注意到信息是一个控制变量,遗漏信息和误传信息会影响到接收信息人的行为。

 

     我认为一个沟通流畅的团队就是一个优秀的团队。

 

   2)人和文档之间的可理解性。

 

     每天我们都在看文档,它是承载信息的方式。与人相比,它不会说话,不会回应。你唯一做的就是对它强加于你自己的理解。如果文档组织的好,结构清晰,就好像它会说话一样,那我就比较容易了解它的意图。仿佛它就是一个向导。反过来,可能会阻碍我的理解,更坏的结果是把我引向错误的道路。

 

     信息只有被用心组织才能有更好的可理解性。


   3)人和代码之间的可理解性。

 

    开发人员每天和代码为伴,很多人会修改以前别人的代码。好的代码会说话,坏的代码一句话不说,而且面目狰狞,五官发育不全。代码的可理解性是靠开发人员来控制的,是造一个天使还是一个怪物,全看我们的态度是怎么样的。

 

    写可理解性强的代码是一门艺术。

 

    总结下来,我想说的是,作为团队中的一员,你首先尽可能使你自己成为一个可理解性强的人,能够用心倾听,接受信息。也能够仔细思考你自己的表达方式,不要做闷葫芦,也不要用随意的表达方式表达你自己的想法。而是要考虑一下,接收你信息具体是什么样的人,如果我是他,我会怎么想。要针对不同的人呢,自己思考你的表达方式。要有意识的获取反馈,随时调整你自己的表达方式。写文档要考虑看文档的人,写代码要考虑看代码的人。

 

     两句总结:

 

    Do everything by intent。

 

    痛,则不通;通,则不痛。

 

 

0
0
分享到:
评论

相关推荐

    istqb-advanced-level-test-manager-syllabus-v5-高级测试经理认证大纲chapa20.

    1. **可理解性(Understandability)**:这是软件产品的一种能力,使用户能够判断软件是否适合特定任务,并了解如何使用。这是衡量软件易用性的组成部分。根据ISO 9126标准,可理解性与易用性紧密相关。 2. **单元...

    02丨从哪些维度评判代码质量的好坏?如何具备写出高质量代码的能力?1

    代码质量是衡量编程工作的核心指标,它涉及到代码的多个维度,包括可维护性、可读性、可扩展性和灵活性。这些特性是评价代码好坏的关键因素。 首先,**可维护性(maintainability)**是指代码在未来的修改和更新过程...

    (核心) 软件工程 软件质量模

    3. 易使用性(Usability):易理解性(Understandability)、易学性(Learnability)、易操作性(Operability)。 4. 效率(Efficiency):时间特性(Time behavior)、资源特性(Resource behavior)。 5. 可维护...

    软件质量特性

    - 可理解性(Understandability):用户应能轻松理解软件的逻辑和用途。 - 易学性(Learnability):软件应便于用户学习和掌握,降低学习曲线。 - 可操作性(Operability):操作界面应直观,易于用户进行日常...

    ISO_IEC_9126_Software

    - 可理解性(Understandability) - 学习性(Learnability) - 操作性(Operability) - 吸引力(Attractiveness) - 合规性(Compliance) 4. **效率(Efficiency)**:软件在资源使用上的效率,包括: - ...

    软件体系结构的质量属性.pptx

    软件体系结构的质量属性是软件工程中的一项重要概念,它是指软件体系结构中具有的性能、可靠性、可维护性、可扩展性、可移植性等方面的质量特征。这些质量特征是软件体系结构的核心组成部分,对软件的整体性能和可...

    软件工程教程

    4. **可理解性 (Understandability)**:要求软件结构清晰明了,便于用户理解和使用。这有助于降低维护难度。 5. **可维护性 (Maintainability)**:指的是软件在交付使用后仍可进行修改以修复错误、改善性能或适应...

    常见的软件质量模型.pdf

    模型包括 11 个质量要素、23 个质量标准和一系列的衡量指标和方法。 二、Boehm 软件质量模型 Boehm 软件质量模型是由 Barry W. Boehm 于 1978 年提出的,该模型试图通过一系列的属性指标来量化软件质量。Boehm ...

    金融软件的质量特性分析和优先等级划分

    - **易理解性**(Understandability):用户能否快速理解软件的功能和操作方式。 - **易学性**(Learnability):新用户的学习成本。 - **易操作性**(Operability):用户操作软件的简便性。 4. **效率**...

    东师21春《软件工程》在线作业1-0005参考答案.docx

    可理解性(Understandability):正确答案之一。良好的可理解性有助于提高可维护性。 - D. 可测试性(Testability):正确答案之一。良好的可测试性也有助于提高可维护性。 #### 十二、逻辑覆盖 - **概念**:逻辑...

    软件工程实践者的研究方法PPT学习教案.pptx

    2. 可读性和可理解性(Readability and Understandability):设计应该是可读的和可理解的,供编码和测试人员参考。 3. 完整性(Completeness):设计应该提供软件的完整图片,涵盖数据、功能和行为三个方面。 三、...

    (精)会计英语大全(20210925164855).pdf

    可理解性(understandability)确保信息易于理解;可比性(comparability)允许不同实体间的比较;实质重于形式(substance over form)强调经济实质而非法律形式;重要性(materiality)关注对决策有重大影响的信息...

    UMLrumejt(中文版)

    - **可理解性(Understandability)**:模型应清晰易懂,方便团队成员和其他利益相关者理解。 - **可维护性(Maintainability)**:随着系统的变化,模型需要能够方便地更新和调整。 - **可重用性(Reusability)**...

    会计英语的常用术语汇编.doc

    3. 可理解性(understandability),信息应清晰易懂。 4. 可比性(comparability),不同公司的财务数据应能相互比较。 5. 实质重于形式(substance over form),关注经济实质而非法律形式。 6. 重要性(materiality),只...

    会计英语常用语.pdf

    - 可理解性(understandability)意味着信息应简洁明了。 - 可比性(comparability)允许不同公司或时期的财务数据进行比较。 - 实质重于形式(substance over form)强调真实经济实质优于法律形式。 - 重要性...

    CAAI 国际人工智能会议 (CICAI 2021).pdf

    10. 人工智能的可解释性、可理解性和可验证性(Explainability, Understandability, and Verifiability of AI):关注人工智能的决策过程是否透明、用户能否理解以及其结果是否可验证。 11. 人工智能的跨学科研究...

    (精)会计英语大全.pdf

    - **Understandability**:可理解性,信息应易于理解。 - **Comparability**:可比性,不同企业的会计信息可以相互比较。 - **Substance over form**:实质重于形式,强调实质而非表面形式。 - **Materiality**...

Global site tag (gtag.js) - Google Analytics