zoukankan      html  css  js  c++  java
  • 《构建之法》的几个思考

         通过快速阅读《构建之法》,结合自己所学与平时积累以及对计算机这一领域的基本认识,试着提出了以下几个问题,这些问题是针对软件工过程总体认识、书中部分概念性知识以及各个知识之间的联系进行提问的。

      问题一:通读该书目录包括个人技术流程团队和流程、敏捷流程、软件设计与实现、软件测试等章节,提出软件开发的基本流程是什么,如何快速熟悉并理解构建软件工程开发体系,我上网查阅了软件开发的基本流程:

      问题定义——>可行性分析——>需求分析——>概要设计——>总体设计等流程。

      但是没有亲身实践,还是无法理解这些流程的可行性,这些概念仍然是比较抽象,我希望通过这一学期的学习对软件工程的开发流程有着总体上的把握。

      问题二:我读了《构建之法》P10页佛瑞德·布鲁克斯提到的四个特性复杂性、不可见性、易变性和服从性以及由瓦茨拉夫·拉里奇提出的非连续性,这些特性是由软件本质所决定,软件还有其他特性,但是这非本质、临时的特性并不能决定软件工程的本质问题,那么问题来了,什么是软件工程的本质问题,通过查阅网上的资料找到软件工程的本质内容是:

      1、软件工程关注于大型程序的构造;2、软件工程的中心课题是控制复杂性;——许多软件的复杂性主要不是由问题的内在复杂性造成的,而是由必须处理的大量细节造成的。3、软件经常化;4、开发软件的效率非常重要;5、和谐地合作是开发软件的关键;6、软件必须有效地支持它的用户;7、在软件工程领域中是由一种文化背景的人替具有另一种文化背景的人创造产品。

      从这几个方面上来看,软件工程的本质并不是特别通俗易懂。所以想深入理解软件工程的本质问题,并尝试找到解决方法。

      问题三我读了《构建之法》P52页,作者有提到软件的模块之间存在存在各种复杂的依赖关系,软件的不可见性和易变性,使得软件之间的依赖关系很难定义清楚,导致软件不易得到及时的维护和修复。我查了有关软件之间的依赖关系的定义:

      有两个元素A、B,如果元素A的变化会引起元素B的变化,则称元素B依赖(Dependency)于元素A。在类中,依赖关系有多种表现形式,如:一个类向另一个类发消息;一个类是另一个类的成员;一个类是另一个类的某个操作参数,等等。

      这些是在阐述依赖关系,但是软件之间的依赖关系有哪些?如何合理解决依赖关系带来的问题也是一个难点,尤其是找到那个平衡点,避免出现书中提到的对依赖关系的两种极端态度。

      问题四:我看了第十三章的内容,该章节讲述了各种测试方法,通过网上查阅发现测试方法还有好多,比如书中未提到的逆向测试、接口测试等,网上可以看到黑白盒测试的优缺点如下:

      白盒测试:

      1.优点: 迫使测试人员去思考软件的实现; 可以检测代码中的每条分支和路径; 揭示隐藏在代码中的错误; 对代码的测试比较彻底; 最优化。  

      2.缺点: 昂贵; 无法检测代码中遗漏的路径和数据敏感性错误;不验证规格的正确性。  

      黑盒测试: 

      1.优点: 对比较大的代码单元来说,黑盒测试比白盒测试效率要高; 测试人员不需要了解实现的细节,包括特定的编程语言; 测试人员和编码人员是彼此独立的;从用户的视角进行测试,很容易被理解和接受;有助于暴露任何规格不一致或者有歧义的问题;测试用力可以在规格完成之后马上执行。  

      2.缺点:只有一小部分可能的输入被测试到,要测试每个可能的输入流几乎是不可能的; 没有清洗的和简明的规格,测试用例是很难设计的; 如果测试人员不被告知开发人员已经执行过的用例,在测试数据上会存在不必要的重复; 会有很多程序路径没有被测试到; 不能直接针对特定程序段测试,该程序段可能隐藏更多错误;大部分和研究相关的测试都是直接针对白盒测试的。   

      在通读的过程中体会到每种方法的优缺点,但是我想知道这些方法的适用范围以及有没有使用的先后顺序,以便更加顺利地完成测试工作。

      问题五:我读了《构建之法》P316页,文中有提到软件测试的概念是指运用一定的流程和工具,验证软件能实现预先设计的功能和特性,工作的流程和结果通常是可量化的,例如软件效能的参数,我觉得这个概念是指软件性能以及效率,上网查阅软件效能的含义,有软件系统效能的评估,评估具有五大要素:评估主体、评估对象、评估目标、评估手段(准则、方法、工具)、评估实施,但是还是觉得这样理解欠考虑,所以希望通过学习了解软件效能的具体含义以及软件效能的参数是什么?

      最后,我读了第五章团队和流程与第十六章IT行业的创新,我想能否将创新尝试着带入今后的团队合作中去,如何有效地实现团队管理和有效地实现团队的创新,希望自己可以在今后的团队合作中摸索出经验。

  • 相关阅读:
    http
    jquery
    wsgi
    urls控制器
    模板template
    ORM
    C++中获取汉字拼音首字缩写/全拼及生僻字的处理
    C语言函数strstr
    CString 成员函数用法
    判断字符串中是否存在中文
  • 原文地址:https://www.cnblogs.com/zhanghuih/p/8552507.html
Copyright © 2011-2022 走看看