业务领域建模Domain Modeling

♦ 1) Collect application domain information
– focus on the functional requirements – also consider other requirements and documents

最近计划是做一款高考成绩分析引擎。当用户输入了成绩、年份、户籍地等个人信息,以及相应的填报意向,系统能够根据情况对数据库内的数据进行匹配并智能分析,推荐合适的院校和专业给用户填报作为参考。再推送过程中,也会列出推荐院校的详细信息以及针对特定用户的优劣势,让用户能更全面地对院校加以理解。

♦ 2) Brainstorming
– listing important application domain concepts – listing their properties/attributes – listing their relationships to each other

计划的第一步是收集数据。一些用户的个人数据需要用户手动输入,因此采用了设计登录系统,并把个人信息绑定在账户上的方式进行。既保护了用户的个人隐私,系统可以对全部的个人数据加以分析。

院校信息、相应的高考分数线、专业录取分数线等公开信息已通过网络爬虫收集整理完毕。并对数据进行了预处理,存入了数据库中。

 

♦ 3) Classifying the domain concepts into:
– classes – attributes / attribute values – relationships
• association, inheritance, aggregation

下面设计相应类及之间的联系。首先是用户信息,登录用户信息以User实体类形式保存在数据库中。我们为User实体类建立了两个子类,一个是Admin子类,在登录时可获得管理员权限,能够对数据库数据进行更新。另一个是Student子类,保存考生的相关信息,以便进行数据库匹配。

数据库里的静态内容,主要以院校信息、专业信息和对应年份分数线为主。由于省份信息涉及内容较多(和用户、院校、分数线均有联系),因此单独建表:在数据库中以外键的方式建立院校=》城市=》省份之间的联系。专业信息则以Major实体类方式呈现分数线数据涉及的数据也很多。以学校分数线为例,和省份、年份、高校都有联系,因此以这三个ID作为主键建表。而专业分数线还需要专业信息,对此单独把UniversityMajor作为中间类保存院校的专业信息,再以此为主键之一对专业分数线建表。

用户便可以通过Search方法对自身成绩和数据库信息进行配对(实际开发中由SpringBoot实现,较为复杂不在此展开)。在此过程中还可以调用Filter过滤器,根据输入的意愿情况对配对信息进行筛选。

 

♦ 4) Document result using UML class diagram

UML类图如下,由于对实体类的相关操作都是由SpringBoot封装完成,实体类仅对外提供了getter/setter方法,由DAO层调用。故不在此展开说明具体的方法。

posted on 2019-11-22 19:47  SA19225354  阅读(157)  评论(0)    收藏  举报