《构建之法》阅读笔记第一篇——软件工程概论

1、软件=程序+软件工程

程序(源代码)是一行行的代码,是建立在数据结构上的一些算法。程序还要对数据进行操作,这些数据有的是静态的(如软件图标、提示信息),有的是动态的(如程序生成的随机数字、程序通过网络下载的数据、用户的文字或语音输入等)。

光有代码和静态数据是不行的,工程师要把她们构件为机器能懂的可执行代码。一个复杂的软件不但要有合理的软件架构、软件设计与实现,还要有各种文件和数据来描述各个程序文件之间的依赖关系、编译参数、链接参数等等。这些都是软件构建的过程。

软件团队的成员每天都修改源代码,需要保证软件在修改过程中不断提高质量至少保持以前的质量;为某个需求写一些特殊功能,不久后再将功能合并回主要版本;程序要配置不同的界面,运行在中文、英文或其他语言的操作系统上。这是源代码管理(配置管理)。

还有一系列的工具、流程、文档来保证程序的正确性,这些工具(也是软件)、流程应该达到很高的质量,才能保障开发出来的软件的质量。这是质量保障,具体的验证过程为软件测试。

软件团队要从需求分析开始,把合适的需求梳理出来,然后逐步展开后续工作,如设计(软件架构)、实现(写数据结构和算法)、测试,到发布软件。

软件团队的人员也会流动,新的成员要尽快读懂已有的程序,了解程序的设计。这是程序理解。

软件在运行过程中会出现问题,也许要是不是打一个补丁,或者维护众多的服务,修复问题。这是软件维护,或服务运营。

这一系列过程是软件的生命周期,有人得负责软件项目的管理。

软件的用户体验:一个好的软件和同类软件区别不太大,但却让人感觉很好用。

软件企业的商业模式也会影响软件的需求。

在相关法律完善之前,软件行业应该有职业道德规范来约束IT人的行为。

上面这些和软件开发活动(构建管理、源代码管理、软件设计、软件测试、项目管理)相关的内容,是软件工程的核心部分。广义上的软件工程也包括用户体验、用户界面设计等。所以    软件=程序+软件工程

2、软件工程

软件工程包括下列领域:软件需求分析、软件设计、软件构建、软件测试和软件维护。

软件:系统软件、应用软件、恶意软件。

软件工程的15个知识领域:

1、Software Requirements

2、Software Design

3、Software Construction

4、Software Testing

5、Software Maintenance

6、Software Configuration Management

7、Software Engineering Management

8、Software Engineering Process

9、Software Engineering Models and Methods

10、Software Quality

11、Software Engineering Professional Practice

12、Software Engineering Economics     //1-12:软件工程学科本身的知识领域

13、Computing Foundations(计算基础)

14、Mathematical Foundations(数学基础)

15、Engineering Foundations (工程基础) //13-15:软件工程三大类基础知识领域

时间: 2024-08-24 21:44:09

《构建之法》阅读笔记第一篇——软件工程概论的相关文章

构建之法阅读笔记第二篇

众所周知,一个软件的开发过程不可能有一个人完成,而是由一个团队中的各个成员之间合作完成,各个成员负责一个模块,最后组合在一起完成一个软件的开发.小组成员首先完成各自的模块任务,进行测试,适应各种情况,但是仅仅是适应各种情况还是不够的,还需要有效率,一个功能的实现有很多的方法,可是最有效率的那一种才是我们需要的,所以要一遍一遍的进行效能测试,使我们的程序更加完美,从而得到正式的模块.然而,得到这些模块后,更重要的是在这些模块的合成过程中各个模块之间的连接,模块的接口统一很重要,这决定了上一步的数据

构建之法阅读笔记四—团队开发

构建之法阅读笔记—团队开发 软件开发过程中有团队和非团队之分.其区别就在于目标利益的不同,团队中每个人的目标是一致的.共同的,会根据实际情况给每个人分配不同的任务,不会计较个人利益的得失.非团队每个人的目标都是不同的,大家都为自己的利益而奋斗. 在阅读了构建之法后,我了解到团队开发有以下的特点:1.团队开发有一致的集体目标,团队要完成这个目标.一个团队成员不一定要同时工作.2.团队成员有各自的分工,互相依赖合作,共同完成任务.还有完成一个项目开发的工作流有业务建模,需求,分析和设计,实现,测试,

构建之法阅读笔记6--敏捷开发2

