第9章面向对象分析设计的过程


9.1 面向对象分析设计的基本过程

OOA是面向对象软件工程方法的初始阶段,是对业务问题和系统功能进行调查和分析整理的过程。

SAP所处理的企业级应用业务可以说纷繁复杂,但大体上可以总结为几句话:1)人员驱动了系统运作;2)事件体现了业务过程;3)事物记录了业务结果;4)规则控制了业务过程。理清了上述问题,基本的分析结果也就理清了。
系统分析时,就是要理清业务系统的4种对象:1)人员角色;2)业务事件;3)业务事物;4)业务规则。
创建领域模型的第一步,是找到“人”,需要找出用户,定义用户的职责、权限,用户业务关系定义为类。
创建领域模型的第二步,是找到“事”,需要确定每个用户要做的具体事件,绘制业务用例图。
创建领域模型的第三步,是找到“物”,采用领域类图,找出记录了事物结果的业务事物实体。
创建领域模型的第四步,是找到“规则”,明确系统范围,哪些是采用系统实现的,哪些是线下实现的,有什么详细的业务规则,采用UML活动图或者非UML的业务流程图。

OOD是根据OOA的分析结果,设计出可实施的解决方案的过程。其主要作用是对OOA的分析结果做进一步规范化的整理,以逻辑化的形式表达出来,以便能够被下一阶段OOP所接受。

OOD主要采用实现类图来进行设计,实现类图由面向对象的系统设计师设计,包含详细的属性和方法,多用于可以直接指导编程的系统的架构描述,可以直接指导程序开发人员进行编码。

标准的面向对象设计可以使用UML图进行设计,UML图的类型很多,在使用中可以进行适当的裁剪,以下几种类型的图较为常用。
类图(Class diagram):静态图,是面向对象的分析设计中最重要的图,必不可少。
用例图(Use Case diagram):需求模型,是分析业务、开展面向对象分析的基础,尽量使用。
活动图(Activity diagram):辅助模型,描述业务的逻辑和对象的操作流程,实际工作中也可以使用一般的非UML的业务流程图来替代。
顺序图(Sequence diagram):辅助模型,表示一组对象之间的交互关系,可对类图起到补充作用。一般在交互情况较复杂时使用。
在实际工作中,有两类图形是必不可少的,具体如下。
1)详细的业务流程图(非UML图形)。
2)UML的类图(OOA的领域类图和OOD的实现类图)。
我们不会完全使用UML图和形式逻辑来表达业务与设计,文档中还是需要大量的语言描述。

9.2 设计思维在SAP程序实际中的应用

9.3 敏捷SCRUM在SAP开发中的应用

采用敏捷的Scrum方法论,其主要的目的是为了适应变化,降低沟通成本,降低试错成本。采用的方式是快速迭代,小步快跑。
即便在实际的ABAP开发中,也可能不完全适用Scrum的要求(如Scrum开发团队会集中于一个开发任务,而现实中往往是一个ABAP开发者要做好几个开发任务),我们也可以借鉴敏捷的开发理念:及早提交试用版本,多做迭代;多做沟通,始终让客户参与设计与开发进程;对可接受范围内的变化报以正面的态度。保证产出程序具有用户可接受的开发质量,从而保证客户、团队和ABAP开发者的共同利益

9.4基于面向对象的单元测试

单元测试(Unit Testing)又称为程序模块测试,是针对程序模块来进行正确性检验的测试工作。

如图9-35所示,该方法的“Method type”中出现了以下图标“Test Method(ABAP Unit)”,即测试方法。

图9-35 出现图标“Test Methode(ABAP Unit)”(SE24)
如图9-36所示,为测试方法TEST_GET_VALUE写入代码,在方法中创建被测试类的实例,然后调用被测试类的被测试方法GET_VALUE。
方法中调用SAP标准的测试类CL_AUNIT_ASS-ERT的方法ASSERT_EQUALS对预期值和实际值进行比对。预期值exp为600,实际值为被测试方法的返回结果lv_result。当发生值不一致的情况时,返回消息“result iswrong”。
TEST_GET_VALUE的代码如示例程序9.5所示。

图9-36 定义TEST_GET_VALUE方法的代码(SE24)

测试类Zcl_caculate_unit_test, 源代码根据help做了修改。增加了risk level 和 duration

如图9-37所示,编译完成后,在测试类的菜单中执行“Class”->“Run”->“Unit Tests”触发单元测试。

ABAP还可以在被测试类中,用菜单“Utilities”->“Test Class Generation”自动生成测试类的框架,但依然需要在测试类中手工写入具体的测试代码。

尤其是对ABAP开发,很多时候并不是对简单数值的计算和比较,而是需要对运行系统功能模块,或者查询数据库而得出的内表记录等进行比对。这就更增加了单元测试的难度,一般来说,如果为测试考虑的话,我们需要将代码分成更小的功能才方便进行单元测试,但一定要掌握划分的细度,以避免影响业务逻辑。

9.5分析实例: IoT物料网应用设计与开发

  • 19
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值