软件工程问题及回答
第一~第四章:
1、是不是一定要程序理解,程序理解中说新成员要尽快读懂已有的程序,了解程序的设计,那么如果已有的程序很庞大,很复杂,不懂其编程思想,新成员要读懂它不是要花很多时间吗?还要花精力去学习新的,这样不是要浪费时间与精力吗?(第一章 P4)
答:若是团队中有新增加了新成员,对于已有的程序,要想减少时间与精力的浪费,可以让写程序的本人给大概地给新成员展示讲解一下,或者说如果一个团队已经组成,最好就是不要再增加新成员,或者尽量在项目开始之前就估量好团队所需要的人力,一旦组成了成员数就不要再有所变化。
2、如何编写单元测试?是不是每个程序都要有单元测试?编写单元测试有哪些方法?如果某个程序所预算可能出现的问题很多,那是不是每个可能出错的地方都要写单元测试?如果单元测试编写错误呢,那么这个单元测试是不是就没用了?(第二章 2.1.2)
答:单元测试分为白盒测试与黑盒测试。单元通俗的说就是指一个实现简单功能的函数。单元测试就是只用一组特定的输入(测试用例)测试函数是否功能正常,并且返回了正确的输出。白盒测试是将程序的核心代码进行包装,并放在一个新建的类中,在这个核心代码类中建单元测试,选中要测试的函数,验证测试结果是否与预计的一致,若是不一致,则可能是程序中有bug;白盒测试要有测试的覆盖种类(包括语句覆盖、判定覆盖(也叫分支覆盖)、条件覆盖、判定——条件覆盖、条件组合测试、路径测试)而黑盒测试则是对程序进行容错,比如输入框中输入的类型是数字,若是输入字符要由相应的提示错误、或者输入数字范围溢出等等。
3、成为一名出色的软件工程师是不是一定要每次都进行自我评估?(第三章3.2.4)
答:是。要及时得进行自我评估,提高发现问题和解决问题的能力,并评估自身沟通能力,比如可以和产品,设计,上下级的沟通。
4、代码规范不就是要求在打代码时注意格式,使得代码看起来清晰,好看,易懂,那如果后面只有一条语句,其花括号是不是可写可不写,比如P58里的
if(condition)
DoSomething();
else
DoSomethingElse();
中,判断语句if()后面只有一条语句,不加花括号与加了花括号,有时会发生不一样的结果,这是为什么?(第四章4.2.4)
答:最好是写,写了可以保证百分比没错,不写就很难保证会不会出问题。
5、什么叫断言?断言有什么用处?怎么用?(P63 4.3.3第二点)
答:编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设;使用断言可以创建更稳定、品质更好且不易于出错的代码;当需要在一个值为FALSE时中断当前操作的话,可以使用断言。单元测试必须使用断言(Junit4)。
6、什么叫可兼顾封装和效率?(P64 第四点与第五点)
答:兼顾的意思是同时照顾几个方面,因此兼顾封装和效率是指可以同时照顾封装与效率两方面,现在看这个问题才发现我当初理解错了这句话。
7、团队合作是小组成员之间分配好各自负责的版块,设计好后将每个人负责的程序搭建在一起,这样不会出现混乱?因为一个项目是很大型的,代码也是几千甚至是几万行,如果是每个人分工合作,那么每个人完成了特定的程序后如何将各自负责的程序合在一起,每个人的编程理念与思想以及风格都不同,这样不会造成混乱和难以寻出的问题吗?(第五章)
答:既然是团队在做项目,那就说明已经有很多的经验了,知道怎么做项目,怎么拼凑在一起,因此有了经验,就不会出现混乱。
9、命名一个变量时一定要加前缀名吗?不加会怎样?怎么加?
答:这是不一定的,看是什么语言,每种语言都有各自的命名规则。
第五~第七章:
1、如何将各个模块通过手工或者自动化的手段,将可执行的系统搭建出来?搭建时是不是包括验证模块也要搭建进去?(P95 5.3.4)
答:要,在实现工作流中,工程师按照计划实现上一步产出的设计,将开发出的组件,连同验证模块,提交到系统中,同时,工程师们集成由单个开发者所产生的结果,把可执行系统搭建出来。
2、在配置和变更管理中,如何做到并行开发与分布式开发?(P95)
答:建立一个完整的全面的配置管理基础架构,对各种类型的项目进行有效的监管。这个管理基础框架,不仅应包括完善的管理制度、规范标准,还包括为高效率实现上述管理手段而建立的软件配置管理系统,以及其他的相关扩展领域,为今后的长远发展奠定坚实的基础。
3、敏捷流程大概的意思是不是就是互相监督,互相学习,共同进步的意思?(第六章)
答:敏捷流程是一系列价值观和方法论的集合,不过也是团队中个成员的相互学习,共同进步。
4、MSF是否可以解决所有的问题?如果出现了难以解决的问题怎么办?是不是软件中可能出现的所有问题都可以解决?(第7章)
答:这个我也不知道,我百度找了一下没有搜到相应的答案。
第8~第10章:
1、做项目了解用户需求是最重要的,但是如果连用户自身也无法描述他所想要的,或者说是用户只是大概说明了自身所需,而项目人员无法了解用户的真正需求,那怎么办?(第8章8.3)
答:让一个对客户的要求理解能力较强的人去与客户交际。
2、若是一个团队人员已定了,那么如果这个团队里面找不到适合的人做项目经理怎么办,那么还是要在这个团队中找一个当项目经理还是要另外找一个是适合?(第9章9.4)
答:找不到适合的就自己去锻炼自己的这个能力。
3、分析用户需求,是否需要写一份文档来说明?还是只需要团队的人员之间的口头传达?还有就是团队做一个项目,需要准备那么多的说明书吗?既要规格说明书,又要功能说明书,那要是写完这些不会很耗时间吗,是不是只要是团队做项目都要按照这个流程来?(第10章)
答:我觉得最好是先写一份文档,写了之后才能记住客户需求。团队做项目最好就是按着流程来,这样不会混乱。
第11-第12章:
第11章问题:开发阶段还有日常管理,这样不会浪费团队做项目的时间,做一个项目既要做Sprint计划,又要每日例会,还要规格说明书、功能说明书、列典型用户与典型场景 描述等等,当这些完成后,确定还有时间弄项目吗?(第十一章11.2节)
答:开发项目的团队就说明已经是做过项目的,有了一定的经验和能力,进行起来就不会很耗时。
第12章问题:用户体验和质量,有时候并不能同时做到很好,那么这两个当中那个要重要一点?要牺牲哪个取哪个?(12章12.1.6)
答:体验是质量的一部分, 取决于项目特点,看情况。
第13-第17章:
第13章问题:软件测试有那么多种测试,万一不够时间完成所有的测试,那么哪种软件测试是最重要的,而且,完成一项项目就要花很多的时间,真的够时间完成所需要的全部的软件测试吗?(第13章13.2)
答:这个我也不知道,对于软件工程我理解的还不是很透彻,也不是很清楚,只是大概知道了软件工程的一些流程与方法以及概念、思想等等。
第14章问题:什么叫绩效?什么叫优化角色绩效?(第十四章14.2.2问题三)
答:绩效就是一个人在团队中的劳动成果。
第15章问题:怎么培养对用户、行业、软件开发的洞察力?(第15章15.1.1)
答:多实践,实践出真知,很多事要去做了才知道效果如何。
第16章问题:怎么练习创新的招数?(第16章16.3)
答:可以多去参考参考他人的创新成果,然后自己多思考、多动手、多尝试。
第17章问题:有没有很公平又让大家都很乐意接受的绩效考核方法?(第17章17.3)
答:我觉得应该是没有的。