构建之法阅读笔记—敏捷开发2 敏捷开发并不是一门技术,它是一种开发方法,也就是一种软件开发的流程,它会指导我们用规定的环节去一步一步完成项目的开发:而这种开发方式的主要驱动核心是人:它采用的是迭代式开发:敏捷开发并不是瀑布开发模型,它是以文档为驱动的,为什么呢?因为在瀑布的整个开发过程中,要写大量的文档,把需求文档写出来后,开发人员都是根据文档进行开发的,一切以文档为依据:而敏捷开发它只写有必要的文档,或尽量少写文档,敏捷开发注重的是人与人之间,面对面的交流,所以它强调以人为核心.而所谓的迭代开

构建之法阅读笔记三—结对编程

构建之法阅读笔记三——结对编程 何谓结对编程,结对编程就是程序员肩并肩,平等的,互补的进行开发工作,他们使用同一台电脑,编写同样的程序,一起分析,一起设计,一块交流想法. 然而我以前却并不是这样做的,我以前喜欢在没人打扰的环境下写代码,我觉得有人在我身边看着,会影响我的思路,还有我个人自尊心比较强,不太喜欢被人指指点点,所以每次都是,我写完代码之后,自己先找自己的bug,每当自己实在找不到之后,才会请教大神,但是有时候可能由于自己的能力不足,往往一个很简单的问题,我自己发现就会花费很久的时间,让

03构建之法阅读笔记之一

构建之法阅读笔记03 遇到问题总是想弄清楚所有细节.所有依赖关系之后再动手,想的太多,没法前进,分析的就会出现错乱,或者直接动手,慢慢发现偏离的一开始的轨道,忘记了目标,这样就会产生"分析麻痹"和"不分主次,想解决所有问题",以后遇到问题应该时刻记住自己的目标,在解决问题的时候不断提醒自己,应该如何思考.越早对自己有一个清晰的定位,对自己越好,很多人只是把软件工程师当成一个工作,当成一个能挣钱养家的营生,而我想把它的当成自己投身的事业,把软件项目相关的目标作为长期的

软件工程-构建之法 阅读笔记

在我正式开始阅读这本书之前,我对于软件工程这个词汇的概念还是模糊的,认为它只是停留在是一门学科,一个专业,或者是一大堆硬生生的理论知识,然而当我读完构建之法这本书的推荐序和第一,第二版前言开始,我就深刻意识到我之前对于软件工程的肤浅认识是多么错误. 我看书一般喜欢从从书的封面开始看起,或许这也是大多数人看书的习惯,·在本书的封面素描着一副鲁班锁,刚开始让人感觉有点奇怪,明明是一本讲软件工程的书,为什么要用鲁班锁做为封面图案呢?原来玄机深藏于鲁班锁的内部,这鲁班锁从外部看,是严丝合缝的十字立方体,

软件工程概论-构建之法阅读笔记01

<构建之法>这本书主要是以"做中学"为授课方式,它不是只教给我们一些理论性的书本知识,而是让我们在完成一个个的项目时,真正掌握编程的精义,拥有熟练地编写代码的能力. 首先,我们先要确定在这门课上我们和老师的关系,即健身教练和健身学员的关系.因为这样的关系一旦确定.就要求我们每个学生,都是想学好软件工程这门课,而教练即我们的老师,就要根据我们每个学生的不同,制定合适的计划来指导我们的学习. 我们每个学软件工程的人几乎都知道"程序=数据结构+算法".而概论这

构建之法阅读笔记06-2

经过对软件工程的10周+的学习,我们对软件工程也有了深刻的理解.软件工程是研究和应用如何以系统性的.规范化的.可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来的学科.它涉及到程序设计语言.数据库.软件开发工具.系统平台.标准.设计模式等方面. 对于前期提出的问题的回答: 在课前的阅读中,因为一开始对软件工程不是很了解,提出了一些问题,当时周老师也为我解决了一些问题.我提出的问题比较广泛. 1.对于“软件工程的学习应该达到何种程度

构建之法--阅读笔记二

阅读笔记二—代码规范 代码的风格的原则就是:简明,易读,无二义性.我虽然是计算机系的学生,但是我以前却没有秉着这个原则来编写代码,现在阅读了构建之法后,我明白了如何让你的代码变得简明,更容易理解. 代码在编写的过程中注意: 用Tab键缩进 要注意行宽,最多限定100字符的行宽 在复杂的条件表达式中,用括号清楚地表达逻辑优先级 要注意断行与空白的{ }行,有明确的“{”和“}”来判断程序的结构 不要把过多的语句放在同一行上 对变量命名要有实际的意义 用下划线来分隔变量名字中的作用域标注和变量的语义