20150409作业3 阅读《构建之法》1-5章 (Update:2015-04-16

1.1

软件 = 程序 + 软件工程 (软件工程 = 软件 - 程序(我知道软件是什么,也知道程序是什么,但是就是不懂什么是软件工程啊...个人觉得 软件工程 - 程序 = 0

程序 = 数据结构 + 算法 (突然觉得至今为止我们所写的作业都只是程序而还没达到软件的程度啊..就缺软件工程了..软件工程到底是啥~?!

∴软件 = 数据结构 + 算法 + 软件工程

去百度百科看了一下:(有些就直接省略了

定义

IEEE:在软件工程术语汇编中的定义:软件工程是:1.将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;2.在1中所述方法的研究

ISO 9000对软件工程过程的定义是:软件工程过程是输入转化为输出的一组彼此相关的资源和活动。

其它定义:1.运行时,能够提供所要求功能和性能的指令或计算机程序集合。2.程序能够满意地处理信息的数据结构。3.描述程序功能需求以及程序如何操作和使用所要求的文档。以开发语言作为描述语言,可以认为:软件=程序+数据+文档

内涵

一、软件工程过程是指为获得软件产品,在软件工具的支持下由软件工程师完成的一系列软件工程活动,包括以下四个方面:

1、P(Plan)——软件规格说明。规定软件的功能及其运行时的限制。

2、D(DO)——软件开发。开发出满足规格说明的软件。

3、C(Check)——软件确认。确认开发的软件能够满足用户的需求。

4、A(Action)——软件演进。软件在运行过程中不断改进以满足客户新的需求。

二、从软件开发的观点看,它就是使用适当的资源(包括人员,软硬件资源,时间等),为开发软件进行的一组开发活动,在活动结束时输入(即用户的需求)转化为输出(最终符合用户需求的软件产品)。

三个阶段:定义阶段:可行性研究初步项目计划、需求分析;开发阶段:概要设计详细设计、实现、测试;运行和维护阶段:运行、维护、废弃

原则:1、抽象;2、信息隐蔽;3、模块化;4、局部化;5、确定性;6,一致性;7、完备性;8、可验证性

上面有条式子,我是不是能够代入解得 软件工程 = 数据 + 文档 呢?

后面还有小学数学题的那个故事,看来我们前两次的作业确实是有点像那样发展,做作业的过程中也发现,软件 - 程序 > 0,因为我做第一个作业的时候和做第二个作业的时候都是分开来做的,明明就是同一个内容的程序,但是我发现前一次的程序要修改和维护完全比再写一个难.深深地觉得写软件还是要事先设计好对象和方法.以便于以后的修改维护.

软件企业 = 软件 + 商业模式

书上说商业模式的时候还提到了 腾讯和奇虎360 的梗(我猜的,书上没明确说是

这件事当年的我也是深有体会.两边打架,我们用户头疼...

1.2

软件工程师把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。

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

软件工程和下列的学科相关:计算机科学、计算机工程、管理学、数学、项目管理学、质量管理、软件人体工学、系统工程、工业设计和用户界面设计。

1.2.1

软件的特殊性:

1.复杂性.(这个深有体会,随便一点小程序都能复杂到头晕.

2.不可见性.(这个虽然是这么说,但是很多东西一旦摆上台来,大家都能看到或者看出其中的源代码..比如说网站的设计.

3.易变性.(这就是传说中的更新与维护?就是那个一修改或者添加一小段代码就要测试半天的东西吧?

4.服从性.(这个主要合适需求方面.嗯,客户是很难满足的,特别是要不断添加更改需求的客户

5.非连续性.(这个不懂.

软件工程的目标是尽量少的Bug,而Bug的多少可以直接衡量一个软件的开发效率、用户满意度、可靠性和可维护性。

2.1

电脑没有VSTS,也不懂C#...

个人对团队的理解还是可以,但是就是不太懂怎样让整个团队一起分工、运作.

可以理解成 我做这个功能,写一个函数,然后告诉你,我的函数的各参数是什么,然后返回什么值吗?

2.1.2

单元测试应该在最低的功能/参数上验证程序的正确性。

单元测试必须由最熟悉代码的人(程序的作者)来写。

单元测试过后,机器状态保持不变。

单元测试要快(一个测试的运行时间是几秒钟,而不是几分钟)。

单元测试应该产生可重复、一致的结果。

独立性——单元测试的运行/通过/失败不依赖于别的测试,可以人为构造数据,以保持单元测试的独立性。

单元测试应该覆盖所有代码路径。

单元测试应该集成到自动测试的框架中。

单元测试必须和产品代码一起保存和维护。

这一节很多看不懂,但是总的来说应该就是程序模块的测试吧(我猜的...

2.1.3

回归测试

这个其实也是测试的那一块的吧...

2.2

效能分析

分析程序的时间复杂度和各模块的耗时情况

2.3

个人开发流程

个人感觉这个知识点很重要.特别是流程中的分析和设计那一块.感觉我还不怎么会.

3.1

初级软件工程师的成长路线:

1.积累软件开发相关的只是,提升技术技能

2.积累问题领域的知识和经验

3.对通用的软件设计思想和软件工程思想的理解

4.提升职业技能(职业技能包括:自我管理的能力,表达和交流的能力,与人合作的能力,按质按量完成任务的执行力...)

5.实际成果.

时间: 2024-10-14 16:04:36

20150409作业3 阅读《构建之法》1-5章 (Update:2015-04-16的相关文章

阅读构建之法第六章

      这一小节中有一个图表,对比了敏捷(Agile).计划驱动(Plan-driven).形式化的开发方法(Formal Method)的适用范围.里面提到的形式化的开发方法,其基本步骤是怎样的呢?为什么它能有极高的可靠性呢?下面是一些关于形式化方法特点的说明,从中可以看出它能力的缘由. 形式化方法建立在严格的数学基础上,其目标是希望能使系统具有较高的可信度和正确性,并能使系统具有良好的结构,使其易维护,关键是能较好地满足用户需求."形式化方法"一词虽然一直被广泛地应用,但在不同

阅读<构建之法>13、14、15、16、17章

13章 这么多测试为什么不能整理出一个包括所有功能的测试呢?看着那么多测试都感觉奇怪了. 14章 怎样才能体现一个测试人员的工作价值呢?这样的判断又是否会太独断了? 15章 在时间上,会不会因不同功能板块完成快慢有影响?在后期的问题解决又有何保证措施? 16章 创新并不是每个人都行的,但有时候太执着于此是否进了死胡同呢? 17章 作为领导者的话,做到公平公正也并不像口头上那么简单,有时候是向规则妥协呢还是坚持自己的主见?

第一次阅读构建之法

    第一次阅读构建之法,把以前很多门课的知识点联系到了一起.      软件=程序+软件工程.我认为这是对软件的一种及其精炼的解释.程序即是指一行行代码,软件工程则包含了各种软件开发活动,包括构建管理.源代码管理.软件设计.软件测试.项目管理等等,是把系统的.有序的.可量化的方法应用到软件的开发.运营和维护上的过程.      从一个简单的程序,扩展到一个满足各种功能的应用软件,再扩展到一个能保证服务质量的软件服务.源程序是建立在数据结构上的一些算法.构建不仅仅是CC和link命令,一个复杂

《构建之法》第一章读后随笔

<构建之法>第一章首先提出了“软件=程序+软件工程”的观点,然后介绍了软件开发的不同阶段,最后阐述了软件工程是什么的问题.这让我对软件工程有了新的认识,也对构建之法的重要性有了更为深刻的理解. 其实很多工科的很多道理都是相通的.不光是在软件工程,几乎的所有工程中,当工程规模到达了一定的数量级,就不可能是由一个人的一己之力能够完成的,这就需要相互协作,每个人只能做自己的一部分工作.如何能够让别人理解自己的工作的作用,如何能让每个人的工作都能融入一个系统,这就需要模块化,需要集成,话句话说,就是需

构建之法第六章学习心得

这周我学习了构建之法第六章敏捷流程,本章主要介绍了敏捷流程及其原则,Backlog.Burn-down.Sprint.Scrum方法论.以及什么时候选择敏捷的开发方法,什么时候选择其他方法..敏捷开发的原则是尽早并持续地交付有价值的软件以满足顾客需求敏捷流程欢迎需求的变化,并利用这种变化来提高用户的竞争优势经常发布可用的软件,发布间隔可以从几周到几个月,能短则短业务人员和开发人员在项目开发过程中应该每天共同工作以有进取心的人为项目核心,充分支持信任他们无论团队内外,面对面的交流始终是最有效的沟通

《构建之法》第一章读书笔记

工程有了一个初步的了解.介绍了软件工程里的一些基本概念,软件开发的几个阶段.软件工程的特殊性.目标以及软件工程与计算机科学之间的联系与区别.    软件工程作为一门新兴的学科,是连接计算机硬件和传统机械工程的一个桥梁.起先,我所认为的软件工程单纯的只是编程,通过算法实现正确的输出而已.但在构建之法的第一章中,我认识到会写程序只是一个合格的软件工程师最基本的素质.一个完整的项目,应该在需求分析,软件构架设计.代码实现.程序测试.软件发布运营及维护每个阶段都尽职尽责,并结合用户体验去完善软件的每一个

构建之法第四章学习心得

今天我学习了构建之法第四章,主要讲述了两人合作的理论和知识点.合作,无论在任何领域,都是不可缺失的,往往能产生不可替代的效果.同样在软件设计中也是如此,经过我的学习,我了解到软件设计中两人合作主要包括包括代码规范.极限编程.结对编两人合作的不同阶段以及影响他人的技巧. 其中最让我印象深刻的是代码规范.包括:代码风格规范和代码设计规范,代码风格规范主要是文字上的规定,看似表面文章,实际上非常重要:代码设计规范牵涉到程序设计.模块之间的关系.设计模式.等方方面面的通行原则: 同时,我了解了代码风格规

《构建之法》第一章概要及读后心得体会

1551427    钱洪章 首先知道:软件=程序+软件工程 名句:程序=数据结构+算法 提出疑问:"程序"是什么? 这里的程序指的是源程序,就是一行一行的代码. 软件够贱的过程:不仅仅是cc和link命令,一个复杂的软件不但要有合理的软件架构.软件设计与实现,还要有各种文件和数据来描述各个文件之间的依赖关系.编译参数.链接参数,等等. 新名词:源代码管理(配置管理).质量保障.软件测试.需求分析.软件维护.软件生命周期.软件项目的管理.软件的用户体验.商业模式 会得到一个扩展的推论:

构建之法第三章读书心得

在构建之法第三章中,我们主要学习了个人能力的衡量与发展. 初级软件工程师有以下几个成长阶段:1.积累软件开发相关的知识,提升技术技能. 2.积累问题领域的知识和经验. 3.对通用的软件设计思想和软件工程思想的理解 4.提升职业技能 5.实际成果 软件开发的工作量和质量你的衡量标准:1.项目.任务有多大? 2.花了多少时间? 3.质量如何?交付的代码中有多少缺陷?