《实践者的研究方法》—— 第1章 软件的本质 1.3 小结

1.3 小结

软件是以计算机为基础的系统和产品中的关键部分,并且是世界舞台上最重要的技术之一。在过去的50年里,软件已经从解决特定问题和信息分析的工具发展为独立的产业。然而,如何在有限的时间内利用有限的资金开发高质量的软件,这仍然是我们所面对的难题。

软件——程序、数据和描述信息——覆盖了科技和应用的很多领域。遗留软件仍旧给维护人员带来了特殊的挑战。

软件的本质是变更。基于Web的系统和App已经从简单的信息内容集合演化为能够展示复杂功能和多媒体信息的复杂系统。尽管WebApp具有独特的特性和需求,但它们仍然属于软件范畴。由于App已迁移到很多的平台上,因此移动App展示出了新的挑战。云计算将转变软件交付的方式及软件存在的环境。产品线软件提供了构建软件的潜在效率。

习题与思考题

1.1. 举出至少5 个例子来说明“意外效应法则”在计算机软件方面的应用。

1.2. 举例说明软件对社会的影响(包括正面影响和负面影响)。

1.3. 针对1.1节提出的5个问题给出你的答案,并与同学讨论。

1.4. 在交付最终用户之前,或者首个版本投入使用之后,许多现代App程序都会有频繁的变更。为防止变更引起软件退化,请提出一些有效的解决措施。

1.5. 思考1.1.2节中提到的7个软件分类。请问能否将一个软件工程方法应用于所有的软件分类?并就你的答案加以解释。

扩展阅读与信息资源

在数千本关于计算机软件的书中,大多数讨论的是程序设计语言和软件应用系统,很少有涉及软件本身的。Pressman 和Herron(《Software Shock》,Dorset House,1991)最早讨论了软件和专业开发方法的问题(针对门外汉)。Negroponte的畅销书(《Being Digital》,Alfred A. Knopf,Inc.,1995)提供了关于计算及其在21世纪的发展和影响的观点。Demarco(《Why does Software Cost So Much?》,Dorset House,1995)就软件和开发过程发表了一系列惊人且见解独到的论文。 Ray Kurzweil(《How to Create a Mind》,Viking,2013)讨论了软件如何在不久的将来就会模仿人类思想,并带来人类和机器进化的“奇异性”。

Keeves(《Catching Digital》,Business Infomedia Online,2012)讨论了商业领导者应该如何适应以不断增大的步伐进行演化的软件。Minasi在著作(《The Software Conspiracy: Why Software Companies Put Out Faulty Products,How They Can Hurt You,and What You Can Do》,McGraw-Hill,2000)中认为,现在由于软件缺陷引起的“现代灾难”将被消除并提出了解决的方法。Eubanks (《Digital Dead End: Fighting for Social Justice in the Information Age》,MIT Press,2011)和Compaine(《Digital Divide: Facing a Crisis or Creating a Myth》,MIT Press,2001)的书认为,在21世纪的第一个十年里,信息(如Web资源)富有者和信息贫困者之间的数字鸿沟将越来越小。Kuniavsky(《Smart Things: Ubiquitous Computing User Experience Design》,Morgan Kaufman,2010)、Greenfield(《Everyware: The Dawning Age of Ubiquitous Computing》,New Riders Publishing,2006)和Loke(《Context-Aware Pervasive Systems: Architectures for a New Breed of Applications》,Auerbach,2006)的著作介绍了“开放世界”软件的概念,并指出在无线网络环境中软件必须能够进行适应性调整,以满足实时涌现的需求。

网上有很多讨论软件本质的信息资源,与软件过程相关的最新参考文献可在SEPA网站www.mhhe.com/pressman找到。

时间: 2024-12-24 02:08:33

《实践者的研究方法》—— 第1章 软件的本质 1.3 小结的相关文章

《实践者的研究方法》—— 第1章 软件的本质 1.1 软件的本质

第1章 Software Engineering: A Practitioner's Approach, Eighth Edition 软件的本质 要 点 浏 览 概念:计算机软件是由专业人员开发并长期维护的软件产品.完整的软件产品包括:可以在各种不同容量及系统结构的计算机上运行的程序.程序运行过程中产生的各种结果以及各种描述信息,这些信息可以以硬拷贝或是各种电子媒介形式存在. 人员:软件工程师开发软件并提供技术支持,产业界中几乎每个人都间接或直接地使用软件. 重要性:软件之所以重要是因为它在我

《实践者的研究方法》—— 导读

前 言 如果有这样一款计算机软件,它能满足用户的需求,能在相当长的时间内无故障地运行,修改起来轻松便捷,使用起来更是得心应手,那么,这款软件必定是成功的,它切实改善了我们的生活.但是,如果有这样一款软件,它令用户失望,错误频出,修改起来困难重重,使用起来更是举步维艰,那么,这必定是一款失败的软件,它使我们的生活一团糟.谁都希望开发出优秀的软件,为我们的生活带来便利,而不是把自己陷入失败的深渊.要想使软件获得成功,在设计和构建软件时就需要有规范,需要采用工程化的方法. 自本书第1版问世以来的近35

