系统分析与设计课程项目总结

  通过本次项目,初步了解了系统分析与设计的方法,深化了软件开发过程的理解。
分析与设计实际上是对项目的一个解决方案,而编码是对其的具体实现,在这次的项目中,我们针对客户的需求,采用迭代、循序渐进的方法进行软件开发。这样的敏捷开发,使得整个项目的难度不会太过繁杂,而且针对性强,易于开发和调试,而且也易于适应后期项目的变化。我们把整个项目分成几个小的部分,逐个开发测试,最终整合到了一起。在分析与设计的时候把工作主要分为了前端界面设计、后台服务器搭建、建立数据库、以及优化等几个方面。 
当初决定选教师评价这个方面,主要是考虑到学校的教师评价只能到学期末才进行,失去了实时性。开始时的需求分析主要是为了解决教师评价的实时性问题,提供一个同学们关于课程和老师的互动平台。分析时也结合了我们的技术水平,觉得这个项目是我们力所能及的。分析完需求和目标人群后,我们开始设计整个项目。由于涉及了多个对象(学生,老师,课程,学校等),所以设计时的主要目标是围绕着这些对象之间的关系。通过领域模型,系统顺序图等图标,理清了对象间的关系,数据库的设计也进而出来了。在分析与设计的过程中,关注的是方法与概念,目的是将现实的问题抽象成为软件需求的案例,数据则抽象成为一个结构,从而简化分析过程。分析与设计,更加接近现实,在情景案例的分析中,找出需求与重要的情景,从而为设计提供参考,而在设计过程中,必须考虑可行性,有效性以及成本,时间等因素。
编码阶段可以说是最繁琐的一个阶段了。编码注重现实情况,更加注重数据以及逻辑的正确性。编程的问题,是在分析与设计的基础之上,对软件需求,按照设计的方式,逐步用程序实现,即将现实问题转化成为计算机能够理解的逻辑语言。虽然说在设计阶段就理清了对象间的关系,再套上MVC模型,本应该很容易进行代码的编写的。实际上却刚好相反。由于我们使用的PHP来进行编码,这是一门我们都不熟悉的语言,里面有很多语法我们都不熟悉,所以使得整个编码过程略为艰难,几乎是边看PHP文档边编码的。
由此可见,分析主要是分析了需求,而设计则是在概念上设计出整个项目的总体结构。即使有了上面两样,编码的过程依然非常艰难,因为你可能会面到很多技术难题,而这些都是在分析和设计阶段都没有预见到的。

在正式编码前,我们对整个项目进行了详细的规划。但是,由于我们采用的ThinkPHP这个框架,大家对这个框架都不熟悉,所以实际上并没有完全按照计划进行。同时,在分工的时候,明确地将前台和后台分给了不同的人员来进行开发,却没有定义好前后台间交互的API,导致前台的页面和后台的控制逻辑并不能很好地契合起来,只能通过不断修改代码来磨合。
由于开始时我们对领域模型等图没有充分的重视,导致到了后面发现当初设计的模型和数据库已经不能满足开发需求了,只能不断修改数据库和添加对象。由此可见,开发早期领域模型的设计是非常重要的。有了一个正确的领域模型,我们就可以完全照着它来进行开发,而不用边开发边改需求和数据库,这会极大加快开发进度。同时,合理的分工也是非常重要的。对于某一部分内容,最好由多个人负责;这样当其中某一个人出现什么状况而停止开发时,对整个项目的开发进度也不会产生很大的影响。 
在项目计划中,本小组进行了非常详细的安排,并且画出了甘特图,从而为计划的实现提供了参考。但在执行的过程中,发现计划仍然出现一些没有预料到的问题。比如计划只是单线的流水作业,没有注重软件开发的并行性,因此拖长了软件开发的时间。在计划中,仍然只是注重个人的项目负责情况,没有注意到这需要团队的努力,结果项目交接的时候出现了沟通的问题,项目部分接口存在误解情况。再而,在项目计划中,留给软件测试的时间还是略短,尽管全队人员都采取了测试驱动开发的模式,降低了测试压力,但是还是出现了一些bug,最后才得以修正。因此,项目计划必须注重并行性,团队性,效率以及各阶段时间划分的合理性。
采取了RUP4+1以及MVC模式后,软件耦合性不仅大大降低,也为全队分配任务提供了依据。各个组员都能够按照设计模式不同层级的要求,实现全队分配的任务。在进行缓存优化的时候,设计模式给予了很大的帮助,通过设计模式,我们很快地找到了原来软件的接口,进而将缓存优化嵌入到原来的软件开发之中。因此,系统分析与设计,为软件扩展提供了很好的依据,设计模式,确实能够加快软件开发过程。
总之,通过这次项目,我理解到了软件开发不能够一个人进行工作,必须依托团队了力量,才能够开发出质量高,稳定性好的软件,这也体现了软件分析与设计在软件开发过程中上层的位置。

你可能感兴趣的:(OOAD,&&,UML)