构建之法-1-概论

2019-04-25  本文已影响0人  BigLong
概论思维导图.png

1.1 软件 = 程序 + 软件工程

书中作者举例子解释软件、程序、工程的关系,我也举一个。假设我现在想写点博客,就搭建了一个简易的博客编辑器。后来张三觉得很好用,就问我能不能加上支持markdown的功能,李四也想用,问我能不能加上评论功能,王五说他想要rss订阅功能。。。等等。慢慢的就发展成为一个庞大的复杂系统。

一开始写的简易版可以理解为一个程序,这些朋友就是用户,还给我提了很多需求,现在这个博客软件的功能就变得很强大了。

但是,继续开发这个软件的工程也将变得更加困难和复杂。我要想实现这些朋友的需求,我需要好好的设计一个合理的软件架构,还有软件实现,还要找一个管理代码的工具,开发完之后还要软件测试,最后可能还要同时支持多语言国际化,最最后,软件出了问题肯定都得找我,我还得维护运营。以上这系列过程就是软件的生命周期。在这周期里,得有人负责软件项目管理。以上这些活动都是软件工程的核心部分。

软件 = 程序 + 软件工程

我花这么多精力做了这么好的软件,怎么赚钱呢?先试用再交钱?全免费开源?免费用但是要看我的广告?这些都是属于商业模式的范畴。

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

一个软件从idea到商业要经历四个阶段,和人类的飞天梦想类似。从纸飞机到热气球,从莱特兄弟的飞机到现代化的航空业。

玩具阶段:写一个 "Hello world!"
业余爱好阶段:写一个博客系统
探索阶段:行业创新出现新技术
产业阶段:Windows操作系统,电子商务系统

一架成熟的商用飞机要经过很多工序,几十万零件组装检测试飞等。书中举例子,颇有讽刺意味。如果一个飞机工程师在飞机工作时从引擎里爬出来说:“继续飞吧,我搞定了。”我想这样的飞机没人敢坐。在软件行业中,却有大量的工程师以这样的行为自豪。(我认为这里是指很多开发者在生产环境中修改软件)


以上提到的部分专有名词:


1.2 软件工程是什么

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

1.2.1 特殊性

以上这些特性都是决定软件工程的本质问题,其他的问题例如编程语言,开发工具,存储介质等等都是普通特性。

1.2.2 软件工程与计算机科学的关系

前者偏实践,后者篇理论。计算机理论进展促进软件工程的进展,而软件工程的进展反过来更好的帮助计算机理论的实验与探索。

1.2.3 知识领域

前十二项描述软件学科本身的知识领域。后面三项是基础知识:计算基础、数学基础和工程基础。

1.2.4 目标

It's not a bug, it's a feature!

我们的目标当然是创造好软件!

总结

通过学习软件工程做到以下三点:

  1. 研发出符合用户需求的软件
  2. 在预计时间内发布‘足够好’的软件
  3. 能证明软件是可维护的和持续发展的
上一篇 下一篇

猜你喜欢

热点阅读