软件开发过程概述
IT行业软件开发流程与规范

IT行业软件开发流程与规范第1章软件开发概述 (4)1.1 软件开发背景 (4)1.2 软件开发流程 (4)1.3 软件开发规范的意义 (4)第2章需求分析 (5)2.1 用户需求调研 (5)2.1.1 确定调研目标 (5)2.1.2 选择调研方法 (5)2.1.3 制定调研计划 (5)2.1.4 执行调研 (5)2.1.5 调研数据分析 (6)2.2 需求分析的方法与工具 (6)2.2.1 需求分析方法 (6)2.2.2 需求分析工具 (6)2.3 需求规格说明书编写 (6)2.3.1 结构与内容 (6)2.3.2 编写规范 (7)第3章系统设计 (7)3.1 架构设计 (7)3.1.1 系统分层 (7)3.1.2 技术选型 (7)3.1.3 组件划分 (7)3.2 模块划分与接口设计 (8)3.2.1 模块划分 (8)3.2.2 接口设计 (8)3.3 数据库设计 (8)3.3.1 数据库选型 (8)3.3.2 表结构设计 (8)3.3.3 数据库规范 (9)3.4 系统设计文档编写 (9)3.4.1 文档结构 (9)3.4.2 编写要求 (9)第4章编码实现 (10)4.1 编程规范与约定 (10)4.1.1 代码风格 (10)4.1.2 编程习惯 (10)4.1.3 代码组织 (10)4.2 代码质量控制 (10)4.2.1 单元测试 (10)4.2.2 代码审查 (10)4.2.3 代码优化 (11)4.3.1 审查流程 (11)4.3.2 审查内容 (11)4.3.3 审查技巧 (11)4.4 版本控制 (11)4.4.1 版本控制工具 (12)4.4.2 代码提交与合并 (12)4.4.3 代码库管理 (12)第5章软件测试 (12)5.1 测试策略与计划 (12)5.1.1 测试策略 (12)5.1.2 测试计划 (13)5.2 单元测试 (13)5.2.1 单元测试方法 (13)5.2.2 单元测试策略 (13)5.3 集成测试 (13)5.3.1 集成测试方法 (13)5.3.2 集成测试策略 (14)5.4 系统测试 (14)5.4.1 系统测试内容 (14)5.4.2 系统测试策略 (14)5.5 验收测试 (14)5.5.1 验收测试内容 (14)5.5.2 验收测试策略 (15)第6章软件部署与维护 (15)6.1 部署策略与工具 (15)6.1.1 部署策略 (15)6.1.2 部署工具 (15)6.2 软件发布 (16)6.2.1 发布准备 (16)6.2.2 发布流程 (16)6.3 软件维护与升级 (16)6.3.1 软件维护 (16)6.3.2 软件升级 (16)第7章项目管理 (17)7.1 项目计划与进度控制 (17)7.1.1 项目目标:明确项目的最终目标,保证项目团队对目标的一致认同。
软件开发过程

软件开发过程随着信息技术的快速发展,软件开发已成为当今社会中不可或缺的一部分。
本文将探讨软件开发的整个过程,包括需求分析、设计、编码、测试和部署等阶段,以及每个阶段中所涉及的关键要素和注意事项。
一、需求分析在软件开发的起始阶段,需求分析是至关重要的。
在此阶段,开发团队与客户密切合作,确保全面理解和明确需求。
以下是在需求分析阶段中应注意的几个方面:1.1 确定需求:通过与客户的讨论和沟通,明确软件的功能和特性,并将其转化为具体的需求文档。
1.2 澄清需求:及时解决需求不明确、冲突或不一致的情况,确保开发团队对需求的理解保持一致,避免后期产生的问题。
1.3 优先级排序:根据客户的需求和限制条件,对需求进行优先级排序,以便合理分配开发资源和时间。
二、设计阶段设计阶段是将需求转化为实际软件产品的关键阶段。
在此阶段中,设计师和开发人员需要合作,制定软件的架构和技术实现方案。
以下是设计阶段中应注意的几个方面:2.1 架构设计:确定软件的整体结构,包括模块划分、接口设计和数据流程等,以确保软件具有良好的可扩展性和可维护性。
2.2 技术选择:根据需求和团队的技术能力,选择适当的开发语言、开发框架和数据库等技术工具,并考虑其与现有系统的兼容性。
2.3 用户界面设计:设计直观、易用的用户界面,提高软件的用户体验,同时注重界面的美观和响应速度。
三、编码阶段在设计阶段完成后,开发团队开始根据设计文档进行编码,将软件的各个模块逐步实现。
以下是编码阶段中应注意的几个方面:3.1 编码规范:制定统一的编码规范,提高代码的可读性和可维护性,并确保团队成员之间的代码风格一致。
3.2 模块开发:根据设计文档,将软件划分为各个模块,并分配给开发人员进行开发,以提高开发效率和质量。
3.3 单元测试:在编码过程中进行单元测试,保证每个模块的功能正确性,并及早发现和修复潜在的问题。
四、测试阶段在编码阶段完成后,软件进入测试阶段。
在此阶段中,测试人员负责对软件进行全面的测试,以确保软件的质量和稳定性。
软件开发过程及软件开发过程各阶段的关系

