2. 软件需求 & 面向对象分析

这篇具有很好参考价值的文章主要介绍了2. 软件需求 & 面向对象分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1. 软件需求

1.1 需求分类

1.2 需求获取

1.3 需求分析

2. 面向对象分析(OOA)

2.1 统一建模语言 UML

2.2 用例模型

2.2.1 用例图的元素 

2.2.2 识别参与者

2.2.3 合并需求获得用例

2.2.4 细化用例描述

2.3 分析模型

2.3.1 定义概念类

2.3.2 确定类之间的关系

2.3.3 为类添加职责


1. 软件需求

在软件生命周期中需求分析是非常重要的⼀步,在进行需求分析前,我们需要先了解⼀下需求的分类以及如何获取需求。
1.1 需求分类
  1. 业务需求:指反映企业或客户对系统的目标要求,通常来自与企业内部。
  2. 用户需求:描述的是用户的具体目标,或用户要求系统必须能完成的任务。
  3. 系统需求:从系统角度来说明软件的需求,包括功能需求(系统必须实现的功能)、非功能需求(比如软件的质量,可维护性,效率等等)和设计约束(交付时的一些限制条件,比如必须采用国有自主知识产权的数据库,必须运行在某个操作系统下)等等。
1.2 需求获取
需求获取的方式主要有以下几种:
  • 用户访谈:最基本的方式。
  • 问卷调查:由于对用户进行逐一访谈比较耗时且用户时间不一定允许及时参与访谈,所以可以预先准备问卷调查表让用户填写,再根据结果进行小范围访谈,可以看做是对用户访谈的一种优化。
  • 采样:对特定群体进行采样,研究所选出的样本,得到有用信息。对于信息系统的开发,现在文档就是采样种群。
  • 情节串联板:通过一系统图片、幻灯片来进行讲解,说明系统应该如何运行。
1.3 需求分析

获取需求后,进行具体的需求分析工作,最终形成软件需求规格说明书做为向下⼀个阶段交付的成果。

工作内容有以下几点:
  1. 绘制系统上下文范围关系图:用于定义系统与系统外部实体间界限和接口的简单模型,为需求确定范围;
  2. 创建用户界面原型:可以通过快速开发工具开发一个原型或者通过幻灯片、Flash等演示工具制作一个演示原型,甚至可以通过纸笔画出一些关键的界面接口示意图,从而帮助用户更好的理解要解决的问题,理解系统;
  3. 分析需求的可行性:对获取到的需求进行成本、性能和技术实现方面的可行性研究,以及是否与其他的需求存在冲突,是否有对外部的依赖等;
  4. 确定需求的优先级:是制订迭代计划的一个重要的依据,可以使用满意和不满意指标进行说明。满意度表示当需求被实现时用户的满意程度,不满意度表示当需求未被实现时用户的不满意程度;
  5. 为需求建立模型:表现形式主要是图表加上少量的文字描述,图形化的描述使需求更加清晰、易懂。需求分析模型主要描述系统的数据、功能、用户界面和运行的外部行为,并不会涉及软件的具体实现细节,同时,为后续的软件设计提供了系统的表示视图;
  6. 创建数据字典:对系统用到的所有数据项和结构进行定义,以确保开发人员使用统一的数据定义。

2. 面向对象分析(OOA)

OOA的基本任务是运用面象对象方法,对问题域进行分拆和理解,正确认识事物间的关系,找
出描述问题域和系统功能的类和对象,定义它们的属性和职责,以及它们之间形成的各种联系。
2.1 统一建模语言 UML

UML(Unified Modeling Language)是一种易于表达、功能强大且普遍适用的建模语言,它的作用不限于支持OOA和OOD,还支持从需求分析开始的软件开发全过程。
UML的重要组成部分:

  • 事物:事物也称为建模元素,包括结构事物、行为事物、分级事物和注释事物,这些事物是UML模型中最基本的OO构造块;
  • 关系:UML用关系把各个事物结合在一起,主要的关系有: 依赖(dependency)、关联association)、泛化(generalization)、实现(realization);
  • :主要包括类图、对象图、构件图、组合结构图、用例图、顺序图、通信图、定时图、状态图、活动图、部署图、制品图、包图、交互概览图等。
2.2 用例模型

从用户的角度来看,他们并不想了解系统的内部结构和设计,他们关心的是系统所能提供的服务,把从用户那里获取的需求记录下来,进行合成与提炼,从而建立用例模型。在OOA方法中,构建用例模型一般需要经历以下阶段分别的,识别参与者、合并需求获得用例、细化用例描述和调整用例模型,其中前三个阶段是必需的。

2.2.1 用例图的元素 

用例是一种描述系统需求的方法,在用例图中,主要包括参与者用例通信关联三种元素:如下图所示。

