面向对象分析(Object-Oriented Analysis,OOA)是软件工程中的一种重要方法,主要用于理解和表述现实世界中的系统。本章节主要讲解如何运用面向对象分析来构建一个银行网络系统的分析模型。
面向对象分析的目标是对实际系统进行建模,以明确需求并为后续的设计和实现提供基础。在银行网络系统ATM的案例中,分析模型需涵盖用户需求、系统功能以及并发访问等关键问题。
系统分析通常分为两步:陈述需求和建立对象模型。陈述需求阶段,分析人员需要与用户合作,确保理解并提炼出用户的真实需求。例如,银行网络系统需要支持人工出纳站、自动出纳机与分理处计算机之间的交互,处理账户事务,并保证并发访问的正确性。
建立对象模型是分析的下一步,主要包括标识对象、关联、属性和操作。通过识别问题域中的相关对象和类,如“银行网络”、“账户”、“事务”等。名词识别法是一种常用的方法,从问题陈述中找出名词作为候选类。然后,根据需求筛选出正确的类,排除冗余、无关或过于笼统的类。例如,“用户”和“顾客”可以合并为一个类,“摊派费用”可能不属于系统核心功能,可以剔除。
接下来,确定类的属性,将描述其他对象的名词转化为属性,如“帐户数据”、“事务数据”等。同时,识别那些具有独立性质和行为的操作,例如,虽然“拨号”在一般的电话模型中不是类,但在电话拨号系统中则可能成为一个独立的类。
在构建对象模型时,还需要考虑类与类之间的关联,这会影响系统的整体结构。关联可以是单向或双向的,还可以带有角色和多重性。例如,自动出纳机与分行计算机之间存在通信关联,而账户与事务之间可能存在多对多的关联。
此外,继承是组织和简化类的一个重要机制,它可以减少代码重复,提高代码的可维护性。同时,操作是类的行为,它们描述了对象可以执行的动作,如自动出纳机的取款操作。
在银行网络系统中,安全性、记录保管和费用分摊等都是重要的考虑因素,需要在分析模型中予以体现,以确保系统能正确处理这些问题。安全措施可能涉及到账户访问控制,记录保管可能涉及事务日志,而费用分摊则需要明确计算和分配规则。
面向对象分析通过识别和建模客观世界中的实体及其相互关系,帮助我们构建出清晰、精确的系统模型,为后续的设计和实现提供了坚实的基础。在这个银行网络系统的案例中,分析过程不仅涉及技术细节,还强调了需求理解、用户沟通以及问题域的专业知识。通过这样的分析,我们可以更好地理解和构建满足用户需求的高效、可靠的软件系统。