软件开发过程及软件开发过程各阶段的关系在软件开发过程中,通常会采用一定的开发模型来组织开发工作,以便在开发过程中实现高效、高质量的软件。
不同的开发模型在不同的阶段都有不同的任务和作用,因此了解这些阶段的关系对于软件开发人员非常重要。
软件开发过程通常可以分为以下几个阶段:1.需求分析阶段:在这个阶段,开发团队会与客户或项目经理沟通,了解软件的需求和用户需求。
开发团队需要清楚地了解用户的需求和需求,以便设计出满足这些需求的软件系统。
2.设计阶段:在这个阶段,开发团队会在需求分析阶段的基础上,设计出软件的架构、模块、数据结构等。
开发团队需要确保设计方案能够满足软件系统的需求,并且可以实现高效、可靠的运行。
3.编码阶段:在这个阶段,开发团队会根据设计阶段的方案进行编码。
在编码过程中,开发人员需要确保代码符合设计要求,并且可以实现软件系统的功能。
4.测试阶段:在这个阶段,开发团队会对软件系统进行测试,以确保软件系统的功能、性能、安全等方面都符合要求。
测试阶段通常包括单元测试、集成测试、系统测试等。
5.部署和维护阶段:在这个阶段,开发团队会将软件系统部署到实际的环境中,并对软件系统进行维护和修复。
这些阶段之间并没有固定的界限,也不是线性的顺序关系。
不同的开发模型中可能会存在不同的阶段和相应的关系。
例如,瀑布模型中这些阶段是线性的,每个阶段都有明确的输出和输入;而敏捷开发模型中这些阶段是交叉的,开发团队会在不同的时间段中进行多个阶段的工作。
无论采用哪种开发模型,软件开发人员需要清楚地了解每个阶段的任务和作用,以便能够高效、高质量地完成软件开发工作。
同时,软件开发人员还需要不断地学习和掌握新的技术和工具,以便能够在软件开发过程中更加高效地工作。
软件工程开发流程

软件工程开发流程
软件工程开发流程是指在软件开发过程中所采用的一系列组织、管理和控制软件开发活动的方法和步骤。
软件开发流程的目的是确保软件开发项目的质量、进度和成本得以控制和管理,从而满足用户需求。
软件工程开发流程通常包括以下步骤:
1. 需求分析:在这个阶段,开发团队与客户进行沟通,了解客
户的需求和要求,进而设计和制定软件系统的功能和规格。
2. 设计和开发:根据需求分析的结果,设计和开发软件系统的
架构、模块、界面和程序。
3. 测试和验证:在这个阶段中,测试团队对软件进行测试,发
现和修复软件中的错误和缺陷,确保软件能够达到预期的质量和性能。
4. 集成和部署:把不同模块或部分组合起来,并把系统部署到
目标环境中进行测试和验证。
5. 运维和维护:系统上线后,需要进行运维和维护工作,包括
故障排查、安全更新、数据备份等。
软件工程开发流程的好处是明细化的工作流程,使得开发团队可以更加有效地协调工作、管理进度和控制质量,最终提高软件的质量和用户满意度。
- 1 -。
软件开发的过程

ood:面向对象的设计,是ooa的全集,与具体的技术框架相结合进行设计。
面向过程与面向对象的区别?
面向过程:
1、现实世界是对象,其在分析过程中是对象,在设计过程不是对象而是方法与方法之间的调用,容易与现实脱离,容易出错。
说明装备TransactionManager,说明连接点TransactionAttributes。再配置具体的代理,继承于AbstractProxy,通过target指向真实的对象。
通过set方法注入将具体的Dao注入到Facade的Dao接口属性中。
Dao
调用真实对象方法,在调用之前之后可以提供事务、日志、安全等服务。
模板:父类提供抽象方法及具体方法,具体方法调用抽象方法,抽象方法由子类实现,向客户端公开的子类,客户端通过父类的具体方法调用子类实现的抽象方法,
为子类提供服务。
装饰:有三个角色,通用接口,本原,装饰,将通用接口聚集到装饰中,所在可以将本原或装饰通过构造子注入到另一个装饰中,装饰可以有很多子类,
功能描述
参与者
前置条件:前提
后置条件:结果
基本流:最正常的情况
扩展流:可能及出错的情况
二、整体设计(20-30%)
1、分析业务流程
如:
bbs
登陆注册
组成元素:
组件
部署图:说明主机与主机的关系,找出系统运行的瓶颈。
组成元素:
主机
对象图:一般不画
活动图作用及元素?
主要用在需求分析阶段,说明某一个用例的业务流程。
元素如下:
开始
WEB软件开发流程概述

WEB软件开发流程概述WEB软件开发流程是指在设计、开发和发布WEB软件的过程中所需要经过的一系列阶段和步骤。
它包括需求分析、系统设计、编码、测试、部署以及维护等环节。
下面将详细阐述WEB软件开发流程的各个阶段及其重要性。
首先是需求分析阶段。
在这个阶段中,开发团队与客户进行充分的沟通和交流,了解并明确客户的需求和期望。
同时,开发团队也需要对客户所在的行业和市场进行深入了解,以便更好地把握需求。
需求分析的重要性在于确保开发团队能够准确理解客户的需求,为后续的设计和开发提供正确的方向。
接下来是系统设计阶段。
在这个阶段中,开发团队根据需求分析阶段的结果,对系统进行详尽的设计。
这个阶段主要包括数据库设计、页面设计、功能设计、架构设计等方面。
系统设计的重要性在于定义系统的整体结构和框架,为编码和测试提供指导。
然后是编码阶段。
在这个阶段中,开发团队根据前两个阶段的结果,使用编程语言实现系统的具体功能。
编码过程需要严格按照系统设计的要求进行,同时也需要遵循良好的编码规范和开发规范。
编码的重要性在于通过具体的实现来验证系统设计的可行性和有效性。
接下来是测试阶段。
在这个阶段中,开发团队对已完成的功能进行全面的测试,以发现并修复潜在的问题和错误。
测试阶段包括功能测试、性能测试、安全性测试等方面。
测试的重要性在于保证系统的质量和稳定性,以及提升用户的体验。
然后是部署阶段。
在这个阶段中,开发团队将已完成和测试通过的系统发布到生产环境中,使用户能够正常访问和使用系统。
部署的重要性在于确保系统能够在实际环境中正常运行,并为用户提供良好的使用体验。
最后是维护阶段。
在这个阶段中,开发团队对已发布的系统进行日常的维护和更新。
维护的内容包括修复已发现的问题、增加新的功能和改进用户体验等方面。
维护的重要性在于保持系统的稳定性和可用性,提高用户满意度。
总结来说,WEB软件开发流程包括需求分析、系统设计、编码、测试、部署和维护等阶段。
每个阶段都有其重要性和特定的任务要求,这些任务的完成与质量直接影响着整个软件开发的成功与否。
简述软件开发的过程

简述软件开发的过程
软件开发过程是指从需求分析开始,通过设计、编码、测试等环节,最终将软件交付的一系列步骤。
1. 需求分析:明确软件开发的目标和需求,并与相关人员进行沟通,了解用户的需求和期望。
2. 设计阶段:根据需求分析的结果,确定软件的整体架构和模块设计,包括数据库设计、系统流程设计等。
3. 编码阶段:根据设计阶段确定的规范和需求,进行具体的编码工作,实现软件的各个功能模块。
4. 测试阶段:对编码完成的软件进行测试,包括单元测试、集成测试和系统测试,以验证软件在各种情况下的正确性和稳定性。
5. 部署阶段:将经过测试的软件安装到目标环境中,进行部署和配置,确保软件可以正常运行。
6. 维护阶段:软件交付后,需要进行日常的维护和升级工作,包括bug修复、性能优化等,以确保软件的持续稳定运行。
在整个软件开发过程中,还需要进行项目管理、团队协作和版本控制等工作,以确保软件开发的进度和质量。
软件开发过程概述

软件开发过程概述软件开发是指利用计算机语言编写代码,制作出满足人们需求的程序的过程。
在软件开发的过程中,需经历一系列环节,包括需求分析、设计、编码、调试和测试等。
本文将对软件开发的过程进行概述,以便读者更好地理解软件开发的步骤和流程。
需求分析软件开发的第一步是需求分析。
在这一阶段,开发团队与客户进行沟通,确定软件的功能要求、用户需求以及项目的范围和时间安排等。
通过需求分析,开发团队能够准确把握用户的需求,并为后续的设计和开发工作打下基础。
设计在需求分析的基础上,开发团队开始进行软件的设计。
设计阶段包括系统架构设计、模块设计和用户界面设计等。
系统架构设计是指确定软件系统中各个组件的关系和功能,以及数据流和控制流等。
模块设计则是将系统划分为不同的模块,并定义每个模块的功能和接口。
而用户界面设计着重于提供用户友好的界面,使用户能够轻松使用软件。
编码在设计完成后,开发团队开始编写代码。
编码是将设计阶段的概念转化为具体实现的过程。
开发团队需要根据设计文档中的要求,使用合适的编程语言编写代码,并确保代码的质量和可读性。
编码阶段需要严格遵循设计要求,保证软件的稳定性和性能。
调试与测试编码完成后,开发团队将进行软件的调试和测试。
调试是指发现和修复软件中的错误,确保软件的正常运行。
测试是验证软件是否满足设计要求和用户需求的过程。
测试包括单元测试、集成测试和系统测试等。
单元测试是对软件的各个模块进行独立测试,集成测试是测试模块之间的交互功能,而系统测试则是对整个系统进行全面测试。
部署与维护经过调试和测试后,软件准备部署到生产环境中,供用户使用。
在部署过程中,开发团队需要进行软件的安装、配置和培训等工作。
同时,软件在投入使用后,还需要进行维护工作,包括排除故障、更新功能和提供技术支持等。
总结软件开发是一个复杂的过程,需要经历需求分析、设计、编码、调试和测试等多个阶段。
每个阶段都有其特定的任务和目标,合理的软件开发过程能够保证软件的质量和性能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第1章软件开发过程概述1.1 软件开发过程概述1.1.1 软件的概念软件(Software)简单的说就是那些在计算机中能看的着,但摸不着的东西,概念性的说软件也称为“软设备”,广义地说软件是指系统中的程序以及开发、使用程序所需要的所有文档的集合软件分为系统软件和应用软件。
软件并不只是包括可以在计算机上运行的程序,与这些程序相关的文件一般也被认为是软件的一部分。
软件被应用于世界的各个领域,对人们的生活和工作都产生了深远的影响。
1. 系统软件系统软件是负责管理计算机系统中各种独立的硬件,使得它们可以协调工作。
系统软件使得计算机使用者和其他软件将计算机当作一个整体而不需要顾及到底层每个硬件是如何工作的。
一般来讲,系统软件包括操作系统和一系列基本的工具(比如编译器,数据库管理,存储器格式化,文件系统管理,用户身份验证,驱动管理,网络连接等方面的工具)。
2. 应用软件应用软件是为了某种特定的用途而被开发的软件。
它可以是一个特定的程序,比如一个图像浏览器。
也可以是一组功能联系紧密,可以互相协作的程序的集合,比如微软的Office软件。
也可以是一个由众多独立程序组成的庞大的软件系统,比如数据库管理系统。
较常见的有:文字处理软件如WPS、Word等;信息管理软件;辅助设计软件如AutoCAD ;实时控制软件;教育与娱乐软件。
1.1.2 编程与软件开发软件开发的内容是:需求、设计、编程和测试。
(1)需求:不仅仅是用户需求,应该是开发中遇到的所有的需求。
比如,你首先要知道做这个项目是为了解决什么问题;测试案例中应该输入什么数据......为了清楚地知道这些需求,你经常要和客户、项目经理等交流。
(2)设计:编码前,肯定有个计划告诉你要做什么,结构是怎样等等。
你一定要按照这个来做,否则可能会一团糟。
(3)编程:如果在项目截止日,你的程序不能跑起来或达不到客户的要求,你就拿不到钱。
(4)测试:目的是让你知道,什么时候算是完成了。
如果你聪明,你就应该先写测试,这样可以及时知道你是否真地完成了。
否则,你经常会不知道,到底有哪些功能是真正完成了,离预期目标还差多远。
软件开发中,客户和开发人员都有自己的基本权利和义务。
(1)客户:定义每个用户需求的商业优先级;制订总体计划,包括用多少投资、经过多长时间、达到什么目的;在项目开发过程中的每个工作周,都能让投资获得最大的收益;通过重复运行你所指定的功能测试,准确地掌握项目进展情况;能随时改变需求、功能或优先级,同时避免昂贵的再投资;能够根据各种变化及时调整项目计划;能够随时取消项目;项目取消时,以前的开发工作不是一堆垃圾,已开发完的功能是合乎要求的,正在进行或未完成的的工作则应该是不难接手的。
(2)开发人员:知道要做什么,以及要优先做什么;工作有效率;有问题或困难时,能得到客户、同事、上级的回答或帮助;对工作做评估,并根据周围情况的变化及时重新评估;积极承担工作,而不是消极接受分配。
1.1.3 软件开发过程软件开发过程一般分为以下6个阶段:1. 计划对所要解决的问题进行总体定义,包括了解用户的要求及现实环境,从技术、经济和社会因素等3个方面研究并论证本软件项目的可行性,编写可行性研究报告,探讨解决问题的方案,并对可供使用的资源(如计算机硬件、系统软件、人力等)成本,可取得的效益和开发进度作出估计。
制订完成开发任务的实施计划。
2. 分析软件需求分析就是回答做什么的问题。
它是一个对用户的需求进行去粗取精、去伪存真、正确理解,然后把它用软件工程开发语言(形式功能规约,即需求规格说明书)表达出来的过程。
本阶段的基本任务是和用户一起确定要解决的问题,建立软件的逻辑模型,编写需求规格说明书文档并最终得到用户的认可。
需求分析的主要方法有结构化分析方法、数据流程图和数据字典等方法。
本阶段的工作是根据需求说明书的要求,设计建立相应的软件系统的体系结构,并将整个系统分解成若干个子系统或模块,定义子系统或模块间的接口关系,对各子系统进行具体设计定义,编写软件概要设计和详细设计说明书,数据库或数据结构设计说明书,组装测试计划。
3. 设计软件设计可以分为概要设计和详细设计两个阶段。
实际上软件设计的主要任务就是将软件分解成模块是指能实现某个功能的数据和程序说明、可执行程序的程序单元。
可以是一个函数、过程、子程序、一段带有程序说明的独立的程序和数据,也可以是可组合、可分解和可更换的功能单元。
模块,然后进行模块设计。
概要设计就是结构设计,其主要目标就是给出软件的模块结构,用软件结构图表示。
详细设计的首要任务就是设计模块的程序流程、算法和数据结构,次要任务就是设计数据库,常用方法还是结构化程序设计方法。
4. 编码软件编码是指把软件设计转换成计算机可以接受的程序,即写成以某一程序设计语言表示的"源程序清单"。
充分了解软件开发语言、工具的特性和编程风格,有助于开发工具的选择以及保证软件产品的开发质量。
当前软件开发中除在专用场合,已经很少使用二十世纪80年代的高级语言了,取而代之的是面向对象的开发语言。
而且面向对象的开发语言和开发环境大都合为一体,大大提高了开发的速度。
5. 测试软件测试的目的是以较小的代价发现尽可能多的错误。
要实现这个目标的关键在于设计一套出色的测试用例(测试数据和预期的输出结果组成了测试用例)。
如何才能设计出一套出色的测试用例,关键在于理解测试方法。
不同的测试方法有不同的测试用例设计方法。
两种常用的测试方法是白盒法测试对象是源程序,依据的是程序内部的的逻辑结构来发现软件的编程错误、结构错误和数据错误。
结构错误包括逻辑、数据流、初始化等错误。
用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果。
白盒法和黑盒法依据的是软件的功能或软件行为描述,发现软件的接口、功能和结构错误。
其中接口错误包括内部/外部接口、资源管理、集成化以及系统错误。
黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。
黑盒法。
6. 维护维护是旨在已完成对软件的研制(分析、设计、编码和测试)工作并交付使用以后,对软件产品所进行的一些软件工程的活动。
即根据软件运行的情况,对软件进行适当修改,以适应新的要求,以及纠正运行中发现的错误。
编写软件问题报告、软件修改报告。
一个中等规模的软件,如果研制阶段需要一年至二年的时间,在它投入使用以后,其运行或工作时间可能持续五年至十年。
那么它的维护阶段也是运行的这五年至十年期间。
在这段时间,人们几乎需要着手解决研制阶段所遇到的各种问题,同时还要解决某些维护工作本身特有的问题。
做好软件维护工作,不仅能排除障碍,使软件能正常工作,而且还可以使它扩展功能,提高性能,为用户带来明显的经济效益。
然而遗憾的是,对软件维护工作的重视往往远不如对软件研制工作的重视。
而事实上,和软件研制工作相比,软件维护的工作量和成本都要大得多。
在实际开发过程中,软件开发并不是从第一步进行到最后一步,而是在任何阶段,在进入下一阶段前一般都有一步或几步的回溯。
在测试过程中的问题可能要求修改设计,用户可能会提出一些需要来修改需求说明书等。
1.2 软件需求分析1.2.1 需求获取需求获取(requirement elicitation)是需求工程的主体。
对于所建议的软件产品,获取需求是一个确定和理解不同用户类的需要和限制的过程。
获取用户需求位于软件需求三个层次的中间一层。
业务需求决定用户需求,它描述了用户利用系统需要完成的任务。
从这些任务中,分析者能获得用于描述系统活动的特定的软件功能需求,这些系统活动有助于用户执行他们的任务。
需求获取是在问题及其最终解决方案之间架设桥梁的第一步。
获取需求的一个必不可少的结果是对项目中描述的客户需求的普遍理解。
一旦理解了需求,分析者、开发者和客户就能探索出描述这些需求的多种解决方案。
参与需求获取者只有在他们理解了问题之后才能开始设计系统,否则,对需求定义的任何改进,设计上都必须大量的返工。
把需求获取集中在用户任务上—而不是集中在用户接口上—有助于防止开发组由于草率处理设计问题而造成的失误。
需求获取、分析、编写需求规格说明和验证并不遵循线性的顺序,这些活动是相互隔开、增量和反复的。
当你和客户合作时,你就将会问一些问题,并且取得他们所提供的信息(需求获取)。
同时,你将处理这些信息以理解它们,并把它们分成不同的类别,还要把客户需求同可能的软件需求相联系(分析)。
然后,你可以使客户信息结构化,并编写成文档和示意图(说明)。
下一步,就可以让客户代表评审文档并纠正存在的错误(验证)。
这四个过程贯穿着需求分析的整个阶段。
需求获取可能是软件开发中最困难、最关键、最易出错及最需要交流的方面。
需求获取只有通过有效的客户—开发者的合作才能成功。
分析者必须建立一个对问题进行彻底探讨的环境,而这些问题与产品有关。
为了方便清晰地进行交流,就要列出重要的小组,而不是假想所有的参与者都持有相同的看法。
对需求问题的全面考察需要一种技术,利用这种技术不但考虑了问题的功能需求方面,还可讨论项目的非功能需求。
确定用户已经理解:对于某些功能的讨论并不意味着即将在产品中实现它。
对于想到的需求必须集中处理并设定优先级,以避免一个不能带来任何益处的无限大的项目。
需求获取是一个需要高度合作的活动,而并不是客户所说的需求的简单誊本。
作为一个分析者,你必须透过客户所提出的表面需求理解他们的真正需求。
询问一个可扩充(open-ended)的问题有助于你更好地理解用户目前的业务过程并且知道新系统如何帮助或改进他们的工作。
调查用户任务可能遇到的变更,或者用户需要使用系统其它可能的方式。
想像你自己在学习用户的工作,你需要完成什么任务?你有什么问题?从这一角度来指导需求的开发和利用。
还有,探讨例外的情况:什么会妨碍用户顺利完成任务?对系统错误情况的反映,用户是如何想的?询问问题时,以“还有什么能” ,”当?时,将会发生什么”“你有没有曾经想过” ,“有没有人曾经”为开头。
记下每一个需求的来源,这样向下跟踪直到发现特定的客户。
有些时候,尝试着问一些“愚蠢”的问题也有助于客户打开话匣子。
如果你直接要求客户写出业务是如何实现的,客户十有八九无法完成。
但是如果你尝试着问一些实际的问题,例如:“以我的理解,你们收到订单后,会...”。
客户立刻就会指出你的错误,并滔滔不绝的开始谈论业务,而你,就在一边仔细的聆听吧。
这一招就叫做“抛砖引玉”。
需求讨论会上必须要使用笔记本电脑,还要指定一个打字熟练的人把所有的讨论记录下来,记录的同时还要做一定的整理。
如果不这样做,那么你结束会议的时候就会发现,所有的讨论只剩下一个模糊的印象,需求对你来说仍然是一件遥远的事情。
在座谈讨论之后,记下所讨论的条目(item),并请参与讨论的用户评论并更正。