读构建之法 第一章:概论

软件=程序+软件工程

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

工程师的宗旨是:我构建,故我在

程序在这里指的是源程序,就是一行行的代码,它们是建立在数据结构上的一些算法。程序对数据进行操作,工程师把它们构建为机器能懂的可执行代码。构建不仅仅是cc和link命令,一个复杂的软件不但要有合理的软件架构、软件设计与实现,还要有各种文件和数据来描述各个程序文件之间的依赖关系、编译参数、链接参数,等等。这些都是软件构建的过程。

     软件工程:和软件开发活动(构建管理、源代码管理、软件设计、软件测试、项目管理)相关的内容,是软件工程的核心部分。是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。广义上的软件工程也包括用户体验、用户界面设计等等。是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。

软件工程的工程二字意味着它与许多工程领域的学科,以及管理学科有很大关系,创造性地运用科学原理,设计和实现建筑、机器、装置或生产过程;或者是在实践中使用一个或多个上述实体;或者是实现这些实体的过程。

     软件开发过程有以下五点的难题:

1.复杂性: 软件的各个模块之间有各种显性或隐性的依赖关系,随着系统的成长和模块的增加,这些关系的数量往往以几何级数的速度增长。

2.不可见性:软件工程师能直接看见源代码 ,但源代码不是软件本身,工程师看不到自己的源代码是如何具体地在用户的机器上被执行的。

3.易变性 :软件看上去很容易修改,修改软件比修改硬件容易多了。但其实正确的修改软件是一件很困难的事情。

4.服从性:软件不能独自存在,它要运行在硬件上面,要服从系统中其他组成部分的要求,服从用户的要求、行业系统的要求。

5.非连续性:许多软件系统没有增加输入就能看到相应输出增加的特性,有时输入上很小的变化,会引起输出上极大的变化。

软件的行为和用户所期望的不一样就叫Bug。而我一直认为的是程序的错误,缺陷。

Bug的多少可以直接衡量一个软件的开发效率、用户满意度、可靠性和可维护性。

用户满意度:用户在使用时发现了软件的很多问题,影响了用户使用软件的效率

可靠性:某个软甲经常会崩溃,某个操作系统会时不时死机,某个网站往往在最需要的时候登不上去(就好像我们学校的EOL)

软件流程的质量:软件团队的BUG

可维护性:修复了一个问题,不能另一个问题又出来,这样反反复复,浪费时间和资金。

通过本书的学习,要做到以下三点:

1.研发出符合用户需求的软件

2.通过一定的软件流程,在预计时间内发布“足够好”的软件(通过全队的努力,在一个长期阶段内逐步完成)

3.能证明所开发的软件是可以维护和继续发展的。

我们学习从写简单的代码一步步到写复杂的代码,正如书上所说,我用C语言实现了二叉树的遍历算法,但这个程序有什么实际用处呢?读到后面我知道了程序(算法、数据结构)是基本功,但是在算法和数据结构之上,软件工程决定了软件的质量;商业模式决定了一个软件企业的成败。软件从业人员和软件企业的道德操守会极大地影响软件用户的利益。我们现在分了计科和软工的方向,书中提到了计算机科学和软件工程的不同侧重点,计算机理论的进展会帮助软件工程(例如对程序的正确性分析);软件工程的进展会帮助计算机科学家更有效地进行实验和探索。书中说到工程师的宗旨是:我构建,故我在。虽然现在的我还不能称为工程师,但我一定会以这条宗旨为目标而前进。现在我们首先要做的是发现用户的需求是什么,才能根据用户的需求去开发后续的工作。本书在无聊的概念之中插入了无数的例子,能让我有更好的理解,这样很好,不然只是通过概念无法得到深入的理解。

时间: 2024-08-02 15:13:48

读构建之法 第一章:概论的相关文章

构建之法 第一章 概论

软件与程序的区别,恐怕就是实用性与理想性的区别.软件=程序+软件工程:程序=数据结构+算法.我们现在学的,只是后者的构成,而从理想迈向实用的最关键的一步,就是软件工程. 1.概念 1)软件构建:除了代码和静态数据,还有各种文件和数据来描述各个程序文件之间的依赖关系等: 2)源代码管理/配置管理:保证代码的平台兼容性.配置兼容性等: 3)质量保障(软件测试):保证软件的质量在修改过程中可以不断提高,或者至少可以保持: 4)项目管理:软件维护和服务运营 5)生命周期:以上称为软件的生命周期SLC 2

阅读构建之法第一章有感

今天阅读了构建之法第一章,感觉到自己其实玩具的阶段都不到,离研究阶段更是差的有段距离.了解到程序其实只是一个藏在你电脑里的数据结构加算法,要想成为软件还得经历软件工程这一阶段,软件工程便是把系统的.有序的,可量化的方法应用到软件开发,运营和维护上的过程中.首先我要进行软件需求分析,一个成功的软件是要有市场需求作为背景的,没有需求你做的软件就是无用的东西,有了需求然后我们对软件进行设计使之安全 可行 基本满足市场的需求.然后我们便对我们的软件进行测试.最后软件在用户手中运行,但是十全十美的软件是不

