《软件工程(第4版?修订版)》—第1章1.4节软件工程涉及的人员

1.4 软件工程涉及的人员
软件工程(第4版•修订版)
软件开发的一个关键部分是客户与开发人员之间的交流,如果交流失败,那么系统也将失败。必须在构建有助于解决问题的系统之前,理解客户想要什么以及他们需要什么。要做到这一点,我们把讨论的重点转向软件开发所涉及的人员。

从事软件开发工作的人员数目取决于项目的规模和难易程度,然而,不论涉及多少人,都可以区分他们在整个项目生命周期中的角色。因此,对于一个大型项目,一个人或一个小组可能被确定地指派为某一个角色;而在小型项目中,一个人或一个小组可以一次承担几个角色。

通常情况下,参与项目的人员分为三类:客户、用户或开发人员。客户(customer)是为将要开发的软件系统支付费用的公司、组织或个人。开发人员(developer)是为客户构建软件系统的公司、组织或个人,其中包括协调并指导程序员和测试人员的管理人员。用户(user)是将实际使用系统的人,包括坐在终端前的人、提交数据的人或阅读输出的人。尽管就某些项目而言,客户、用户、开发人员是同一个人或同一组人,但多数情况下,他们还是各不相同的。图1-7显示了这三类参与人员之间的基本关系。

客户控制着资金,常常进行合同谈判并在验收文件上签字。但是,有时候客户并不是用户。例如,假定Wittenberg Water Works与Gentle Systems,Inc.签订了一份合同,要为公司建立计算机化的会计系统。Wittenberg的总裁可以向Gentle Systems,Inc.的代表明确地描述他需要什么,并且他将要签订这份合同。但是,总裁并不直接使用这个会计系统,用户将是簿记员或会计职员。因此,开发人员确切地理解客户和用户想要什么以及需要什么是非常重要的。
另一方面,假定Wittenberg Water Works是一家大型公司,它有自己的计算机系统开发部门。该部门可能决定它需要一个自动化的工具来记录其项目的成本和进度,并且决定自己构建这个工具。此时,该部门既是用户、客户,同时也是开发人员。

近几年,客户、用户和开发人员之间的这种简单的区别变得越来越复杂。客户和用户以各种方式介入到开发过程中。客户可能决定购买商业现货(Commercial Off-The-Shelf,COTS)软件,并合成到开发人员将要提供和支持的最终产品中。当发生这种情况的时候,客户会介入到系统体系结构的决策中,并且对开发过程有很多约束。类似地,开发人员可能决定使用额外的开发人员,后者称为分包商(subcontractor),分包商构建子系统并把它交付给开发人员,这些子系统包含在最终产品中。分包商可以与主开发人员在同一地点工作,他们也可能在不同的地点与主开发人员协调地工作,并在开发过程后期交付子系统。子系统可能是个交钥匙系统(turnkey system),其代码是一个合并的整体(不需要集成额外的代码),或者它可能需要一个单独的集成过程将主系统和子系统链接起来。

因此,在软件工程中,“系统”的概念不仅对理解问题分析或解决方案的合成是重要的,对组织开发过程以及为参与者分配合适的角色同样重要。在下一节,我们会讨论好的软件工程实践中系统方法的作用。

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

时间: 2024-07-30 05:01:36

《软件工程(第4版?修订版)》—第1章1.4节软件工程涉及的人员的相关文章

《软件工程(第4版?修订版)》—第1章1.2节软件工程取得了哪些进展

1.2 软件工程取得了哪些进展软件工程(第4版•修订版)编写软件既是一门艺术也是一门科学.作为一名计算机专业的学生,深入理解这句话是非常重要的.计算机科学家和软件工程研究人员研究的是计算机的机制,并建立起使它们具有更高生产率.更有效的理论.但同时,他们也设计计算机系统并编写程序,执行相关任务,这是一项融合艺术.天赋和技巧的实践性工作.在具体的系统上执行特定任务,可能会存在很多方法,但是,某一种方法可能更有效.更精确.更易于修改.更容易使用或更便于理解.任何黑客都能够编写代码完成工作,但是,要写出

《软件工程(第4版?修订版)》—第1章1.8节软件工程发生了多大的变化

1.8 软件工程发生了多大的变化软件工程(第4版•修订版)我们已经对构建软件和建造房子进行了比较.每年全国会建造几百栋房子,觉得满意的客户会搬进去.每年开发人员构造数百个软件产品,但是,更常见的是客户对结果不满意.为什么会存在这种差别呢?如果可以如此容易地列举出系统的开发步骤,那么为什么软件工程师生产高质量的软件却是这样艰难呢? 让我们回过头来再考虑建造房子的例子.在建造房子的过程中,Howell夫妇不断地检查计划.他们还有很多时候会改变自己的想法.同样地,软件开发允许客户在每一个步骤评审计划并

《Ruby程序员修炼之道》(第2版)—第1章1.1节进入Ruby的世界

