《构建之法》第一章学习

《构建之法》第一章学习

1、软件工程的定义

软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。人们在开发、运营、维护软件的过程中有很多技术、做法、习惯和思想体系。软件工程把这些相关的技术和过程统一到一个体系中,叫“软件开发流程”。软件开发流程的目的是为了提高软件开发、运营、维护的效率,并提高软件的质量、用户满意度、可靠性和软件的可维护性。

1.1软件的特殊性

软件是可以运行在计算机及电子设备中的指令和数据的有序集合,软件的主要形式有:

  • 系统软件:操作系统、设备驱动程序、工具软件等
  • 应用软件:用户使用它们来完成工作,从管理核电厂到写文章,或者是通信、游戏、浏览网页、播放视频等
  • 恶意软件:软件病毒等软件

软件开发过程中的五点难题:复杂性;不可见性;易变性;服从性;非连续性(即输入上很小的变化,会引起输出上极大的变化)

1.2计算机科学和软件工程的比较

计算机科学 软件工程
发现和研究长期的、客观的真理 短期的实际效果(具体的软件会过时)
理想化 对各种因素的折衷
确定性、完美、通用性 对不确定性和风险的管理,足够好,具体的应用
各个学科独立深入研究,做出成果 关注和应用各个相关学科的知识,解决问题
理论的统一 百花齐放的实践方法
形式化,追求简明的公式 在实践中建立起来的灵感和直觉
正确性 可靠性

2、程序 ->软件 ->软件企业

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

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

软件=程序+软件工程

一个扩展的推论是:

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

程序(算法、数据结构)是基本功,但是在算法和数据结构之上,软件工程决定了软件的质量;商业模式决定了一个软件企业的成败。软件从业人员和软件企业的道德操守会极大地影响软件用户的利益。

3、软件工程三步曲

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

  • 要通过实际的工作收集、推导、提炼需求,并在软件发布后通过实际数据验证需求的确被满足了
  • 需求来自于实际,而不是自己想象出来的“需求”或者人云亦云的需求(例如:图书馆管理系统)

2. 通过一定的软件流程,在预计的时间内发布“足够好”的软件说明

  • 这个软件是经历了一定的软件流程,通过全体团队成员的努力,在一个时间段内逐步完成的

3. 通过数据和其他方式展现所开发的软件是可以维护和继续发展的说明

  • 例如,对用户需求有详细的分析,包括对将来这类软件发展的趋势的分析
  • 主要功能都有设计文档,源代码完整,有修改记录,并有最后版本
  • 关键模块有可以执行的单元测试、压力测试脚本,对于已知的bug和将来的工作都有详细的记录
时间: 2024-10-05 23:50:31

《构建之法》第一章学习的相关文章

阅读构建之法第一章有感

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

构建之法第一章

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

构建之法第一章读后感

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

读构建之法 第一章:概论

软件=程序+软件工程 软件企业=软件+商业模式 工程师的宗旨是:我构建,故我在 程序在这里指的是源程序,就是一行行的代码,它们是建立在数据结构上的一些算法.程序对数据进行操作,工程师把它们构建为机器能懂的可执行代码.构建不仅仅是cc和link命令,一个复杂的软件不但要有合理的软件架构.软件设计与实现,还要有各种文件和数据来描述各个程序文件之间的依赖关系.编译参数.链接参数,等等.这些都是软件构建的过程.      软件工程:和软件开发活动(构建管理.源代码管理.软件设计.软件测试.项目管理)相关

构建之法 第一章 概论

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

构建之法第一章总结

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

《构建之法》第一章学习总结

<构建之法>第一章学习总结 1.软件=程序+软件工程 1.1软件开发的不同阶段 玩具阶段 业余爱好阶段 探索阶段 成熟的产业阶段 1.2程序,软件与软件企业 程序=数据结构+算法 软件=程序+软件工程 软件企业 = 软件 + 商业模式 程序(算法.数据结构)是基本功,但是在算法和数据结构之上,软件工程决定了软件的质量:商业模式决定了一个软件企业的成败.软件从业人员和软件企业的道德操守会极大地影响软件用户的利益. 2.软件工程是什么 2.1软件工程的定义与涵盖领域 软件工程是把系统的.有序的.可

20172327 2017-2018-2 《第一行代码Android》第一章学习总结

学号 2017-2018-2 <第一行代码Android>第一章学习总结 教材学习内容总结 - Android系统架构: 1.Linux内核层 Android系统是基于Linux内核的,这一层为Android设备的各种硬件提供了底层的驱动,如显示驱动,音频驱动,照相机驱动,蓝牙驱动,Wi-Fi驱动,电源管理等. 2.系统运行底层 - 通过一些C/C++库来为Android系统提供了主要的特性支持 库名 功能 SQLite库 提供数据库的支持 OpenGL/ES库 提供3D绘图支持 Webkit

【tapestry3笔记】--tapestry 初探,《 tapestry in action 》第一章学习笔记

由于要维护一个项目,要用到tapestry3这个老框架,虽然这个框架很老,但是在我看来ta的思想还是很先进的---面向组件编程. 由于网上资料少的可怜,辛苦找了很久终于找到一本名为<tapestry in action>的工具书,以下学习笔记均以此书为参考. 正文---tapestry初探 tapestry in action 第一章学习笔记 tapestry是一款以组件为核心的开发框架,组件就向一个黑盒子,我们无需关系组件是如何实现的,只需合理使用即可.这有点像jquery的插件,我们无需关