造成软件复杂性的原因

1、问题域的复杂性,造成这种复杂性的主要原因,还是用户与开发者之间的“沟通问题”,用户常常对某个需求只存在一个模糊的概念,对具体要实现成一个什么样子没有特别明显的想法。并且由于用户与开发者思维的不一致,用户很难将他的意思很清晰的传达给开发者。通常这种情况下,我们开发者也只能借助些工具,例如:AxureRP图形界面工具,Word文档配合插图等方式,按照开发者的理解设计为原型系统,再同客户进行多次的探讨。开发过程中,一定要在系统的早期就尽可能的降低问题域,使系统逐渐明朗。开发后期,如果由于早期需求理解不透彻或者客户需求发生变化造成的问题,是一个很麻烦的事情。


2、管理开发过程中的困难性,企业级应用开发都是以团队的方式存在,通常团队人员完成的功能也是按照模块化进行划分,或者按照层次进行划分,每一个人完成的块都只是系统的一个相对较小的部分,可以这样说,没有一个人对整个系统是完全了解的。团队的配备上,理想中的情况是团队内部成员相互了解,技术能力都很高超。团队的人员越少越好,因为更多的成员需要花费更多的时间来维护需求的一致性。人越多往往沟通越复杂,也更加能以协调,特别是分居多地的这种更为困难。归根到底,主要的管理挑战还是来源于如何去维护设计的一致性和完整性。


3、软件随处可能出现的灵活性,前面第2点中提到的团队的情况,实际上该点也依赖于第2点来产生。在开发早期阶段,可能也制定了一系列的底层设计规则,但是由于开发者不是由一个人构成,那么对底层设计上又各有不同,出现了灵活性的体现。但正是这种灵活性的体现,可能会导致后期的很多问题,比如:维护……。


4、描述离散系统行为的问题,首先,要知道什么是“离散状态”,就我分析,所谓的“离散状态”就是说系统除了我们可预知的问题以外,还有很多外部不可预测的问题会导致系统的状态变得不稳定。所有的外部事件都有可能会影响系统内部状态的任何部分。当然,这也是为什么项目开发中一直强调多方面测试的原因。


你可能感兴趣的:(造成软件复杂性的原因)