第1章 进入Ruby的世界 Ruby程序员修炼之道(第2版) 本章主要内容 Ruby语法的生存工具箱① Ruby基础编程指引:程序编写.保存.运行和错误检查 Ruby安装指南 Ruby的扩展机制 Ruby中易用的命令行工具,包括交互式Ruby解释器(irb) 本书的内容是Ruby基础,而本章是基础中的基石.本章的目标是让读者在开始学习Ruby之前掌握足够的知识和技巧. 接下来读者将看到Ruby的基本语法和技术,以及Ruby的运行机制:如何写一个程序,怎样使用Ruby运行程序,以及如何把一个程序分

《Ruby程序员修炼之道》(第2版)—第1章1.4节易用的Ruby工具和应用程序

1.4 易用的Ruby工具和应用程序 安装Ruby后,就可以得到一组重要的命令行工具,它们被安装在配置信息bindir所指定的文件夹中,通常是/usr/local/bin./usr/bin或者/opt同等的目录中.(可以使用require "rbconfig"去测试一下RbConfig::CONFIG["bindir"]返回的结果.)这些命令行工具具体是以下几个. ruby:解释器. irb:Ruby交互式解释器. - rdoc和ri:Ruby文档工具. rake:

《软件测试技术大全:测试基础 流行工具 项目实战(第3版)》—第1章1.6节模拟面试问答

1.6 模拟面试问答 本章介绍的是软件测试相关的背景,以及软件测试的发展情况等.身为软件测试员,应该或多或少地了解软件测试的发展动态,及其相关的历史事件等内容,这样无论是在与同行交流,向开发人员介绍和讲解测试,还是在应聘面试中,都会有更多的话题. 一般在应聘过程中,面试官可能会问到以下一些问题,读者可以根据自己的了解以及在本章中学到的内容做出相应的回答. (1)您觉得目前的软件测试行业的现状是怎样的? 参考答案:目前的软件测试行业在国内正在蓬勃地发展中,但是由于起步比较晚,虽然大部分公司都已经设

《Ruby程序员修炼之道》(第2版)—第1章1.3节Ruby扩展和编程库

1.3 Ruby扩展和编程库本节的要点并不是关于Ruby标准库的参考.曾在引言中解释过,本书的目标不是编写一本Ruby语言的参考文档,而是教会读者使用Ruby语言并掌握它,并最终拓宽视野. 相应地,本节的目标是讲述扩展的工作方式,即如何使用Ruby运行这些扩展.它们之间技术实现的不同,并最终能让用户自己编写扩展和库文件的扩展架构. 随Ruby发布的扩展通常全部作为标准库来引用.标准库包括为不同项目和任务所提供的扩展,如数据库管理.网络.数学领域.XML处理等.标准库精密的结构每次改变,哪怕只有一

《Ruby程序员修炼之道》(第2版)—第1章1.2节剖析Ruby的安装

1.2 剖析Ruby的安装在系统上安装Ruby意味着在许多磁盘目录中安装了Ruby语言的库和支持文件.大多数时候,Ruby都知道如何找到其所需要的这些目录而不用弹出提示.但是了解Ruby安装的知识对了解Ruby本身大有益处. 查看Ruby的源代码 除了Ruby安装目录体系之外,Ruby的源代码目录也安装好了.如果没有,可以到Ruby的主页中下载.源代码目录中包含了许多在最终安装中出现的Ruby文件和许多已编译为目标文件并安装好的C语言文件.另外,源代码目录包含了一些如ChangeLog和软件授权

《软件工程(第4版?修订版)》—第1章1.11节本章对单个开发人员的意义

1.11 本章对单个开发人员的意义软件工程(第4版•修订版)本章介绍了许多概念,它们对于优秀的软件工程研究和实践来说都很重要.单个的软件开发人员可以通过下面的方法使用这些概念. 当有一个问题需要解决时(无论解决方案是否涉及软件),可以通过把问题分解成不同的组成部分和各部分之间的关系来分析问题.然后,解决单个子问题并把它们合并成为统一的整体,从而产生一个解决方案.必须理解需求可能发生变化,即使在分析问题.形成解决方案时需求也会变化.因此,解决方案必须是良好文档化的并且具有灵活性的,还应该把假设和使

《软件工程(第4版?修订版)》—第1章1.13节本章对研究人员的意义

1.13 本章对研究人员的意义软件工程(第4版•修订版)本章所讨论的许多问题是值得进一步研究的好课题.我们已经指出了软件工程中一些悬而未决的问题,包括需要找到以下几项. 适当的抽象级别:使得问题易于解决.适当的测度:使得问题和解决方案的本质可见且有用.适当的问题分解方法:使得每一个子问题都是可解决的.通用框架和表示法:允许方便有效的工具集成,使项目参加者之间的交流最有效.在后面的章节中我们会描述许多技术,其中一些一直在使用,并且是被软件开发实践充分证明的.而其他一些技术是提议性质的,只在一些小的