职业道德论文
工程师职业道德课程报告
项目:二级项目——校园最优路径查询系统 项目时间:夏季学期
备注:组员徐锦鸿的心得感想在他一级项目的小组的论文中。
一、技术价值层面
在第一次小组会议上,我们就该系统的功能及其采用的数据结构进行了集中的讨论。当我们看到了这个项目的标题的时候,我们一下子就联想到了上学期学到了的算法和数据结构和算法,例如:哈密顿算法,A*算法,Dijkstra 算法等。但课本上的都是伪代码,我们要使用真正的程序语言来实现它,于是我们面临了第一个大问题——采用哪种程序语言及平台。由于小组成员所上的课程不统一,掌握的语言技术各不相同,有的熟悉JA V A ,有的熟悉C++,最后我们由在数据结构方面掌握的比较好的成员来决定采用哪一种语言,毕竟核心算法的编写需要比较扎实的数据结构。最后我们采用了C++语言,和在visual C++平台上编写。最后的结构也证明此抉择是正确的,首先由于VC++软件可视化程度高的特点,这方便了对该软件不熟悉的同学自学来实现用户界面;其次,核心算法比较容易的实现出来。
当我们把所有数据收集起来且进行采用了数组的方式进行存储的时候,我们遇到了新的大问题——之前我们的算法仅能处理数目相对较小的参数,遇到较多参数则出现反应很慢甚至无响应。为了解决搜索程序效率低的问题,我们上网查找了许多的相关资料和算法。有些算法得出的是近似解而有些算法得出的则是最优解。我们寻找到了一个与我们数据结构较为接近的算法并进行分析。这个算法的确跟教科书的不一样但算出来的结果是正确而高效的。从这个问题中,我们意识到了一个程序的核心还是在算法和方法上,如果一个效率低的算法应用在我们的搜索方法上,我们的程序可能实现不了全部的功能。我们意识到了,随着数据和程序功能的多样化,只学会教科书上的方法是不够用的。要使一个程序健壮而高效,则要掌握更多不同的算法和数据结构。
在最后,我们的程序实现了指导书上要求的基本功能,但不可否认,我们的系统是有缺陷的,我们在过程中做错了不少决策。第一、我们在数据结构选择的抉择是做得不够好。我们采用的是用数组来存储数据,这样使得程序的可维护性大大地减低,即如果加入新的结点时,我们不得不重新地去修改源代码。而且这样把C++面向对象程序的特点及优势完全忽略掉,因此,如果系统需要升级的话应该采用类的方式记录结点,并实现增加结点的功能,使得系统具有较强的可维护性。第二、我们在结果输出方式的抉择上做得不够好,点与点之间采用了直线进行勾勒,使得结果输出结果的方式不友好甚至是错误的。我们应该寻找并实现C++语言中比较的GUI 类或接口来使得路线符合真实道路的情况。
二、经济价值层面
我们小组的校园最优路径查询系统完成以后,虽然还存在不足但相信在修改或升级以后可以考虑以插件的方式放在校园网上供汕大师生使用。(我们的系统只是路径查询系统的雏形,真正地应用到网络上需要修正和升级)此外,如果以后需要完成与寻址系统相关的项目,我们可以重用此系统的搜索方法和界面,只需把数据进行导入则可以实现最优路径的查找功能。这样作为一个查找系统的模板,缩短了开发时间,实现了其经济价值。
我们的这个程序虽然是在老师布置了项目的背景下完成,但假设我们是承接了某个客户的项目而进行限时开发,我们小组则在较短的时间内实现了客户的需求。我们小组在项目成品验收的前一个星期已经把程序大概编程完毕,这得益于我们进度表的设计和我们小组的合作和努力。但是如果客户需要增加新的功能或者增加新的数据时,我们维护这个系统需要很多的时间。程序的可维护性减低了它的维护效率和经济效益。
三、道德价值层面
抄袭是学术界和工程界很常见的欺骗现象。我们在编写程序的时候也曾经想过直接修改别人已经写好的系统来完成这次任务,特别是在我们遇到困难和挫折的时候。抄袭的确可以让我们缩短了编写程序的时间,但系统并不属于我们原创的,我们不清楚其中的数据结构,不清楚其中的搜索算法,不清楚其中的输入输出,我们甚至不拥有属于我们自己的会议记录。例如当我们编出来的搜索程序处理不了那么多参数的时候,我们在网上找到了更有效率的算法,而且这个方法使用C++语言编写的,我们尝试直接套用了那个算法,得出来的结果是准确无误,而且运算效率较高。但最后,我们并没有直接套用而结束这个搜索方法的编写。我们通过讨论和分析,逐步地理解那个算法的原理。因为只有这样,我们才能真正地掌握这个方法,才能在验收老师的面前说出其原理,才能在以后维护的时候自行修改其中的代码。算法的确很多,在面向对象语言当中可以通过调用包或者引用类来实现别人已经写好的功能。但如果我们在这个小项目当中都直接使用他人的代码,这恐怕会失去我们做这个项目的意义。
如果直接用别人开发的成品进行修改,这无异于在一个黑箱子外面做一点修饰,而黑箱子里面的技术,恐怕我们只有放弃抄袭的念头,才能真正掌握得到。