本节书摘来自异步社区《软件工程(第4版?修订版)》一书中的第1章1.1节什么是软件工程,作者【美】Shari Lawrence Pfleeger , 【加】Joanne M.Atlee,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.1 什么是软件工程
软件工程(第4版•修订版)
软件工程师要利用与计算机和计算相关的知识来解决问题。通常情况下,我们要处理的问题是与计算机或现有的计算机系统相关的。但是,也有时候,解决问题的潜在困难与计算机无关。因此,首先要理解问题的本质,这是至关重要的。尤其是,我们必须十分谨慎,不要把计算机器或技术按我们的意愿强加给遇到的每个问题。我们必须首先解决这个问题;然后,如果需要的话,再把技术作为工具来实现我们的解决方案。本书假定,我们的分析已经表明,某种计算机系统对于解决手头特定的问题是必需的或是合适的。

1.1.1 问题求解
多数问题是大型问题,往往难以处理,尤其是,当它含有一些以前从未解决过的新问题的时候。因此,首先要通过分析(analyzing)对问题进行研究,也就是说,将问题分解成可以理解并能够处理的若干小的部分。这样,就可以将较大的问题变为一组较小的问题以及它们之间的关系。图1-1说明了如何进行分析。子问题之间的关系(用图中的箭头以及子问题的相对位置来表示)与子问题本身同样是非常重要的。有时,正是这种子问题之间的关系而不是子问题本身提供了解决大型问题的线索。


一旦分析了这个问题之后,就需要根据针对问题不同方面的构件来构造解决方案。图1-2说明了这样的逆向过程:合成(synthesis)是把小的构造块组合成一个大的结构。如同分析一样,将每个解决方案组合在一起可能与寻找解决方案本身同样具有挑战性。要了解其中的原因,可以考虑写一本小说的过程:字典中包含了写作过程中可能用到的所有单词,但是,写作最困难的部分是决定如何将单词组织好写成句子,以及如何将句子组织为段落,乃至于如何把章节组织成一本完整的书。因此,任何问题求解技术都必须包括两部分:通过分析问题来确定问题的本质含义,然后,再基于分析来合成解决方案。


为了帮助我们解决问题,我们会采用各种方法、工具、过程和范型。方法(method)或技术(technique)是产生某些结果的形式化过程。例如,厨师可能使用严格定时的、有序的方式,把一系列调料成分组合成调味汁,使得调味汁变稠,但不会凝结或散开。调制调味汁的过程包括时间选择和调料成分,但并不依赖于使用了哪种烹饪设备。

工具(tool)是用更好的方式完成某件事情的设备或自动化系统。这个“更好的方式”可能是工具使我们更精确、更高效或生产率更高,也可以是它能够提高最终产品质量。例如,我们使用打字机或者键盘加打印机来写信,因为这样写出的信件比手写的更易于阅读。再如,我们使用剪刀作为工具是因为用它裁纸要比直接用手撕纸更快、更整齐。然而,要做好一件事情,工具并不总是必需的。例如,使调味汁更美味的是烹调技术,而不是厨师用的锅和羹匙。

过程(procedure)如同食谱:把工具和技术结合起来,共同生产特定产品。例如,就像后面的章节所论述的那样,测试计划描述测试过程:它告诉我们,在什么情况下将使用哪种工具处理哪个数据集,以便我们能够确定软件是否满足了需求。

最后,范型(paradigm)就像烹饪风格。它表示构造软件的特定方法或哲学。就像我们能够区分法国菜烹饪法与中国菜烹饪法一样,我们也能够区分面向对象开发和过程开发这样的范型。并不是某一种范型就一定比另一种范型好,每一种范型都有其各自的优缺点,只是在某些情况下,一种范型可能要比另外一种范型更合适。

软件工程师使用工具、技术、过程和范型来提高软件产品的质量。他们的目标就是使用高效的、高生产率的方法形成相关问题的有效解决方案。下面的章节将重点介绍支持我们所说的开发和维护活动的特定方法。读者可以在本书的万维网主页中找到相关工具和技术的最新链接。

1.1.2 软件工程师的角色是什么
要理解软件工程师在计算机科学领域中所扮演的角色,我们先看看另外一个学科的例子。考虑一下化学研究以及用它来解决问题这两者之间的区别。化学家研究化学物质:它们的结构、它们的相互作用以及现象背后的理论。而化学工程师则用化学家的研究结果解决各种问题。化学家将化学作为研究对象;但对化工人员而言,化学是用来解决一般问题(这个问题本质上甚至可能不是“化学”领域的问题)的工具。

我们可以从类似的角度看待计算技术。人们可以集中精力研究计算机和程序设计语言,也可以把它们看作是用于设计和实现问题解决方案的工具。软件工程显然属于后一种情形,如图1-3所示。软件工程师的精力集中于把计算机作为问题求解的工具,而不是研究硬件设计或者算法的理论证明。在本章的后面,我们会了解到,软件工程师使用计算机的功能进行工作,并将其作为一般解决方案的一部分,而不是研究计算机本身的理论和结构。


