UML符号表示,Usecases用于指出问题域中的功能要求,它绝不会将有关对象或类的信息提供为Data Flow Diagrams或实体关系图。但是,为什么我们在面向对象的分析和设计中使用Usecase Diagrams,即使Usecases不被视为面向对象。
答案 0 :(得分:4)
用例图表旨在阐明系统的主要功能,并强调将后者视为仅仅存在于唯一任务中的blackBox的视角;向演员提供Promised服务。
此时我们并不真正关心OOP,因为您可以明确地将用例图用于任何其他类型的分析。
UML 只是一组可视化工具,可以统一表达系统的不同视角。 如果您正在使用统一过程,它主张首先确定用例,然后将每个用例分解为协作实体(类),并通过利用类建立它们之间的静态协作图工具箱。
答案 1 :(得分:2)
面向对象是分析和设计方法论,而用例是需求方法论。 并注意核心开发工作流程:
如果我们使用UML来完成这些工作,我们可能会:
3。中的UML图表可以替换为DFD / ER
答案 2 :(得分:1)
Kirill Fakhroutdinov的在线书籍uml-diagrams.org将UML定义为
统一建模语言™( UML ®)是一种标准的可视化建模语言,旨在用于
- 建模业务和类似流程,
- 基于软件的系统的分析,设计和实施
UML是业务分析师,软件架构师和开发人员的通用语言,用于描述,指定,设计和记录现有或新的业务流程,软件系统工件的结构和行为....
因此,语言需要单词来描述流程,他们的行为者(代码及其用户,代码存在的原因,有什么好处,为什么有人应该为此付钱......)..
如果在您的设计中您不需要考虑用户及其需求(您已设置用户界面设计并且您只关注库代码),那么请不要打扰,使用UML来描述部件你正在处理和使用对你(和你的队友)自然而有用的图表
一些相关文章:
答案 3 :(得分:0)
如果良好的用例图主要用于与非技术人员进行交流,我想补充一点,在某些软件体系结构(如Clean Architecture)中,用例表示为编排实体的实际对象(它们是相等的)毕竟服务)。 例如。 给定用例“提交问题”,您可以为其创建以下定义:
提交问题用例
输入数据:
输出数据:
初级课程
验证输入数据
使用输入数据创建新的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
致谢。