2. 软件需求 & 面向对象分析,项目,需求分析

  • 参与者:参与者是指存在于系统外部并与系统进行交互的任何事物,既可以是使用系统的用户,也可以是其他外部系统和设备等:
  • 用例:指在系统中执行的动作,这些动作将生成参与者可见的结果。也就是说用例表示系统所提供的服务,它定义了系统是如何被参与者所使用,描述的是参与者为了使用系统提供的服务与使用发生的一段对话;
  • 通信关联:表示的是参与者和用例之间的关系,或者用例与用例之间的关系。箭头所指方是对话的被动接受者,箭尾所指方是对话的主动发起者,如果不想强调对话中的主动与被动关系,可以使用不带箭头的关系实线。
2.2.2 识别参与者

参与者是与系统交互的所有事物,不仅可以由人承担,还可以是其他系统和硬件设备,要注意的是,参与者一定在系统之外,不是系统的一部分。执行系统功能的参与者可能有多个,有主次之分,开发用例的主要目的是找到主要参与者。 

2.2.3 合并需求获得用例

将参与者都找到之后,接下来就要仔细检查参与者,为每个参与者确定用例
首先,要将获取到的需求分配给参与者,比如,普通用户可以进行注册,登录,编辑个人信息,发贴子,修改自己发的贴子,发站内信等等,管理员不仅可以进行普通用户的操作还可以进行版块管理等等。
其次,进行需求合并操作,并产生用例,比如对于帖子来说,可以相关的操作描述成具体的动作如:发布帖子,修改帖子,删除帖子,在这里合并为操作帖子。注:用例并不需要包括具体的操作流程(事件流),事件流将在细化用例描述中体现。
然后,将识别到的参与者和合并生成的用例通过用例图的形式表示出来,至此以获得用例模型的框架。如下图所示:

2. 软件需求 & 面向对象分析,项目,需求分析

2.2.4 细化用例描述

用例描述可以迭代完成,先对一些重要的用例编制相对细致的描述,对于那些不重要的用例可以留待以后再补充完成,用例描述通常包括用例名称、简要说明、事件流、非功能需求、前置和后置条件、扩展点、优先级

2.3 分析模型
2.3.1 定义概念类

概念类:模型中可以代表事物与概念的对象。

OOA的主要任务就是找到系统中的对象和类,这些类将反映到OOD中的软件类和OOP中具体的实现类。
发现类的方式有很多种,其中应用最广泛的是名词短语法,具体步骤如下:

  1. 阅读和理解需求文档或用例描述
  2. 筛选出名词或名词短语,建立初始类清单(候选类)
  3. 将候选类分为三类:分别是显而易见的类,明显无意义的类和不确定类别的类
  4. 舍弃明显无意义类别的类
  5. 讨论不确定类别的类,直到把他们合并或调整到其他两个类别。 
2.3.2 确定类之间的关系
当完成了类的寻找⼯作之后,就是理清这些类之间的关系,类之间的关系有:关联、依赖、泛
化、聚合、组合和实现,他们在UML中的表示方式如下:

2. 软件需求 & 面向对象分析,项目,需求分析

  • 关联关系:提供不同类的对象之间的结构关系,而不是类与类之间的关系,两个对象之间一般以动词连接,比如,用户-发布-帖子,可以用一个箭头连接,表示关联关系对象可以从一个端得到另一端对象,如果没有箭头,认为是一个双向关系或是一个未定义的关联;
  • 依赖关系:两个类A和 B,如果B变化可能会引起A的变化,则称类A依赖与B,比如,一个类是另一个类的数据成员,一个类是另一个类的某个操作的参数等;
  • 聚合关系:共享聚集关系通常简称为聚合关系,他表示了类之间整体与部分的关系,“部分”可以属于不同的“整体”,“部分”与“整体”的生命周期可以不同,比如,汽车和车轮一个汽有一多个轮子,汽车坏了,轮子还可以用,轮了坏了可以再换一个;
  • 组合关系:组合聚集关系通常简称为组合关系,他也表示了类之间整体与部分的关系,与聚合关系的区别在于,组合关系中的“部分”只能属于一个“整体”,“部分”与“整体”的生命周期相同,比如:一个公司有多个部门,他们之间就是组合关系,公司一旦倒闭,部分也就不存在了;
  • 实现关系:描述的是类和接口之间的关系,一个类可以实现接口中声明的方法;
  • 泛化关系:描述的是父类与子类之间的关系,继承关系是泛化关系的反关系,也就是说子类继承了父类,而父类是子类的泛化。 
2.3.3 为类添加职责

在找到概念类并且理清了他们之间的关系后,就可为类添加职责,主要包括两方面内容:

  • 类所维护的知识,即成员变量或属性
    • 注意要保持属性的简单性,即:只定义与系统责任和目标相关的属性,使用简单数据类型定义;不为类关联定义属性。
  • 类能够执行的行为,即成员方法或责任
    • 可以根据动词来判断,再进行筛选,与识别类的过程类似。

这个阶段只找出一些主要的、明显、与业务规则相关的部分,切忌在这个阶段不断地细化 。

2.3.4 建立交互图

