软件设计心得体会
我叫王磊,本科就读于太原科技大学,经过多次项目的实践,大三时有幸参加了**系统的设计和开发工作,团队由七个人构成,技术部的经理,项目经理,一个前台技术人员(对业务熟悉)和四个开发人员(包括我)构成,我简单讲一下我在项目设计和开发过程中的心得体会及常遇到的问题。
我们得到用户需求后,用户指定要用ORACLE数据库和WEBLOGIC服务器,编程语言与JAVA。我们先进行了数据库的设计,其中包括先建立数据字典,当然其中先建立CDM,在建立PDM。因为之前遇到一个项目要把数据库从SQLSERVER换成ORACLE,但是由于没有建CDM,结果导致工作很复杂,很棘手,CDM是概念数据模型,是数据库模型的抽象。所以建立CDM对以后的维护修改工作是有好处的。接下来设计了表的结构和表之间的关系,其中用到了我们学的数据库设计的几个范式。接下来设计了各个类的结构,包括内部成员和方法。由于是WEB系统。所以我们用成熟的MVC框架。
以及成熟流行的中间件Struts和Ibatis。这是考虑到我们的开发人员对这两个框架比较熟悉,而且它们的用户比较多,出现问题的话易在网上找到解决方法。由于使用的是流行的J2EE体系框架,所以概要设计会很成熟,比较简单。所以重点是数据库表结构的设计和程序内部逻辑和每个类的设计。
在设计过程中,我们设计的原则是低耦合,高内聚。这样做目的就是更好的适应变化,更好的重用和扩展。其中有很多软件设计原则,如依赖倒置,单一职责原则,面向接口和各种设计模式。耦合是不可避免的。它有不同的粒度,解耦到什么粒度为止,我认为应以模块的重用粒度为准。尽量解除重用模块或对象之间的耦合。这些一般程序员的水平可能达不到。我们在设计前都制定了相关的规范,例如一个方法内的代码行不能超过10行,这是为了实现单一原则。在程序员实现一个复杂的功能时,我们要一起设计其逻辑。这样有利于团队人员之间的沟通,提高代码利用率。
为了防止后期使用不同的数据库,我们在开始画了CDM图。在程序的数据库层使用了接口,这个接口提供给程序员的是增删改查功能。具体的实现交给它的实现类。这样做会很好实现数据库的替换。
我觉得设计首先得要有充分的经验,这样才会对常见的问题设计出好的程序来,可以未卜先知。因为有很多问题单靠想是想不到的。然后要让团队中的人员多交流,多沟通。有时我们会发现团队成员之间做了很多重复的工作。实现了同样的功能。这就是交流少,沟通少的原因,一般搞IT的人员思维好,但是不善于交流,所以在这方面我们要提前注意。还有就是类,成员,方法的命名问题,名字一定要能反映其功能,尽量避免汉语拼音。好的程序有时候直接看它的类名或者方法名就能看懂,没必要看它内部代码。再就是注释问题,功能复杂的类或者是方法一定要有注释,有时当时自己明白的东西一个礼拜后在回来看就看不懂了。所以一定要有注释。
智者千虑必有一失,计划赶不上变化,我想引入重构的概念,那就是经常整理自己的代码,结构,来使得我们的程序更健壮,更易读。因为一开始我们可能设计的不全面,或者是遇到了变化。这就可能造成了一些问题。但是我们是经常整体自己的代码。不光是形式上的整理使得易读,更要结构上的整体使得高内聚,低耦合。提高软件复用性。
当然上完软件工程专题课后,我发现以前的设计存在很多问题,和值得改进的地方,例如,我们缺乏文档。没有评审。没有质量保证人员。没有设计测试,导致在项目后期编写的程序有很多问题。
相关推荐
软件测试设计是软件开发过程中的关键环节,它旨在确保软件产品的质量、稳定性和可靠性。等价类划分是一种经典的黑盒测试方法,通过这种方法,测试人员能够有效地减少测试用例的数量,但仍然能覆盖大部分可能的输入...
王建云同学在学习过程中,深入体验了网页设计的魅力,同时也发现了自身的不足,以下是他总结的一些关键知识点。 首先,动手能力的发挥是网页设计学习的基础。初学者需要将理论知识转化为实践操作,这需要充分调动...
计算机网络课程设计心得体会主要涉及了计算机网络的基本概念、系统组成以及一些关键硬件设备的介绍。在信息时代,计算机网络已经成为日常生活中不可或缺的一部分,这门课程的学习对于理解和应用网络技术至关重要。 ...
软件开发心得体会是软件开发人员在开发过程中的经验总结和心得体会。本文从软件开发的需求分析、语言选择、界面设计、测试计划、项目管理、团队合作等多方面,分享了作者在开发视频和图像处理软件的经验。 一、软件...
本文通过作者在单片机课程设计中的体会和总结,阐述了自动化专业学生如何通过课程设计来提升自己的专业技能和团队协作能力。 首先,作者指出,单片机课程设计为自动化专业的学生提供了一个宝贵的实践平台。在理论...
软件工程课程设计心得体会个人总结,关于web BBS论坛开发,数据库网络应用程序
6. **项目文档**:心得体会的撰写,记录设计过程中的思考、遇到的问题及解决方法,这对提高问题解决能力至关重要。 在单片机课程设计过程中,我们不仅要关注技术细节,更要注重团队协作和项目管理。通过不断的试错...
系统设计心得体会 系统设计是电子商务系统的核心组成部分,对于电子商务系统的设计是必须会的。系统设计包括系统规划、系统分析和系统设计三部分内容。 一、系统规划内容包括: (1) 系统建设的背景、必要性和...
软件课程设计心得体会是指通过软件和硬件上的调试,掌握软件设计的要领和技巧的过程。软件设计是一个非常灵活的东西,它反映了解决问题的逻辑思维和创新潜力。在设计过程中,需要对系统的构造非常熟悉,掌握理论知识...
软件工程学习心得体会是软件工程学习的总结和体会,旨在总结软件工程学习的心得体会,希望对后来者有所补益。软件工程是从上个世纪60年代开始的,程序员都是天才,写程式就像写日记一样,但随着硬件的迅猛发展和软件...
本次培训让我深刻体会到了软件测试的全方位性质,它不仅仅局限于编写代码和寻找错误,更是一个涉及文档编写、问题追踪以及团队协作的复杂过程。 首先,软件并不仅仅是运行在计算机上的程序,它是一个包含各种组件和...
PLC 设计心得体会是指对 PLC 设计过程中所获得的心得体会和经验总结。本篇文章通过对 PLC 设计实践的描述,总结了 PLC 设计的要点和经验教训。 一、PLC 设计的基本概念 PLC(Programmable Logic Controller,...
**心得体会**:通过这个项目,学生可以深入理解单片机的工作原理,掌握硬件电路设计和编程技巧,提高问题解决能力和实际操作技能。同时,对于团队协作、文档编写也有一定锻炼。 **参考文献**:通常包含相关的教材、...
【 LingO 学习心得与数学建模应用】 LingO 是一款强大的数学建模软件,主要用于解决线性、非线性、整数优化问题。它以其数学化的语言和直观的建模方式著称,使得复杂的数学模型能够简洁地表达。在学习 LingO 的过程...
【课程设计心得感想体会】 课程设计作为教育体系中至关重要的一环,旨在将理论知识与实践相结合,让学生在动手操作中深化理解,提升问题解决能力。以下是对29篇课程设计心得的综合概述: 首先,课程设计往往伴随着...
在Java面向对象程序设计实验课的学习过程中,我深入体验了Java语言的强大特性和它在软件开发中的重要地位。Java作为一种面向对象的语言,它的核心概念包括抽象、封装、继承和多态,这些特性使得Java在软件工程中具有...
本文总结了软件工程实习的心得体会,包括软件工程的重要性、需求分析和可行性分析、设计模块、测试和调试等方面。 一、软件工程的重要性 软件工程是软件开发的核心部分,涉及到软件生命周期的各个阶段,从需求分析...
这篇心得体会主要围绕“Java设计模式”展开,通过链接到的博客文章(https://huangfeihome.iteye.com/blog/1197887),我们可以深入探讨这些模式以及它们在实际编程中的应用。 首先,设计模式是一种经过时间考验的...