客户到底想要什么?

-------------需求分析

引子:
前段时间公司接到一个活,貌似还是比较好上手的。
但是有时候危险都是潜伏在不轻易间,翻来覆去十多个人项目折腾了快四个月了,
到现在还是一头雾水,页面画了改,改了重画,代码更是注释再注释,
没有确切的文档来证明我要做什么,我做了的只有我自己觉得是对的。
项目组成员整天加班加点,双休都搭进去了,叫苦不迭,不过幸好还给点加班费,
身心疲惫间给你一点点小回报……
可结果是项目经理都快不敢见客户了,见一次灰头灰脸的回来一次;
公司领导更是也在抱怨,都超出预计工时几倍了,这帮人是在干活吗?
问题虽然是多方面的,但关键问题是,
为什么客户老是在改来改去?
是客户的需求时刻在变?还是我们的产品根本就没有达到客户的期望?

我们是这样做的吗?
1:了解客户现有的业务开展流程!
客户在找我们谈做一个新系统之前,原有业务是如何开展的?
是纯手工作业,根本没有系统,只是操作员把一些数据记录在excel文档或其他一些临时纪录文件里;还是半自动,一部分业务有一个小型系统辅助完成;还是全自动,公司里面已经有一个比较完善的业务系统在运作,出于某种因素考虑,需要换新系统。当我们弄清楚了这些之后,如果客户以前就有一定的系统使用经验,他们不自然的就会有一些使用倾向,或者使用习惯,这对一后新系统的开发有很大帮助。接着应更进一步了解客户的各个部门之间的业务关系,每项业务的涉及人员是哪些?每项业务的流程是什么?对于一些大众的业务流程,要真实纪录客户自己的想法,别想当然认为是这样这样。

2:了解客户对现有业务流程的改进期望!
记住是现有的业务流程的期望,不是对新系统的期望。因为新系统啥都没有,都是缥缈的,说也是凭空想象。而现有业务,他们整天的工作就是依此为中心。让他们说说,肯定说起来很有自己的想法,往往也能真实的反映出业务要求。这个时候或许会遇到很多问题,领导之间期望不一致,上下级之间想法不同等等。领导的话要听,领导不满意,恐怕验收就会受到影响,进而影响到能不能拿到钱的问题。而实际系统操作者的话也非常重要,他用的顺不顺手,操作省不省心,直接影响他的工作情绪,进而对软件的评价就出来了,这软件真难用,xxx公司做的,费了那么长时间做出这样的东西等等,不小心就会影响到我公司的声誉。这且不谈。
最后从这些错综复杂的陈述,想法,建议中,找出我们真正需要的东西。

3:把客户当前的业务流程用他们易于理解的图形方式成稿,并加入改进期望。
以上3步纯粹从客户的业务角度出发,沟通交流中不涉及新系统的具体实现细节。这三步可能会来来回回重复数次,直到两方达成一致,形成定稿为止。

4:把上面的定稿抽象分析成模块,根据客户的软硬件环境,做成界面效果图,请客户确认。

而我们很多实际开发的时候,尤其是对旧系统进行升级的时候,1,2步往往草草而过,或者没有专人来进行细致的调研,整个项目的后期开发真的不可想象……

可以使用Java中的Collections.sort()方法进行排序,首先需要定义一个实体类来存储每个公司客户的信息,如下所示: ``` public class CompanyCustomer { private int id; private String name; private String level; private int salary; public CompanyCustomer(int id, String name, String level, int salary) { this.id = id; this.name = name; this.level = level; this.salary = salary; } public int getId() { return id; } public String getName() { return name; } public String getLevel() { return level; } public int getSalary() { return salary; } } ``` 然后在主方法中创建一个ArrayList来存储所有的公司客户信息,然后使用Collections.sort()方法进行排序,排序时需要传入一个Comparator,按照题目要求定义如下: ``` public class CustomerComparator implements Comparator<CompanyCustomer> { @Override public int compare(CompanyCustomer o1, CompanyCustomer o2) { if (!o1.getLevel().equals(o2.getLevel())) { return o2.getLevel().compareTo(o1.getLevel()); } else { return Integer.compare(o2.getSalary(), o1.getSalary()); } } } ``` 最后将排序后的信息输出到控制台即可,完整代码如下: ``` import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; public class Main { public static void main(String[] args) { ArrayList<CompanyCustomer> customers = new ArrayList<>(); customers.add(new CompanyCustomer(1, "张三", "A", 10000)); customers.add(new CompanyCustomer(2, "李四", "B", 15000)); customers.add(new CompanyCustomer(3, "王五", "C", 12000)); customers.add(new CompanyCustomer(4, "赵六", "D", 13000)); customers.add(new CompanyCustomer(5, "钱七", "E", 11000)); Collections.sort(customers, new CustomerComparator()); for (CompanyCustomer customer : customers) { System.out.println(customer.getId() + " " + customer.getName() + " " + customer.getLevel() + " " + customer.getSalary()); } } static class CompanyCustomer { private int id; private String name; private String level; private int salary; public CompanyCustomer(int id, String name, String level, int salary) { this.id = id; this.name = name; this.level = level; this.salary = salary; } public int getId() { return id; } public String getName() { return name; } public String getLevel() { return level; } public int getSalary() { return salary; } } static class CustomerComparator implements Comparator<CompanyCustomer> { @Override public int compare(CompanyCustomer o1, CompanyCustomer o2) { if (!o1.getLevel().equals(o2.getLevel())) { return o2.getLevel().compareTo(o1.getLevel()); } else { return Integer.compare(o2.getSalary(), o1.getSalary()); } } } } ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值