多个对象的行为通常采用交互图来表示,UML中最常用的是顺序图,几乎可以用在任何系统的场景。
顺序图的基本元素有对象、参与者、生命线、激活框、消息和消息线,其中消息是顺序图的灵魂。以用户登录过程为例,使用顺序图描述如下:

2. 软件需求 & 面向对象分析,项目,需求分析

最终为每个API接口绘制顺序图,来指导开发工作。

1. 获取需求

2. 需求分析

3. 获取用例模型-细化用例模型

4. 获取概念类

5. 建立类与类之间的关系 

6. 定义类的属性和方法

7. 建立交互图

完成以上后,就是完成了一个 API 接口的分析工作,将以上各部分最终汇总起来,就形成了软件需求文档。 文章来源地址https://www.toymoban.com/news/detail-637350.html

到了这里,关于2. 软件需求 & 面向对象分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 软件开发:面向对象设计的七大原则!

    开闭原则、里氏代换原则、迪米特原则(最少知道原则)、单一职责原则、接口分隔原则、依赖倒置原则、组合/聚合复用原则。 开闭原则(The Open-Closed Principle ,OCP) 开闭原则:软件实体(模块,类,方法等)应该对扩展开放,对修改关闭。 概念理解 开闭原则是指在进行面

    2024年02月07日
    浏览(37)
  • 《面向对象软件工程》笔记——1-2章

    “学习不仅是一种必要,而且是一种愉快的活动。” - 尼尔·阿姆斯特朗 软件工程是一门以生产出没有错误、按时并且在预算内交付的满足客户需求的软件为目的的学科。这个定义非常广泛,所以能使用到从数学、计算机科学到管理学、心理学等诸多专业的学科。开发软件的

    2024年02月06日
    浏览(28)
  • 软件测试需求分析

    1.1、必要性 如果把测试活动比作软件生命周期,测试需求分析就相当于软件的需求规格说明,测试策略相当于软件的架构设计,测试用例相当于软件的详细设计,测试执行相当于软件的编码过程。所以整个测试活动的依据来源于测试需求,测试需求分析是整个测试活动环节必

    2023年04月26日
    浏览(39)
  • 《软件需求分析与设计》课程综合实践——需求规格说明书

    东莞理工学院 《软件需求分析与设计》课程综合实践 项目名称:《XX培训机构教学管理系统》 需求规格说明书 学院:计算机与网络安全学院 班级: 小组成员: 1 引言 1.1 编写目的 1.2 背景 1.3 定义 1.4 参考资料 2 任务概述 2.1 目标 2.2 用户的特点 2.3 假定和约束 3 需求规定 3

    2024年02月09日
    浏览(50)
  • 面向对象分析(实验三)

    一开始12关,最后一关我是按照要求画的,结果头歌系统一直不给过,最后时间到了,我画过了,和我一开始的是一样的,头歌系统说是效率分然后不给开,最后只有33.3分,对头歌很失望,这个系统有太多问题,无法接受这样的结果 类图关系 1.依赖(Dependence) 依赖关系的定

    2024年02月05日
    浏览(30)
  • 面向对象分析和设计

    软件工程学家Coad和Yourdon给出了一个定义: 面向对象(Object-Oriented)=对象(Object)+继承(Inheritance)+通信(Communication) 。如果一个软件系统是使用这样四个概念设计和实现的,则可以认为这个软件系统是面向对象的。一个面向对象的程序每一成分应是对象,计算是通过新对

    2024年02月21日
    浏览(25)
  • 面向对象分析与设计_类图

    判断题 类与对象之间的关系,可以理解为模板与具体实例之间的关系   T 类是现实世界中客观存在的事物或实体。 F 类是具有相同属性和服务的一组对象的集合 T 对象的属性都有值,类的属性没有值 T 类的可见性描述了其属性和操作是否对于其他类可见,从而确定是否可以被

    2024年02月07日
    浏览(26)
  • 软件测试需求分析的常用方法

            软件测试需求分析时,应要求产品人员对需求进行讲解,并使用相对应的方法进行科学分析,否则无法保障软件测试的完整性和科学性,从而造成在项目中后期Bug频出、风险增大等问题。         而常用的测试需求分析的方法:          1、功能分解方法

    2024年02月14日
    浏览(25)
  • 【WinForm】C#实现商场收银软件,从面向过程到面向对象,设计模式的应用

    实现商场收银系统从简单的面向过程到面向对象的演变。 最容易想到的: 单价*数量=总价 根据输入的单价和数量,直接计算,将结果显示在listbox控件中。 重置按钮可以清零。 1、运行效果 2、界面设计 3、代码 版本2在版本1的基础上增加了打折优惠。 1、运行效果 打折下拉框

    2024年02月09日
    浏览(37)
  • 软件工程——第12章面向对象实现知识点整理

    本专栏是博主个人笔记,主要目的是利用碎片化的时间来记忆软工知识点,特此声明! 1. 面向对象语言技术的特点?

    2024年02月15日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包