面向本体的需求分析
需求分析范文
需求分析范文
在进行任何项目或产品的开发之前,都需要进行需求分析,以确保最终的成果能够满足用户的需求。
需求分析是项目开发的第一步,也是最关键的一步,它直接关系到项目的成败。
因此,需求分析的过程必须非常细致和全面。
本文将从需求分析的定义、目的、方法和步骤等方面进行详细介绍。
需求分析是指对用户需求进行系统的分析和整理,以明确用户需求的具体内容和实现方式。
它的目的是为了明确项目的目标和范围,以便在后续的开发过程中能够更好地进行规划和设计。
需求分析的过程中,需要充分了解用户的需求和期望,同时也需要考虑到项目的可行性和可实现性,以便在后续的开发过程中能够更好地进行规划和设计。
需求分析的方法和步骤包括:首先,需要收集用户的需求和期望,可以通过访谈、问卷调查、用户反馈等方式进行收集;其次,需要对收集到的需求进行整理和分类,以便更好地理解用户的需求;然后,需要对用户需求进行分析和评估,以确定哪些需求是必须满足的,哪些是可选的;最后,需要将用户需求转化为具体的功能和特性,以便在后续的开发过程中能够更好地进行设计和实现。
在进行需求分析时,需要注意以下几点:首先,需要与用户充分沟通,了解他们的需求和期望;其次,需要考虑项目的可行性和可实现性,以避免出现过高的需求和不切实际的目标;最后,需要将用户需求转化为具体的功能和特性,以便在后续的开发过程中能够更好地进行设计和实现。
总之,需求分析是项目开发过程中非常重要的一环,它直接关系到项目的成败。
只有通过细致和全面的需求分析,才能够确保最终的成果能够满足用户的需求,从而取得项目的成功。
因此,在进行任何项目或产品的开发之前,都需要进行充分的需求分析,以确保项目能够顺利进行并取得成功。
本体构建七步法
本体构建七步法
本体构建七步法是一种常用的本体构建方法,主要包括以下七个步骤:
1.需求分析:对本体构建的目的和应用场景进行分析,明确本体所
需要表示的概念、关系和约束。
2.概念定义:根据需求分析结果,对本体中的概念进行定义和命名。
3.关系定义:根据需求分析结果,对本体中的关系进行定义和命名。
4.模型构建:根据概念定义和关系定义,使用本体语言构建本体模
型。
5.数据维护:在本体模型基础上,维护本体数据,包括实例和知识
表示。
6.验证与评估:对本体进行验证和评估,确保本体模型的正确性和
完整性。
7.应用与更新:将本体应用于具体场景,并持续更新和优化本体。
需求分析怎么写模板
需求分析写作模板需求分析是软件开发过程中至关重要的一环,它是确定软件系统需要满足的需求和约束的过程。
合理的需求分析能够帮助开发团队明确项目目标、规划开发过程、控制项目进度以及最终交付满足用户需求的产品。
下面是一个简单的需求分析写作模板,帮助团队成员规范地撰写需求分析文档。
1. 项目背景项目背景部分主要描述项目的背景信息,包括项目名称、项目目标、项目范围、项目时间表等内容。
需要明确说明项目的背景信息,以便团队成员对项目有一个整体的认识。
2. 需求分析目标需求分析目标部分主要说明本次需求分析的目标和范围,明确需求分析的重点和方向,以便更好地进行后续的工作。
3. 需求概述需求概述部分是对用户需求的一个整体描述,包括用户需求的基本情况、需求的重要性和紧急性等内容。
需要尽可能清晰、全面地描述用户的需求。
4. 功能需求功能需求部分是对系统功能需求的详细描述,包括系统应该具备的功能、功能之间的关系、功能的优先级和实现方式等内容。
需要对每个功能需求进行详细的分析和描述。
5. 非功能需求非功能需求部分是对系统非功能需求的描述,包括性能要求、可靠性要求、安全要求、可用性要求等内容。
需要对每个非功能需求进行详细的分析和描述。
6. 需求确认需求确认部分是对需求的确认和审核,需要与相关人员共同确认需求的准确性和完整性,确保项目的顺利进行。
7. 参考资料•相关资料1•相关资料2•…以上是一个简单的需求分析写作模板,团队成员可以根据项目实际情况进行适当调整,确保需求分析文档的完整性和准确性。
需求分析是项目成功的关键,希望所有团队成员都能够重视需求分析工作,为项目的顺利进行贡献力量。
产品需求分析与产品配置设计
客户需求与建模
客户需求是客户用自己的语言表达的对产品的定制要求。在面向大 规模定制设计中,客户需求是驱动产品开发的直接动力。客户需求是产品 配置设计的最初信息来源,是配置的依据和源头。客户需求的提取、表达、 转化是产品配置设计中最为关键也是最困难的一个环节,它直接关系到产 品设计的成功与否。对客户需求正确描述,建立准确、完备、易于理解的 需求模型是成功实施MC的前提和基础。 。
(1)需求的模糊性 需求的模糊性即不确定性,是指客户对产品提出的定制要求是不明确、不具体的,在需求表达中常采用一些诸如—— 略大于、稍微、较好等具有模棱两可含义的词语。 (2)需求的动态性 需求的动态性是指需求是变化的,一方面,由于客户需求贯穿于产品的全生命周期,同一客户需求在产品的不同阶段 表现为不同的形式。例如,客户提出产品总重量需求,这一要求在总体设计阶段表现为对总体结构方面的考虑,而在 零部件选型阶段则表现为零部件重量方面的考虑。另一方面,由于客户在最初对产品提出定制要求时,大多是出于自 身的偏好和使用习惯,缺乏对产品属性、结构或性能等客观的了解,需求之间存在矛盾,或者随着产品设计的进行, 某些需求与设计要求之间存在矛盾或不能同时满足,这时需要对某个或某些客户需求进行适当的修改或调整,这种情 况下的客户需求也表现为需求的动态性。 (3)需求的多样性 客户需求的多样性是大规模定制生产的一个重要特点,需求的多样性可以从两个角度来理解。从需求的覆盖面角度看, 客户需求对产品的定制要求有内在的和外在的,有设计方面、制造方面、管理方面、以及使用性能方面的等等:从需 求的表现形式角度看,客户需求不仅有自然语言描述形式,而且还有图形、表格、符号等多种表现形式。 (4)需求的优先性 需求的优先性是指需求之间具有重要差异之分,即需求的重要性和满意度是不相同的,不同的需求具有不同优先满足 的区别,有些客户需求是必须满足的(如一些基本的功能需求),有些需求是尽量满足的(如产品的一些性能指标、技术 参数等),有些需求是期望满足的(如客户提出的一些心理上要满足的需求)。
需求分析模板
需求分析模板一、项目背景在进行需求分析之前,我们需要了解项目的背景和目标。
请提供项目的背景信息,包括项目的名称、目的、重要性以及预期的目标。
二、业务需求在这一部分,我们将详细讨论项目的业务需求。
请提供项目的业务需求列表,并对每个需求进行描述和解释。
三、用户需求用户需求是指最终用户或项目的关键利益相关者对系统或产品的期望和要求。
请提供用户需求的列表,并对每个需求进行描述和解释。
四、功能需求功能需求是指软件或系统必须提供的功能和任务。
请列出所有的功能需求,并对每个功能需求进行详细的描述和解释。
五、非功能需求除了功能需求之外,还有一些非功能需求需要考虑。
非功能需求包括性能要求、安全要求、可用性要求等。
请提供所有的非功能需求,并对每个需求进行详细描述和解释。
六、数据需求数据需求是指项目在运行和实施过程中所需的数据。
请提供项目的数据需求列表,并对每个数据需求进行描述和解释。
七、约束和限制项目开发中常常会受到一些约束和限制的影响,例如时间限制、预算限制、技术限制等。
请提供项目的约束和限制,并对每个限制进行详细描述和解释。
八、风险分析在项目进行过程中,可能会面临一些潜在的风险和障碍。
请提供项目的风险分析,并对每个风险进行评估和解释。
九、关键里程碑为了保证项目的进展和达到预期的目标,确定关键的里程碑是非常重要的。
请提供项目的关键里程碑,并对每个里程碑进行描述和解释。
十、参考文献在需求分析过程中,可能会参考一些相关的文献和资料。
请提供参考文献列表,并确保列出的文献是可供参考的。
以上是一个需求分析模板的基本框架,可以根据具体的项目需求进行相应的调整和修改。
希望这个模板能对你的项目有所帮助!。
基于领域本体面向问题的需求分析与领域建模
( 西北 大 学 软件 工程研 究所 , 西 西安 70 2 ) 陕 117
摘 要: 为了鹪决 传 统 的 以应 用领 域 为 目 、 标 以问题解 决 方 案 为 中心 的 需求 分 析 方 法造 成 的 开 发人 员 与 需求 人 员 以及 客
户 三者之 间的误 解 , 需求 分析 不可 再 次使 用进 而导致 系统 开 发效率 低 下 , 户满 意 度低 等 问题 , 中 提 出 了基 于本 体 面 向 客 文 问题 进行 需求分 析 的方法 。阐述 了基 于本 体 面向 问题进 行 需 求分 析 的 必要 性 、 本体 的相 关概 念 和设 计 原则 、 体 的 描述 本
维普资讯
第
卷
20 0
7 年 肯 8期 月
( ) PUTER M TECHNOI AND X Y DEVEL OPM ENT
计算机技术与发展 g 07
基 于领 域本 体 面 向问题 的需 求分析 与领 域建模
语言 以及基 于 L u 建立 领域 本体 的实例 与需 求分 析过 程 , A 并论证 了利用该 方 法可进 一 步提 高需求 分析 的 质量 。 关键 词 : 本体 ; 域本 体 ; 向问题 领 面 中 图分类 号 : P n .2 T 3 5 文献标 识码 : A 文章 编号 :63 2X(07 0 —09 — 4 17 —69 20 )8 0 9 0
o y a d po lm — o ine eui me t nay i,t eae o cp s h rn il fd ina d d srp in l u g ,o fr h o— g rbe n re tdr q r e n sa lss h rltd c n e t ,t ep icpe o e g ecit a e s s n o ng a e fe st ed m a ntlg isa c sn LAU a dt epo eso e urme sa ay i n dd m o tae ha h a e no tlg n d p o e — i o O o y n t euig n n n h rc s fr ie nt n lssa e n rtst tteb sdo n oo ya rblm q s o e t e urme t n lsscn i r v h u ly frq i me t n lss i rn e r ie nsa ay i a mp o et eq ai o e ur d q t e n sa ay i,
项目式学习本体分析
项目式学习本体分析
项目式学习是一种基于个人学习的教育模式,旨在根据学生的学习和发展需求,利用合作学习、多媒体技术等多种教学工具,帮助学生以项目的形式完成特定的任务。
本体分析的概念可以用来解释和反映项目式学习的过程。
本体分析注重对整体概念和内部结构的分析。
它提供了一种方法,将学习中不同的目标、任务、技能等联系起来,提升学习质量。
在项目式学习中,本体分析允许学生运用更复杂的任务,也可以帮助他们更好地理解项目的内容。
首先,学生可以检查目标和任务,并对自己的学习计划做出调整。
其次,学生可以将所学技能应用到实践中。
最后,学生可以通过评价自己的任务完成情况,进而掌握项目学习的全部流程,重新调整自己的学习策略,更好地完成今后的任务。
项目式学习是一种学习方式,它能够增强学生的学习能力,提高学习效果。
与其他学习模式相比,它更能够刺激学生的积极性,促使他们更好地发挥自己的优势,从而获得理想的学习成果。
本体分析可以有效地帮助学生组织信息、安排任务,有效提高学习效果和提高学习能力。
需求变更自动化管理模型与实现
需求变更自动化管理模型与实现郭新峰;马世龙;吕江花;武俊生;邵回祖【摘要】Changes of software requirement are uncontrollable. Requirement change and its chain reactions are the most influential risk factor for the project quality during any stages of software development. Automatical requirement management can minimize the negative impact of requirements change. Automaticity of requirement change management relies on formal level and degree of standardization. Based on ideas of recursion and decomposition, this paper analyzes the requirement analysis method, referred to ROB. ROB is closer to reality. ROB is easily understandable and acceptable. ROB is a requirements modeling approach based resource, organization and business. It makes an improvement on management processes and management organization, designs the storage model by formalizing the requirement as a tree. It achieves the automatical and intelligent requirement change management by modify the tree under certain rules and constraints. In practical applications, the effectiveness of our approach has been indicated with a software tool.%需求变更不可控,需求变更常对软件开发产生严重影响,需求变更管理是控制影响的直接途径。
项目报告需求分析怎么写
项目报告需求分析怎么写1. 引言需求分析是项目管理中至关重要的一环。
通过对项目需求的详细分析,能够确保项目的成功实施,并满足项目发起人和相关利益相关者的期望。
本文将介绍如何撰写项目报告中的需求分析部分。
2. 概述需求分析是指对于项目中所需要的功能、性能、约束和接口等方面的详细描述和分析。
在需求分析阶段,项目团队需要与项目发起人和利益相关者进行充分的沟通和讨论,以确保对各方需求的全面理解。
3. 目标需求分析报告的目标是明确项目的关键需求和约束条件,为项目的后续开发和实施奠定基础。
报告应该详细描述具体的需求,包括功能需求、非功能需求和项目的接口需求。
4. 内容4.1 功能需求功能需求是指系统或产品所必须具备的具体功能和特性。
在需求分析报告中,每个功能需求都应该被清晰地描述,并与相关的用例和场景进行关联。
功能需求的描述应该具体、明确,避免歧义性的词汇和表达方式。
4.2 非功能需求非功能需求是指系统或产品在性能、安全性、可靠性、可用性、可维护性、兼容性等方面的要求。
在需求分析报告中,每个非功能需求都应该被具体地描述,并与相关的指标和评估标准进行关联。
非功能需求的描述应该准确、可测量和可验证。
4.3 接口需求接口需求是指系统或产品与外部系统或组件之间的交互要求和约束条件。
在需求分析报告中,每个接口需求都应该被清晰地描述,并与相关的接口规范和标准进行关联。
接口需求的描述应当包括输入输出参数、协议、数据格式等详细信息。
5. 方法在需求分析报告撰写过程中,可以采用以下方法: - 与项目发起人和利益相关者进行面对面的讨论和沟通,以确保对需求的全面理解。
- 使用需求工程技术工具,如用例图、流程图等,来帮助分析和描述需求。
- 制定需求管理计划,明确需求的变更和验证过程。
6. 结论需求分析是项目成功的关键因素之一。
通过详细分析和描述项目的需求,可以确保项目开发和实施的顺利进行。
在编写项目报告的需求分析部分时,应该充分考虑功能需求、非功能需求和接口需求,并清晰地描述和关联各个需求。
需求分析说明书
需求分析说明书需求分析讲明书【范文一】1.引言1.1编写目的本报告的目的是规范化本软件的编写,旨在于提高软件开发过程中的能见度,便于对软件开发过程中的操纵与治理,同时提出了本银行储蓄系统的软件开发过程,便于程序员与客户之间的交流、协作,并作为工作成果的原始依据,同时也表明了本软件的共性,以期能够获得更大范围的应用。
预期读者是项目托付单位的治理人员、设计人员和开发人员。
1.2项目背景软件名称:银行储蓄系统项目提出者:银行项目开发者:项目的用户:想要了解银行储蓄业务流程的人1.3定义银行储蓄应用系统软件:差不多元素为构成银行储蓄及相关行为所必须的各种部分。
需求:用户解决咨询题或达到目标所需的条件或功能;系统或系统部件要满足合同、标准,规范或其它正式规定文档所需具有的条件或权能。
需求分析:包括提炼,分析和认真审查已收集到的需求,以确保所有的风险承担者都明其含义并寻出其中的错误,遗憾或其它不足的地点。
模块的独立性:是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他的模块的接口是简单的。
1.4参考资料《精通C#数据库开发》王华杰等清华大学出版社2004年出版《软件工程原理,方法与应用》吴钦藩编着人民交通出版社出版《软件工程导论(第四版)》张海藩编着清华大学出版社出版《软件工程》任胜兵邢琳编着北京邮电大学出版社2.任务概述2.1目标完善目前银行储蓄系统,使之能跟上时代的进展。
同时通过实践来提高自己的动手能力2.2用户的特点银行为用户提供存款、取款、查询等业务,用户凭借自己的银行卡、存折等凭证在银行办理各项业务,银行工作人员协助用户完成各项业务。
2.3假定和约束硬件配置要求:硬件外部设备需奔腾133以上的pc机,内存需16兆以上软件要求操作人员具有初步的相关知识由于本系统为即时软件,对数据的同步要求较高,建议配置网络时使用可靠性较高的相关网络硬件设施。
银行以记时器记时完毕触发利息结算;对用户取款额未做上限约束;各间银行采纳集中操纵。
面向本体的需求分析
ISSN1000-9825 Jour na l o f Softw ar e 软件学报2000,11(8):1009~1017面向本体的需求分析X陆汝钤 金芝 陈刚(中国科学院知识处理与人机交互实验室 北京 100080)(中国科学院数学与系统科学研究院数学研究所 北京 100080)(中国科学院管理、决策与信息系统开放实验室 北京 100080)E-mail:{r qlu,zhijin,cg}@math03.m 摘要 提出了一种新的需求分析方法——面向本体的需求分析OO RA(onto lo gy-o rient ed r equir ements analy sis).该方法的主要特点是,用本体作为对象关联的手段,以增强面向对象方法的表达能力.文章首先定义了O OR A的需求模型,然后结合实例讨论了信息系统需求分析中的两种主要的本体类型,最后给出了O OR A 方法的主要步骤.关键词 需求分析,需求重用,本体,信息系统.中图法分类号 T P311面向对象分析在当前需求分析方法中最具代表性.目前,研究者们已经提出了很多成功的方法,如Jaco bso n的O OSE(object-or iented softw ar e eng ineer ing)方法[1]、Rumbaugh的OM T(object mo deling techno log y)方法[2]、Shaler和M ello r的OO SA(o bject-o rient ed system analysis)方法[3]以及Co ad和Y ourdon的O OA(o bject-o rient ed analysis)方法[4]等.这些方法有一个共同点,就是它们都是基于单个对象分析的,正如文献[5]所述,这些方法都是以对象和对象类为中心进行的,其他方面的属性,如对象属性、对象间的关系、对象间的消息传递、对象的用户界面等,则相对处于次要地位.如果从一个更接近于我们所描述问题的角度来分析,不难发现如下基本事实:在一个大型软件工程项目的分析过程中,并不总是对象和对象类在起着首要的作用,有时对象或对象类之间的各种关系显得更为重要.其主要原因是,首先,由于项目和软件本身可能极其庞大和复杂,要确切掌握不同对象或对象类之间的关系比理解单个的对象模块更为困难.我们知道,构成物质的原子只有百余种,但由这些原子构成的分子的种类却无法计数.软件工程师往往需要付出更多的时间和精力来分析对象类之间的关系,而不仅仅是只分析对象本身.其次,从软件重用角度来看,软件开发者的注意力不应被个体对象的具体内容所吸引,而应集中考虑如何利用所获得的大量可重用软件构件去构造新的软件.由此,软件构件之间的关系描述理应受到足够的重视.最后,仅从软件构件的角度考虑软件重用还很不够,软件框架的重用对大型软件开发来说更有价值,这实际上是大粒度软件重用的一种方式.软件框架重用的一个重要方面是软件体系结构的重用.目前已经有许多软件体系结构描述语言(archit ect ur e descr iptio n lang ua ges,简称A DL)[6],A DL的两个主要部分就是构件以及描述构件之间关联的连接器.综上所述,在需求分析过程中,除了需要识别对象或对象类、构造对象层次结构以外,另一个重要的方面就是分析对象之间的其他关系以及对象的组合方式.事实上,几乎所有的面向对象分析方法都已经注意到这一点,它们中的大多数除了能表示对象的类层次结构外,还或多或少地提供了一些手段来表示对象之间的其他关联.如:许多面向对象方法都用association,using,ag gr eg atio n等分别表示对象间的逻辑关联、引用关联和聚簇关联X本文研究得到国家自然科学重点基金(No.69733020)、国家自然科学基金(No.69983010)、国家“九五”重点科技攻关项目基金(No.98-780-01-07-09)、国家863高科技项目基金(No.863-306-ZT02-01-2)和国家教委留学回国人员科研启动基金(No.J9905)资助.作者陆汝钤,1935年生,研究员,博士生导师,中国科学院院士,主要研究领域为人工智能,软件工程.金芝,女,1962年生,博士,副研究员,主要研究领域为人工智能,软件工程.陈刚,1968年生,讲师,主要研究领域为基于知识的软件工程. 本文通讯联系人:陆汝钤,北京100080,中国科学院数学研究所 本文2000-01-17收到原稿,2000-03-17收到修改稿等,这些关系名是相应方法中表示对象关联的词汇或语法.如果我们将从这些词汇到软件设计的映射称为它们的语义,从这些词汇到应用描述的映射称为它们的语用的话,则针对当前的面向对象方法,人们可能会提出如下问题:(1)这些词汇对表示对象关联是否足够,或对某类需求足够?(2)它们的语义是否有明确的定义?(3)它们的语用是否有明确的定义?提出第1个问题的必要性是明显的,足够的词汇保证足够的表达能力.第2个问题中所确定的语义可以规范从需求模型到软件设计的转换.而第3个问题的着眼点在于如何将应用领域描述准确地表达为需求模型.有效地解决这些问题,对于构造完整而准确的需求模型和进行有效的需求分析起着重要的作用.本文提出一种新的需求分析方法——面向本体的需求分析OO RA (o ntolog y -or iented r equir ements analy sis),用以增强面向对象方法的表达能力,满足软件需求分析的要求.本体论最早是一个哲学上的概念,从哲学的意义上说,本体是指关于世界某个方面的一个特定的分类体系,这个体系不依赖于任何特定的语言.近年来,许多知识工程学者应用了这个概念.在知识工程界,最早给出本体概念的是Neches 等人.在文献[7]中,他们将本体定义为“相关专题的基本术语和关系,以及利用这些术语和关系构成该专题的规则的集合”.后来,G ruber在1998年又给出了本体的一个更为流行的定义,即“本体是领域概念模型的显式表示”[8].具体来说,某个领域的本体就是关于该领域的一个公认的概念集,其中的概念含有公认的语义,这些语义通过概念之间的各种关联来体现.本体通过它的概念集及其所处的上下文来刻画概念的内涵.总之,本体强调相关领域的本质概念,同时也强调这些本质概念之间的关联.我们提出的O OR A 方法就是借鉴本体论研究的这种观点,在面向对象方法中引入对象关联,并给出各种关联的语义语用内涵,试图建立一种新型的需求模型,支持需求获取和需求分析的自动化.1 对象和本体的结合观点1.对象是本体的基本元素概念是本体的基本组成元素.在目前许多关于本体的研究中,本体中的概念是无结构的,这些概念不能再分为更细的组成成分.我们在仔细研究了信息系统设计中本体的应用后发现,如果我们不考虑这些概念元素的结构,则本体似乎并不具备足够的描述能力和模型构造能力.但是,如果我们假定本体是一组结构化成分的组合,那么这些成分又将是什么呢?我们对该问题的回答自然而又直接,即它们都具备对象的结构.换句话说,我们把对象视为本体的基本组成成分.这里的对象不仅起到本体内部元素的作用,在信息系统的分析和领域建模中,对象和本体具有同等重要的意义,就像点和弧在图中所起的同等作用一样.观点2.用关系连接对象在面向对象方法中,对象和对象类构成层次结构.它们按一种垂直方式组织,这种垂直的组织方式仅说明元素之间具有父子关系.在现实世界中,对象之间还存在着其他重要的关系.例如,考虑3个对象:人、计算机和文稿,三者之间并不存在任何父子关系,而“人使用计算机撰写文稿”这一情景却隐含着如下关系:人是使用计算机的用户,计算机是撰写文稿的工具,人是文稿的作者.如果把这些关系简单地看作是某一对象的属性显然不太自然.一种较好的办法是用“文稿撰写”之类的动作关系作为本体将所有这3类对象组合起来.因此,关系在组成本体的各对象之间起到了至关重要的作用.用本体连接对象还有另外一个优点.我们曾经谈到,增大对象的粒度是面向对象方法中用来降低软件复杂性的基本技术.对象聚类是增大对象粒度的基本方法.但是,由于简单的对象归并操作没有对这些对象的功能关系和界面作出严格定义,常常导致对象状态的混乱.而用本体连接对象则有可能解决这个问题.这是我们提出用本体连接对象的另一个理由.观点3.本体之间存在继承层次由前述两个观点我们可以得到OO RA 中的本体的一个直观认识,即本体是一个由对象节点和关系节点以及这些节点之间的连线组成的网络.那么在我们的需求分析过程中,是只有一个全局本体,还是存在多个本体但它们同处于一个抽象层次,或存在多个本体且它们按某种抽象原则形成继承层次?我们的回答是第3种情况.不同层次的对象组成的本体形成不同抽象程度的本体,并形成本体间的继承层次,这种结构除了具有模块化、封装—1010—J our nal of S of tw are 软件学报 2000,11(8)性等好处外,对需求分析的最大好处在于,父本体作为对子本体的一种约束,成为需求一致性和完整性检查的主要约束条件.2 OORA 需求模型的结构2.1 对象作为基本元素任何信息系统都具有下面3种基本成分:执行活动的角色(如岗位、机构、部门,或其他同类名词)、角色执行的活动和活动作用的数据.因此,我们定义3种主要的对象.定义1.定义如下3种基本对象类型:(1)角色对象.一个角色是一个社会机构、一个岗位或一个计算机程序,角色对象描述角色可能执行的活动,并指定角色访问特定数据时的权限,其表示范式为角色对象→多个活动+多个(数据,访问权限)对.(2)活动对象.一个活动是一个数据处理过程,或一个抽象的动作,活动对象定义输入数据、输出数据和基于输入数据产生输出数据的处理操作,其表示范式为活动对象→多个输入数据+多个输出数据+单个(多参数)操作.(3)数据对象.一个数据对象是一个结构型数据,它用一组属性来规范这些数据,并定义了在这些数据上可能执行的动作的集合.我们把可以修改的数据对象称为数据池对象,数据库和数据表就属于数据池对象.不能修改的数据对象称为数据工具对象,数据字典和数据仓库则属于数据工具对象.数据对象的表示范式为数据对象→数据结构(带数据)+多个(单参数)活动.2.2 建立对象间的关联定义2.对象之间可能存在如下7种关系:(1)存在于多个角色之间的关系;(2)存在于多个数据之间的关系;(3)存在于多个活动之间的关系;(4)存在于多个角色和多个活动之间的关系;(5)存在于多个角色和多个数据之间的关系;(6)存在于多个数据和多个活动之间的关系;(7)存在于多个角色、活动和数据之间的关系.综合这些关系和信息系统需求的结构,我们提出如下信息系统需求本体中的主要关系.定义3.构成信息系统需求本体的主要关系有:机构关系:Or g (角色集,社会关系,角色集);数据传递关系:T r an(角色,数据集,角色集);活动分解关系:Sub -A ct (活动,活动集);数据处理关系:DP(数据集,活动,数据集);角色处理关系:RP (数据集,角色,活动,数据集);工具处理关系:T P (数据集,数据工具集,活动,数据集);混合处理关系:M P (数据集,角色,数据工具集,活动,数据集).这里,角色集是角色对象的集合,角色指角色对象.数据集是数据对象或工作缓冲区的集合.社会关系是一种标志,它的含义依赖于上下文,并在相应的应用程序环境中定义.活动指活动对象.数据工具集是一组数据工具对象的集合,数据工具指数据工具对象.其中DP,RP ,T P 和M P 都具有数据处理功能.例如,Or g ({主管,部门主管},领导,{部门})是一个机构关系.M P ({报表1,报表2},数据分析员,{数据字典,模糊数据字典},月记帐,{月总结报告})是一个混合处理关系.定义4.本体定义为一个六元组(N ,F ,A ,B ,R ,S ),其中N 是本体的名字;F 是N 的父本体名;A 是本体的—1011—陆汝钤等:面向本体的需求分析属性集合;B 是组成该本体的对象集合;R 是本体网格,由B 中元素之间的关系组成;S 是附加到该本体的方法集.定义5.设r 是一个本体关系,则op (r )代表r 的关系符,ar ity (r )表示r 的参数个数,arity /n (r )表示r 的第n 个参数.定义6.设b 1,b 2是两个对象,则b 1<b 2(或b 2>b 1)表示b 1是b 2的祖先.b 1≤b 2(或b 2≤b 1)表示b 1=b 2或b 1<b 2.在上述六元组的6个元素之中,最重要的是B 和R .因此,如果不致引起二义性,我们可以只用三元组(N ,B ,R )来表示一个本体.2.3 用网络同态概念来定义本体的继承关系定义7.令O 1=(N 1,B 1,R 1)和O 2=(N 2,B 2,R 2)是两个本体.我们说存在一个由O 1到O 2的同态映射M ,如果:(1)映射M 由3个局部映射组成:M (O 1)=M (N 1)∪M (B 1)∪M (R 1),(2)M (N 1)=N 2,(3)M (B 1)=∪{M (e 1)ûe 1∈B 1},其中,对B 1中的每一个元素e 1,有且仅有B 2中的一个元素e 2,满足M (e 1)=e 2≥e 1,(4)M (R 1)=∪{M (r 1)ûr 1∈R 1},其中,对每个关系r 1∈R 1,存在关系r 2∈R 2,满足:(a)op (r 1)=op (r 2),(b)ar ity (r 1)=a rit y(r 2),(c)对i =1到ar ity (r 1),如果ar ity /i (r 1)是一个集合,则对ar ity /i (r 1)中的每一个元素e 1,有且仅有ar ity /i (r 2)中的一个元素e 2,满足M (e 1)=e 2≥e 1,否则,令e 3=arity/i (r 1),e 4=ar it y/i (r 2),则有M (e 3)=e 4≥e 3.命题1.令O 1,O 2,O 3是3个本体,如果存在一个从O 1到O 2的同态映射M 1和从O 2到O 3的同态映射M 2,那么组合M 2(M 1)是从O 1到O 3的一个同态映射.证明:结论明显成立.定义8.令O 1=(N 1,F 1,A 1,B 1,R 1,S 1)和O 2=(N 2,F 2,A 2,B 2,R 2,S 2)是两个本体.我们说O 1是O 2的父本体(或O 2是O 1的正则子本体),如果:(1)F 2=N 1,(2)A 1是A 2的子集,(3)S 1是S 2的子集,并且(4)存在一个从(N 1,B 1,R 1)到(N 2,B 2,R 2)的同态映射.当然,在某些特定环境中,子本体并不需要完全继承父本体内的所有属性.这意味着,子本体可能与父本体在同一属性上的取值不同;同样,子本体与父本体在执行方法上也可以有所不同.这些特征超出本文讨论的范围.3 静态本体和动态本体下面给出两个典型的O O RA 分析实例.首先,让我们考虑一个医院管理信息系统的例子.该系统包含一个数据资源集,它由医院人事数据库、病人库、传染病人数据仓库、药品库所组成.为医学研究方便起见,该系统采用数据过滤和数据采掘等技术,从原始数据库中获取大量历史数据建立了一个数据仓库.例如,数据仓库记录了所有失败的外科手术案例和所有复杂但仍然成功的治疗案例等.该系统还能提供大量的数据表和视图数据,供医生、护士和管理人员使用,例如,记录目前需要特别护理的病人数据表、记录重要病人和严重病人病情转变情况表等.该系统还可提供一些数据表和视图供院外用户使用.例如,提供给医药卫生管理部门的传染病案例和传染源分布的数据表.上述的数据表和视图—1012—J our nal of S of tw are 软件学报 2000,11(8)采用各种不同的表现形式,如图表和柱状图.该系统通过多种不同的用户界面将数据输入到数据源中,包括图形方式输入、数据扫描输入和交互式输入等.还有大量的小应用程序(applets)用于特定问题的处理,如专门用于数字统计的计算程序、数据采掘程序、例外处理程序等.将上述信息组织成O O RA 中的一个本体,则得到如下结构:对象:源数据元素(data ): (1)医院人事库,(2)病人库,(3)药品库,(4)传染病人库,(5)外科手术库,生成和保存数据元素(data ):(6)失败外科手术案例数据仓库,(7)成功治愈复杂疾病案例数据仓库,现场数据元素(data ):(8)特别护理病人表,(9)重要病人或病情严重病人表,(10)当前传染病例及其区域分布表,数据分析元素(ro le ):(11)数据统计包,(12)数据仓库生成器,(13)数据挖掘程序,(14)实时例外处理程序,外部支持元素(too l ):(15)数据字典,(16)模糊概念词典,外部通道(ro le ):(17)数据输入界面,(18)图形输入界面,(19)数据表输出,(20)图形输出,活动(a ct ivity ):(21)数据录入,(22)数据查询,(23)案例生成.关系:(a )输入: RP ({},(17),(21),{(1),(2),(3),(4),(5)}),(b)产生:RP ({(2),(5)},(12),(23),{(6)}),(c)产生:RP ({(2),(3),(5)},(12),(23),{(7)}),(d)输出:DP ({(2),(5)},(22),{(8),(9)}),(e )输出:DP ({(3),(4)},(22),{(10)}).以上是医院管理信息系统中的一个本体的简化描述,许多细节诸如元素的属性、关系的属性、数据库的操作和系统的用户等均被忽略.现在让我们考虑另一种类型的本体:医院医疗设备购买本体.这个从申请购买医疗设备到该设备到达,并在医院的财产清单上登记注册的过程,在O ORA 中可以表示为如下本体:对象:角色(r o le ): (1)申请者,(2)医院领导,(3)会计师,(4)投标者,(5)评价者,现场数据元素(data ):(6)购买设备的预算报告,源数据元素(data ):(7)医院的现金帐务,(8)医院本年度预算,数据分析元素(ro le ):(9)配置优化器,—1013—陆汝钤等:面向本体的需求分析支持型元素(data ):(10)设备生产者企业清单,(11)医疗设备价格清单,输入数据(data ):(12)申请报告,(13)签字批复,收到数据(data ):(14)销售者标书,输出数据(data ):(15)医疗设备,发送数据(data ):(16)宣布中标者名单,活动(a ct ivity ):(17)数据录入,(18)设备优化.工作流:(a )输入: RP ({},(1),(17),{(12)}).(b)传输:T r an ((1),{(12)},{(9)}).(c )产生:M P ({(12)},(9),{(11)},(18),{(6)}).(d )传输:T r an ((9),{(6)},{(1)}).(e )传输:T r an ((1),{(6),(7)},{(2)}).(f )总结:RP ({(6),(7)},(2),(17),{(13)}).上述第1个例子描述了数据源之间的数据流关系,第2个例子描述了数据处理过程中的工作流关系,这些都是O OR A 方法所关注的主要本体类型.我们称第1种本体为静态本体(static ontolo gy ),称第2种本体为动态本体(dynamic o ntolog y ).它们共同构成OO RA 本体簇的基础.4 OORA 方法4.1 面向最终用户和自动开发的策略一般地,软件需求分析由软件工程师来完成.但是,他们通常都不是领域专家,因此,要让他们理解应用领域的全部细节比较困难.另一方面,领域专家也不熟悉软件工程的原理,他们提供的需求定义常常不完全,并且经常要作变更.由于缺少共同语言,这两类人之间的合作都不很成功.结果是导致基于这种需求的软件不能付诸实践.如果我们能开发出一种让软件工程师和最终用户都可以接受的语言,那么它将在消除这两类人之间的通信障碍方面起到重要作用.更进一步地,如果我们能找到一种可以使这种语言可执行的方法,比如,有一种方法如果能够把用这种语言写出来的任何代码转换成一个可执行的信息系统,那么应用开发的过程几乎可以自动化.这种自动方法实现的关键是开发出一个领域知识库,它支持把上面提到的定义转换成一个可以运行的信息系统.O O RA 就是基于这个观点提出来的,它不仅面向软件工程师,而且还面向最终用户.4.2 OORA 方法的主要步骤基于上述总体策略,OO RA 分4个阶段完成.第1阶段.用一种类自然语言BI DL (business info rmat ion descr iptio n lang uag e)描述企业事务.第2阶段.确认隐含在BI DL 文本中的本体和对象.第3阶段.将这些本体和对象转换成另一种语言Ononet (ontolo gy and object -or iented netw or k),得到用O no net 书写的需求预定义.第4阶段.在采用Ono net 作为知识表示形式的领域本体知识库中搜索相关的知识,并和前面的需求预定义合并,得到完整的需求定义.注意,完整性和一致性检查在O ORA 中没有形成一个分立的阶段,这是因为:(1)在开发/维护/演化阶段,领域本体知识库的一致性和完整性已经得到了保证;(2)合并知识的完整性和一致性检查包含在合并过程中.4.3 BIDL 语言BI DL 是一种类自然语言.先解释一下类自然语言的概念,这种语言有3个主要特征.(1)它非常接近于自—1014—J our nal of S of tw are 软件学报 2000,11(8)然语言,因此可以将它看作是中文自然语言的一个子集;(2)它不包含软件工程学和软件技术的术语,所以领域专家们可以很容易地用它来描述他们的应用知识;(3)它是一种可被编译器分析和理解的形式语言.以下是BIDL 语言的一个简要介绍.每个BIDL 程序描述一个具体应用的情况,它被组织成如下7段:(1)企业的总体特性,(2)企业要处理的任务,(3)企业内外部的职权范围,(4)和企业相关的外部信息,(5)企业的信息结构,(6)企业的决策策略,(7)企业的背景和统计数据.下面,我们以“地方税务局”信息管理系统为例来示例BIDL 的特征:(1)地方税务局由市政府领导.(2)地方税务局的任务包括所得税管理、消费税管理、运输执照税管理.(3)地方税务局的领导负责整个地区的地方税务管理.(4)对每个税种,要维护一个全地区的收税数据库.(5)运输执照税数据库包括3个表:年度小汽车执照税务表、年度卡车执照税务表、年度自行车执照税务表.(6)每月,打印数据表给没有及时交税的公司,打印数据表给各交税的公司.(7)每迟交税1个月增加滞纳税款罚金百分之一.(8)整个地区有137家高科技公司,他们可以免税30%.BI DL 语句的语法规定了一套关键字(上面给出的例子中用黑体和仿宋体表示).关键字分为两级:系统级关键字和领域级关键字.前者用常规的黑体打印,而后者用仿宋体字.有关BIDL 语言的更详细的描述参见文献[9].4.4 本体和对象的识别需求的原始信息可以通过与专家对话或从现有文字材料中获取.修改作为需求分析起点的BIDL 文本就可以较容易地重写原始信息,利用类自然语言极大地简化了我们的工作.对BIDL 文本的面向本体分析可以用自顶向下或自底向上或两者混用的方法.自顶向下分析首先标识出本体集,再找出它们的构件——对象;自底向上分析首先标识的是对象,再根据本体的概念将它们分类;当两种方法混用时,确定对象(类)和本体是交互进行的.算法1.以“活动”为中心的自顶向下方法.(1)标识出领域最顶层的本体概念,即顶级本体;(2)标识出领域中所有的活动并构成一个集合,记为A ct ;(3)标识出A ct 集合中的所有父-子关系,并形成A ct 中的继承层次;(4)如果某个活动x 可以被分解成子活动,那么认为x 是一个本体并且把它的所有子活动加入到A ct 中;(5)如果x 不能被分解成子活动,那么认为x 是一个活动对象;(6)对A ct 中的每一个活动,确定活动的作用者;对A ct 中的每一个活动对象,确定活动操作的数据.例:(1)语句“x 由y 领导”蕴含:存在一个表示机构关系的静态本体,x 和y 都属于这个本体;(2)语句“x 的任务包括y ,z ,...”蕴含:存在一个数据处理类型的动态本体x ,同时蕴含:在y ,z ,...和x 之间存在着部分-整体关系;(3)语句“x 被分为y ,z ,...”蕴含:在x 和y ,z ,...之间存在着父-子关系;(4)如果实体y 出现在语句“x 的任务包括y ,z ,...”中,但是不存在语句“y 的任务包括u ,v ,...”,蕴含:y 是一个活动对象.—1015—陆汝钤等:面向本体的需求分析算法2.以“角色”为中心的自底向上方法.(1)标识出所有文本中提及的角色,构造一个R ol 集;(2)对Rol 集中的每一角色x ,找出所有由这个角色操作的活动,构造集合A ct (x );(3)act 是A ct (x )中的一个活动,如果act 不可分解,那么认为它是一个活动对象,否则是一个本体,将其所有子活动加入A ct (x )中;(4)如果A ct (x )中的几个活动可以组成一个更大的活动,那么为这些活动创建一个本体,加入A ct (x )中;(5)合并所有的活动集构成一个集合,记为A ct ;(6)标识出A ct 集合中的所有父-子关系,并形成A ct 的继承层次;(7)对A ct 中的每一个活动对象,确定活动操作的数据.4.5 Ononet 语言Ononet 语言是一种综合表示本体和对象的形式化语言.在这种语言中,对本体和对象分别给出了明确的定义.对象定义与面向对象语言中的对象定义基本一致,只是增加了指向它从属的本体的指针,这些指针在参数(p ar ameter )部分以如下形式给出定义:Par ameter -of (r 1:o n 1,r 2:on 2,...,r n :on n )这里,o n i 是对象从属的本体的名称,r i 是对象在相应本体中的作用.本体定义在名称、父类、属性、方法上与对象定义基本一致,但有两个主要的区别.(1)本体只包含指向它所联系的对象的指针,表示为如下形式:Par ameter -of (r 1:o b 1,r 2:ob 2,...,r n :ob n )这里,ob i 是本体联系的对象的名称,r i 是对象在这个本体中的作用.(2)Ononet 是一个本体网络,它描述了对象如何通过本体互相联系.Ononet 中关系的表示已在第2节给出,它的工作机制也已在第3节给出详细的讨论.5 结 论我们在90年代初就开始着手做PR OM I S(pro tot yping m anag ement info rmation systems )项目[9~12],其主要目的是在领域分析和领域模拟的基础上自动生成信息系统.在P RO M IS 中,我们主要依靠两种类型的知识,即软件工程知识和领域知识.除这两类知识外,类自然语言BID L 是该项目的一个主要特点,该语言不包含软件工程方面的专业术语,并且十分接近于自然语言表达方式,任何一个没有计算机编程经验的领域专家都可以用它来描述有关应用的具体信息.另一方面,用这种语言编写的程序(实际上是一个文本)可以像通常的计算机程序一样被理解和编译,整个过程得到上述两类知识的支持,编译的结果是一个可在Client /Serv er 环境下直接运行的信息系统.基于以上理由,我们称支持上述整个过程的方法为K ISSM E 方法(kno w ledge intensive softw ar e system manufacture eng ineering )[13].本文进一步提出结合面向对象和面向本体的技术.综合分析现有的需求分析方法,可以发现两种基本的模式:以控制流为中心的需求分析和以数据流为中心的需求分析.前者的典型代表是Jackson 方法,而面向对象方法恰恰是后者的代表.这两种方法到底孰优孰劣还没有定论.本文提出的O O RA 方法试图将上述两种方法结合到一个模式中,希望能综合利用这两种方法的优点.致谢 我们感谢杨芙清教授和她的青鸟软件工程组对PR OM IS 项目的有力支持.我们也感谢李师贤教授和他的工作小组与我们的成功合作.参考文献1 J acobson I,Chris ters on M ,Joss on P e t al .Object-Oriented Softw are Engineering:A Use Case Driven Approach.New York :Addis on-Wesley Pu blis hing Company,19922 Ru mbaugh J,Blah a M ,Premerlani W et al .Object-Orien ted M od elin g and Des ign.Eng lew ood C liffs ,NJ:Pr entice Hall,Inc.,1991—1016—J our nal of S of tw are 软件学报 2000,11(8)。
开展需求分析
开展需求分析需求分析是在项目启动阶段进行的一项重要工作,它的目的是为了全面、准确地了解项目的需求,并通过分析和归纳得出具体的需求需求列表和项目目标。
合理的需求分析对于项目的成功实施至关重要。
本文将从需求分析的背景、目的和方法入手,详细介绍如何开展需求分析。
一、背景需求分析是指在项目启动阶段,通过与相关利益相关者的沟通和调研,全面了解项目的目标、范围和需求,为项目实施提供有效的指导和支持。
它通常由项目经理或项目团队成员负责,需要和相关利益相关者紧密合作,确保全面收集和理解他们的需求。
二、目的需求分析的目的在于明确项目的目标,并找出项目实施过程中所需满足的功能、性能、质量以及其他约束条件。
通过需求分析,可以确保项目最终交付的产品或服务符合客户的期望,并能够满足相关利益相关者的需求。
三、方法1.相关方沟通:需求分析的第一步是与项目的相关利益相关者进行沟通,包括客户、用户、技术团队等。
通过面对面的交流,可以更好地理解他们的需求,收集相关信息。
2.需求收集:通过问卷调查、访谈、会议等方式,收集相关利益相关者对项目的需求和期望。
需求收集应该全面、准确,并考虑到不同利益相关者的不同需求。
3.需求分类和归纳:将收集到的需求按照不同的维度进行分类和归纳,以便于后续的分析和整合。
4.需求优先级排序:根据相关利益相关者的重要性和需求的紧迫程度,对需求进行优先级排序,确定优先实现的需求。
5.需求分析和澄清:对需求进行进一步的分析和澄清,确保需求表达准确、一致,并能够满足项目的目标。
6.需求文档编写:将分析好的需求整理成文档,包括需求描述、用例分析、功能说明等,以便于后续项目实施和测试。
四、需求分析的重要性1.确保项目目标清晰:通过需求分析,可以明确项目的目标,使项目团队对项目目标有一个明确的认识,提高项目实施的效率和成功率。
2.节约资源:需求分析可以减少项目实施过程中的变更和重复工作,从而避免资源的浪费。
3.降低风险:需求分析可以帮助项目团队充分了解项目的风险和挑战,制定相应的措施和计划,降低项目失败的风险。
需求分析方法
需求分析方法
需求分析方法是用来确定和记录用户需求的过程。
在需求分析过程中,有以下几种常用的方法:
1. 访谈法:与用户进行面对面的讨论,了解他们的需求、期望和问题。
通过问答、观察和记录等方式获取用户需求,并进行归纳和总结。
2. 文档分析法:通过分析已有的文档,包括用户手册、规范说明、需求文档等,了解需求的具体要求和约束条件。
3. 观察法:观察用户在实际环境中的工作流程或行为,从中发现并记录用户的需求。
4. 原型法:制作原型或模型,通过与用户交互使用,收集用户的反馈和需求。
5. 问卷调查法:设计和发送问卷给用户,让用户进行投票、评分或提供意见和建议,以获取用户的需求和偏好。
6. 需求协商会议:邀请相关利益相关者参加会议,对于需求进行逐一讨论、分析和澄清,达成共识和解决冲突。
7. 场景分析法:通过场景模拟和故事叙述的方式,帮助用户更好地表达需求,同时也为需求分析提供更具体的背景和情境。
需要注意的是,每种需求分析方法都有其适用的场景和限制条
件。
在具体的需求分析过程中,可以根据实际情况选择合适的方法或结合多种方法进行使用。
软件工程需求分析
软件工程需求分析
首先,需求获取是需求分析的基础。
开发团队需要与用户沟通,了解用户的实际需求。
可以通过面对面的会议、问卷调查或者用户需求收集工具等方式进行需求获取。
在这个过程中,开发团队需要主动询问用户的需求,以确保他们完全理解用户的期望。
其次,需求分析需要准确明确的目标。
开发团队需要对需求进行分类和排序,以确定哪些需求是最重要的。
在确定需求优先级时,开发团队可以考虑与用户合作确定,也可以参考相似项目的经验。
接下来,需求分析需要制定合适的文档。
在需求分析的过程中,开发团队需要编写软件需求规格说明书(SRS),以记录各种需求详细信息。
这样的文档需要描述软件的功能需求、性能需求、安全需求以及其他非功能性需求。
编写完整的文档可以确保需求准确传达给开发团队。
此外,需求分析需要广泛的共享和讨论。
开发团队需要与利益相关者进行定期的讨论和交流,以确保需求的理解和沟通。
这样可以在早期的开发阶段发现并解决潜在的问题或错误,降低开发风险。
最后,需求分析需要反馈和验证。
开发团队在开发过程中需要持续地与用户沟通,获取用户的反馈。
这样可以及时调整需求和开发方向,保证软件的质量和用户满意度。
总的来说,软件工程需求分析是软件开发过程中至关重要的一环。
它需要开发团队与用户密切合作,准确获取和理解用户需求。
通过制定合适的文档和定期的讨论,可以确保需求清晰明确并得到广泛共享。
同时,持续的反馈和验证可以及时修正需求和开发方向,提高软件的质量。
项目实施方案的需求分析
项目实施方案的需求分析在进行项目实施方案的制定之前,我们首先需要对项目的需求进行全面的分析。
需求分析是项目实施的第一步,它的重要性不言而喻。
只有充分了解项目的需求,才能为项目实施方案的制定提供有效的依据,确保项目能够顺利进行并达到预期的效果。
首先,需求分析需要明确项目的背景和目标。
我们需要了解项目所处的行业背景、市场环境、竞争对手情况等,以及项目的具体目标和预期效果。
只有充分了解项目的背景和目标,才能为后续的实施方案制定提供正确的方向。
其次,需求分析需要深入了解项目的功能需求和性能需求。
在进行需求分析时,我们需要明确项目的具体功能需求,包括项目需要实现的功能、功能的优先级和依赖关系等。
同时,还需要对项目的性能需求进行分析,包括项目对性能的要求、性能指标的具体要求等。
只有明确了项目的功能需求和性能需求,才能为后续的实施方案制定提供具体的方向和依据。
另外,需求分析还需要考虑项目的资源需求和风险需求。
在进行需求分析时,我们需要充分了解项目所需的资源情况,包括人力资源、物资资源、资金资源等。
同时,还需要对项目可能面临的风险进行分析,包括项目可能面临的技术风险、市场风险、人力风险等。
只有充分了解项目的资源需求和风险需求,才能为后续的实施方案制定提供全面的考虑和保障。
最后,需求分析需要考虑项目的时间需求和成本需求。
在进行需求分析时,我们需要明确项目的时间要求,包括项目的实施周期、里程碑节点等。
同时,还需要对项目的成本需求进行分析,包括项目的预算情况、成本控制要求等。
只有充分了解项目的时间需求和成本需求,才能为后续的实施方案制定提供合理的安排和控制。
综上所述,项目实施方案的需求分析是项目实施的重要前提和基础。
只有充分了解项目的需求,才能为后续的实施方案制定提供有效的依据,确保项目能够顺利进行并达到预期的效果。
因此,在进行项目实施方案的制定之前,我们必须充分重视需求分析工作,确保需求分析的全面性和准确性,为后续的实施工作奠定坚实的基础。
实施方案和需求分析
实施方案和需求分析一、引言。
在进行任何项目的实施前,都需要对项目的需求进行充分的分析,并制定相应的实施方案。
本文将就实施方案和需求分析进行深入探讨,为项目的顺利实施提供有力支持。
二、需求分析。
1. 确定需求范围。
在进行需求分析时,首先需要明确需求的范围。
这包括确定项目的目标、用户的需求和期望,以及项目所涉及的各个方面。
只有明确了需求范围,才能有针对性地进行后续的分析和规划。
2. 收集需求信息。
收集需求信息是需求分析的重要环节。
可以通过与用户沟通、调研市场、分析竞品等方式,获取用户的需求信息。
在收集需求信息的过程中,需要充分听取用户的意见和建议,确保获取准确全面的需求信息。
3. 分析需求矛盾。
在收集了需求信息后,需要对需求进行深入分析,发现其中的矛盾和冲突。
有些需求可能会相互矛盾,需要进行权衡和取舍。
只有充分理解需求之间的关系,才能制定出合理的实施方案。
三、实施方案。
1. 确定实施目标。
在制定实施方案时,首先需要明确实施的目标。
实施目标应该与项目的需求相一致,明确具体,能够为项目的顺利实施提供明确的指导。
2. 制定详细计划。
制定详细的实施计划是实施方案的关键环节。
实施计划应该包括项目的时间节点、人员分工、资源投入等方面的具体安排,以确保项目能够按时、按质、按量地完成。
3. 风险评估和应对措施。
在制定实施方案时,还需要对可能出现的风险进行评估,并制定相应的应对措施。
只有充分考虑到可能出现的风险,并做好预防和控制工作,才能确保项目的顺利实施。
四、总结。
实施方案和需求分析是项目实施的前期工作,对项目的顺利实施起着至关重要的作用。
通过充分的需求分析,可以明确项目的目标和方向;通过科学的实施方案,可以确保项目按时、按质、按量地完成。
希望本文的内容能够为实施方案和需求分析提供一定的参考,为项目的顺利实施提供有力支持。
全面分析项目需求
全面分析项目需求一、项目背景每一个项目的开展都有其特定的背景和目的。
在此部分,我们将对项目的背景进行简要介绍,以便更好地理解项目需求的分析。
二、项目目标项目需求的分析应始终围绕项目的具体目标展开。
本部分将阐明该项目的目标,并明确希望在项目实施过程中实现的成果。
三、关键利益相关方任何项目的成功都离不开关键利益相关方的支持和参与。
这些相关方可能包括项目的投资者、合作伙伴、用户等。
在此部分,我们将详细列举出关键利益相关方及其需求。
四、需求分析方法项目需求的分析需要采用一定的方法和工具。
本部分将介绍常用的需求分析方法,如故事板、用户故事、用例分析等,并根据项目特点选择适合的方法。
五、功能性需求功能性需求是指项目所需要满足的具体功能要求。
在此部分,我们将对项目的功能性需求进行详细描述,并结合具体案例进行说明。
六、非功能性需求除了功能性需求外,还有一些非功能性需求也至关重要。
这些需求可能涉及项目的性能、安全性、可靠性等方面。
本部分将对项目的非功能性需求进行全面的分析和说明。
七、技术要求在实施项目过程中,不可避免地需要借助一些特定的技术手段和工具。
本部分将列举出项目所需的技术要求,并对其进行详细解释。
八、时间要求时间是项目管理中最重要的约束之一。
在此部分,我们将明确项目的时间要求,包括起止时间、里程碑等。
九、资源需求项目的实施需要一定的资源支持,如人力资源、物力资源等。
本部分将详细列举出项目所需要的各类资源,并估计其需求量。
十、风险和挑战在项目需求分析过程中,也不能忽视项目面临的风险和挑战。
这些风险可能来自与项目执行中的各方面,如技术、人员、市场等。
本部分将对项目面临的风险进行全面评估,并提出应对策略。
总结:项目需求的分析是项目管理中至关重要的一环。
通过全面分析项目背景、目标、关键利益相关方的需求,以及功能性、非功能性需求等方面,可以帮助项目团队明确项目目标,合理规划项目方案,并增加项目成功的概率。
同时,也需要注意项目所面临的风险和挑战,并提前做好预防和应对措施。
项目整体需求分析
项目整体需求分析1. 引言本文档旨在对某项目的整体需求进行分析,并且为该项目未来的开发、测试、验收和上线提供指导。
2. 项目概述本项目是一款针对中小企业管理的软件,主要帮助企业完成销售管理、财务管理、人力资源管理等业务流程。
该软件将提供多种功能模块和服务,充分满足企业管理的需求。
3. 项目背景当前,越来越多的中小企业需要一款完善的管理软件。
然而,传统的管理软件一般比较昂贵,且功能复杂,难以快速上手。
本项目通过研发一款价格合理、易用性强的管理软件,满足中小企业的管理需求。
4. 需求概述针对中小企业的需求,本项目将具备以下功能:4.1 销售管理该功能模块主要实现以下功能:•销售订单管理;•发货单管理;•销售订单查询;•销售决策分析。
4.2 财务管理该功能模块主要实现以下功能:•收支管理,包括进货成本、销售收入、成本支出、收款和付款等;•财务报表,包括利润表、资产负债表、现金流量表等;•税务报表,包括增值税纳税申报表、企业所得税纳税申报表等。
4.3 人力资源管理该功能模块主要实现以下功能:•员工档案管理;•薪资管理;•考勤管理;•培训管理;•招聘管理。
4.4 系统管理该功能模块主要实现以下功能:•用户权限管理;•数据库备份和还原;•系统日志管理。
5. 需求详细分析为了更好地实现项目目标,需要对每个功能模块进行详细的需求分析。
5.1 销售管理模块详细需求5.1.1 销售订单管理该功能主要实现销售订单的管理,包括以下需求:•新建销售订单;•编辑销售订单;•删除销售订单;•查询已有销售订单;•导出销售订单。
5.1.2 发货单管理该功能主要实现发货单的管理,包括以下需求:•新建发货单;•编辑发货单;•删除发货单;•查询已有发货单;•导出发货单。
5.1.3 销售订单查询该功能主要实现销售订单的查询,包括以下需求:•根据客户名称、订单日期等进行查询;•按时间范围筛选订单;•导出订单查询结果。
5.1.4 销售决策分析该功能主要提供销售数据分析,包括以下需求:•完成销售数据汇总,提供关键指标;•显示销售趋势和销售预测分析;•生成销售报告,支持导出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ISSN1000-9825 Jour na l o f Softw ar e 软件学报2000,11(8):1009~1017面向本体的需求分析X陆汝钤 金芝 陈刚(中国科学院知识处理与人机交互实验室 北京 100080)(中国科学院数学与系统科学研究院数学研究所 北京 100080)(中国科学院管理、决策与信息系统开放实验室 北京 100080)E-mail:{r qlu,zhijin,cg}@math03.m 摘要 提出了一种新的需求分析方法——面向本体的需求分析OO RA(onto lo gy-o rient ed r equir ements analy sis).该方法的主要特点是,用本体作为对象关联的手段,以增强面向对象方法的表达能力.文章首先定义了O OR A的需求模型,然后结合实例讨论了信息系统需求分析中的两种主要的本体类型,最后给出了O OR A 方法的主要步骤.关键词 需求分析,需求重用,本体,信息系统.中图法分类号 T P311面向对象分析在当前需求分析方法中最具代表性.目前,研究者们已经提出了很多成功的方法,如Jaco bso n的O OSE(object-or iented softw ar e eng ineer ing)方法[1]、Rumbaugh的OM T(object mo deling techno log y)方法[2]、Shaler和M ello r的OO SA(o bject-o rient ed system analysis)方法[3]以及Co ad和Y ourdon的O OA(o bject-o rient ed analysis)方法[4]等.这些方法有一个共同点,就是它们都是基于单个对象分析的,正如文献[5]所述,这些方法都是以对象和对象类为中心进行的,其他方面的属性,如对象属性、对象间的关系、对象间的消息传递、对象的用户界面等,则相对处于次要地位.如果从一个更接近于我们所描述问题的角度来分析,不难发现如下基本事实:在一个大型软件工程项目的分析过程中,并不总是对象和对象类在起着首要的作用,有时对象或对象类之间的各种关系显得更为重要.其主要原因是,首先,由于项目和软件本身可能极其庞大和复杂,要确切掌握不同对象或对象类之间的关系比理解单个的对象模块更为困难.我们知道,构成物质的原子只有百余种,但由这些原子构成的分子的种类却无法计数.软件工程师往往需要付出更多的时间和精力来分析对象类之间的关系,而不仅仅是只分析对象本身.其次,从软件重用角度来看,软件开发者的注意力不应被个体对象的具体内容所吸引,而应集中考虑如何利用所获得的大量可重用软件构件去构造新的软件.由此,软件构件之间的关系描述理应受到足够的重视.最后,仅从软件构件的角度考虑软件重用还很不够,软件框架的重用对大型软件开发来说更有价值,这实际上是大粒度软件重用的一种方式.软件框架重用的一个重要方面是软件体系结构的重用.目前已经有许多软件体系结构描述语言(archit ect ur e descr iptio n lang ua ges,简称A DL)[6],A DL的两个主要部分就是构件以及描述构件之间关联的连接器.综上所述,在需求分析过程中,除了需要识别对象或对象类、构造对象层次结构以外,另一个重要的方面就是分析对象之间的其他关系以及对象的组合方式.事实上,几乎所有的面向对象分析方法都已经注意到这一点,它们中的大多数除了能表示对象的类层次结构外,还或多或少地提供了一些手段来表示对象之间的其他关联.如:许多面向对象方法都用association,using,ag gr eg atio n等分别表示对象间的逻辑关联、引用关联和聚簇关联X本文研究得到国家自然科学重点基金(No.69733020)、国家自然科学基金(No.69983010)、国家“九五”重点科技攻关项目基金(No.98-780-01-07-09)、国家863高科技项目基金(No.863-306-ZT02-01-2)和国家教委留学回国人员科研启动基金(No.J9905)资助.作者陆汝钤,1935年生,研究员,博士生导师,中国科学院院士,主要研究领域为人工智能,软件工程.金芝,女,1962年生,博士,副研究员,主要研究领域为人工智能,软件工程.陈刚,1968年生,讲师,主要研究领域为基于知识的软件工程. 本文通讯联系人:陆汝钤,北京100080,中国科学院数学研究所 本文2000-01-17收到原稿,2000-03-17收到修改稿等,这些关系名是相应方法中表示对象关联的词汇或语法.如果我们将从这些词汇到软件设计的映射称为它们的语义,从这些词汇到应用描述的映射称为它们的语用的话,则针对当前的面向对象方法,人们可能会提出如下问题:(1)这些词汇对表示对象关联是否足够,或对某类需求足够?(2)它们的语义是否有明确的定义?(3)它们的语用是否有明确的定义?提出第1个问题的必要性是明显的,足够的词汇保证足够的表达能力.第2个问题中所确定的语义可以规范从需求模型到软件设计的转换.而第3个问题的着眼点在于如何将应用领域描述准确地表达为需求模型.有效地解决这些问题,对于构造完整而准确的需求模型和进行有效的需求分析起着重要的作用.本文提出一种新的需求分析方法——面向本体的需求分析OO RA (o ntolog y -or iented r equir ements analy sis),用以增强面向对象方法的表达能力,满足软件需求分析的要求.本体论最早是一个哲学上的概念,从哲学的意义上说,本体是指关于世界某个方面的一个特定的分类体系,这个体系不依赖于任何特定的语言.近年来,许多知识工程学者应用了这个概念.在知识工程界,最早给出本体概念的是Neches 等人.在文献[7]中,他们将本体定义为“相关专题的基本术语和关系,以及利用这些术语和关系构成该专题的规则的集合”.后来,G ruber在1998年又给出了本体的一个更为流行的定义,即“本体是领域概念模型的显式表示”[8].具体来说,某个领域的本体就是关于该领域的一个公认的概念集,其中的概念含有公认的语义,这些语义通过概念之间的各种关联来体现.本体通过它的概念集及其所处的上下文来刻画概念的内涵.总之,本体强调相关领域的本质概念,同时也强调这些本质概念之间的关联.我们提出的O OR A 方法就是借鉴本体论研究的这种观点,在面向对象方法中引入对象关联,并给出各种关联的语义语用内涵,试图建立一种新型的需求模型,支持需求获取和需求分析的自动化.1 对象和本体的结合观点1.对象是本体的基本元素概念是本体的基本组成元素.在目前许多关于本体的研究中,本体中的概念是无结构的,这些概念不能再分为更细的组成成分.我们在仔细研究了信息系统设计中本体的应用后发现,如果我们不考虑这些概念元素的结构,则本体似乎并不具备足够的描述能力和模型构造能力.但是,如果我们假定本体是一组结构化成分的组合,那么这些成分又将是什么呢?我们对该问题的回答自然而又直接,即它们都具备对象的结构.换句话说,我们把对象视为本体的基本组成成分.这里的对象不仅起到本体内部元素的作用,在信息系统的分析和领域建模中,对象和本体具有同等重要的意义,就像点和弧在图中所起的同等作用一样.观点2.用关系连接对象在面向对象方法中,对象和对象类构成层次结构.它们按一种垂直方式组织,这种垂直的组织方式仅说明元素之间具有父子关系.在现实世界中,对象之间还存在着其他重要的关系.例如,考虑3个对象:人、计算机和文稿,三者之间并不存在任何父子关系,而“人使用计算机撰写文稿”这一情景却隐含着如下关系:人是使用计算机的用户,计算机是撰写文稿的工具,人是文稿的作者.如果把这些关系简单地看作是某一对象的属性显然不太自然.一种较好的办法是用“文稿撰写”之类的动作关系作为本体将所有这3类对象组合起来.因此,关系在组成本体的各对象之间起到了至关重要的作用.用本体连接对象还有另外一个优点.我们曾经谈到,增大对象的粒度是面向对象方法中用来降低软件复杂性的基本技术.对象聚类是增大对象粒度的基本方法.但是,由于简单的对象归并操作没有对这些对象的功能关系和界面作出严格定义,常常导致对象状态的混乱.而用本体连接对象则有可能解决这个问题.这是我们提出用本体连接对象的另一个理由.观点3.本体之间存在继承层次由前述两个观点我们可以得到OO RA 中的本体的一个直观认识,即本体是一个由对象节点和关系节点以及这些节点之间的连线组成的网络.那么在我们的需求分析过程中,是只有一个全局本体,还是存在多个本体但它们同处于一个抽象层次,或存在多个本体且它们按某种抽象原则形成继承层次?我们的回答是第3种情况.不同层次的对象组成的本体形成不同抽象程度的本体,并形成本体间的继承层次,这种结构除了具有模块化、封装—1010—J our nal of S of tw are 软件学报 2000,11(8)性等好处外,对需求分析的最大好处在于,父本体作为对子本体的一种约束,成为需求一致性和完整性检查的主要约束条件.2 OORA 需求模型的结构2.1 对象作为基本元素任何信息系统都具有下面3种基本成分:执行活动的角色(如岗位、机构、部门,或其他同类名词)、角色执行的活动和活动作用的数据.因此,我们定义3种主要的对象.定义1.定义如下3种基本对象类型:(1)角色对象.一个角色是一个社会机构、一个岗位或一个计算机程序,角色对象描述角色可能执行的活动,并指定角色访问特定数据时的权限,其表示范式为角色对象→多个活动+多个(数据,访问权限)对.(2)活动对象.一个活动是一个数据处理过程,或一个抽象的动作,活动对象定义输入数据、输出数据和基于输入数据产生输出数据的处理操作,其表示范式为活动对象→多个输入数据+多个输出数据+单个(多参数)操作.(3)数据对象.一个数据对象是一个结构型数据,它用一组属性来规范这些数据,并定义了在这些数据上可能执行的动作的集合.我们把可以修改的数据对象称为数据池对象,数据库和数据表就属于数据池对象.不能修改的数据对象称为数据工具对象,数据字典和数据仓库则属于数据工具对象.数据对象的表示范式为数据对象→数据结构(带数据)+多个(单参数)活动.2.2 建立对象间的关联定义2.对象之间可能存在如下7种关系:(1)存在于多个角色之间的关系;(2)存在于多个数据之间的关系;(3)存在于多个活动之间的关系;(4)存在于多个角色和多个活动之间的关系;(5)存在于多个角色和多个数据之间的关系;(6)存在于多个数据和多个活动之间的关系;(7)存在于多个角色、活动和数据之间的关系.综合这些关系和信息系统需求的结构,我们提出如下信息系统需求本体中的主要关系.定义3.构成信息系统需求本体的主要关系有:机构关系:Or g (角色集,社会关系,角色集);数据传递关系:T r an(角色,数据集,角色集);活动分解关系:Sub -A ct (活动,活动集);数据处理关系:DP(数据集,活动,数据集);角色处理关系:RP (数据集,角色,活动,数据集);工具处理关系:T P (数据集,数据工具集,活动,数据集);混合处理关系:M P (数据集,角色,数据工具集,活动,数据集).这里,角色集是角色对象的集合,角色指角色对象.数据集是数据对象或工作缓冲区的集合.社会关系是一种标志,它的含义依赖于上下文,并在相应的应用程序环境中定义.活动指活动对象.数据工具集是一组数据工具对象的集合,数据工具指数据工具对象.其中DP,RP ,T P 和M P 都具有数据处理功能.例如,Or g ({主管,部门主管},领导,{部门})是一个机构关系.M P ({报表1,报表2},数据分析员,{数据字典,模糊数据字典},月记帐,{月总结报告})是一个混合处理关系.定义4.本体定义为一个六元组(N ,F ,A ,B ,R ,S ),其中N 是本体的名字;F 是N 的父本体名;A 是本体的—1011—陆汝钤等:面向本体的需求分析属性集合;B 是组成该本体的对象集合;R 是本体网格,由B 中元素之间的关系组成;S 是附加到该本体的方法集.定义5.设r 是一个本体关系,则op (r )代表r 的关系符,ar ity (r )表示r 的参数个数,arity /n (r )表示r 的第n 个参数.定义6.设b 1,b 2是两个对象,则b 1<b 2(或b 2>b 1)表示b 1是b 2的祖先.b 1≤b 2(或b 2≤b 1)表示b 1=b 2或b 1<b 2.在上述六元组的6个元素之中,最重要的是B 和R .因此,如果不致引起二义性,我们可以只用三元组(N ,B ,R )来表示一个本体.2.3 用网络同态概念来定义本体的继承关系定义7.令O 1=(N 1,B 1,R 1)和O 2=(N 2,B 2,R 2)是两个本体.我们说存在一个由O 1到O 2的同态映射M ,如果:(1)映射M 由3个局部映射组成:M (O 1)=M (N 1)∪M (B 1)∪M (R 1),(2)M (N 1)=N 2,(3)M (B 1)=∪{M (e 1)ûe 1∈B 1},其中,对B 1中的每一个元素e 1,有且仅有B 2中的一个元素e 2,满足M (e 1)=e 2≥e 1,(4)M (R 1)=∪{M (r 1)ûr 1∈R 1},其中,对每个关系r 1∈R 1,存在关系r 2∈R 2,满足:(a)op (r 1)=op (r 2),(b)ar ity (r 1)=a rit y(r 2),(c)对i =1到ar ity (r 1),如果ar ity /i (r 1)是一个集合,则对ar ity /i (r 1)中的每一个元素e 1,有且仅有ar ity /i (r 2)中的一个元素e 2,满足M (e 1)=e 2≥e 1,否则,令e 3=arity/i (r 1),e 4=ar it y/i (r 2),则有M (e 3)=e 4≥e 3.命题1.令O 1,O 2,O 3是3个本体,如果存在一个从O 1到O 2的同态映射M 1和从O 2到O 3的同态映射M 2,那么组合M 2(M 1)是从O 1到O 3的一个同态映射.证明:结论明显成立.定义8.令O 1=(N 1,F 1,A 1,B 1,R 1,S 1)和O 2=(N 2,F 2,A 2,B 2,R 2,S 2)是两个本体.我们说O 1是O 2的父本体(或O 2是O 1的正则子本体),如果:(1)F 2=N 1,(2)A 1是A 2的子集,(3)S 1是S 2的子集,并且(4)存在一个从(N 1,B 1,R 1)到(N 2,B 2,R 2)的同态映射.当然,在某些特定环境中,子本体并不需要完全继承父本体内的所有属性.这意味着,子本体可能与父本体在同一属性上的取值不同;同样,子本体与父本体在执行方法上也可以有所不同.这些特征超出本文讨论的范围.3 静态本体和动态本体下面给出两个典型的O O RA 分析实例.首先,让我们考虑一个医院管理信息系统的例子.该系统包含一个数据资源集,它由医院人事数据库、病人库、传染病人数据仓库、药品库所组成.为医学研究方便起见,该系统采用数据过滤和数据采掘等技术,从原始数据库中获取大量历史数据建立了一个数据仓库.例如,数据仓库记录了所有失败的外科手术案例和所有复杂但仍然成功的治疗案例等.该系统还能提供大量的数据表和视图数据,供医生、护士和管理人员使用,例如,记录目前需要特别护理的病人数据表、记录重要病人和严重病人病情转变情况表等.该系统还可提供一些数据表和视图供院外用户使用.例如,提供给医药卫生管理部门的传染病案例和传染源分布的数据表.上述的数据表和视图—1012—J our nal of S of tw are 软件学报 2000,11(8)采用各种不同的表现形式,如图表和柱状图.该系统通过多种不同的用户界面将数据输入到数据源中,包括图形方式输入、数据扫描输入和交互式输入等.还有大量的小应用程序(applets)用于特定问题的处理,如专门用于数字统计的计算程序、数据采掘程序、例外处理程序等.将上述信息组织成O O RA 中的一个本体,则得到如下结构:对象:源数据元素(data ): (1)医院人事库,(2)病人库,(3)药品库,(4)传染病人库,(5)外科手术库,生成和保存数据元素(data ):(6)失败外科手术案例数据仓库,(7)成功治愈复杂疾病案例数据仓库,现场数据元素(data ):(8)特别护理病人表,(9)重要病人或病情严重病人表,(10)当前传染病例及其区域分布表,数据分析元素(ro le ):(11)数据统计包,(12)数据仓库生成器,(13)数据挖掘程序,(14)实时例外处理程序,外部支持元素(too l ):(15)数据字典,(16)模糊概念词典,外部通道(ro le ):(17)数据输入界面,(18)图形输入界面,(19)数据表输出,(20)图形输出,活动(a ct ivity ):(21)数据录入,(22)数据查询,(23)案例生成.关系:(a )输入: RP ({},(17),(21),{(1),(2),(3),(4),(5)}),(b)产生:RP ({(2),(5)},(12),(23),{(6)}),(c)产生:RP ({(2),(3),(5)},(12),(23),{(7)}),(d)输出:DP ({(2),(5)},(22),{(8),(9)}),(e )输出:DP ({(3),(4)},(22),{(10)}).以上是医院管理信息系统中的一个本体的简化描述,许多细节诸如元素的属性、关系的属性、数据库的操作和系统的用户等均被忽略.现在让我们考虑另一种类型的本体:医院医疗设备购买本体.这个从申请购买医疗设备到该设备到达,并在医院的财产清单上登记注册的过程,在O ORA 中可以表示为如下本体:对象:角色(r o le ): (1)申请者,(2)医院领导,(3)会计师,(4)投标者,(5)评价者,现场数据元素(data ):(6)购买设备的预算报告,源数据元素(data ):(7)医院的现金帐务,(8)医院本年度预算,数据分析元素(ro le ):(9)配置优化器,—1013—陆汝钤等:面向本体的需求分析支持型元素(data ):(10)设备生产者企业清单,(11)医疗设备价格清单,输入数据(data ):(12)申请报告,(13)签字批复,收到数据(data ):(14)销售者标书,输出数据(data ):(15)医疗设备,发送数据(data ):(16)宣布中标者名单,活动(a ct ivity ):(17)数据录入,(18)设备优化.工作流:(a )输入: RP ({},(1),(17),{(12)}).(b)传输:T r an ((1),{(12)},{(9)}).(c )产生:M P ({(12)},(9),{(11)},(18),{(6)}).(d )传输:T r an ((9),{(6)},{(1)}).(e )传输:T r an ((1),{(6),(7)},{(2)}).(f )总结:RP ({(6),(7)},(2),(17),{(13)}).上述第1个例子描述了数据源之间的数据流关系,第2个例子描述了数据处理过程中的工作流关系,这些都是O OR A 方法所关注的主要本体类型.我们称第1种本体为静态本体(static ontolo gy ),称第2种本体为动态本体(dynamic o ntolog y ).它们共同构成OO RA 本体簇的基础.4 OORA 方法4.1 面向最终用户和自动开发的策略一般地,软件需求分析由软件工程师来完成.但是,他们通常都不是领域专家,因此,要让他们理解应用领域的全部细节比较困难.另一方面,领域专家也不熟悉软件工程的原理,他们提供的需求定义常常不完全,并且经常要作变更.由于缺少共同语言,这两类人之间的合作都不很成功.结果是导致基于这种需求的软件不能付诸实践.如果我们能开发出一种让软件工程师和最终用户都可以接受的语言,那么它将在消除这两类人之间的通信障碍方面起到重要作用.更进一步地,如果我们能找到一种可以使这种语言可执行的方法,比如,有一种方法如果能够把用这种语言写出来的任何代码转换成一个可执行的信息系统,那么应用开发的过程几乎可以自动化.这种自动方法实现的关键是开发出一个领域知识库,它支持把上面提到的定义转换成一个可以运行的信息系统.O O RA 就是基于这个观点提出来的,它不仅面向软件工程师,而且还面向最终用户.4.2 OORA 方法的主要步骤基于上述总体策略,OO RA 分4个阶段完成.第1阶段.用一种类自然语言BI DL (business info rmat ion descr iptio n lang uag e)描述企业事务.第2阶段.确认隐含在BI DL 文本中的本体和对象.第3阶段.将这些本体和对象转换成另一种语言Ononet (ontolo gy and object -or iented netw or k),得到用O no net 书写的需求预定义.第4阶段.在采用Ono net 作为知识表示形式的领域本体知识库中搜索相关的知识,并和前面的需求预定义合并,得到完整的需求定义.注意,完整性和一致性检查在O ORA 中没有形成一个分立的阶段,这是因为:(1)在开发/维护/演化阶段,领域本体知识库的一致性和完整性已经得到了保证;(2)合并知识的完整性和一致性检查包含在合并过程中.4.3 BIDL 语言BI DL 是一种类自然语言.先解释一下类自然语言的概念,这种语言有3个主要特征.(1)它非常接近于自—1014—J our nal of S of tw are 软件学报 2000,11(8)然语言,因此可以将它看作是中文自然语言的一个子集;(2)它不包含软件工程学和软件技术的术语,所以领域专家们可以很容易地用它来描述他们的应用知识;(3)它是一种可被编译器分析和理解的形式语言.以下是BIDL 语言的一个简要介绍.每个BIDL 程序描述一个具体应用的情况,它被组织成如下7段:(1)企业的总体特性,(2)企业要处理的任务,(3)企业内外部的职权范围,(4)和企业相关的外部信息,(5)企业的信息结构,(6)企业的决策策略,(7)企业的背景和统计数据.下面,我们以“地方税务局”信息管理系统为例来示例BIDL 的特征:(1)地方税务局由市政府领导.(2)地方税务局的任务包括所得税管理、消费税管理、运输执照税管理.(3)地方税务局的领导负责整个地区的地方税务管理.(4)对每个税种,要维护一个全地区的收税数据库.(5)运输执照税数据库包括3个表:年度小汽车执照税务表、年度卡车执照税务表、年度自行车执照税务表.(6)每月,打印数据表给没有及时交税的公司,打印数据表给各交税的公司.(7)每迟交税1个月增加滞纳税款罚金百分之一.(8)整个地区有137家高科技公司,他们可以免税30%.BI DL 语句的语法规定了一套关键字(上面给出的例子中用黑体和仿宋体表示).关键字分为两级:系统级关键字和领域级关键字.前者用常规的黑体打印,而后者用仿宋体字.有关BIDL 语言的更详细的描述参见文献[9].4.4 本体和对象的识别需求的原始信息可以通过与专家对话或从现有文字材料中获取.修改作为需求分析起点的BIDL 文本就可以较容易地重写原始信息,利用类自然语言极大地简化了我们的工作.对BIDL 文本的面向本体分析可以用自顶向下或自底向上或两者混用的方法.自顶向下分析首先标识出本体集,再找出它们的构件——对象;自底向上分析首先标识的是对象,再根据本体的概念将它们分类;当两种方法混用时,确定对象(类)和本体是交互进行的.算法1.以“活动”为中心的自顶向下方法.(1)标识出领域最顶层的本体概念,即顶级本体;(2)标识出领域中所有的活动并构成一个集合,记为A ct ;(3)标识出A ct 集合中的所有父-子关系,并形成A ct 中的继承层次;(4)如果某个活动x 可以被分解成子活动,那么认为x 是一个本体并且把它的所有子活动加入到A ct 中;(5)如果x 不能被分解成子活动,那么认为x 是一个活动对象;(6)对A ct 中的每一个活动,确定活动的作用者;对A ct 中的每一个活动对象,确定活动操作的数据.例:(1)语句“x 由y 领导”蕴含:存在一个表示机构关系的静态本体,x 和y 都属于这个本体;(2)语句“x 的任务包括y ,z ,...”蕴含:存在一个数据处理类型的动态本体x ,同时蕴含:在y ,z ,...和x 之间存在着部分-整体关系;(3)语句“x 被分为y ,z ,...”蕴含:在x 和y ,z ,...之间存在着父-子关系;(4)如果实体y 出现在语句“x 的任务包括y ,z ,...”中,但是不存在语句“y 的任务包括u ,v ,...”,蕴含:y 是一个活动对象.—1015—陆汝钤等:面向本体的需求分析算法2.以“角色”为中心的自底向上方法.(1)标识出所有文本中提及的角色,构造一个R ol 集;(2)对Rol 集中的每一角色x ,找出所有由这个角色操作的活动,构造集合A ct (x );(3)act 是A ct (x )中的一个活动,如果act 不可分解,那么认为它是一个活动对象,否则是一个本体,将其所有子活动加入A ct (x )中;(4)如果A ct (x )中的几个活动可以组成一个更大的活动,那么为这些活动创建一个本体,加入A ct (x )中;(5)合并所有的活动集构成一个集合,记为A ct ;(6)标识出A ct 集合中的所有父-子关系,并形成A ct 的继承层次;(7)对A ct 中的每一个活动对象,确定活动操作的数据.4.5 Ononet 语言Ononet 语言是一种综合表示本体和对象的形式化语言.在这种语言中,对本体和对象分别给出了明确的定义.对象定义与面向对象语言中的对象定义基本一致,只是增加了指向它从属的本体的指针,这些指针在参数(p ar ameter )部分以如下形式给出定义:Par ameter -of (r 1:o n 1,r 2:on 2,...,r n :on n )这里,o n i 是对象从属的本体的名称,r i 是对象在相应本体中的作用.本体定义在名称、父类、属性、方法上与对象定义基本一致,但有两个主要的区别.(1)本体只包含指向它所联系的对象的指针,表示为如下形式:Par ameter -of (r 1:o b 1,r 2:ob 2,...,r n :ob n )这里,ob i 是本体联系的对象的名称,r i 是对象在这个本体中的作用.(2)Ononet 是一个本体网络,它描述了对象如何通过本体互相联系.Ononet 中关系的表示已在第2节给出,它的工作机制也已在第3节给出详细的讨论.5 结 论我们在90年代初就开始着手做PR OM I S(pro tot yping m anag ement info rmation systems )项目[9~12],其主要目的是在领域分析和领域模拟的基础上自动生成信息系统.在P RO M IS 中,我们主要依靠两种类型的知识,即软件工程知识和领域知识.除这两类知识外,类自然语言BID L 是该项目的一个主要特点,该语言不包含软件工程方面的专业术语,并且十分接近于自然语言表达方式,任何一个没有计算机编程经验的领域专家都可以用它来描述有关应用的具体信息.另一方面,用这种语言编写的程序(实际上是一个文本)可以像通常的计算机程序一样被理解和编译,整个过程得到上述两类知识的支持,编译的结果是一个可在Client /Serv er 环境下直接运行的信息系统.基于以上理由,我们称支持上述整个过程的方法为K ISSM E 方法(kno w ledge intensive softw ar e system manufacture eng ineering )[13].本文进一步提出结合面向对象和面向本体的技术.综合分析现有的需求分析方法,可以发现两种基本的模式:以控制流为中心的需求分析和以数据流为中心的需求分析.前者的典型代表是Jackson 方法,而面向对象方法恰恰是后者的代表.这两种方法到底孰优孰劣还没有定论.本文提出的O O RA 方法试图将上述两种方法结合到一个模式中,希望能综合利用这两种方法的优点.致谢 我们感谢杨芙清教授和她的青鸟软件工程组对PR OM IS 项目的有力支持.我们也感谢李师贤教授和他的工作小组与我们的成功合作.参考文献1 J acobson I,Chris ters on M ,Joss on P e t al .Object-Oriented Softw are Engineering:A Use Case Driven Approach.New York :Addis on-Wesley Pu blis hing Company,19922 Ru mbaugh J,Blah a M ,Premerlani W et al .Object-Orien ted M od elin g and Des ign.Eng lew ood C liffs ,NJ:Pr entice Hall,Inc.,1991—1016—J our nal of S of tw are 软件学报 2000,11(8)。