软件需求与分析
—综合案例分析建模(全过程考核占比 20%)(卷面 100 分)销售管理系统
销售管理系统主要包括销售订单子系统、销售出货子系统两部分组成。
一、销售订货子系统
销售订货管理系统是 ERP 的源头,如何管控销售订单下达、评审、跟进,不光是从软件上做约束管理,同时要从工作流程规定上做规范。
【开发目的】
规范公司订单下达、评审业务流程,提高客户订单准时交货率。
【适用范围】
适用于公司订单处理过程。
【术语定义】
无
【岗位职责】
4.1 业务部/市场部:负责《销售订单》的下达及评审跟进。
4.2 工程部:负责《销售订单》的要求确认评审,并负责订单变更要求的确认。
4.3 计划部:负责《销售订单》的交期评审,并确保订单按时间完成。
【需求内容】
5.1 业务部或市场部接到客户订单后,如果库存有,则直接开具《发货 单》经财务部审核后从仓库出货;如果没库存,针对公司销售策略,按以下要求执行:
5.1.1 国际业务部接收订单全部在系统生成《销售订单》。
5.1.2 国内市场部,每月 25 号与计划部组织会议,分析本月销售情况并讨论下月产品预测,形成《预测销售订单》并由 PMC(生产及物料管理)部录入云上 ERP 系统。如国内市场部接到固定客户订单,且订单数量大于 200PCS
(作为表示“个”、“ 件”、“ 台”等数目单位的复数计量单位)以上,由市场部业务员直接下达《销售订单》。
5.2 业务部业务员接到客户的订单,经严格审核相关内容后,将其在云上 ERP 系统中转化为内部的《销售订单》,同时订单的各项内容必须按以下要求进行描述。
5.2.1 样品鉴定会未召开或试产没有通过的新产品不允许下订单。
5.2.2 下订单之前,业务人员需对订单产品特殊要求,需提前与工程部做确认订货产品是否已完成 BOM(物料清单)制定。
5.2.3 任何订单的交期日期须满足《产品生产周期表》中的规定。
5.2.4 如有订单附页内容,需详细全面并作确认。
5.2.5 如有不能确认之需求(如包装材料需要得到客户的确认),要求初步规定确认日期。
5.3 《销售订单》制作后,需手工打印出来,并按以下顺序进行订单评审过程。
5.3.1 首先将《销售订单》通过云上 ERP 系统提交给工程部,工程部按订单要求进行评审动作,并制定订单 BOM 用料清单。
5.3.2 订单 BOM 用料清单完成后,并提交给计划部进行交期评审,注明:工程部评审的时间规定: 每日下订单有新产品(需完全重做 BOM)低于或等于 10 款,则要求一天内完成,超出一款则可顺延至次日完成。
5.3.3 计划部主管确认具体生产完工日期,并在系统中作交期回复,并最终核准《销售订单》,将订单返回业务部,并要求在一个工作日内完成。
5.3.4 业务部对《销售订单》评审好的交期进行确认后,如有异议,可找计划部经理进行协调沟通,并做最后结果确定,完成后系统审核《销售订单》,并纸质评审文档进行归档。
5.3.5 由《预测需求计划》形成的订单,不需要通过评审动作,在制定云上
ERP 制单时,销售类型为预测销售。
5.3.6 标准产品只要计划部与业务部评审交期签字即可,非标准产品订单评审需要采购、品质、工程参与并签字。
5.4 订单评审完成后,如有变更需按如下规定进行处理:
5.4.1 如客户提出交期或产品要求变更,需由业务部填写《销售订单变更及通知单》,然后交给计划部,由计划部组织重新评审工作。同时评审完成后,对于订单待确认的要求(如包装料)没有按确认时间提供,则同样需由业务部提出《订单变更申请通知》,计划部并按实际情况进行交期顺延。
5.4.2 如计划部无法按评审交期交货,需在交期的基础上提前三天填写《销售订单变更及通知单》,然后交给业务部,由业务部进行与客户沟通。
5.4.3 变更后的结果,需在云上 ERP 系统中将该订单通过变更动作,将内容更新!
5.5 为满足客户需求,业务部有急插单,但要求下达急插单,至少提前七个工作日内,并在下订单时注明“急插单”,原有订单交期应和客人商议顺延,所有调配须要以书面形式《销售订单变更及通知单》通知。
5.6 《销售订单》经计划部安排生产完成后,并办理了入库业务。业务员及时按客户销售合同的交货日期进行发货处理。
5.7 业务部如有非订单类需求,需要计划部安排处理,以《联络单》形式处理,联络单需经过业务部负责人审批通过。
5.8 业务部需与计划部每月召开一次订单交货需求分析,依公司销售策略需要,制定公司的销售需求预测,形成《预测需求计划》,作为下一阶段生产备料的准备工作。《预测需求计划》由计划计划员在系统转化成《销售订单》,并按预定计划时间进行生产安排。
5.9 每个月 5 号前,安排专人统计上一个月订单准时交付率,并提交给计划部,要求计划部针对不能准时交货的笔数进行分析,并提出对应的改善措施。
5.10 《产品生产周期表》每半年与计划部更新一次,并经过分管领导审批,由文控中心受控发行。
销售订货工作流程如下图所示:
二、销售发货管理子系统
销售发货是对销售订单的结案动作,如何管理销售发货。
1.0 【目的】
规范公司销售发货业务流程,控制出货风险,确保订单准时交付到客户手里。
2.0 【范围】
适用于公司发货过程控制。
3.0 【定义】无
4.0 【职责】
4.1 业务部: 负责《销售发货单》的制定及发货跟进。
4.2 财务部: 负责发货单审核以及环节中的报关、调派货柜工作。
4.3 仓库部: 负责《销售发货单》的备货和装柜工作,确保不出错货。
5.0 【内容】
5.1 业务部业务员按内部订单出货时间或接到客户出货需求,结合系统库存账情况,自己在云上 ERP 系统中制作《销售发货单》,经部门分管领导审核后提交给到财务部审批,《销售发货单》制作操作要求如下:
5.1.1 如果是按订单出货,需要参照订单生成,并选择销售订单号作为批号。
5.1.2 属库存型成品出货需选择以“YSMIS”批号,同时选择选择正确的产品的物料编号,品名规格,出货数量需填写正确,并要求在单价填写完整。
注:以“YSMIS”为批号的库存成品,是公用库存,非订单出货占用。
5.2 财务部按出货需求信息,根据客户信用或收款要求对发货单进行控 制,通过则在云上 ERP 系统审批《销售发货单》,审批后并打印出来,由业务员凭打印后的单据到仓库办理出货。
5.3 仓库成品仓接到《销售发货单》,组织仓管员进行备货和出货任务;成品仓管员依照《销售发货单》明细进行备货,并必须做到以下几点:
5.3.1 对于成批成品出货,首先确认整数箱,再确认尾数箱,且每批次成品只允许有一尾数箱。
5.3.2 对于散装成品出货,每一箱上的成品数量需作减数记录,并做好封箱
工作。
5.3.3 出货过程中需注意颜色差别,型号差别,箱包装差别,以及订单与库存单差别,新旧产品的差别。
5.4 备货成品经品质 OQC 确认后,由成品仓仓管员组织成品搬运,搬运时注意以下几点:
5.4.1 装货时,产品须按类别分先后进行。
5.4.2 每装完一款后,需作点件数确认工作。
5.4.3 有特殊必要时,须用磅称过数确保数据无误。
5.4.4 搬运过程中注意成品避免被撞坏或跌落等情况。
5.5 品管 OQC 在出货过程中,需作以下几个动作确认:
5.5.1 订单号是否相符?
5.5.2 出货成品是否与出货明细相符?
5.5.3 尾数箱是否核对?
5.5.4 成品搬运过程是否损伤?
5.6 仓管员出完货后,与业务员作交接确认动作,确认无误双方在《销售发货单》上签字,同时需由仓库主管开出《放行条》给到保安。
5.7 为便于成品仓管理,确保出货准确和准时,做出以下补充要求:
5.7.1 仓管员依《销售发货单》到达成品仓的时间,先到先出的原则,进行出货。
5.7.2 销售员不允许在成品仓换包装;
5.7.3 对于出很多散货的,销售员须提前一天,将《销售发货单》送达成品仓,由责任仓管员进行备货。
5.7.4 遇客户要求在非上班时间内安排出货,须由业务部提前知会仓库主管,以便整体工作安排。
6.0 【相关文件及运行记录】
6.1 本规定所涉及的相关文件
QP007《与顾客有关的过程控制程序》 LC-SA002-01《销售发货工作流程》
6.2 本规定所涉及的运行记录
FM-MS-SA001-01-A0《销售发货单》
7.0 附件:LC-SA002-01《销售发货工作流程》
根据上述需求,完成下列问题。
1、需求定义:(20 分)
(1) 根据上述描述,绘制系统工作上下范围图。(5 分)
(2) 绘制系统业务流程图。(15 分)
2、结构化建模案例分析:(20 分)
(1) 绘制系统的功能结构图。(10 分)
(2) 根据上述描述,绘制完整的数据流图。(10 分)
3、面向对象建模案例分析:(30 分)
(1) 绘制系统顶层用例图。(10 分)
(2) 绘制系统细化完整用例图。(10 分)
(3) 分析系统类模型,找出类之间的关系并画出类图。(10 分)
4、系统原型展示:根据你的类图,开发系统原型,并录制视频或撰写文档展示说明。(30 分)
(1) 根据类图,用源代码定义类的变量和方法名(具体的方法体不用写);(10 分)
// 1. 客户类
class Customer {
private String customerId;
private String customerName;
private String customerType; // "国际客户"、"国内客户"
private String creditLevel; // "A"、"B"、"C"、"D"
private String contactPerson;
private String phoneNumber;
public boolean checkCredit();
public List<SalesOrder> getHistoryOrders();
}
// 2. 销售订单类
class SalesOrder {
private String orderId;
private String customerId;
private Date orderDate;
private Date requiredDeliveryDate;
private Date confirmedDeliveryDate;
private String orderStatus; // "草稿"、"待评审"、"评审中"、"已确认"、"生产中"、"已完成"、"已取消"
private String orderType; // "国际订单"、"国内订单"、"预测订单"
private BigDecimal orderAmount;
private String salesType; // "订单销售"、"库存销售"
public void createOrder();
public void submitReview();
public void confirmOrder();
public void cancelOrder();
public BigDecimal calculateAmount();
}
// 3. 订单明细类
class OrderDetail {
private int lineNumber;
private String productId;
private int quantity;
private BigDecimal unitPrice;
private BigDecimal lineAmount;
public BigDecimal calculateLineAmount();
}
// 4. 订单评审类(抽象类)
abstract class OrderReview {
private String reviewId;
private String orderId;
private Date reviewDate;
private String reviewResult; // "通过"、"不通过"、"待定"
private String reviewType; // "工程评审"、"计划评审"、"联合评审"
private Date completionTime;
public abstract void startReview();
public abstract void submitReviewResult();
public abstract boolean checkCompletion();
}
// 5. 工程评审类
class EngineeringReview extends OrderReview {
private String bomStatus; // "待制定"、"制定中"、"已完成"
private boolean technicalFeasibility;
private String reviewComments;
private String reviewer;
public void reviewBOM();
public boolean confirmTechnicalFeasibility();
}
// 6. 计划评审类
class PlanningReview extends OrderReview {
private Date confirmedDeliveryDate;
private String productionPlanId;
private String reviewComments;
private String reviewer;
public void reviewDeliveryDate();
public void confirmProductionPlan();
}
// 7. 发货单类
class DeliveryOrder {
private String deliveryId;
private String orderId;
private Date deliveryDate;
private int deliveryQuantity;
private String batchNumber; // "YSMIS"或其他
private String deliveryStatus; // "待审核"、"已审核"、"备货中"、"已备货"、"已发货"、"已完成"
private String approvalStatus; // "待审批"、"已批准"、"已拒绝"
public void createDeliveryOrder();
public void submitForApproval();
public void confirmDelivery();
public void generateReleaseNote();
}
// 8. 产品类
class Product {
private String productId;
private String productName;
private String specification;
private String unit;
private BigDecimal standardPrice;
private int productionCycle;
private String productType; // "标准产品"、"非标产品"
private String sampleStatus; // "未测试"、"测试中"、"已通过"、"未通过"
public boolean checkSampleStatus();
public int getProductionCycle();
}
// 9. 物料清单类
class BOM {
private String bomId;
private String productId;
private String version;
private Date effectiveDate;
private String creator;
private Date creationDate;
public void createBOM();
public void updateVersion();
public List<MaterialDetail> getMaterialDetails();
}
// 10. 物料明细类
class MaterialDetail {
private int lineNumber;
private String materialId;
private String materialName;
private BigDecimal usageQuantity;
private String unit;
}
// 11. 库存类
class Inventory {
private String productId;
private String batchNumber;
private int stockQuantity;
private int availableQuantity;
private String stockType; // "订单库存"、"公用库存"
public int checkStock();
public boolean lockStock();
public boolean deductStock();
}
// 12. 部门类
class Department {
private String departmentId;
private String departmentName;
private String departmentType; // "销售部"、"工程部"、"计划部"、"财务部"、"仓库部"、"品管部"
private String manager;
public List<Employee> getDepartmentEmployees();
}
// 13. 员工类
class Employee {
private String employeeId;
private String name;
private String position;
private String departmentId;
private String phoneNumber;
public boolean loginSystem();
public boolean performOperation(String operationType);
}
// 14. 订单变更类
class OrderChange {
private String changeId;
private String orderId;
private String changeType; // "客户变更"、"内部变更"、"急插单"
private String changeContent;
private String changeReason;
private Date applicationDate;
private String changeStatus; // "已申请"、"已批准"、"已执行"、"已拒绝"
public void applyChange();
public void approveChange();
public void executeChange();
}
// 15. 预测订单类
class ForecastOrder {
private String forecastId;
private String productId;
private int forecastQuantity;
private Date forecastMonth;
private BigDecimal confidenceLevel;
private String forecastType; // "月度预测"、"季度预测"、"年度预测"
public void generateForecast();
public void convertToActualOrder();
}
// 16. 财务审核类
class FinancialReview {
private String reviewId;
private String deliveryId;
private boolean reviewResult;
private String reviewComments;
private String reviewer;
private Date reviewDate;
public boolean reviewCredit();
public boolean reviewPayment();
}
// 17. 评审记录类(关联表)
class ReviewRecord {
private String recordId;
private String orderId;
private String departmentId;
private String employeeId;
private Date participationDate;
private String reviewRole; // "评审人"、"参与人"
public void recordParticipation();
public void updateReviewStatus();
}
// 18. 发货单明细类
class DeliveryDetail {
private int lineNumber;
private String productId;
private int deliveredQuantity;
private String batchNumber;
private boolean isTailBox; // 是否为尾数箱
public void checkQuantity();
public void markTailBox();
}
// 19. 库存操作记录类
class InventoryOperation {
private String operationId;
private String productId;
private String batchNumber;
private int quantity;
private String operationType; // "入库"、"出库"、"调拨"、"锁定"
private Date operationDate;
private String operator;
public void recordOperation();
public void generateOperationReport();
}
// 20. 生产周期表类
class ProductionCycleTable {
private String productId;
private int standardCycleDays;
private int minCycleDays;
private int maxCycleDays;
private Date effectiveDate;
private Date expiryDate;
private String approver;
private Date approvalDate;
public void updateCycleTable();
public boolean checkCycleValidity();
}
// 21. 联络单类
class ContactForm {
private String formId;
private String applicantDepartment;
private String content;
private String urgencyLevel; // "普通"、"紧急"、"特急"
private Date applicationDate;
private String approvalStatus;
private String approver;
public void createContactForm();
public void submitForApproval();
public void processForm();
}
// 22. 准时交付率统计类
class OnTimeDeliveryRate {
private String statisticId;
private Date statisticMonth;
private int totalOrders;
private int onTimeOrders;
private BigDecimal onTimeRate;
private List
public void calculateRate();
public void analyzeDelayedReasons();
public void generateImprovementPlan();
}
(2) 用 HTML 或者 JSP 等前端工具撰写页面原型,要求页面上元素完 整,界面风格统一,页面之间跳转流畅,可以完整表现主业务流程执行顺序。
(要求录制五分钟视频,按照你设计的业务流程图,添加解说语讲解系统原型设计)
页面模型评分标准:
(1) 类定义:要求注释变量用途和方法用途。(10 分)
(2) 页面美观:要求页面参考商务风格模板,页面元素完整。(5 分)
(3) 业务流程:通过页面之间跳转操作可以显示业务流程。(15 分)测试要求:
1、问题 1、2、3、4(1)要求在答题纸上完成,所有类图绘制要求在 VISIO 中完成。
2、问题 4(2)要求提交页面文档(HTML 等),直接在浏览器上可以打开,其中主页面一律命名为 Index.html.
3、将所有文件打包到一个文件夹中,提交压缩包文件,压缩包文件命名为学号姓名.rar,例如:20234161 滕艺哲.rar。