作业四

B9E83DA8 / 2023-05-19 / 原文

这个作业属于哪个课程 2022软件代码开发技术
这个作业要求在哪里 作业四
这个作业的目标 1.改进需求
2.学习领域驱动的系统设计方法

需求规格说明

需求说明

一家公司提供服务出租,自身有一些员工,另外还有很多自由职业者作为服务商存在。公司目前使用Excel工作表来管理他们的客户(自由职业者),时间表等。Excel解决方案无法很好地进行扩展。它无法应对多客户使用的场景,也不提供安全和审计日志。因此他们决定构建一个新的基于Web的解决方案。以下是核心要求:

  • 搜索自由职业者分类的功能
  • 用于存储联系自由职业者的不同渠道的解决方案
  • 搜索项目分类的功能
  • 搜索客户分类的功能
  • 维护合同中自由职业者的时间表

系统特性

经分析,为满足所提出的需求,本系统应具备以下系统特性:

  • 管理与查询自由职业者信息
  • 管理与查询项目信息
  • 管理与查询客户信息
  • 管理自由职业者时间表
  • 管理自由职业者联系方式

管理与查询自由职业者信息

对自由职业者的信息进行管理与查询。

管理与查询项目信息

对项目的信息进行管理与查询。

管理与查询客户信息

对自由职业者的信息进行管理与查询。

管理自由职业者时间表

对合同中自由职业者的时间表信息进行管理。

管理自由职业者联系方式

对自由职业者的联系方式进行管理。

用例设计

结合先前的系统特性设计,本系统的用例设计如下图所示:

系统设计

结构分层

本系统的结构可分为四层,采用依赖倒置原则将各层结构如下图组合:

子领域划分

本系统可划分为以下子领域:

  • 客户子领域
  • 项目子领域
  • 自由职业者子领域

客户子领域

负责客户信息的管理与查找。

项目子领域

负责项目信息的管理。

自由职业者子领域

负责自由职业者的信息管理、查询,以及对自由职业者日程和联系方式的管理。

实体与值对象

本系统中主要实体有客户(Customer)、项目(Project)和自由职业者(Freelancer),主要的值对象则有日程(Schedule)和联系方式(Contact),它们的基本定义如下所示:

//实体
class Freelancer
{
    public string Id {get;}
    public string Name {get; set;}
    public string Types {get;}
    public List<Schedule> ScheduleTable {get;}
    public List<Contact> Contacts {get;}
    ...
}
public class Customer
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Type { get; set; }
    ...
}
class Project
{
    public string Id {get;}
    public string Name {get; set;}
    public string Info {get; set;}
    public string Type {get;}
    ...
}
//值对象
class Schedule
{
    public sting Info {get;}
    public Time StartTime {get;}
    public Time EndTime {get;}
}
class Contact
{
    public String Type {get;}
    public String Detail {get;}
}

任务计划

本系统的开发划分为六个模块,各个模块的开发计划如下表所示:

模块 优先级 依赖关系 开发时间
基础设施模块 最高 13h
搭建数据库框架 5h
配置网络协议 8h
客户系统模块 基础设施模块 13h
管理客户信息 7h
搜索客户分类 6h
自由工作者系统模块 基础设施模块 19h
管理自由工作者信息 7h
搜索自由工作者分类 6h
管理联系方式 6h
项目系统模块 基础设施模块
客户系统模块
11h
管理项目信息 6h
搜索项目分类 5h
时间表模块 基础设施模块
项目系统模块
自由工作者模块
8h
管理时间表 8h
客户界面模块 最低 客户系统模块
项目信息模块
自由工作者模块
27h
信息管理界面 4h
查询客户分类界面 5h
查询自由职业者分类界面 5h
查询项目分类界面 5h
日程表维护界面 8h

甘特图

测试计划

本系统的测试流程主要包含三个阶段,各阶段的测试计划如下表所示:

测试阶段 测试人员 用时
单元测试 对各个模块的功能进行测试 程序人员 30h
集成测试 集成各个模块后进行测试 测试人员 15h
系统测试 对系统进行总体性的测试 测试人员 15h