本周作业
通读《构建之法》后提出的五个问题

问题一:见书本P8软件工程是什么

软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。
软件工程包括下列领域:软件需求分析、软件设计、软件构建、软件测试和软件维护。
软件工程和下列的学科相关:计算机科学、计算机工程、管理学、数学、项目管理学、质量管理、软件人体工学、系统工程、工业设计和用户体验设计。
我的理解:《构建之法》这本书是服务于我们的学科软件工程的,所以我当我在绪论中看到这个问题时,就产生了兴趣。软件工程到底是什么,这个问题出现在我的脑海里,结合这段话跟一些百度的资料,我了解到软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。在我看来,将工程化应用于软件,无疑是研究软件工程的核心。

问题二:见书本P52、P53、P54,软件工程师的思维误区

分析麻痹;不分主次,想解决所有依赖问题;过早优化;过早扩大化/泛化;画扇面——调侃目标和远景。’
我的理解:课本的这几个小故事举得很到位,我感觉这确实反映出了当代人做工程容易陷入的一些误区,做一个软件工程,我们考虑其中的问题,要从大局着想,分清主次,纵观全局,考虑最优方案。

问题三:见书本P60技能的反面

年轻学生都志向远大,上了一些课,就很想解决高层次的问题。一些学生非常想做高层次的科研,觉得工程是基础,没意思。而且他们认为我已经知道怎么做了。从科研或者理论的高度上说,所有的技能都能总结成简单的已经知道怎么做了。
我的理解:这个问题中,笔者运用了玩魔方的故事。由于我也喜欢魔方,所以对这个故事比较感兴趣。拼魔方也是一个可以分层次的领域,拼一般的,可以拼一面,好点的,可以根据口诀慢慢的拼出六面,再快的,可以几秒钟可以拧好一个魔方。更有甚者,可以闭上眼睛盲拧一个提前记忆过的魔方。跟魔方类似,同样在学校学习,我们的学生也已经有层次了。同样的理论知识,有的人已经可以在相关领域做一些小程序,有的人还停留在课本层面,只知道书上的知识,能根据pta的题目做几个作业题。毫无疑问,在学习的过程中我们都要追求高层次的学习。同样的魔方口诀给你,给你一天时间熟悉,有的人吊儿郎当可能还是得拼三四分钟,有的人细心学习,熟练掌握,一分钟就可以拼好。熟而精的掌握课本知识,对我们是很有用的。

问题四:见书本P171功能的定位和优先级

得到了需求以后,软件团队就要考虑这些需求。一个公司可能有多种软件产品和服务,它们各有不同的战略意义。一个软件或服务也有很多功能组成,他们有机的结合起来,才能解决用户的问题,产生效益。
我的理解:一个工程实现以后,毫无疑问它的功能是用户最关心的。因而设计什么样的功能成了我们工程师最需要考虑的,这里提到了几个词外围功能,杀手功能,必要要求,辅助需求,我对这几个词不是很理解。

问题五:见书本P311软件工程的质量

软件的开发过程有三个主要的特性:好、快、便宜。
我的理解:一个好的软件设计应该有以下四种特性:
可读性:软件的设计文档是否轻易被其他程序员理解。可读性差的设计会给大型软件的开发和维护过程带来严重的危害。
可复用性:软件系统的架构、类、组件等单元能否很容易被本项目的其它部分或者其它项目复用。
可扩展性:软件面对需求变化时,功能或性能扩展的难易程度。
可维护性:软件维护(主要是指软件错误的修改、遗漏功能的添加等)的难易程度。