即使Usecases不被视为面向对象,为什么我们在面向对象的分析和设计中使用UseCase图?

时间:2014-09-16 12:56:20

标签: oop object uml software-design

UML符号表示,Usecases用于指出问题域中的功能要求,它绝不会将有关对象或类的信息提供为Data Flow Diagrams或实体关系图。但是,为什么我们在面向对象的分析和设计中使用Usecase Diagrams,即使Usecases不被视为面向对象。

4 个答案:

答案 0 :(得分:4)

用例图表旨在阐明系统的主要功能,并强调将后者视为仅仅存在于唯一任务中的blackBox的视角;向演员提供Promised服务。

此时我们并不真正关心OOP,因为您可以明确地将用例图用于任何其他类型的分析。

UML 只是一组可视化工具,可以统一表达系统的不同视角。 如果您正在使用统一过程,它主张首先确定用例,然后将每个用例分解为协作实体(类),并通过利用类建立它们之间的静态协作图工具箱。

答案 1 :(得分:2)

面向对象是分析和设计方法论,而用例是需求方法论。 并注意核心开发工作流程:

  1. 商业建模
  2. 要求
  3. 分析
  4. 设计
  5. 如果我们使用UML来完成这些工作,我们可能会:

    1. 业务用例+业务序列图
    2. 系统用例+系统用例规范
    3. 分析类图+分析序列图+分析状态机图
    4. 代码,数据库......
    5. 3。中的UML图表可以替换为DFD / ER

答案 2 :(得分:1)

Kirill Fakhroutdinov的在线书籍uml-diagrams.org将UML定义为

  

统一建模语言™( UML ®)是一种标准的可视化建模语言,旨在用于

     
      
  • 建模业务和类似流程,
  •   
  • 基于软件的系统的分析,设计和实施
  •   
     

UML是业务分析师,软件架构师和开发人员的通用语言,用于描述,指定,设计和记录现有或新的业务流程,软件系统工件的结构和行为....

因此,语言需要单词来描述流程,他们的行为者(代码及其用户,代码存在的原因,有什么好处,为什么有人应该为此付钱......)..

如果在您的设计中您不需要考虑用户及其需求(您已设置用户界面设计并且您只关注库代码),那么请不要打扰,使用UML来描述部件你正在处理和使用对你(和你的队友)自然而有用的图表

一些相关文章:

答案 3 :(得分:0)

如果良好的用例图主要用于与非技术人员进行交流,我想补充一点,在某些软件体系结构(如Clean Architecture)中,用例表示为编排实体的实际对象(它们是相等的)毕竟服务)。 例如。 给定用例“提交问题”,您可以为其创建以下定义:

提交问题用例

输入数据:

  • issue_id
  • issue_description
  • 日期

输出数据:

  • 与确认相同的输入数据

初级课程

  • 验证输入数据

  • 使用输入数据创建新的Issue实例

  • 坚持新问题

  • 返回确认数据

正如您在初级课程中看到的那样,该用例与名为“问题”的实体对象之间甚至存在可检测的依赖关系。

此SubmitIssue用例类的python示例:

class SubmitIssue(UseCase):

    def __init__(issue_repo):
        self._repo = issue_repo

    def execute(self, input_data):
        #validate input data as needed
        #and apply branching logic if it is valid
        new_issue = Issue(input_data) #create new issue
        self._repo.add(new_issue) #persist new issue
        return self._generate_output_data(new_issue)

    @staticmethod
    def _generate_output_data(new_issue):
        #logic that returns the output data as specified
        #in the use case output data definition
        return output_data

致谢。

相关问题