软件散记

最近在开发某服装企业的ERP系统,在此过程中的一些零散的感悟和经验以随笔的形式记录一下,并不断的加以完善和补充。

随笔包含设计、开发、管理、总结4类内容。

  • 设计:
  1. 产品设计中要尽可能多的搜集需求,对于有冲突的需求,可以使用软件配置中的开关来控制。例如仓库管理,有管批号和不管批号的区分,对此就要做整体的开关控制。
  2. 产品设计的一开始就应该考虑是否需要多语言的支持,后期调整的代价很大。
  3. 仓储管理中必须要用到存储区域的概念,以区分实体仓库与逻辑仓库。实体仓库中包含多个存储区域。物料的存储必定是存在存储区域中的。
  4. 对于审批、通知类型的需求可以用工作流来实现与控制,这样可以灵活的适用于客户不同的业务流程。
  5. 产品属性设计时,一定要考虑到基本包装与其他包装的转换,例如我们设置螺丝数量时一般会用个,但是实际情况是存储时多数用的是包,但是使用时还是会用个,因此要维护好这其中的关系很重要。
  • 开发:
  1. OO已经是个很古老的概念了,产生过很多的实现方式,但是哪种能更好的兼顾效率与业务需求,到现在还没定论,这次项目中使用的是NHibernate,实现方式是使用2种类DTO和Domain,DTO面向业务需求,Domain面向数据库实体,DTO和Domian通过代码工厂来转换。DTO拥有Domain的所有属性,但是可以自由扩展,这样就可以满足业务需求上的多样性,而Domain则和数据库实体保持一致,这就保证了Domain的数据能被正确保存到数据库中。
  2. 需要对金额格式、税率的计算方法等做公共类来统一实现,以应对将来的修改。
  3. 在与金额相关的财务数据中,最好加上本位币的金额与汇率。
  • 管理:
  1. 如何尽量准确评估工作量一直是项目管理中的难点,目前看来较为实用的方法是首先将软件功能点尽可能细化,最粗也得到页面级,一些较为复杂的后台处理逻辑,也应单独列出。
  2. 接下来是功能点的时间评估,这个目前只能按经验来评估,但是可以通过建立一个工作效率评估模型,将每次实际完成时间与功能点的类型以及开发者做关联,并且不断的改进,这样越到后期,预估时间越接近实际值。
  3. 软件的质量管理个人认为可以分为功能质量与代码质量2部分,功能质量是指开发出的软件是否是客户所要求的、是否与设计描述一致、用户体验以及UI是否友好。功能质量的控制主要靠测试人员的测试,项目经理与顾问也可参与其中。
  4. 代码质量一直以来是个容易被忽视的地方,我们经常会遇到有时为了赶时间,程序员会用糟糕但是省时的办法去实现逻辑,最典型的就是硬编码,这样的功能在测试时测不出来问题,但是日后的维护和运行会带来很大的麻烦,目前已知的控制办法就是代码review,可以采取小组成员互相review或技术主管抽样review的办法。
  5. 这里顺便讲一下关于程序员的激励与惩罚,以往遇到过例如工作单、BUG惩罚等制度,管理者希望通过直接的硬性指标管理来达到期望的目的,个人认为这种属于简单粗暴型管理,会导致团队的士气低迷、员工流动率大。软件行业是智力劳动的行业,人脑就是流水线,要想流水线运行流畅,需要在排除干扰上下功夫,简单粗暴的管理方式只能增加干扰,而不是真正解决问题,解决问题的办法的原则就是利用人性的规律,书面语叫心理学规律,例如我们希望程序员产生的bug越少越好,如果用惩罚来控制,哪么肯定会使项目经理、测试、开发人员产生冲突,如果这个时候没有一个强势的项目经理,最后整个团队将面临崩溃,如果我们换种做法,利用人的羞耻感,我们开个会,将严重的问题拿出来一起讨论一下,这样即使不用点名,那个范了错误的人也会感到羞耻,对于正常人来说下次是不会范同样的问题。

 

总结:

需求的多样性,导致从项目转成产品的路很坎坷,因此在做产品时可以考虑综合项目的经验,但是系统还是应该重新设计。避免陷入无休止的修改中。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值