软件工程网络15个人阅读2
提出问题
问题一:关于软件思想
我看了书本第49页有这样一段话讲到初级软件工程师如何成长,其中第三点讲到对通用的软件设计思想和软件工程思想的理解,我有这样一个问题,到底什么是软件设计思想,什么是软件工程思想?
我查阅了百度,有这样一种说法
软件工程在规范和指导着我们的开发活动,并在应用中不断发展而创造的一个朴素的指导思想
而本说法实在空泛,我还是无法理解到底什么叫做软件设计思想什么叫做软件工程思想。
问题二:关于结对编程
书上写着结对编程是个渐进的过程,有效率的结对编程不是一天就能做到的。结对编程是一个相互学习、相互磨合的渐进过程。开发人员需要时间来适应这种新的开发模式。
我有这样一个问题,在我们编程水平都不高的情况下,我们还需要去了解同伴的编程思想,编程习惯,互相约束,而且我们还未必看得懂同伴写的代码,在这种情况下,我觉得结对编程的效率可能远远低于单人编程,这样如何在两周内完成老师给我们布置的结对编程作业。
问题三:关于如何在有很多本地修改的狄安娜上快速获得一个干净的代码环境?
书上有这样一个例子,
果冻的电脑上有关于两个功能的修改,但是都没有完成,有很多文件处于半完工的状态,这是他要紧急修改一个新的bug,修改的地方也在这些文件中,他只有着一台电脑。如何把本地修改放一边,保证在干净的环境中修改这个bug,编译,并成功地签入你的修改?
由于文中并没有给出解释和解决方案,我查了资料也没有关于这个问题的解释,至今仍在困惑。
问题四:关于单元测试和覆盖率
覆盖每一个函数,覆盖每一个语句,覆盖每一个条件分支,覆盖每一个布尔表达式
如果每一个单元测试都要这样覆盖这么多方面,这样写一个单元测试所耗费的精力可能比写一个程序还多,那样真的值得吗?
问题五:关于软件工程这门课
书上关于软件工程的定义是这样的,
软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。软件工程包括下列领域:软件需求分析、软件设计、软件构建、软件测试软件维护。
我查了其他资料关于软件工程的定义是这样的,
软件工程学科诞生后,人们为软件工程给出了不同的定义,例如最早的定义是由F.L. Bauer给出的,即“软件工程是为了经济地获得能够在实际机器上高效运行的、可靠的软件而建立和应用一系列坚实的软件工程原则”。而美国梅隆卡耐基大学软件工程研究所(SEI)给出的定义则是软件工程是以工程的形式应用计算机科学和数学原理,从而经济有效地解决软件问题。但目前普遍使用的软件工程定义是由IEEE给出的,即软件工程是将系统性的、规范化的、可定量的方法应用于软件的开发、运行和维护。
软件工程概念实际存在两层含义,从狭义概念看,软件工程着重体现在软件过程中所采用的工程方法和管理体系,例如,引入成本核算、质量管理和项目管理等,即将软件产品开发看作是一项工程项目所需要的系统工程学和管理学。从广义概念看,软件工程涵盖了软件生命周期中所有的工程方法、技术和工具,包括需求工程、设计、编程、测试和维护的全部内容,即完成一个软件产品所必备的思想、理论、方法、技术和工具。
此段话引用自什么是软件工程?
两个定义实际上感觉差不多,可是在我大概浏览通读我们这本教材之后我感觉本教材很少讲述这些,好像花更大的篇幅在讲软件工程师应有的职业道德,公司的需求,公司的运作方式,企业需要什么样的人才,在企业里应该怎样做等等。导致我现在对软件工程有点迷茫,不知道什么是软件工程?