今天阅读了《面向对象分析与设计》第一章复杂性,从这里我认识到,世界上的任何东西都是复杂的,从我们学习中就可以看出来:计算机的结构、动植物的结构、物质结构和社会机构的结构等等,这里边都蕴含了事物的复杂性。当然我们的软件也有复杂性,软件面临的问题域很复杂:软件的开发过程中常常会涉及到一些不可避免的复杂性,在其中我们可以发现数不清的竞争需求,甚至是相反的需求;其中也避免不了和用户沟通的困难,用户往往表达不完整。管理软件开发的困难性:软件开发团队的基本任务就是制造简单的假象,开发过程中我们会遇到很复杂的需求问题,这就需要我们将复杂的问题简单化;同时软件团队的协调与沟通同样是软件开发过程的困难性。软件中随处可见的灵活性:在软件这个行业,在高层软件开发过程中,需要构建一些基本的初级模块来直接调用,所以软件工程是一个劳动密集型产业。软件的复杂性就体现在这些方面:软件面临的问题域、管理软件开发的困难性和软件中随处可见的灵活性。
当然这些软件的复杂性是人类认识的一些限制因素,我们可以通过分解、抽象和层次结构来克服这一因素;复杂的系统可以从事务或处理过程角度来分析,采用面向对象的分解有一些令人感兴趣的理由。在这种方法中,将软件的功能可以看做是一个个对象,处理对象之间的运作,我们可以得到简化的步骤和清晰的思路,面向对象分析和设计的方法实现了面向对象分解。我们可以通过这些模型来阐述各个对象的目标,通过这样,我们软件的复杂性会降低很多,同时这样的分解与设计,方便日后的维护与管理,这也就是面向对象分析与设计的目的。