本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

《软件工程(第4版?修订版)》—第1章1.1节什么是软件工程相关推荐

  1. 《个体软件过程》—第1章1.1节什么是软件工程

    本节书摘来自异步社区<个体软件过程>一书中的第1章1.1节什么是软件工程,作者[美]Watts S. Humphrey,更多章节内容可以访问云栖社区"异步社区"公众号查 ...

  2. 《个体软件过程》—第1章1.3节个体软件过程

    本节书摘来自异步社区<个体软件过程>一书中的第1章1.3节个体软件过程,作者[美]Watts S. Humphrey,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  3. 《个体软件过程》—第8章8.2节认真制订承诺

    本节书摘来自异步社区<个体软件过程>一书中的第8章8.2节认真制订承诺,作者[美]Watts S. Humphrey,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  4. 《术以载道——软件过程改进实践指南》—第1章1.1节对CMMI的基本认识

    本节书摘来自异步社区<术以载道--软件过程改进实践指南>一书中的第1章1.1节对CMMI的基本认识,作者任甲林,更多章节内容可以访问云栖社区"异步社区"公众号查看. 第 ...

  5. 第二章 个体软件过程

    第一节 质量管理基本策略 为什么要了解并且掌握个体软件过程(PSP) DevOps"开发在前,运维在后" 高质量开发对于价值流动的意义-The Three Ways 个体软件工程师 ...

  6. 《团队软件过程(修订版)》—第1章1.5节TSPi过程

    本节书摘来自异步社区<团队软件过程(修订版)>一书中的第1章1.5节TSPi过程,作者[美] Watts S. Humphrey(沃茨·S. 汉弗莱),更多章节内容可以访问云栖社区&quo ...

  7. 《团队软件过程(修订版)》—第2章2.3节团队是什么

    本节书摘来自异步社区<团队软件过程(修订版)>一书中的第2章2.3节团队是什么,作者[美] Watts S. Humphrey(沃茨·S. 汉弗莱),更多章节内容可以访问云栖社区" ...

  8. 《精益软件度量——实践者的观察与思考》—第1章1.1节精益软件开发的度量体系...

    本节书摘来自异步社区<精益软件度量--实践者的观察与思考>一书中的第1章1.1节精益软件开发的度量体系,作者张松,更多章节内容可以访问云栖社区"异步社区"公众号查看. ...

  9. 《设计团队协作权威指南》—第1章1.3节甘为螺丝钉

    本节书摘来自异步社区<设计团队协作权威指南>一书中的第1章1.3节甘为螺丝钉,作者[美]Dan M.Brown,更多章节内容可以访问云栖社区"异步社区"公众号查看. 1 ...

最新文章

  1. 假如曹操是一名程序员,会发生什么?
  2. windows:mysql5.7.29安装
  3. 分享一个多线程实现[冒泡][选择][二分法]排序的例子
  4. VS2010 + OpenCV 2.4.1 环境配置
  5. LInux 下安装 python notebook 及指向路径,运行计时,炫酷的深蓝午夜主题,本地登陆远程服务器
  6. 转载 Spark性能优化指南——基础篇
  7. linux网络IO模型
  8. VC++6.0 单步调试
  9. iOS开发之权限判断(这里只说相册的权限判断status一直是PHAuthorizationStatusNotDetermined问题)
  10. asp.net html 扩展,StaticHtml
  11. 2013年全国统一题库考试-小型汽车驾照模拟考试C1,C2,C3,C4
  12. CAD工具栏不见了怎么显示出来/CAD面板不见了怎么显示出来
  13. 职称计算机internet应用模块,全国职称计算机考试题库(Internet应用XP版模块)
  14. 彰显互联网基因:大数据引发互联网原创综艺革新。。
  15. 华乾服显示无法连接服务器,唯满侠战火纷飞,飞龙休闲养老,剑网三各服务器缘何天差地别...
  16. Java华氏度与摄氏度之间的转换
  17. 破解TA朋友圈“仅三天可见”
  18. 大数据入门9:半结构化数据模型(Semi-structured Data Model)
  19. 程序员生存定律-选公司前要干的事:分类
  20. 图的广度优先搜索--python实现

热门文章

  1. Copy-Paste
  2. 老人喂养宝宝11个误区
  3. shiro反序列化漏洞复现
  4. spring学习总结(十):基于 XML 的配置AOP
  5. 怎样才能精通 Photoshop?
  6. 物联网设备的分类及未来发展中存在的问题有哪些?
  7. Webgoat --XEE
  8. 微信公众账号后台怎么解除小程序_微信小程序 后台登录(非微信账号)实例详解...
  9. 转载:性能测试解惑之并发压力
  10. 优先队列 以及 sort对 pari 的自定义排序