构建之法--第一章读书笔记 软件是什么?软件工程是什么?

通过本文可以了解到什么?

  • 软件是什么?软件企业是什么?
  • 软件开发的不同阶段--类比航空业的发展
  • 软件工程是什么?
  • 软件工程有哪些具体的知识领域?
  • 软件工程的目标



正文

  • 软件是什么? 软件企业是什么?
  1. 软件 = 程序 + 软件工程
  2. 软件企业 = 软件 + 商业模式

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


  • 软件开发的不同阶段
航空业和软件业的类比
航空 软件 影响
玩具阶段:纸飞机 写数据结构算法题目;用新的语言尝试“Hello World” 影响只限于自己,失败,兴趣减弱。这类知识也有比赛,如算法比赛,比赛后,这些程序的可维护性如何?有人会拿着程序去发布成为商业软件?
爱好者的尝试:沙滩椅升空 用 前端知识构建一个网站 程序能跑起来,博客会吸引一些读者
先行者的探索:莱特兄弟 钻研新技术,应用新技术在软件行业创新 很多软件原型虽然失败了,但是他们给后续的创新奠定了基础
成熟的工业:飞机制造业,民航 银行软件系统,搜索引擎,京东商城,windows操作系统

软件会影响一个公司,一个行业,涉及到相关的行业和人员。









飞机的安全功能,虽然使用到的概率极低,但是一旦出现异常,可以极大程度确保飞机与乘客的安全。我们写的软件是否提供这样的功能? 在发生异常时,是否能够正常工作,安然退出,并保证用户的数据不被破坏?


  • 软件工程是什么?

软件工程 = 软件开发流程体系 + 软件工具

软件开发流程体系

人们在开发、运营、维护软件的过程中有很多技术、做法、习惯和思想体系,软件工程把这些相关的技术和过程统一到一个体系中,叫做“软件开发流程”。

软件开发流程的目的是为了提高软件开发、运营、维护的效率,提高软件的质量、用户满意度、可靠性和软件的可维护性。

软件工具

工具是用来保证思想在实践中有效率的运作。

具体有哪些软件工具? 编译工具、源代码管理工具、软件工具系统(Eclipse,GitHub,Microsoft Visual Studio等)


  • 软件工程具体包含哪些知识领域?

每个知识领域都有很多概念、名词和定义。但是名词不是软件工程的规律本身,我们需要在实践中学习。


  • 软件工程的目标

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

通过实际的工作收集、推导、提炼需求,并在软件发布后通过实际数据验证需求的确被满足了。(不好的需求:虚拟的,没人用的,也没有数据的 “图书馆管理系统”)

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

通过全体成员努力+长期阶段逐步完成

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

例如:用户需求分析有详细的文档说明,包括对未来发展的分析和规划;主要功能的设计文档说明和软件的实际行为一致。源代码完整并能构造出符合质量要求的版本。能用软件管理软件看到源代码的每次修改记录,Bug的修改过程。关键模块有可以正常执行的单元测试、压力测试脚本等。

你可能感兴趣的:(软件工程)