什么是软件工程

在网上看到一个说法,开发软件就像开发建筑,感觉真的很像.后来又转念一想,工程类学科(比如建筑工程/汽车工程)都有相似的部分

  • 参与人数众多
  • 高度分工(比如有专门负责视觉UI/有专门负责产品测试/有专门负责产品开发)
  • 追求模块化/结构化
  • 在不同领域有专精(比如开发浏览器/邮箱/搜索引擎/电子商务)

软件开发和汽车/建筑开发的区别在于它应用在互联网上,想象的空间无远弗届;同时它的实践性要求更大,有短期的目标,但是很难说有长远目标,根据市场的需求来确定下一个版本的内容

它的缺点也可能就是开发更容易变形,因为快速开发过程中不断的需求变更导致程序在不断迭代中愈加复杂,最终代码完全失控

软件工程,就是为了制定结构性好,灵活性高的软件开发方法和开发流程.如何调动程序员进行目的明确,组织性高的编程;如何确定出好的评判标准;甚至如何脱离实际内容而抽象出通用的开发流程,这些内容都在不断探索中

待学习的软件开发模型:

  1. 瀑布模型(waterfall model)
  2. 迭代模型(iterative model)
  3. 螺旋模型(sprial model)
  4. 敏捷开发(agile development)

待学习的软件测试模型:

  1. 单元测试(unit test)
  2. 集成测试(integration test)
  3. 系统测试(system test)
  4. 回归测试(regression testing)