《实践者的研究方法》—— 第2章 软件工程 2.4 软件开发神话

2.4 软件开发神话 软件开发神话,即关于软件及其开发过程的一些被人盲目相信的说法,这可以追溯到计算技术发展的初期.神话具有一些特点,让人觉得不可捉摸.例如,神话看起来是事实的合理描述(有时的确包含真实的成分),它们符合直觉,并且经常被那些知根知底的有经验的从业人员拿来宣传. 今天,大多数有见地的软件工程师已经意识到软件神话的本质--它实际上误导了管理者和从业人员对软件开发的态度,从而引发了严重的问题.然而,由于习惯和态度的根深蒂固,软件神话遗风犹在. 管理神话.像所有领域的经理一样,承担软件职

《实践者的研究方法》—— 第2章 软件工程 2.6 小结

2.6 小结 软件工程包含过程.方法和工具,这些工具使得快速构建高质量的复杂计算机系统成为可能.软件过程包括五个框架活动:沟通.策划.建模.构建和部署,这些活动适用于所有软件项目.软件工程实践遵照一组核心原则,是一项解决问题的活动. 尽管我们关于构建软件所需的软件知识和技能增长了,但仍有大量的软件神话将管理者和从业人员诱入歧途.随着对软件工程理解的深化,你就会逐渐明白,为什么无论何时遇到这些神话,都要不遗余力地揭露. 习题与思考题 2.1 图2-1中,将软件工程的三个层次放在了 "质量关注点&q

《实践者的研究方法》—— 第1.2节 软件的变更本质

1.2 软件的变更本质 四大类软件不断演化,在行业中占有主导地位.这四类软件在十几年前还处于初级阶段. 1.2.1 WebApp 万维网(WWW)的早期(大约从1990年到1995年),Web站点仅包含链接在一起的一些超文本文件,这些文件使用文本和有限的图形来表示信息.随着时间的推移,一些开发工具(例如XML.Java)扩展了HTML(超级文本标记语言)的能力,使得Web工程师在向客户提供信息的同时也能提供计算能力.基于Web的系统和应用软件(我们将这些总称为WebApp)诞生了. 今天,Web

《实践者的研究方法》—— 第2章 软件工程 2.3 软件工程实践

2.3 软件工程实践 在2.2节中,曾介绍过一种由一组活动组成的通用软件过程模型,建立了软件工程实践的框架.通用的框架活动--沟通.策划.建模.构建和部署--和普适性活动构成了软件工程工作的体系结构的轮廓.但是软件工程的实践如何融入该框架呢?在以下几节里,读者将会对应用于这些框架活动的基本概念和原则有一个基本了解.   2.3.1 实践的精髓 在现代计算机发明之前,有一本经典著作<How to Solve it>,在书中,George Polya[Pol45]列出了解决问题的精髓,这也正是软件

《实践者的研究方法》—— 第3章 软件工程 3.1 通用过程模型

第3章 Software Engineering: A Practitioner's Approach, Eighth Edition 软件过程结构 要 点 浏 览 概念:在开发产品或构建系统时,遵循一系列可预测的步骤(即路线图)是非常重要的,它有助于及时交付高质量的产品.软件开发中所遵循的路线图就称为"软件过程". 人员:软件工程师及其管理人员根据需要调整开发过程,并遵循该过程.除此之外,软件的需求方也需要参与过程的定义.建立和测试. 重要性:软件过程提高了软件工程活动的稳定性.可控

《实践者的研究方法》—— 第2章 软件工程 2.2 软件过程

2.2 软件过程 软件过程是工作产品构建时所执行的一系列活动.动作和任务的集合.活动(activity)主要实现宽泛的目标(如与利益相关者进行沟通),与应用领域.项目大小.结果复杂性或者实施软件工程的重要程度没有直接关系.动作(action,如体系结构设计)包含了主要工作产品(如体系结构设计模型)生产过程中的一系列任务.任务(task)关注小而明确的目标,能够产生实际产品(如构建一个单元测试). 在软件工程领域,过程不是对如何构建计算机软件的严格的规定,而是一种具有可适应性的调整方法,以便于工作

《实践者的研究方法》—— 第2章 软件工程 2.5 这一切是如何开始的

2.5 这一切是如何开始的 每个软件工程项目都来自业务需求--对现有应用程序缺陷的纠正,改变遗留系统以适应新的业务环境,扩展现有应用程序功能和特性,或者开发某种新的产品.服务或系统. 在软件项目的初期,业务需求通常是在简短的谈话过程中非正式地表达出来的.以下这段简短谈话就是一个典型的例子. SafeHome 如何开始一个软件项目   [场景] CPI公司的会议室里.CPI是一个虚构的为家庭和贸易应用生产消费产品的公司. [人物] Mal Golden,产品开发部高级经理:Lisa Perez,营