构建之法第一章

本章为概论,主要讲解计算机科学的领域.软件工程和计算机科学的关系.软件的特性.软件工程的定义与组成部分等内容. 一.软件: 程序=数据结构+算法 软件=程序+软件工程 软件工程的核心部分: 1.构建管理 2.源代码管理 3.软件设计 4.软件测试 5.项目管理 软件开发有玩具阶段.业余爱好阶段.探索阶段.成熟的产业阶段等四个阶段. 二.软件工程: 软件具有复杂性.不可见性.易变性.服从性.非连续性等. 计算机科学与软件工程的区别(侧重点) 计算机科学: 1.发现和研究长期的.客观的真理 2.理想

构建之法第一章读后感

首先,文章对于程序.用户需求.工程等等概念用了阿超给儿子编写的一个出题程序来分别解释了个中的含义,尤其是程序和工程的区别,程序大概就是用很多语言或工具编写的一个简单能实现目标要求的一行行代码,而工程就是在这个程序的基础上不断满足用户的需求.修复程序的bug.提供后续维护等服务. 需求分析:梳理需求,逐步展开后续工作,如设计(软件架构).实现(写数据结构和算法),测试,发布软件 软件=程序+软件工程(软件企业=软件+商业模式) 软将工程的核心部分:构建管理.源代码管理.软件设计.软件测试.项目管理

读构建之法 第二章:个人技术和流程

绝大部分软件都是由多人合作完成的,大家的工作相互有依赖关系.某人负责的模块的功能被其他人调用,但如何让自己负责的模块功能定义尽量明确,模块内部的改变不会影响其他模块,而且模块的质量能得到稳定的.量化的保证???单元测试就是一个很有效的解决方案. 创建单元测试函数的主要步骤是: 1.设置数据(一个假象的正确的E-mail地址) 2.使用被测试类型的功能(用E-mail地址来创建一个User类的实体) 3.比较实际结果和预期的结果(Assert.IsTrue(target!=null) 创建完就可以

构建之法第一章总结

软件工程是把系统的,有序的,可量化的方法应用到软件的开发,运营和维护上.软件工程包括:软件需求分析,软件构建,软件设计,软件测试和软件维护. 首先,从软件二字理解,软件是可以运行在计算机上及电子设备中的指令和数据的有序集合.软件以下特性:复杂性,不可见性,易变性,服从性,非连续性.这些特性让软件开发变得有点困难,软件可以说是人类创造的最复杂的系统类型.其次,工程通常是指创造性地运用科学原理,设计和实现建筑,机器,安装或生产过程,或者是在实践中使用一个或多个上述实体,或者是实现这些实体的过程.根据

读构建之法第二天

刚刚读了构建之法第一章的内容,主要讲述了计算机科学领域,软件工程与计算机科学的关系,软件的特性以及软件工程的定义和组成部分这四方面的内容.下面我将分为四部分 来记录自己的收获. 第一部分: 1. 软件 = 程序 + 软件工程        软件工程的核心部分是构建管理.源代码管理.软件设计.软件测试.项目管理.广义上软件工程还包括用户体验,用户设计界面等, 所以一个拓展的推论是:        软件企业 = 软件  + 商业模式. 2.  软件开发有不同的阶段:(1)玩具阶段  (2)业余爱好阶

邹欣老师的《构建之法》第一章“概论”学习笔记与自我随笔

刚读完了邹欣老师的<构建之法>第一章“概论”,四个字形容:酣畅淋漓. 概论将自己的一些模糊的认识清晰化,用准确的文字描述了出来,填补了脑海里的一些灰色地带. 总结一下:概论通俗地阐述了编程.软件.计算机科学.软件工程的联系与区别,简单说,编程是一项具体动作,软件是供人使用的产品,具体有很多种类型,而计算机科学是偏向理论研究,软件工程就像其他工程学一样,是在一定条件下合理配置资源达到生产软件的目的. 本人作为一名从小对编程.软件.计算机感兴趣的Nerd,虽然大学专业与此无关,但刚毕业时签了一份软

构建之法第一、二、十六章

<构建之法>第一.二.十六章疑问 我通过阅读发现这是一本十分有趣的书.不同于别的书的晦涩难懂,<构建之法>利用浅显易懂的语言,贴近生活的例子向我们讲述了软件工程的内容. 第一章  概论 软件=程序+软件工程 扩展:软件企业=软件+商业模式 软件工程是把系统的.有序的.可量化的方法应用到软件的开发.运营.和维护上的过程.软件的特殊性有a.复杂性 b.不可见性 c.易变性 d.服从性 e.非连续性.软件工程与计算机科学的区别:计算机科学中与实践相关的部分,都和数据以及其他学科发生关系: