跟我学软件系统需求工程——如何获得软件系统的用户需求
软件工程中的用户需求获取与分析

软件工程中的用户需求获取与分析软件工程中的用户需求获取与分析是软件开发的重要环节之一,它是指通过各种途径,了解用户对软件的需求,它对于软件的质量、可靠性和可维护性都有着至关重要的作用。
第一节:用户需求的获取获取用户需求是软件开发的第一步,如果不能正确的获取用户需求,那么剩下的开发工作也就没有必要。
在获取用户需求的过程中,需要使用到各种方法,其中最常见的方法有:1.用户访谈法用户访谈法是通过与用户面对面的交流,了解用户的需求,这个过程中,需要注意保持耐心和客观,避免过度引导用户。
2.调查法调查法是通过问卷调查的方式,收集用户对软件的需求,这种方法适用于大规模的用户需求获取。
3.案例分析法案例分析法是通过分析用户已有的软件需求或者软件应用过程中的问题,来获取用户的需求。
4.焦点小组法焦点小组法是通过组织一些用户(或者用户代表)进行讨论,从而得出用户对软件的需求。
5.用户练习法用户练习法是通过让用户在使用软件前尝试使用一些操作手册或者演示版,从而获取用户对软件功能的需求。
通过上面的几种方法,就可以获取到用户对软件的需求,但是,获取到用户需求,并不意味着这些需求就是最终的需求,我们还需要对用户的需求进行分析、筛选和整合。
第二节:用户需求的分析与整合用户需求的分析与整合是一种综合性的工作,需要对用户提供的需求进行系统的分析,然后整合成系统的需求。
在用户需求的分析过程中,需要考虑以下几点:1.需求的真实性在用户提供需求的过程中,可能会存在一些过度的描述或者夸大实际需求的情况,需要通过多次电话或者面对面交流的方式,了解其真实需求。
2.需求的优先级每一个用户提出的需求都有其优先级,需要根据需求的紧急程度和相对重要性确定需求的优先级,从而使得开发人员有条理的进行开发。
3.需求的明确性在用户提供需求的过程中,可能会存在一些术语、缩写等难以理解的东西,需要针对性的进行解释和澄清。
4.需求的可行性在用户提出的需求中,会存在一些技术实现上不可行或者成本过高的需求,需要通过技术分析和项目预算来确认需求的可行性。
如何进行软件工程中的用户需求收集(七)

如何进行软件工程中的用户需求收集引言软件工程中的用户需求收集是指从最终用户那里获取他们的需求和期望,以便为他们开发出满足其需求的软件产品。
用户需求收集对于软件工程的成功至关重要。
本文将探讨几种常见的用户需求收集方法,并分析其优缺点。
需求概述在进行用户需求收集之前,首先需要将需求进行概述。
这意味着要对软件产品的目标、功能、约束条件以及其他相关要求进行全面的了解。
概述需求的目的是为了给待采集需求的用户提供一个基本的框架,以便他们能够更好地表达自己的需求。
用户访谈用户访谈是最常用的需求收集方法之一。
通过面对面的交流,开发团队可以与用户互动,深入了解他们的需求和期望。
在访谈过程中,可以利用开放式问题和封闭式问题向用户提问,以确保全面而准确地收集到用户的需求。
用户调查用户调查是另一种有效的需求收集方法。
通过向用户发放问卷或在线调查表,开发团队可以更广泛地了解用户的需求。
用户调查可以帮助开发团队收集到大量的用户意见和反馈,但也需要注意调查设计的科学性和问题的准确性。
原型设计原型设计是一种通过创建界面或交互模型来展示软件功能的方法。
通过与用户交互,开发团队可以进一步了解用户的需求,并及时调整和改进原型设计。
原型设计可以帮助用户更好地理解软件产品的功能,从而提供更准确的需求。
用户故事(User Stories)用户故事是一种简洁而有效的需求收集方法。
通过用简短的语句来描述用户的需求和期望,开发团队可以更好地理解用户的想法。
用户故事通常包含一个角色、一个目标和一些具体需求。
它们可以帮助开发团队更好地解释和追踪用户需求。
原始资料分析原始资料分析是一种从现有资料中收集用户需求的方法。
开发团队可以通过研究用户的报告、文档、邮件等资料,获取用户关于软件产品需求的信息。
这种方法适用于已经存在相关资料的项目,可以节省需求收集的成本和时间。
用户沟通与用户的沟通是一种持续的需求收集方法。
在软件开发过程中,开发团队应该与用户保持联系,及时了解他们的需求和反馈。
软件需求工程实训课程学习总结需求获取与需求分析方法比较

软件需求工程实训课程学习总结需求获取与需求分析方法比较软件需求工程是软件开发过程中至关重要的一环,其目的是确保软件系统最终能够满足用户的需求。
在软件需求工程实训课程中,我学习了不同的需求获取和需求分析方法。
本文将对这些方法进行比较,以总结出对于不同情况下最适合的方法。
需求获取是软件需求工程的起点,它是通过与用户沟通和交流,了解用户需求的过程。
在实训课程中,我学习到了几种常用的需求获取方法:面谈、问卷调查和观察。
面谈是一种直接与用户进行交流的方法,通过与用户面对面的交流,可以深入了解用户需求背后的真正问题和期望。
通过面谈,我可以主动提问,用户也可以自由表达自己的观点。
在实践中,我发现面谈能够有效避免信息的误解,提供更加准确和详细的需求描述。
问卷调查则是一种匿名的需求获取方式,通过向用户发送问卷,可以收集到大量的用户意见和建议。
问卷调查相对而言更加快捷和方便,可以向更多的用户收集数据。
然而,问卷调查可能会出现信息不准确的问题,因为用户可能无法完全理解问题的含义,或者没有精力和时间来填写问卷。
观察是一种通过观察用户在实际环境中使用软件的方法,来获取用户需求的方法。
观察可以帮助我们了解用户在具体场景下的行为和需求,从而更好地设计软件。
但是,观察的过程相对较长,需要时间和资源投入,而且我们无法观察到用户在未来可能出现的情况。
需求分析是在需求获取的基础上,对收集到的需求进行整理、分析和抽象,以便进行后续的开发和设计。
在实训课程中,我学习了几种常用的需求分析方法:数据流图、用例图和决策表。
数据流图是一种图形化的工具,用于表示系统内部的数据流动和处理过程。
通过数据流图,我们可以清晰地了解系统的功能和数据流动方式,从而更好地识别出系统的需求和问题。
数据流图由于其简洁明了的特点,在实际中使用较为广泛。
用例图是一种通过描述系统与用户之间的交互来分析需求的方法。
用例图通过描述系统的各种情景,可以帮助我们更好地理解用户需求和系统功能。
软件工程中的需求工程方法与实践技巧

软件工程中的需求工程方法与实践技巧需求工程是软件开发过程中至关重要的一环,它确定了软件系统需要满足的功能和性能要求。
在软件工程中,需求工程师负责收集、分析和定义用户需求,为开发团队提供清晰、具体的指导。
本文将介绍一些常用的需求工程方法和实践技巧,以帮助开发团队更好地理解和应对需求工程的挑战。
1. 需求收集需求收集是需求工程的第一步,它的目的是获取用户的需求和期望。
需求工程师可以通过以下几种方式进行需求收集:- 面对面交流:与用户进行面对面的会议和访谈,了解他们的需求和期望。
这种交流方式可以更好地把握用户的真实需求,并及时解答用户的疑问。
- 文档分析:分析现有的需求文档、项目计划和用户手册等,了解系统已有的需求和规范。
- 调查问卷:设计调查问卷,广泛收集用户的需求,以获取更全面和客观的数据。
- 观察和模拟:观察用户的工作环境和方式,模拟他们的操作过程,以更好地理解他们的需求和使用习惯。
2. 需求分析与建模需求分析是将收集到的需求进行分析和整理的过程,它的目的是确定需求的优先级和相关的约束条件。
需求建模是需求分析的一种重要工具,它可以帮助将需求转化为易于理解和验证的形式。
- 用例图:用例图是一种常用的需求建模工具,它描述了系统和外部参与者之间的交互关系,帮助开发团队更好地理解系统的功能和用户的行为。
- 领域模型:领域模型是对系统所涉及的相关领域和实体进行建模的过程,以确定系统的边界和相关概念之间的关系。
- 数据流图:数据流图描述了系统中数据的流动和处理过程,帮助开发团队更好地理解系统的数据需求和处理逻辑。
3. 需求验证和确认需求验证和确认是确保需求的正确性和可行性的过程,它有助于避免开发过程中的返工和变更。
- 需求审查:通过团队内部和用户参与的需求审查会议,确认需求的正确性和一致性。
- 原型演示:根据收集到的需求,开发简化的原型系统,与用户共同验证需求的实现效果。
- 用户验收测试:在软件开发结束后,邀请用户进行验收测试,并与其确认是否满足其需求和期望。
如何进行软件工程中的用户需求收集

软件工程中的用户需求收集是开发一个成功软件的基础,它涉及到了与用户的有效沟通以及对用户需求的理解和分析。
在软件开发过程中,收集到准确的用户需求对产品设计、开发以及测试都具有重要意义。
本文将探讨如何进行软件工程中的用户需求收集的方法和技巧。
一、了解用户需求的重要性用户需求是软件开发的驱动力,仅有深入了解用户需求,才能确保软件开发过程中不偏离用户的期望。
用户需求收集的目的是为了准确获取到用户的期望和目标,并将其转化为开发团队可以理解和实现的具体任务。
二、与用户建立有效的沟通渠道与用户建立有效的沟通渠道是用户需求收集的关键步骤。
传统的方式是通过面对面会议、电话沟通等方式获取用户需求,但面对面的交流成本较高且易疏忽细节,因此我们可以运用一些现代技术手段,如使用在线问卷、邮件调查、在线讨论论坛等方式来和用户进行交流。
这些方式能够提高效率、减少信息丢失的风险,并且为用户提供了一个方便的平台,随时随地分享和表达他们的需求。
三、正确使用需求收集技巧需求收集技巧是帮助开发团队更好地理解用户需求的重要工具。
以下是一些常用的需求收集技巧:1. 面对面访谈:选择关键用户,通过面对面的访谈方式,直接获取用户需求以及背后的需求高度。
在访谈中,开发人员应以开放性问题的形式询问用户,以便充分理解用户的真实需求。
2. 观察用户行为:观察用户在使用类似软件时的行为细节,通过观察用户的操作习惯、应用场景等来获取更准确的需求信息。
3. 原型设计:通过设计软件的原型,让用户快速了解软件的外观和功能,收集用户对原型设计的反馈,从而更好地理解他们的需求。
四、积极倾听用户反馈在软件的持续开发和改进过程中,积极倾听用户的反馈是非常重要的。
用户反馈是一个宝贵的资源,能够帮助开发团队更好地理解用户的真实需求,及时调整和改进产品。
为了促使用户提供真实反馈,我们可以采取以下措施:1. 创造一个安全、友好的反馈环境,让用户感到舒适和放心表达自己的意见和建议。
跟我学软件系统需求工程——如何获得软件系统的用户需求

1.1跟我学软件系统需求工程——如何获得软件系统的用户需求在本单元中希望重点了解和掌握什么是用户需求,需求的表达形式,如何获取用户需求,如何细分需求,同时在此阶段所应该形成的制品;另外也应该掌握如何采用用例图(Use Case)对用户的需求进行建模,以及Use Case方法最主要的优点。
1.1.1需求工程1、需求工程(1)需求工程结构图(2)需求开发和需求管理的流程其中,需求变更控制是指依据“变更申请-审批-更改-重新确认”的流程处理需求的变更,确保需求的变更不会失去控制而导致项目发生混乱。
1.1.2如何获得用户需求1、什么是用户需求(1)关于用户需求1)它主要是说明系统所必须符合的条件或者应该具备的的功能,也即它用来描述系统应该和不应该做什么也即决定本系统应该有什么功能,从而开发者和用户可以创建一个初始化的商业联系。
2)重点在是应该做什么,而不是应该如何做。
3)需求最根本的挑战在于:寻找、交流并记录什么是真正需要的,并能够向用户和开发团队讲解。
(2)一个关于影响项目进展的因素的研究如下图(Jim Johnson 1994 Chaos:Charting the Seas of Information Technology. Published Report .The Standish Group)可见37%的问题都与需求有关,这就需要“需求开发”和“需求管理”。
(3)“需求管理”的两种方法●瀑布式在项目的第一阶段,在任何设计和实现工作之前,尽可能的推敲,把需求完全定义清楚,并把它稳定下来,并且实际开发前冻结需求,但历史证明这种方式是失败的,在项目很大的时候,冻结需求几乎没有可能。
●迭代式用一种条理化的方法来寻找、记录、组织和跟踪不断变化的需求。
这里的关键是“不断变化”这个词,把需求变化作为项目进展的不断驱动力,另一个重要的词是“寻找”,可以通过写出用例和召开需求研讨会等手段巧妙的得出需求。
整个问题都来自于,用户往往对自己的愿望并不清晰,需求会不断的变化。
软件项目获取用户需求的沟通技巧

软件项目获取用户需求的沟通技巧在软件开发过程中,获取用户需求是非常重要的一步。
软件的成功与否很大程度上取决于开发团队是否了解客户的真实需求。
因此,有效的沟通技巧是必不可少的。
本文将介绍一些软件项目获取用户需求的沟通技巧。
确定你的目标用户首先,一个成功的软件项目需要明确目标用户。
团队成员需要明确软件的预期目标,并向客户了解他们的需求和期望。
这意味着需要详细地了解用户以及他们使用软件的目的和特定场景。
在这个过程中,要问清楚谁会使用软件、使用场景是什么、需要功能有哪些,这样才能确保你的软件真正满足用户的需求。
听取用户的意见沟通是关键。
在与用户沟通的过程中,需要保持耐心和平静。
别忘了,你是要了解用户的需求,而不是把你自己和你的想法强加给他们。
在谈话中要仔细倾听用户的回答,并展开更深入的对话来代表用户的更多需求。
同时也要注意非语言性的线索,例如面部表情和身体语言等。
这些线索常常能帮助我们感知用户对话的情绪和态度,识别并解决问题。
清晰明了地表述问题保持表述清楚和简短很面对任何客户都非常重要。
问题应该清晰地设计出来,以确保客户完全了解该问题的含义。
为了帮助客户更好地了解问题,我们可以使用实际的示例或场景来说明想要解决的问题。
不要畏惧提出问题在获取用户需求时,团队需要注意不要让客户产生压力和困难。
一些用户可能会感到他们的需要不重要或错误。
这个时候你需要让用户放心,告诉他们这些问题与他们的需求相关,如果有疑问可以与团队进行讨论的。
同时,在获取用户需求时不要害怕问问题。
当你对某个需求不理解时,最好是问得明确。
这没有任何问题,相反,这有助于清晰和具体的理解用户的问题。
留意用户使用的语言和词汇虽然软件开发团队一般具有技术专业知识,但是需要注意用户理解能力和词汇使用方式。
一方面,我们需要确保尽可能简单明了的语言使用。
另一方面,我们应该谨慎使用过多的行话和技术术语。
因此,聆听并使用用户自己的词汇和术语更容易让用户感觉被关注到,理解软件项目,检查他们的需求。
软件需求工程学习软件需求工程的方法与实践

软件需求工程学习软件需求工程的方法与实践软件需求工程学习:软件需求工程的方法与实践软件需求工程是软件开发过程中至关重要的一环,它涉及到对用户需求的收集、分析、规范以及验证和确认。
在本文中,我们将介绍软件需求工程的基本概念、方法和实践,以帮助读者更好地理解和应用软件需求工程的知识。
一、软件需求工程概述软件需求工程是指通过系统化的方法,对软件系统的需求进行收集、分析、规范和验证的过程。
软件需求是对软件所需功能和性能的具体描述和规范,它是软件开发的基础和出发点。
软件需求工程的目标是确保开发人员和用户对软件需求达成一致,并建立可执行的需求规范。
它涉及到多个阶段的活动,包括需求获取、需求分析、需求规范、需求验证和需求管理等。
二、软件需求工程的方法1. 需求获取方法需求获取是软件需求工程的第一步,它旨在收集和理解用户对软件的需求。
常用的需求获取方法包括面谈、问卷调查、观察和原型开发等。
面谈是一种直接与用户交流的方式,可以深入了解用户需求;问卷调查可以扩大用户群体,获取更多的意见和建议;观察可以通过对用户使用行为的观察,获取隐含的需求;原型开发可以通过快速搭建出简单的软件原型,让用户直观地感受软件功能和界面。
2. 需求分析方法需求分析是对收集到的需求进行整理、分析和理解的过程。
通过需求分析,可以将抽象的用户需求转化为具体的软件功能和性能规范。
常用的需求分析方法包括需求建模、用例分析和数据流分析等。
需求建模用于描述软件系统的结构和行为;用例分析用于描述软件系统与用户之间的交互;数据流分析用于描述软件系统内部的数据传递和处理过程。
3. 需求规范方法需求规范是对已分析的需求进行详细描述和规范的过程。
需求规范应该具有清晰、一致、可测量、可追溯、可验证等特点。
常用的需求规范方法包括自然语言描述、结构化语言描述和形式化规范描述等。
自然语言描述是常用的需求规范方式,但容易存在歧义和模糊性;结构化语言描述使用表格、图表等方式呈现需求,可以提高可读性;形式化规范描述使用数学符号和逻辑表达式定义需求,可以提高精确性和一致性。
如何进行软件工程中的用户需求分析

软件工程中的用户需求分析是项目开发中至关重要的一环。
它旨在确保软件能够满足用户的期望和需求。
本文将从用户需求分析的重要性、常用的用户需求分析方法以及如何执行用户需求分析等角度进行探讨。
一、用户需求分析的重要性用户需求分析在软件工程中具有重要的意义。
首先,它有助于理解用户的真实需求。
通过深入了解用户的期望和需求,开发团队能够更好地把握用户的要求,并在软件设计过程中作出正确决策。
其次,用户需求分析可以减少开发过程中的不必要的返工。
在项目初期进行充分的用户需求分析,可以帮助开发团队及时发现潜在的问题,并避免后续返工的发生。
最后,用户需求分析有助于提高软件的用户体验。
通过了解用户的期望和需求,开发团队能够设计出更适合用户的界面和功能,提升软件的易用性和用户满意度。
二、常用的用户需求分析方法1.访谈法:这是一种常用的用户需求分析方法,通过与用户面对面的交流,开发团队可以了解用户需求的细节和特点。
访谈时要注重提问的方式,尽量避免主观假设。
同时,访谈时可以使用问卷调查或者借助辅助工具记录用户的回答。
2.场景建模法:通过构建用户使用软件的场景来了解用户需求。
将用户放入具体的使用环境中,描述他们的操作过程、遇到的问题和期望的结果。
这种方法可以帮助开发团队对用户需求进行更系统化的整理和分析。
3.原型设计法:通过设计简单的原型,让用户参与测试并提供反馈。
在早期原型的基础上逐步完善,最终得到用户认可的软件设计。
这种方法可以帮助开发团队及时获得用户的反馈意见,减少重复的开发工作。
三、执行用户需求分析的步骤1.收集需求:通过访谈、调查和文档分析等方式,收集用户的需求信息。
在这个阶段,开发团队应该广泛听取用户的声音,避免片面或主观的假设。
2.需求分析与整理:将收集到的用户需求进行整理和分类,建立起合理的需求层次结构,帮助开发团队更好地理解和分析用户需求。
在整理的过程中,可以借助图表或其他可视化工具来表示需求间的关系和优先级。
跟我学软件系统需求工程——软件项目设计、开发和实现的总体流程

跟我学软件系统需求工程——软件项目设计、开发和实现的总体流程1.1跟我学软件系统需求工程——软件项目设计、开发和实现的总体流程在本单元中希望重点了解和掌握软件项目设计、开发和实现的总体流程和Web网站建设和开发过程,包括获得需求阶段、系统(需求)分析与系统设计阶段、系统实现阶段、测试阶段和维护阶段中的各个工作的重点和所应该解决的问题和目标。
1.1.1总体流程概述1、软件工程(1)软件工程它是一套关于软件开发各阶段的定义、任务、作用的,建立在理论上的一门工程学科。
它对解决软件危机,指导人们利用科学、有效的方法来开发软件,提高及保证软件开发的效率和质量起到了一定的作用。
(2)软件工程所涉及的内容软件工程学包括计算机科学、数学、工程科学和管理科学等方面的知识,其中的计算机科学和数学用于构造模型和算法,而工程科学用于制定规范、设计范型、评估成本及确定权衡,而管理科学则用于计划、资源、质量和成本的管理。
(3)软件业一直在探讨,如何使软件实现如同传统产业一样地大规模生产软件工程的提出,便是为了实现这个愿望。
然而,虽然软件工程至今已经有了很大的发展,软件的大规模工业化生产仍然没有实现。
原因何在?1)从软件的本质属性来说,软件的复杂性是软件的本质属性,在这个属性没有改变之前,软件便不会实现同传统产业一样的工厂化生产。
2)从软件生产的介质来说,传统产业生产都是有形的物质产品,人的生产活动都受制于生产资料这些物质介质;然而,软件生产的介质,却是无形的人类的思维。
3)从生产过程来看,对于传统产业来说,产品的设计和生产是分开的。
然而,对于软件产业来说,软件的生产过程便是设计的过程,纯粹的生产过程几乎不存在,这使得软件的生产形态同传统产业必然存在区别。
4)优秀的软件开发技术的采用,能够弥补我们在工程化方面的不足,从而使得软件开发更加可控,软件质量更加有保障。
2、软件生命周期(Life Cycle)软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。
软件需求工程知识点总结

软件需求工程知识点总结软件需求工程是软件工程的一个重要领域,它涉及到对软件系统需求的获取、分析、规格化和管理等工作。
软件需求工程知识点涵盖了需求获取、需求分析、需求规格化、需求验证和需求管理等方面的内容。
本文将对软件需求工程的相关知识点进行总结。
一、需求获取1. 需求获取的定义和重要性需求获取是软件需求工程的第一步,它涉及到对用户需求、业务需求和系统需求等进行调研和收集。
需求获取的目的是确保软件开发过程中能够充分了解并满足用户的需求,从而提高软件系统的质量和用户满意度。
需求获取通常通过访谈、问卷调查、观察和数据分析等方式来进行。
2. 需求获取的方法需求获取的方法包括:访谈法、问卷调查法、观察法和原型法等。
访谈法是最常用的需求获取方法,它通过与用户和相关利益相关者进行面对面的沟通,来了解他们的需求和期望。
问卷调查法则通过发放问卷并收集用户的意见和建议来获取需求。
观察法则是通过观察用户的行为和工作环境来获取需求。
原型法则是通过制作软件原型让用户亲自体验和反馈来获取需求。
3. 需求获取的挑战需求获取过程中面临的挑战主要包括需求不清晰、需求变化频繁、利益相关者之间存在矛盾等。
这些挑战会导致需求获取过程中出现误解和偏差,从而影响软件开发的进度和质量。
二、需求分析1. 需求分析的概念和目标需求分析是对需求进行深入的理解和挖掘,以确定需求之间的关联和约束条件,并确保需求的一致性、完整性和可行性。
需求分析的目标是将用户需求转化为系统需求,并形成需求规格说明书,为软件设计和开发提供依据。
2. 需求分析的方法和工具需求分析的方法包括:功能分解法、数据流图法、状态图法、场景建模等。
功能分解法是将系统功能进行分解,形成功能层次结构图。
数据流图法是通过绘制数据流图和数据字典来描述系统的数据流和数据元素。
状态图法是通过绘制状态图来描述系统中的各种状态和转移条件。
场景建模是通过场景描述来捕捉用户需求和系统行为。
3. 需求分析的类型需求分析的类型包括:功能需求分析、非功能需求分析和用户需求分析等。
软件需求工程实训课程学习总结掌握软件需求获取与分析的方法与工具

软件需求工程实训课程学习总结掌握软件需求获取与分析的方法与工具软件需求工程实训课程学习总结——掌握软件需求获取与分析的方法与工具在软件开发过程中,需求获取与分析是至关重要的环节。
它们直接决定了整个项目的成功与否。
为了提高自身工作能力,我参加了软件需求工程实训课程,通过学习和实践,深入了解了软件需求获取与分析的方法与工具。
以下是我对此课程的总结。
一、软件需求获取方法合理获取软件需求是保证项目成功的基础。
在课程学习中,我了解了几种常用的软件需求获取方法。
1. 面谈法面谈法是最常用的需求获取方法之一。
通过与用户、项目经理或其他相关人员面谈,了解他们的需求、期望和限制。
在实践中,我发现要充分发挥面谈法的作用,需要注意以下几点:明确面谈目的,合理安排面谈时间,提前准备问题,并根据不同人员角色进行个性化的面谈。
2. 观察法观察法是一种通过观察现场或过去的行为来获取需求的方法。
通过观察,我们可以深入了解用户的需求和使用环境。
在实践中,我发现观察法尤其适用于需要了解用户工作流程或现场环境的场景。
3. 文档分析法文档分析法是通过分析现有文档来获取需求信息。
这些文档可以是需求规格说明、用户手册、用户反馈等。
在实践中,我发现通过仔细分析文档,可以获取到丰富的需求信息,从而全面把握项目需求。
二、软件需求分析方法软件需求分析是对需求进行深入研究和分析的过程,通过分析,我们可以将模糊的用户需求转化为具体可行的系统需求。
课程中,我学习了几种常用的软件需求分析方法。
1. 需求建模需求建模是通过图形化的方式将需求可视化,方便项目团队理解和交流。
常用的需求建模方法包括数据流图(DFD)、实体关系图(ERD)和用例图(Use Case Diagram)。
这些方法在实践中发挥了重要的作用,特别是用例图,可以直观地展示系统的功能和交互。
2. 需求验证需求验证是为了确保需求的完整性、一致性和正确性。
课程中,我学习了几种常用的需求验证方法,如需求审查、原型验证和测试。
如何进行软件工程中的用户需求收集(三)

用户需求收集是软件工程中的重要一环,对于软件项目的成功与否起着至关重要的作用。
在软件开发的初期阶段,通过深入理解用户的需求,有助于开发团队更好地设计和构建出满足用户期望的软件。
本文将探讨如何进行软件工程中的用户需求收集,从用户参与、需求分析、需求确认等多个角度进行论述。
一、用户参与软件的最终用户是使用与体验软件的人,因此他们的参与对于准确收集用户需求至关重要。
软件开发团队可以采取以下一些措施,以确保用户有效参与需求收集过程。
用户调研:通过开展用户调研,了解用户的背景、需求和期望。
这可以通过面对面的访谈、问卷调查或焦点小组讨论等方式进行。
用户调研可以帮助开发团队更好地了解用户的真实需求,避免开发出与用户期望不符的软件。
原型演示:基于用户需求设计出初步原型,并邀请用户参与评估。
通过展示原型,用户可以更直观地了解软件的功能、界面和操作方式,并提出自己的建议和改进意见。
用户反馈:建立反馈机制,让用户随时能够反馈对软件的意见和需求。
可以通过邮件、用户论坛或在线反馈表单等方式收集用户反馈。
这样做可以让用户在使用过程中随时提出新的需求或问题,使开发团队不断从用户的反馈中优化软件。
二、需求分析在用户参与的基础上,软件开发团队需要进行详细的需求分析,以确保收集到的需求准确、全面。
需求分析是软件项目的前期工作,主要包括以下几个方面。
需求分类:将收集到的用户需求进行分类整理,以便更好地理解和分析。
可以将需求分为功能需求、性能需求、安全需求等。
通过分类,可以更清晰地了解软件的功能需求和非功能需求,从而有针对性地进行开发。
需求优先级排序:根据用户需求的重要性和紧急程度,对需求进行优先级排序。
这样可以确保开发团队在设计和开发过程中首先满足用户的核心需求,以提高软件的用户体验。
冲突解决:在需求分析过程中,可能会出现不同用户之间需求的冲突。
开发团队需要及时发现这些冲突并进行解决。
可以通过用户调解会议或团队的讨论和协商,找到平衡点并制定相应策略,以满足不同用户的需求。
软件工程中的需求获取与分析方法

软件工程中的需求获取与分析方法在软件工程领域,需求获取与分析是项目成功的关键基石。
它就像是建筑工程中的蓝图设计阶段,决定了后续开发工作的方向和质量。
如果在这个阶段出现偏差或遗漏,可能会导致项目的延误、成本的增加,甚至最终无法满足用户的期望。
需求获取,简单来说,就是从各种渠道收集关于软件系统应该做什么的信息。
这个过程并不像表面看起来那么简单,它需要与众多的利益相关者进行有效的沟通和交流。
这些利益相关者可能包括最终用户、客户、业务经理、技术人员等等。
他们对于软件系统的期望和需求各不相同,而且往往是以一种非结构化、模糊的方式表达出来的。
比如说,最终用户可能会说“我希望这个软件能让我更轻松地完成日常工作”,但这并没有具体说明什么样的操作会让他们感到轻松,以及他们日常工作的具体流程和痛点是什么。
这就需要需求获取人员通过进一步的提问、观察和调研,来挖掘出更详细、更明确的需求。
在与利益相关者沟通时,有效的倾听是至关重要的。
需求获取人员不能仅仅是被动地接受信息,而要积极地与对方互动,理解他们的语境和意图。
同时,还要善于运用各种沟通技巧,比如开放性问题、引导性问题、重复和确认等,以确保获取到的信息是准确和完整的。
除了与利益相关者直接交流,还可以通过查阅相关文档、观察现有系统的运行情况、分析市场趋势等方式来获取需求。
比如,如果要开发一个与财务相关的软件,就可以查阅财务法规、行业报告等资料,了解财务管理的最新要求和趋势。
需求分析则是对获取到的需求进行深入的理解、整理和细化。
它的目的是将那些模糊、不明确的需求转化为清晰、具体、可度量的需求规格说明,为后续的设计、开发和测试提供准确的依据。
在进行需求分析时,首先要对需求进行分类和优先级排序。
有些需求是核心的、必须满足的,而有些则是次要的、可以在后续版本中实现的。
通过优先级排序,可以合理分配资源,确保在有限的时间和预算内满足最重要的需求。
然后,要对需求进行建模和文档化。
常用的建模方法包括用例图、活动图、数据流图等。
如何获取软件系统的需求

(3)在软件工程中,所有的风险承担者都感兴趣的就是需 求分析阶段
这些风险承担者包括客户、用户、业务或需求分析员、 开发人员、测试人员、用户文档编写者、项目管理者和客 户管理者。
5、如何获取用户需求(可以“不择手段”)
(1)对用户进行访谈和调研、会议、观察用户操作流程等 形式,了解客户方的所有要求以及潜在的要求。
其实,软件产品非功能性定义不仅决定产品的质量, 还在很大程度上影响产品的功能需求定义。
如果事先缺乏很好的非功能性需求定义,结果往往是使 产品在非功能性需求面前捉襟见肘,甚至淹没功能性需求 给用户带来的价值。
3、解决需求缺陷问题的主要方法 (1)解决需求缺陷问题应该从两方面入手
1)提高分析人员的知识技能,使其不仅具备较高的技术 水平和丰富的实践经验,还要具备一定的业务基础知 识和较强的人际交往能力;
1)需求的获取只有通过有效的客户和开发者之间的 合作才能取得成功。
2)在需求获取的过程中,软件开发人员与用户之间最 常见的交流方式就是会议和访谈。
3)由于双方的领域知识不同,经常会遇到误解、交流 障碍、需求不全、意见冲突等情况。
(2)用户和开发人员共同组成联合小组 在用户方工作一定时间以深入了解其业务流程和潜
遵从的标准记录下来。 (5)划分优先级
给每项需求、特性或使用实例分配一个实施优先级以 指明它在特定产品中所占的分量。
(6)无二义性 对所有需求说明的读者都只能有一个明确统一的解释,
由于自然语言极易导致二义性,所以尽量把每项需求用简 洁明了的用户性的语言表达出来;
避免二义性的有效方法包括对需求文档的正规审查, 编写测试用例,开发原型以及设计特定的方案脚本。 (7)可验证性
检查一下术语、框图或者其它方法将需求写成文档。 一般的语句形式为(肯定句):
学习软件需求分析的方法和技巧

学习软件需求分析的方法和技巧软件需求分析是软件开发过程中至关重要的一环,它涉及到对用户需求的深入理解和准确捕捉。
本文将介绍一些学习软件需求分析的方法和技巧,帮助读者更好地掌握这一重要的软件开发技能。
一、需求获取需求获取是软件需求分析的第一步,它主要包括了解用户需求、获取用户意图、定义需求范围等工作。
以下是一些常用的需求获取方法。
1. 面谈法面谈法是最常用的需求获取方法之一,通过与用户进行面对面的交谈,了解他们的需求、期望和具体问题。
在面谈过程中,需求分析师可以通过提问和倾听来准确理解用户需求。
2. 观察法观察法是通过观察用户当前的工作环境,了解他们的行为和关注点,从而推断出他们的需求。
观察法常用于现场调查和用户研究,在现实情境中帮助需求分析师更好地理解用户需求。
3. 文档分析法文档分析法是通过分析已有的文档资料,获取用户需求的方法。
这些文档可以是用户手册、业务流程图、数据库设计等,通过仔细研读这些文档,需求分析师可以捕捉到用户需求中的关键信息。
二、需求分析需求分析是对需求进行深入理解、抽象和整理的过程,目的是确保需求准确、完整、可行。
以下是几种常用的需求分析方法和技巧。
1. 用例分析法用例分析法是一种结构化的需求分析方法,它将系统功能划分为一个个独立的用例,描述了用户与系统进行交互的场景。
通过用例分析,可以帮助需求分析师更好地理解用户的功能需求和交互流程。
2. 数据流图数据流图是一种图形化的表示方法,用于描述数据在系统中的流动过程。
通过绘制数据流图,需求分析师可以清晰地了解系统中的数据交互和处理过程。
数据流图可以帮助揭示系统中的潜在问题和改进空间。
3. 需求建模需求建模是一种将需求抽象化和形式化的方法,使用统一建模语言(UML)等工具,将需求以图形化的方式表示出来。
需求建模可以使需求更加清晰、易于理解和交流。
三、需求验证需求验证是确保需求准确性和可行性的过程,它主要通过需求审查和验证活动来完成。
软件设计师的软件需求工程方法和技巧

软件设计师的软件需求工程方法和技巧在软件开发过程中,软件设计师扮演着至关重要的角色。
他们负责定义和捕捉软件系统的需求,确保软件开发项目的成功。
为了有效地进行软件需求工程,软件设计师需要掌握一系列方法和技巧。
本文将介绍几种常用的软件需求工程方法和技巧,帮助软件设计师更好地应对项目挑战。
一、需求收集方法1. 用户访谈:面对面地与最终用户交流,深入了解他们的需求和期望。
通过直接交流,可以获得准确的信息并建立较好的沟通。
2. 观察法:观察用户的工作环境和实际操作过程,发现隐藏的需求和问题。
这种方法能够洞察用户的真实需求,辅助设计师更好地了解用户需求。
3. 文档分析:阅读和分析已有的文档和资料,如市场调研报告、竞争对手分析等,以获取关键信息和洞察。
4. 敏捷开发方法:通过持续的用户反馈和快速迭代,不断调整和改进需求。
敏捷方法更加注重与用户的互动和合作,从而确保开发的软件满足实际需求。
二、需求管理技巧1. 标准化需求文档:创建统一的需求文档模板,详细描述需求,包括功能、非功能性要求和约束条件等。
这样可以确保需求的准确性和一致性,并提供给开发团队参考。
2. 设计原型:利用原型工具创建软件界面的初步设计,并与用户交流反馈。
通过原型反馈,可以及时发现并修正需求中的问题和不足。
3. 需求跟踪:使用需求跟踪工具,追踪需求的变更和状态。
这有助于开发团队了解需求的进展,并及时调整开发计划。
4. 风险评估:对需求进行风险评估,识别和评估潜在的风险因素,并采取相应的措施降低风险。
风险评估可以确保需求的可行性和可靠性。
三、需求验证方法1. 原型验证:基于需求文档创建原型,并与用户进行验证和反馈。
通过原型验证,可以确保需求文档中的需求得到正确理解和解释。
2. 用户测试:将软件交予用户进行测试并收集反馈。
用户测试可以验证软件是否符合用户需求,并发现潜在的问题。
3. 与开发团队的沟通:软件设计师需要与开发团队保持密切的沟通和合作,确保需求的正确理解和实现。
软件需求工程中的用户需求分析与管理方法

软件需求工程中的用户需求分析与管理方法在软件开发过程中,用户需求的分析和管理是一个十分重要的环节。
只有通过准确理解和管理用户需求,才能开发出符合用户期望的软件产品。
本文将介绍软件需求工程中的用户需求分析与管理方法,以帮助开发团队更好地满足用户需求。
一、概述用户需求是指用户对软件系统所提出的功能和性能上的要求。
作为软件需求工程的起点,用户需求分析起着决定性的作用。
用户需求分析与管理方法是指基于用户需求的分析和管理方法论,它提供了一系列的工具和技术,用于有效地收集、理解、验证、管理和追踪用户需求。
二、用户需求分析方法1. 需求收集:通过面谈、访谈、问卷调查等方法,与用户进行沟通与交流,了解用户的真实需求。
同时,可以利用原型设计、竞品分析等方式,帮助用户更好地表达需求。
2. 需求分析:在需求收集的基础上,对用户需求进行分析和整理。
可以使用用例图、数据流图、状态转换图等工具,帮助开发团队清晰地理解用户需求,并确定功能性和非功能性需求。
3. 需求验证:通过软件原型、模拟器或模拟方法,验证用户需求的准确性和可行性。
同时,可以结合用户测试和回归测试等方式,确保软件系统满足用户需求。
4. 需求管理:将用户需求进行分级、划分和管理,建立需求变更控制机制。
利用需求跟踪矩阵、需求优先级排序等方式,确保用户需求在软件开发过程中的追踪和管理。
三、用户需求管理方法1. 需求抽取:将用户需求进行逻辑上的拆分和整合,形成可追踪和可管理的需求单元。
可以利用面向用户场景的需求抽取方法,将用户需求转化为可操作的具体要求。
2. 需求分析与设计:在需求抽取的基础上,进行需求分析和系统设计。
通过需求建模、用例设计等方式,进行功能设计和界面设计,确保符合用户期望。
3. 需求跟踪:建立需求跟踪矩阵,记录每个需求的起始状态、修改历史和实现状态等信息。
及时追踪和记录需求变更情况,以便实时跟踪需求状态和进度。
4. 需求变更控制:建立变更控制机制,对需求进行评审和审批。
软件需求工程的方法与技巧

软件需求工程的方法与技巧软件需求工程是软件开发过程中至关重要的一环,它旨在确定和分析软件系统的需求,为软件开发提供准确的指导和规范。
本文将介绍一些软件需求工程的方法与技巧,帮助开发团队更好地理解和满足用户需求。
一、需求收集需求收集是软件需求工程的起点,它决定了后续开发工作的方向和内容。
以下是一些常用的需求收集方法和技巧:1. 用户访谈:与用户面对面交流,了解他们的期望和需求。
2. 用户调研:通过问卷调查等方式了解用户群体的特点和偏好。
3. 竞品分析:研究市场上类似产品的特点和优势,为产品定位和功能设计提供参考。
4. 需求文档分析:分析现有的需求文档,理解已有需求和问题,并提出改进建议。
二、需求分析与建模需求分析是对需求进行深入的分析和理解,并将其转化为可执行的任务。
以下是一些常用的需求分析方法和技巧:1. 用例分析:通过对用户故事的分析,识别出各种可能的用例,并绘制用例图。
2. 数据流图:分析系统中的数据流和处理流程,帮助识别功能和流程中的问题和风险。
3. 类图:识别系统中的各个对象和它们之间的关系,为后续的设计和实现提供依据。
4. 业务流程图:通过可视化展示业务流程,帮助开发团队更好地理解业务逻辑和流程。
三、需求验证与确认需求验证与确认是确保需求的准确性和可实施性的重要过程。
以下是一些常用的需求验证方法和技巧:1. 原型验证:通过制作交互式原型,模拟用户界面和功能,验证需求的可行性和用户友好性。
2. 需求审核:组织需求评审会议,邀请相关人员对需求进行审核和确认。
3. 需求追踪:使用需求追踪工具,对需求进行跟踪和管理,确保每个需求都得到满足和验证。
四、需求文档编写需求文档是对软件需求的详细描述和规范,它对软件开发起到了桥梁和纽带的作用。
以下是一些常用的需求文档编写方法和技巧:1. 结构化文档:按照一定的结构和规范编写需求文档,包括需求概述、功能需求、非功能需求等部分。
2. 使用简洁明了的语言:避免使用过于复杂的术语和句子结构,使文档易于理解和使用。
软件系统需求获取与分析方法研究

软件系统需求获取与分析方法研究软件开发过程中,需求获取与分析是至关重要的环节。
只有准确获取和详细分析用户需求,才能开发出满足客户期望的软件系统。
本文将探讨一些常用的软件需求获取与分析方法,并分析其优缺点。
需求获取是软件系统开发的第一步,它涉及与用户、客户和其他相关利益相关方的交流和沟通。
需求获取的方法多种多样,如面对面访谈、问卷调查、观察法等。
面对面访谈是最常用的需求获取方法之一。
开发团队与用户直接交流,可以深入了解用户需求,确保准确理解其期望。
然而,面对面访谈需要繁琐的工作安排,可能受到时间和地点的限制。
此外,用户的说话可能含糊不清,需要澄清和确认,增加了工作的难度。
问卷调查是另一种常用的需求获取方法。
通过设计问题并向用户发送问卷,可以更广泛地获取用户需求。
问卷调查的优势在于它可以同时获取多个用户的意见,而且可以减少面对面访谈的依赖。
然而,问卷调查可能受到样本数量和设计问题的质量的限制,用户可能会有不耐烦和回答不准确的问题。
观察法是一种通过观察用户在其环境中使用现有系统的方法,以获取用户需求的方法。
通过观察用户的工作流程和行为,可以识别出用户需求和痛点。
观察法能够更直接地了解用户实际需求,但可能受到用户保密性和工作场所条件的限制。
此外,观察法也需要额外的时间和资源投入。
除了需求获取,需求分析也是软件开发过程中必不可少的一步。
需求分析涉及对需求进行分类、整理和验证,以确保其一致性和完整性。
在需求分析中,常用的方法有用例分析、数据流图、形式化方法等。
用例分析是一种常用的需求分析方法,它通过描述用户如何与系统交互来捕捉关键功能和用户需求。
用例分析能够帮助识别系统的主要功能和用户的期望行为,但可能无法捕捉到一些细节需求和特殊情况。
数据流图是一种图形化的表达方式,用于描述系统中数据的流动和处理过程。
通过绘制数据流图,可以直观地了解系统的数据流动和处理逻辑,从而更好地理解用户需求。
然而,数据流图可能较为复杂,且对于非技术人员理解起来可能有一定困难。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.1跟我学软件系统需求工程——如何获得软件系统的用户需求在本单元中希望重点了解和掌握什么是用户需求,需求的表达形式,如何获取用户需求,如何细分需求,同时在此阶段所应该形成的制品;另外也应该掌握如何采用用例图(Use Case)对用户的需求进行建模,以及Use Case方法最主要的优点。
1.1.1需求工程1、需求工程(1)需求工程结构图(2)需求开发和需求管理的流程其中,需求变更控制是指依据“变更申请-审批-更改-重新确认”的流程处理需求的变更,确保需求的变更不会失去控制而导致项目发生混乱。
1.1.2如何获得用户需求1、什么是用户需求(1)关于用户需求1)它主要是说明系统所必须符合的条件或者应该具备的的功能,也即它用来描述系统应该和不应该做什么也即决定本系统应该有什么功能,从而开发者和用户可以创建一个初始化的商业联系。
2)重点在是应该做什么,而不是应该如何做。
3)需求最根本的挑战在于:寻找、交流并记录什么是真正需要的,并能够向用户和开发团队讲解。
(2)一个关于影响项目进展的因素的研究如下图(Jim Johnson 1994 Chaos:Charting the Seas of Information Technology. Published Report .The Standish Group)可见37%的问题都与需求有关,这就需要“需求开发”和“需求管理”。
(3)“需求管理”的两种方法●瀑布式在项目的第一阶段,在任何设计和实现工作之前,尽可能的推敲,把需求完全定义清楚,并把它稳定下来,并且实际开发前冻结需求,但历史证明这种方式是失败的,在项目很大的时候,冻结需求几乎没有可能。
●迭代式用一种条理化的方法来寻找、记录、组织和跟踪不断变化的需求。
这里的关键是“不断变化”这个词,把需求变化作为项目进展的不断驱动力,另一个重要的词是“寻找”,可以通过写出用例和召开需求研讨会等手段巧妙的得出需求。
整个问题都来自于,用户往往对自己的愿望并不清晰,需求会不断的变化。
所以,我们必须使用一种处理过程,这种处理过程的特点就在于适应这种需求的变化。
所以,无论是统一过程,还是设计模式,所有问题的焦点都在于如何适应变化。
2、需求的表达(1)Id(系统名称)shall 执行的功能,而 Shall包括“应该”或“必须”等的语句(2)表达需求可以采用多种不同的方式,如你可以用商业的概念、该领域的术语、框图或者其它方法将功能性的需求写成文档。
如:下面的“转帐需求”的表达1)我希望能够把一个帐号的金额转入另外一个帐号,系统应该能够让我选择我要转帐的银行;2)系统应该能够让我选择我要转帐的信用卡号,系统应该能够让我选择转帐的金额3、获得用户需求的目的(1)需求分析活动其实本来就是一个和客户交流,正确引导客户能够将自己的实际需求用较为适当的技术语言进行表达(或者由相关技术人员帮助表达)使开发人员明确项目目的的过程。
(2)通过需求分析,其主要的目的是为了获得和描述系统中所有的要求,以及生成一个在该系统中定义关键域类的模型。
从而在开发者与需求者之间建立相互理解和沟通。
4、如何获取用户需求(1)对用户进行访谈和调研了解客户方的所有要求以及潜在的要求,有时还需要在用户方工作一定时间以深入了解其业务流程。
然后,根据他们的要求来确定系统的整体目标和系统的工作范围。
(2)与用户进行充分的交流交流的方式可以是会议、电话、电子邮件、小组讨论、模拟演示等不同形式。
需要注意的是,每一次交流一定要有记录,对于交流的结果还可以进行分类,便于后续的分析活动。
(3)可以将需求细分为下面的各个类型1)功能需求2)非功能需求也即技术性的要求,如响应时间、平均无故障工作时间、自动恢复时间等性能和安全等方面的要求----主要涉及系统性能、可用性、可管理性、可靠性、可扩展性、安全性等等。
环境限制、设计约束注意:但有人认为上面的这种分类方法太泛,但这种分类确实用得很广泛。
而在统一过程中,需求是按照FURPS+模型进行分类的,每个字母含义如下:F:功能性(Functional):特性、能力、安全性。
U:可用性(Usability):人性化因素,帮助,文档。
R:可靠性(Reliability):故障周期,可恢复性,可预测性。
P:性能(Performance):响应时间,吞吐量,准确性,有效性,资源利用率。
S:可支持性(Supportability):适应性,可维护性,国际化,可配置性。
+:辅助和次要的因素,比如:实现(Implentation):资源限制,语言和工具,硬件等。
接口(Interface):与外部系统接口所加的约束。
操作(Operations):系统操作环境中的管理。
包装(Packaging):授权(Legal):许可证或其它方式。
事实上,FURPS+模型并不是唯一的,但用它来作为需求范围检查表是很有效的,这可以降低考虑系统的时候遗漏某些因素的风险。
还有一些分类方式和FURPS+模型类似,比如ISO9126,它主要来自于美国软件工程研究所(SEI)。
5、应用要点(1)在这个阶段中,开发者一般不应该考虑具体的代码或程序细节。
将那种以“如何实现”的表述方式转换为“实现什么”的方式,因为需求分析阶段关注的目标是“做什么”,而不是“怎么做”;(2)用例仅能捕获功能性需求,不适合捕获非功能性需求和设计约束等。
功能性:日志和错误处理。
安全性,人性因素。
可靠性:可恢复性。
性能:适应性,可配置性。
实现约束:比如开发的领导层或者用户方坚持要使用Java开发。
采购的组件。
免费开放源码的组件。
接口:值得注意的硬件和接口,触摸屏,条码扫描仪,数据打印机,信用卡读卡器,签名读取器(第一版中不支持)。
(3)需求收集工作的特点1)问题复杂性:需求涉及的因素繁多,如运行环境,系统功能2)交流障碍:软件用户,问题领域专家,项目管理员具备不同的背景知识,相互交流困难3)不完备性和不一致性:用户的陈述往往不完备,各方面的需求可能存在矛盾4)需求易变:用户的需求变动极为普遍(4)用户需求不明确主要体现在四个方面1)在软件开发出来之前,用户自己也不清楚软件的具体需求;2)用户对软件需求的描述不精确,可能有遗漏、有二义性、甚至有错误;3)在软件开发过程中,用户还提出修改软件功能、界面、支撑环境等方面的要求;4)软件开发人员对用户需求的理解与用户本来愿望有差异。
6、避免下面的情况出现(1)跨过需求,直接进入了设计甚至实现阶段。
因为在需求方面任何小的疏漏都可能导致进展不利乃致失败,因为太多的工作被浪费在错误的方向上。
(2)用我们的想法来理解客户的需求设计不应该成为需求收集的一部分,将需求与设计分离是至关重要的。
我们常常是提出问题,然后是解决问题。
而不是有了一个解决方案之后,再找一个问题去适合它。
问题的解决方案必须在问题已经被确定、形成文档、理解和达成共识之后产生。
如果设计在需求之前提出,则系统用的就是自己的需求,并不能代表用户的利益。
在设计之前完整地定义问题永远都是明智的。
要做到这些的方法只有一个,就是站在用户的角度而不是设计者的角度看待系统。
(3)从一开始你就没听清客户要的是什么很多时候,用户并不知道自己要什么?需要我们去引导。
当系统存在多个用户时,你会发现不同的用户在需求方面是矛盾的。
7、某个餐馆定座系统需求示例(1)功能性的需求1)服务生可以通过系统查询是否有满足条件的桌子尚未定出2)服务生可以通过系统为顾客定座以及取消定座3)服务生可以查询客户以往的消费情况(2)非功能性的需求1)系统的响应查询时间应该小于10秒2)系统必须7X24小时服务,每天可以有30分钟的维护时间,同时只能在0点到1点之间(3)环境限制(约束条件)在局域网络的环境中完成此功能注意:不难看出,需求本身就是对客户而言产品必须满足的条件或具备的能力。
对于用户需要产品做的事情,比如要完成的样子我们称之为功能性需求。
还有一些不能算做产品要实现的功能,但是为了达到用户的期望值必须完成的一些附加需求,比如多长时间完成称之为非功能性需求。
8、感悟“需求收集”和“用例”(1)对用户的需求整理就像是理发顾客自己只知道大概的样子,多长时间完成这个发型等等,而到底要做成什么样自己根本不知道。
发型设计师需要不断的和客户进行交流,然后再根据自己的理解,加上多年的设计经验,推荐给顾客一种适合的发型与顾客进行确认。
(2)和用户交流本身就是需求收集的过程而只有了解了用户的需求之后才可能设计出系统的初始原形(提出一个大概的样子---系统的初步功能,这当然可以利用原形法或者面向对象的用例图来实现)与其进行确认。
9、软件系统的需求种类也相当复杂(1)问题以工程领域的例子开道吧。
比如设计一座跨江大桥:我们会考虑“连接南北的公路交通”这个“功能需求”,从而初步设计出理想化的桥墩支撑的公路桥方案;然后还要考虑造桥要面临的“约束条件”,这个约束条件可能是“不能影响万吨轮从桥下通过”,于是细化设计方案,规定桥墩的高度和桥墩之间的间距;另外还要顾及“大桥的使用期质量属性”,比如为了“能在湍急的江流中保持稳固”,可以把大桥桥墩深深地建在岩石层之上,和大地浑然一体;其实,“建造期间的质量属性”也很值得考虑,比如在大桥的设计过程中考虑“施工方便性”的一些措施。
(2)软件系统的需求种类也相当复杂和工程领域的功能需求、约束条件、使用期质量属性、建造期间的质量属性等类似,软件系统的需求种类也相当复杂,具体分类如下图所示。
(3)理解需求种类的复杂性——超市系统案例我们列举了一个典型的超市系统的需求子集,从这个例子中可以清晰地看到需求可以分为两大类:功能需求和非功能需求。
简单而言,功能需求就是“软件有什么用,软件需要做什么”。
同时,注意把握功能需求的层次性是软件需求的最佳实践。
以该超市系统为例:1)超市老板希望通过软件来“提高收银效率”。
2)那么,我们可能需要为收银员提供一系列功能来促成这个目的,比如供收银员使用的“任意商品项可单独取消”功能有利于提供收银效率。
3)而具体到这个超市系统,系统分析员可能会决定要提供的具体功能为:通过收银终端的按键组合,可以使收银过程从“逐项录入状态”进入“选择取消状态”,从而取消某项商品。
从上面的例子中我们还惊讶地发现,非功能需求--人们最经常忽视的。
非功能需求又可以分为如下三类:1)约束。
要开发出用户满意的软件并不是件容易的事,而全面理解要设计的软件系统所面临的约束可以使你向成功迈进一步。
约束性需求既包括企业级的商业考虑(例如“项目预算有限”),也包括最终用户级的实际情况(例如“用户的平均电脑操作水平偏低”);既可能包括具体技术的明确要求(例如“要求能在Linux上运行”),又可能需要考虑开发团队的真实状况(例如“开发人员分散在不同地点”)。