软件需求分析、程序设计思考

        需求分析是为确保做正确的软件;软件设计是为确保正确的做软件。两者相辅相成,才能做出一件成功的软件产品。

        需求分析从用户的使用场景来考虑,用户希望拿到的是一个个端到端完整的功能,这个功能可能涉及软件的多个模块,多个子系统甚至包括和外部其它软硬件系统的结合。分析需求是从软件的纵向维度考虑。姑且称之为软件的经。

       软件设计是从横向维度考虑,追求模块独立性,遵循MVC的思想,考虑的是软件的简洁性,健壮性,可维护性,可扩展性,代码的可读性。姑且称之为软件的纬。

       如果在软件开发过程中,分析了需求满足用户应用场景的功能后开始开发软件就会缺乏抽象,用户提出一种需求搞一个特殊处理,再提一个需求又弄另一个特殊处理,写代码像说口水话,想到哪到哪。搞出一大堆重复的垃圾代码。我们周围有很多人业务能力很强,沟通能力很强,代码写的很烂,写的比较随意;这部分人认为业务比技术主要,只要需求理解清楚了,代码怎么写都能实现。这种思想在做小型系统的开发时危害性不明显,代码构思差一些,代码写烂一些软件系统比较简单,花点时间还是能理清;开发大型系统,复杂系统时将面临灭顶之灾,软件将陷入开发几个版本就做不下去的情况,一般经过3~4个版本软件就要推到重来一次。俗话说傻瓜也能写出机器能读懂的代码,只有聪明的人才能写出人能读懂的代码。程序设计是个入门容易,精通难得话。
 
        如果纯粹从技术的角度来开发软件,没有弄清楚用户需要什么就开始编码,又将陷入另一个坑中。经验不足的程序很容易陷入到实现细节,只顾埋头做事却没有看清方向,导致做出的不是用户想要的,或者开发的功能非常难用,不会取得商业上的成功,也挫伤程序开发者积极性。 从用户的角度来看,他们不管软件如何实现,要求的是功能清晰好用,要求的是功能的完整性。

        软件开发是需要两条腿走路。某些人偏重业务方向向需求分析师发展;某些人喜欢纯技术性的东西喜欢专研软件结构向软件架构师发展。



你可能感兴趣的:(软件需求分析、程序设计思考)