从今年九月份开始需要参与到某项目中去。虽然之前自己搞过项目、开源软件、工作项目,但都不是太系统和深入。所以这次工程实践一定要总结、记录下有用的东西。
关于需求分析:
1. 必须明确用户的需求,而不是靠分析师拍脑袋决定系统应该怎么做,应该实现哪些功能。
2. 有的时候,尽管我们能够给出更合理的意见,可是客户可能需要的就是一个不合理的功能。这个不合理的功能,让他拥有更多的权限,更多的控制感,更多的暗箱操作空间。
3. 首先要明确当前系统(人工或者已有系统)的工作流程。然后了解目标系统对当前流程的复刻或者改进。
4. 对明确操作数据以及业务流程有用的资料:原系统数据库、业务报表、各种通知、申请、批复、报告表单、所有纸质文件、会议记录、国家和行业标准、业务培训手册、操作手册等。
5. 必须明确用户的计算机水平和业务人员水平。
6. 采集需求分析的过程和结果必须有相应的记录(声音、文字、图片、视频)。
7. 应该采用先整体后局部、先粗后细的方法分解系统架构层面的设计和实现图,完成系统功能框图。
8. 可使用模拟的办法来明确业务操作流程,这在理解顶层或者中层架构上比较有作用,底层细节部分可以使用报表补充。
9. 提取功能的过程可以围绕数据,弄清数据的增删改查(行政、架构层面)过程涉及的操作主体和流程。也可以围绕功能,弄清功能的主体(用户)、客体(功能)、关联数据(操作数据)、结果等。
关于沟通:
1. 采取正确和高效的沟通方法,站在客户角度想问题和说话,屏蔽掉程序员思维。
2. 有些细节不必在意,大的方向要搞清晰。
备忘:
本次项目完成之后,一定要再重新读《软件工程》、《人月神话》、《软件重构》三本书,对本次实践从架构、人力成本和代码上重新深入思考。