现代工程行业的发展与信息计算机的结合推动了行业的进一步发展,在公路与桥梁设计、施工、管理各阶段,相关人员运用有效的管理软件结合先进的技术手段对整个项目施工进行管理服务,才能进一步提高工程项目的管理效率,确保工程项目的顺利完成,并为企业成本控制和工程造价控制等工作提供辅助服务,大大提高了企业的内部控制力度,进而提升企业的综合实力,在确保企业高效高质完成工程项目的同时实现企业的经济效益和社会效益。
在公路设计中运用计算机辅助设计和在施工管理阶段运用计算机进行辅助管理已经在我国公路施工项目中得到普及,就其应用程序而言,当前运用较多的高级语言主要有VB、VFP、C语言、C++、Paacal、Delphi、Java等,其中VB(VisualBasic)提供了应用程序最简洁、最迅速的开发方法,从其特点及实践运用的反馈中可以明确,运用VB进行公路应用软件开发更具有便捷简单、功能强大和应用广泛的效果,更符合未来设计管理的需求,满足专业人员的个性化需求。
运用VB进行应用软件的开发在当前引起了行业专业人士的广泛注意,这也促使了路友软件开发团队及公司的不断兴起,其软件开发集软件开发、网站建设、维护、承接于一体,致力于中小型企业应用软件系统的开发,主要根据企业自身的经营管理制度进行独立软件开发,应用于企业的销售管理、人事管理、生产管理、仓库管理等,真正实现企业管理数据的准确、实时、统一以及操作简便。如路友公路计算V1.84应用软件,其具有公路施工测量、放样、评差、试验计算等一百多项功能,能够实现一次性计算道路各结构层加桩的各个计数数值,并集合了几十种平差项目计算方法,是公路桥梁工程师的得心软件。因此,在进行公路桥梁应用软件开发时应该确定好以下几点设计思路:(1)软件运行最初应当对软件进行详细介绍和操作简介,首页展示作者个人信息和联系方式。(2)软件必须设置产品产权保护,并利用计算机的CPU信息、硬件信息、软件运行中产生的随机信息、软件加密狗、用户名等因素来进行智能化用户权限辨别,让不同权限用户享有不同权限的功能,真正确保软件的保密和安全性能。(3)从首页进入软件主界面,主界面应显示出各子项功能模块。值得注意的一点是:不同权限用户进入主界面所显示的各子项功能模块与其享有权限一致,是不同的。(4)首页作为应用软件的广告界面,在设计时用充分从产品宣传和用户使用角度来进行考虑,通过确定好广告功能-用户登录窗口-机器与用户权限辨别的首页登录程序来完善软件的广告界面设计,如运用定时器来对首页显示进行秒控(一般为5~7s),让首页在显示软件开发信息之后自动进入到用户登录界面。在用户登录界面加入操作提示的链接,让初次操作的用户可以通过链接网页来获得初次使用的相关操作信息;再者考虑到之后软件会涉及到大量的数据信息,因此,在开发时要加入数据库整理功能,以便于后期操作的便利和准确。
软件用户注册界面设计要注意简洁性和安全性,并注重于在用户名注册时的权限辨析,以方便后期不同权限用户享有不同软件功能。因此,在实际设计中应该注意以下几个方面的设计:(1)为注册用户提供软件注册码(绑定手机获得验证码或受已注册用户邀请获得邀请码,或在申请注册码中获得注册码),注册用户获得有效注册码方可获得正式用户的使用功能。(2)注册用户的使用权限受到其资质和证件扫描件上传分析限制,因此,正式的用户需要上传其资质和证件扫描件,而非正式用户则以试用者的身份享用软件试用的相关功能。(3)在注册界面显示出当前用户名名称、机器码、软件开发者联系方式、退出软件等功能,更加便利用户的操作使用。
主操作页面设计作为整个设计中的重要组成部分,在设计中必须以用户的视觉来进行考虑,既要做到界面的简洁美观,又要保证界面的功能齐全且操作简单,比如常见的工具栏形式、树形列表形式、多种形式组合、菜单栏形式等进行功能模块的设计,让用户能够一眼明了,简单上手。比如之前提到的路友公路计算软件V1.84版本,其以上百中计算功能涵盖了公路桥梁施工测量、放样、平差、试验计算等多个领域的操作计算功能,并具备了Word文档Excel表格及自动打印输出功能,再不断完善出最新版本查看升级、盗版识别、数据库整理等功能,大大方便了公路桥梁工程师们的管理工作,提高了其工作效率。
操作界面主功能模块的设计方便了用户的选择和管理,各主功能模板下的子功能模块设计则是更加细致细化的功能分化和用户操作选择,因此在设计前期一定要明确用户对子功能模块的个性化、多元化需求,通过不断细化操作选择细节来完善用户的操作功能,让用户体验到实际运用的效果,比如进行道路平匝道时需要对其中桩、边桩坐标数据进行计算,结合其常用的15个计算要素来进行子模块细节设计,按照匝道在不同单元段上的不同计算方法来进行设计。
通过上述的开发方法叙述不难看出,公路与桥梁工程应用软件的使用方法首先显示的软件的广告界面,在显示5秒后自动进入主界面,用户可通过查看注册指导链接来获得注册操作方法,在上传相关证件后将进一步加强了对操作的保密和安全度,提高用户的使用操作权限。此外,软件开发应该添加用户自定义模块,让用户选择符合自己需求的功能模块,将更大限度满足用户的多元化需求和个性化需求。
本文对如何运用VB进行路友软件开发进行了简要论述,其涉及到的强大功能都将为后期进行施工管理系统开发、施工图设计系统开发、工程计量系统开发等提供重要的技术基础。
[1]吴会友.公路与桥梁工程应用程序的开发方法和技巧[J].黑龙江交通科技,2014(9):128-129.
《网站设计与制作》也是计算机各专业学生学习后续课程的基础,比如学习基于网络编程的动态网页设计技术,学生毕业后可从事网络软件的设计与开发,进行商务网站的设计与制作,同时也可以考取网页设计师、网络软件工程师等相关国家职业资格证书。开设该课程是复合我校关于“高素质、技能型人才”培养目标的需求的,通过该课程的教学,可以培养出一批优秀的、能够在一线工作岗位上从事网页设计与制作、网站规划、管理与维护工作的专业人才。基于该课程的主要工作岗位有:网站管理与维护人员、网页设计与编辑人员、网站策划人员及网页美工人员等。
学生如果要很好得完成网站制作,所需的的知识体系非常庞杂,其中包括网络基础知识,网页制作技术,平面设计和动画制作等基本要素。具体涉及到网页制作软件,图像处理软件,动画软件,数据库知识,脚本语言动态服务器编程技术等。教学内容比较多,知识点比较分散,而学时仅为48个学时,学习内容多而课时少。经过多年的教学活动的开展和经验总结后,我们总结出一套适合高职学生教学方法,那就是使用任务驱动式的教学方法。我们以前的教学设计思路是:讲授知识点设计任务监督学生完成验收,现在的教学设计思路是这样的:实际工作任务导向任务驱动相关知识讲授。老师在此教学思路中的角色:给学生布置一项工作(实际工作任务导向)将工作转变为一个任务(任务驱动)通过任务引出知识点(知识学习)。学生在此教学思路中的角色:通过老师的引导,理解相关任务要求,继而产生强烈的学习相关知识的兴趣,在下一步的知识学习中就能很好地学习,掌握了相关知识后,马上运用于实践,完成老师布置的任务。通过该课程的教学,使学生最终能够自主开发一个完整的网站,毕业后能够直接从事企事业单位网站的开发设计与管理维护等工作。
本课程性质是计算机系的基础必修课,教学对象是全系各专业的大一学生,因此教学内容定位于静态网页的制作,以Dreamweaver软件为主线,介绍静态网页设计和制作的基本技术,目前很多网页教材是基于网页三剑客的即Dreamweaver、photoshop和flash,然而当前课时条件和时间条件下,根本做不到三个软件都讲到位,事实上每个软件分开都可成为一门课程,而网页设计课程只能以网页制作软件Dreamweaver为主,其他软件为辅,并且其他软件制作的作品要与网页密切相关为了解决内容多学时少的矛盾,有利于教学的开展和培养学生的动手能力,为此我们对教学内容重新进行了重构,围绕Dreamweaver软件讲解网页制作的方法和技巧,只有在制作图像缩略图、切片、按钮、LOGO图片等时候,才辅助其他软件加工素材或者制作动画。教学内容分为9个模块:模块一、网页设计基础;模块二、页面的基本操作;模块三、简单网页的制作;模块四、网页的样式设计;模块五、实用HTML布局页面;模块六、实用DIV+CSS布局页面;模块七、制作多媒体页面;模块八、网页交互设计;模块九、网站的测试与管理。
软件测试是软件开发中的一个重要环节,国内软件开发与测试人员的比例严重失调,市场对软件测试人员的需求量很大。同时,软件测试作为新兴行业,发展前景好、空间大,薪酬待遇好;工作地点以北京、上海、广州等IT产业发达、环境好的一线城市为主。目前市场上急缺的就是初、中级软件测试工程师,这正是高职院校的人才培养目标。
兰州石化职业技术学院于2011年开办软件测试专业,目前第一批毕业生已经走向社会,进行顶岗实习,接受社会的检验。在专业建设的不断实践和探索中,如何做好、做强软件测试专业是我们一直思考的问题。
高职院校每个专业的建设都应充分依托区域经济发展,体现行业特色。甘肃省“十二五”规划明确指出:“十二五”期间,将以兰州、天水、平凉为核心,聚集优势资源,进一步扩大集成电路、新型元器件、软件等电子信息产品和产业规模,建设天水电子科技产业园、兰州软件产业园、西北云计算中心等园区,支持兰州市创建部级软件和信息技术服务业示范基地,争创中国软件名城[1]。面临巨大的市场机遇和挑战,软件测试专业如何进一步把握市场需求,明确专业定位,确定人才培养模式,细化人才培养方案,构建专业课程体系,进一步开发课程资源,落实教学团队和实训基地建设,是我们重点要解决的问题。
1)专业定位更加准确,人才培养目标具体化。进一步加强专业建设与社会需求的紧密接轨,深入企业调研,加强市场分析,按照软件测试工作过程所需的典型工作岗位提炼专业人才培养目标,将学生知识学习、技能提升、能力培养和素养形成融入整个教学过程,实现从学习者到工作者的角色转换,努力培养适应软件测试岗位的职业技能强、综合素质高、具有可持续发展能力的高素质技能型人才。
2)课程体系与岗位及岗位群紧密对接。加强对软件测试企业的岗位调研,紧密跟踪市场对本专业人才结构、规模和质量的需求变化,及时将本专业领域的新知识、新方法、新技术和新思想融入专业人才培养方案,对现有课程体系进行持续改进和优化整合。加大理论实践一体化课程、任务引领型课程在专业学习领域课程中的比重;根据课程特点,整合教学内容,构建“公共学习领域”、“专业学习领域”和“拓展学习领域”三大模块;进一步优化顶岗实习课程的设计,完善相关管理制度和实施办法;加强职业素质课程的针对性与应用性,加强所学知识与生活的联系,提高为专业服务的能力[2]。
3)充分开发课程资源。在建立完备的课程体系基础上,根据具体情况开发校本教材,丰富教材形态(包括课程标准、教材、教案、电子课件、在线学习课件、企事业案例、毕业实习案例、习题集、参考书等),建立具有明显职业教育特色的课程和教材体系。要打破传统的按照技术学科进行教材编写的模式,开发和推广与软件测试行业密切联系的综合性和案例式课程和教材。
4)加强软件测试专业实训基地建设。在充分发挥现有实训基地效能的基础上,深入其他同类院校和软件企业内部考察,了解市场用量最广的软件测试方法和新型的测试工具软件,学习其先进、高效的实训基地管理办法,与企业专家共同讨论符合高职学生特点的典型测试案例,探索校企互惠双赢、长效合作共建校内外实训基地的新思路。
5)优化软件测试专业人才培养方案。邀请企业专家、校内专家、项目组成员和学生代表共同讨论现有人才培养方案中存在的问题和不足,将前期的调研工作结果汇总、分析、提炼、筛选,结合新形式下的人才培养思路和学生特点,进一步优化专业人才培养方案中的各个环节,重新制定课程标准,探讨项目案例,细化教学过程,保证每一门课程开设的有效性和针对性。
1)突出专业建设的开放性。软件测试专业本着“高职教育、源于岗位、工学结合、融入企业”的理念,按照“专业知识+岗位技能+资格证书+职业素质”的培养标准,积极开展“产学结合”的办学模式,注重行业、企业参与专业人才培养方案的研讨和修订。把企业搬进校区,把课堂搬上工作岗位,把教和练更加紧密的结合在一起,变学生被动学习为主动学习,将专业知识理论教学和实践教学有机融合,将专业知识学习,岗位技能学习,资格证书培训,职业素质教育连成一体,形成 “工学交替,双螺旋上升”的人才培养模式[3]。
2)注重课程体系的完整性。通过与行业企业合作,针对毕业生可能面向的不同的潜在的就业岗位,如软件测试员、缺陷分析员、测试组长等,按照“分解岗位工作任务确定工作能力设置课程体系开发教学资源”的专业建设思路,构建“基于软件测试工作过程”的专业课程体系。
3)凸显课程设置的针对性。根据“倒推”理论,据岗设课,按照“岗位决定能力,能力决定课程”的主导思想,首先筛选软件测试行业的岗位和岗位群,以及社会认可度较高的职业资格证书;接下来获取每个职业岗位的能力要求、专业知识结构要求和职业素养要求;然后根据获取的岗位能力要求,设置岗位能力课程;根据专业知识结构要求,设置专业知识课程;根据职业素质要求,设置职业素质课程;根据职业技能取证要求,对应取证课程;最后,根据高技能测试人才的成长规律组合课程,并考虑各课程之间的衔接关系及专业教学资源的配置与均衡,我们对同一阶段的课程进行排序,形成软件测试专业课程体系的“倒推”链,即确定岗位及岗位群获取岗位能力据岗设课组合和序化课程形成专业课程体系[4]。
兰州石化职业技术学院地处西部欠发达地区,通过不断与沿海发达地区的软件企业深度合作,不断交流专业技术,聘请IT培训机构名师亲临指导,目前学院的软件测试专业已经成功探索出了一条适合自己发展的专业建设之路。但在IT市场新技术不断更新、飞速发展的严峻形势下,我们还需进一步解放思想,开拓创新,迎接新的挑战。
[2] 任泰明,宋贤钧.“专业+公司”的高职软件技术专业教学改革[J]. 计算机教育,2011(12):45-46.
笔者一直认为,计算机软件专业的核心就是两个复杂性和三种能力。两个复杂性是复杂的关系(包括复杂的数据结构、数据库及多模块之间的关系)和复杂的思路(包括算法思路和复杂系统的工作流程思路)。三种能力是编程构思能力(算法)、大程序的调试掌控能力和系统的构造能力。其中最根本的能力是编程构思能力(算法)。有了这个能力,其他能力都可通过有意识的培训很快得到。计算机软件专业知识更新快,新知识点层出不穷,但若把握了这个核心,所有新知识均为参考手册。
与其他专业不同,计算机专业的几门主要课程彼此连接非常紧密,孤立地学习和理解各门课程肯定达不到深度要求,但作为初学者,刚开始又不能不孤立地从最基本的概念学起。
为此,笔者借鉴计算机软件专业两种最基本的软件开发方式,提出软件专业教学的两大方式,即自下而上的教学法和自上而下的教学法。前者是从基本概念和基本原理(包括程序语言的基本句型)讲起,先孤立地应对各门课程,在此基础上逐步与其他课程关联起来。对此应多准备一些小例子,哪怕深度不够,能初步说明问题就行。此方法适合于初学者。后者指的是从综合构思一个较大的系统出发,从各门课程的关联和综合运用出发,自上而下,在关联的层面上,在结合复杂构思能力的层面上,达到深入透彻地掌握某门课程具体概念原理之目的。该方法必须始终围绕构思能力来进行,适合于高年级学生。
计算机专业有一种错误的认识,编程是一种低档次的工作,那是程序员的事,因而学生不重视语言学习和编程。事实上,一个软件最终的产品是程序代码,程序代码包含了系统的分析设计、数据结构、数据库、算法思路、编程技巧等全部信息,可以说,熟练掌控程序代码的能力再怎么强调都不过分。只有精通了一门语言,才能运用、培训和锻炼编程构思能力和大程序的调试掌控能力,并最终实现软件开发。通常,C语言是我国高校计算机专业普遍开设的课程,学生从大一开始学习。学习语言课最关键的是领会程序语言的思维方式,各种不同语言的思维方式都是相通的。C语言作为首选是有道理的,因为它的功能强大,并同时兼有高级语言和低级语言的优势,特别是C语言的句型和语法现象非常丰富,熟练地掌握了C语言,以后学其他语言就非常容易了[1]。
鉴于C语言是第一门语言课,从低年级开始学,故此课大抵按自下而上的方法教学,以讲解句型为主。特别重要的是,要让学生领会程序语言的思维方式,必须用心去体会,而不是死记硬背。教师应准备大量的小例子,结合例子讲解句型,并逐步加进较复杂一点的数据结构以及算法思路,从句型层面逐步提高到思路层面。愈快地进入到思路层面上,结合思路讲解句型的运用及其上下文关联,教学效率也就愈高[2]。始终将大量时间拘泥于句型是低效的。
C语言之后还要学其他语言课,此时的教学和学习方式就应与作为第一门语言课的C语言大不相同了。笔者的经验是,学生在熟练掌握C(含C++)语言,尤其是在透彻领会程序语言的思维方式,以及程序语言的几种句型类别之后,通过直接阅读专家所写的大型高质量程序源代码,是学习第二门计算机语言的最佳方式。当然,学生刚开始可能达不到这一水准,但以自上而下的教学方式作为原则是很重要的。下面以Java语言为例说明。
笔者教Java课的理念是:学生从大一开始学C语言,由于没有什么基础,当然应该从最简单的概念、语法、句型学起,而学Java的学生往往是大二或大三了,他们此时已掌握了程序的思维方式,具备一定的编程构思能力,具有数据结构、数据库、系统构造方面的知识技能,再从基本句型学起就是低效的。而且,作为一个大的开发平台,Java拥有的类和函数的数目大得惊人,课堂上不可能一一讲解。所谓“授人以鱼不如授人以渔”,笔者的方法是教学生如何读懂别人的程序,通过别人程序的总体功能及上下文来推敲理解Java类及其函数的功能及正确用法。即从大到小,由整体理解到推敲出小的细节,而不是相反,这样不仅小的句型掌握了,而且别人的编程技巧也学会了,综合构思能力也得到了锻炼和提高。让学生先掌握Java最基本的类和函数,能力具备后,他们就可用此方法自学掌握其他Java类和函数。在教学过程中,教师应注意锻炼和培养学生较大型程序的调试能力及读懂别人程序的能力,这会使学生在以后的工作中受益无穷。
在教学中,笔者针对开发中的重点难点训导学生,以利于学生以后的工作实战。软件开发有三个方面最难突破,首先是综合调试大软件的能力。一个大而复杂的软件,由多个小组开发出各个模块,每个小组都认为自己做得很好,集成调试时却问题百出,这时极少有人能掌控整个大软件,把它调试顺畅。再就是bug问题,有些bug非常难解决。然后是性能问题,主要是速度、内存消耗和容量问题。一些高手开发的成熟软件,往往在这些方面做得相当优美,但用户可能依然对性能不满意,要求显著改进。
教学目标的高低及正确与否对教学效率起着决定性作用。笔者希望学生学过Java后,对别人写的数万条以上语句的程序,不要任何文档及注释行,不作任何介绍,硬读源代码,就能将软件结构、数据结构、数据库、算法思路全部读通并推出来,而且时间很快,然后想怎么改就怎么改。这就要求学生在数据结构、编程思路方面的功力必须强大。再者,数据库、系统结构及其构思运用能力必须强大,否则不可能从系统的角度把握整个软件。另外,学生必须全面掌握Java本身的结构以及面向对象编程的思维逻辑、各种方法技巧,至于Java的句型细节,有了上述条件,根本不需花多大功夫,根据上下文推敲一下就足够了。
计算机算法不同于其他学科的最大特点是它需要一连串的思维,它们由许多关键点构成,这些关键点彼此依序而行,又动态关联。任何疏忽遗漏或一知半解都会导致整个思路的失败。这些正是复杂算法难于理解掌握的根本原因。解决算法问题,最需要的是复杂思路的构思能力,包括思维的多样性、巧妙性和深入性。其中,多样性体现的是想象能力,巧妙性是一种创造性思维,是一种天分,而深入性则是深深地沿一条思维脉络进行下去的能力。这种构思能力需要长时间艰辛的培训,最有效的方法是在头脑中一遍又一遍地回味他人的复杂思路,将他人的复杂思路印在脑海里,时间一长,自然会功力大增。
因此,算法教学的关键是首先让学生透彻理解和掌握较复杂的算法,然后才能使其将复杂的思路印在脑海里反复回味,以达到熟能生巧、触类旁通之效果。因此,教师在讲算法课之前,让学生先作预习是必要的过程。先对要学的算法有一个初步的理解,并带着问题听课,才能有好的效果。其次,抓住关键点实属必要。每个复杂的算法均有几个关键点,攻破了这几个关键点,算法也就迎刃而解了。笔者教学前先将算法分为易、较难和很难几个等次,因材施教。告诉学生要讲的算法属哪个等次,使他们心中有数。容易的可以较快完成。对难的,教师先逐一讲解关键点,然后让学生依据讲解自己看书,去理解这些关键点,然后再让学生就不理解的地方提问,教师就学生的提问作更具针对性的讲解。一般来说,经过这一过程,学生基本能理解这些关键点。接着让学生自己将这些关键点串起来,形成思路。最后让学生反复回味思路,并给出针对性的问题,让学生解答。经此过程,学生大都能很好地掌握要点。
以一般图搜索算法为例,算法从一个无向图的初始节点开始,寻找距该初始节点路径最短的目标节点以及最短路径[3](该算法为经典基础算法,一般算法教科书均可见到,这里不再赘述)。该算法有一定难度,无论是其思路技巧,还是其文字表述,均堪属经典。学生若能全面掌握此算法,即为进一步深入学习算法打下良好基础。
第二步,着重强调关键点。关键点一:对每一节点建立从父节点到爷节点等的祖先链,这一祖先链是动态变化的。要求学生理解祖先链,理解其为什么和如何动态变化。关键点二:OPEN节点和CLOSE节点的动态变化过程,必须清晰透彻地理解。OPEN表中已完成展开的节点放入CLOSE表中,此节点以后还有可能从CLOSE表中重回OPEN表中继续展开,且可能不断反复,为什么?
第四步,要求学生对还不够理解的地方提问。有学生问,既然OPEN表中节点完成展开后移到CLOSE表,以后又反复从CLOSE表移到OPEN表重新做展开,那程序何时能结束?显然这是没理解该算法逐步向最优解迭代的过程,每重复一次,到顶点的路径长度就优化一次,而这种优化不可能无限进行(反问学生“为什么”),最终OPEN表必然为空,程序终止。
对于软件开发人员自己学习算法,在功力尚不强大且又无老师讲解的情况下,在遵循上述步骤原则的基础上,最好先用几个小例子或较小规模的输入单步跟踪算法的计算步骤,反复回味整个思路,以达到清晰把握整个思路之目的。即使是功力强大者,这也是攻克复杂算法思路的有效途径。
在算法教学上,笔者注意结合科研上的难点,给学生以引导激励,鼓励学生大胆思索探讨。例如, Hamilton环为著名的NP难问题[5],让学生去解决这样的问题显然不切实际,但可以提到,以激励学生。笔者将此问题稍稍改了一下,题目如下。
将具有N个节点的无向连通图(最小度数为2,最大度数为3)的N个节点围成一个圈,我们称它为虚环,因为它可能包含很多断点。希望用多项式实践得到这个虚环。唯一的要求是:虚环里不能包含孤立节点(即某节点与自己两侧的节点都不相连)。
此问题难度不太大,但要完成它也非易事,需要学生具有较强的复杂思路的构思能力。
首先,我们确定软件工程学[7]课程的三大教学目标:一是掌握软件开发的过程、步骤、方法;二是对各学科知识的综合运用及加深协作;三是构思能力的培训(此点为核心)。
要使学生不能仅限于对课本概念和原理文字上的理解,而必须时时面临需要较复杂思路来解决的问题。因此,必须准备一些适合于课堂讲解的、既短小精悍又能说明问题的例子。
例一,大学自动排课系统。输入为:①资源。教室及其容量;每名老师及所能上的课。②每个班。人数及本学期上哪几门课;多少课时。输出为学生、教师以及教室管理员均能方便查询的排课结果。要求同课可合班,尽量少占教室。此系统看似不大,但相当复杂。若学生能在课堂上透彻接受此例子,则意味着显著的收获:①该例子对数据结构和算法知识起运用和强化的作用,如怎样优化使教室得到最充分的利用和最大的结余,做好此算法相当有难度。②该例子对数据库知识起运用和强化的作用。数据库表设计:为方便起见,可将上课时间作为一个实体,每天8节课,一周5天,共40节课,编号为1至40,可作主键使用。三个方案:①以班级加时间作主键,教室老师课程全部作属性,一个表即能容纳排课结果,另两个方案为两个表。让学生比较到底谁优,在什么条件下优以及为什么优。此外,还有手动调剂功能,人的权限与机器排课权限之争的问题、特殊课程和特殊教师的处理问题、教师课程的平衡问题等,都需要考虑。
例二,打手机的全过程分析设计。含市内、长途、漫游及交叉等多种情况。每个城市都有一个通信中心,市内用户的所有数据均存放在此通信中心,手机用户通过分散的基站与通信中心联系,各基站只起中转的作用,不存储数据,而城市间则通过通信中心互联。此例子相当能说明问题:①此例子让学生明白,系统构思与编程构思类似,关键是打通思路,而不是背概念、套框框。②使学生学会将系统构思与数据结构数据库的构思结合起来。③使学生明白用户层面的需求与系统分析员层面的需求有本质的不同。本例用户需求非常简单,就是打通手机。而系统分析员的需求分析则要复杂得多。
总之,软件工程课应运用自上而下的教学方法,准备几个像样的系统,从系统构思着手,让学生通过例子理解掌握软件工程各个章节的基本概念,达到综合运用、融会贯通之目的。
针对专业特点,笔者提出计算机软件专业教学的两大方法:自下而上法和自上而下法,并通过几门主要课程加以说明。在多年实践研究的基础上,给出了一些课教与学的关键点,既可供教学参考,亦可为软件开发人员培训提高功力之借鉴。
房产测绘的主要任务是利用测量技术测算房产面积,随着计算机制图技术在测绘领域应用的飞速发展,目前的房产测绘成图基本依赖于计算机制图技术完成。广东很早就采用计算机制图来生产房产平面图,时至今日积累了数量相当巨大的房产测绘电子版数据,这些数据是在不同的历史阶段形成的,缺乏统一的规范,数据格式也较混乱,大部分图形数据和测算表数据分别以独立的文件存放,二次利用不易,同时由于缺乏必要的管理系统,在房产转移登记的产权配图工作中这些既存的数据利用率很低。目前的配图工作主要还是依赖于纸介质档案,采用复印图纸、手工填写产籍调查表、手工画红线方式。这种方式工作效率低,而且容易出错。为提高工作效率,减少配图差错率,迫切需要构建一套有效的房产测绘数据管理系统,并将现有的数据整理进系统,以充分发挥房产测绘数据应有的功能。
经过多年的发展,计算机技术在房产测绘领域应用已经相当成熟,从早期的仅用于制图到利用计算机技术实现面积分摊计算的自动化,再到房产测绘综合管理都有成功案例,市场上有很多仅实现单一计算功能的软件,也有不少实现结合计算功能的综合管理功能的软件。目前实现房产测绘应用类的思路主要有如下几种:
(1)扩展原有以实现面积计算功能为主的软件,实现测绘数据应用功能。因为早期计算机技术在房产测绘领域的应用主要是为了解决房产测绘面积分摊计算自动化问题,发展到现在这类实现计算功能的软件发展已经很成熟了,随着数据的积累,管理功能的缺失带来的数据利用的问题越来越突出,所以很多软件都针对数据管理方面做了相应扩充。但这类软件大多是基于AutoCAD基础上二次开发,而AutoCAD软件自身对数据应用的支持就比较弱;其次这类软件对操作人员的水平要求也比较高,平面图打印功能也不够友好,所以在产权配图工作中的应用就显得比较不容易。
(2)基于原有的MIS系统,结合已有的管理系统的功能,扩充房产测绘数据应用功能,主要是扩充房产面积计算功能。但原有的很多MIS系统都是基于数据库下的文本系统,与图形结合不易,扩充后的系统房产制图方面功能显得稍弱,系统开发难度也比较大。
上述思路基本都着眼于优先解决面积计算功能,基本是以房屋具有共同分摊的栋为基本单元,而不是以户室即产权单元为基本单元。同时扩充的管理系统与原有的系统都是紧耦合的,独立性差,数据的互操作性较差,再有就是这些系统因为基本没有采用GIS与地籍系统进行结合,无法较好的实现基于GIS的各种查询和管理功能。为此,笔者在此提出一种基于GIS结合Web Service技术的房产测绘应用系统解决思路。以期能充分利用已有的和正在生产的房产测绘数据,同时又对现有系统的影响最小。
该思路的主要内容是:根据各个系统侧重点不同,将各个系统作为独立的子系统,将房产测绘管理相关的系统分为面积测算子系统、房产测绘流程管理子系统、房产测绘数据应用子系统,各子系统之间也以松散耦合方式联系,房产测绘应用系统与地籍系统,产权交易登记系统等MIS系统也以松散耦合方式联系,各系统以webservice方式对外提供自己的数据服务。以宗地-楼盘(栋)-户室(产权单元)为各个系统之间的联系,利用GIS数据实现房产测绘数据与地籍宗地数据和交易登记数据的挂接,实现图形数据与属性数据的图属互查,为整个房地产权籍管理提供完善可靠的地籍和房产测绘基础数据。
在测绘应用系统中,目前面积测算已经有很多成熟软件,大多基于AutoCAD二次开发,成果一般以文件形式存储。采用子系统方式,可以将面积测算部分当作独立的一个子系统,而将成果文件作为数据应用系统中的一个属性字段直接存储,当需要打开测算数据的时候,直接从系统中取出读入到测算软件中。采用这种方式可以在不改变现有的测算软件实现数据的集中式存储,作业人员不需熟悉新的软件操作;同时又可以避免将测绘应用系统绑定在一个平台上,使系统开发的选择具有极大的灵活性,测算软件的选择也具有极大的灵活性。
流程管理主要涉及面积测算和配图的业务流程管理,包括测算软件数据上载、下载、变更等的流程管理,与一般的业务审批型OA没有什么大的区别,既可以独立开发,也可以与测绘数据管理结合在一起开发,技术也很成熟,这里不再赘述。
数据管理是房产测绘管理的核心,为实现测绘数据的充分利用,这里要关注的是如何管理各户室单元的平面图。现有的很多系统是直接用测算软件的图形格式管理,但由于测算软件是以栋或整个项目作为一个文件对象存储,这样在需要打开一个户室单元平面图的时候需要打开整各项目或整栋楼的图形数据,找到需要的单元,采用这种方式带来的弊端是数据传输量大,在需要查阅户室平面图的时候需要依赖测算软件来打开,不容易避免误操作或者其他原因导致对整个图形文件的破坏。考虑到数据管理关注的是户室单元的信息,而且在面积测算经过审核提交后,变化的机率很小,因此笔者提出通过测算软件直接生成每个户室单元的既定内容和比例尺的户室平面图文件,在数据管理系统中直接存储平面图文件虽然带来一定程度的数据冗余,但带来的好处是显而易见的,首先数据利用更加容易,只打开需要的户室平面图而不打开其他的图形信息,其次在需要查阅平面图的时候也无需依赖测算软件来打开,最后是原有的数据整理也容易,只需利用原有的测算软件生成每个户室平面图即可,而无需改变原有的图形格式。平面图文件格式可以采用Adobe的PDF和微软的MDI格式,采用这两种格式是因为PDF和MDI格式都是以矢量形式存储图形,图形打印效果好,打开也容易。采用JPG或BMP的打印效果都比较差。另外PDF和MDI格式在指定了比例尺和纸张大小之后,打印的时候可以按照真实的比例打印。
测绘数据管理系统通过宗地代码与地籍宗地系统联系,通过楼盘代码与交易登记系统联系,这两个方面的联系都需要基于GIS技术才能实现图属互查功能。主要实现思路是:通过在测绘系统中存放宗地代码,即可查询到地籍宗地系统的相关宗地信息。在交易登记系统中存放宗地代码和楼盘代码,在交易登记系统中就可以查询到相关的宗地信息和测绘数据。测绘数据管理系统中其他方面文字属性的内容都是采用数据库管理方式实现,与普通的MIS系统没什么差别,这里不再赘述。
采用上述方式组成的系统具有极大的灵活性,能简化系统的部署,而且相互之间能有机联系。在未来,可以在测绘数据管理系统中增加三维图形等内容,就能实现对真实楼盘的三维模拟,使管理更加直观。 参考文献
《自由软件》的提法对于计算机用户来说并不是什么新鲜事。而自由软件的概念、自由软件的思想、自由软件的情怀、自由软件的意义、自由软件的范围,特别是开发应用自由软件的观念,或许不同的人有各自的理解,甚至有很大的差异。
笔者自诩是水利水电工程地质计算机自由软件的倡导者,两年前即将“韦港字典”作为自由软件公开进行交流,从而带动了更多的自由软件的广泛交流。刊登于《工程地质计算机应用》1996年第3期的《赞自由软件》,阐明了笔者对自由软件的个人观点。本文“再赞”自由软件,其出发点仍在于希望通过自由软件的交流来促进工程地质软件的发展,为本专业计算机的普及和计算机应用水平的提高多探一条路。本刊不断刊出一些工程地质专业的自由软件介绍,相信探索这条路是有意义的,有希望的,也是符合工程地质专业特点的。
自由软件起源于美国。麻省理工学院的研究人员m.stallman不满于一些软件厂家的傲慢与狭隘,将自己开发的软件产品与他人共享,提出了自由软件的概念,1984年成立了“自由软件基金会”,全球千千万万软件专家纷纷响应,形成了大量高质量的自由软件。
自由软件并无权威性的严格定义,但被pc-talk的作者andrew fluegelman注册了freeware这一术语。洋人取的名字freeware,将它直译成中文就成了自由软件这一专用词,也有译成免费软件的。freeware这个词发明得实在太妙,简直就是妙不可言。十分妙哉非常妙哉相当妙哉的就是无论将freeware直译还是意译,她的中文词意都是十分清楚的。自由的意义在于此类软件可以自由拷贝自由使用自由交流;免费的含义就更为明白:不要钱,白送!显然,自由(免费)软件的字面意义与实际意义是绝对的名符其实!
中国软件行业协会中的自由软件分会,于1993年4月面向全国各行各业组建的自由软件联谊网,为国内的自由软件交流形成气候确立了合法身份。多年来,联谊网一直在《软件世界》杂志上刊登自由软件信息和介绍,并为全体网员免费拷贝自由软件。时至今日,联谊网组织在扩大,内涵在外延。1997年6月17日,中国软件行业协会国际自由软件应用研究发展分会正式宣告成立,在北京举行了隆重的成立大会。《计算机世界》报从1997年9月起,开辟了“自由软件系列谈”专栏。各类计算机报刊杂志几乎每期都刊有自由软件的下载网址。至此,自由软件在中国跃上了一个新台阶。
自由软件的思想是哪个阶级的?如此命题在今天看来确实荒唐,然!在荒唐年代7个音符里还有阶级斗争呢。自由软件是一种计算机软件,这种软件在功能与应用方面与其它性质的软件没有严格的本质区别和范围界定。而将自由软件的存在上升成为哲学概念,升华成为一种思想,一种理念,让哲学家思想家们去寻找理论依据,经受实践检验,则大有文章可做。同样,将自由软件的实践作为文化进行探讨,形成一种自由软件文化,照样可以让文人们有写不完的题材,做不完的文章。
回到现实中来,自由软件只不过也是计算机程序,怎么还有思想呢?别太复杂化神秘化悬虚化深沉化,其实, 她就是中国人再熟悉不过的“为人民服务”的思想!奉献的思想,这种思想不是社会主义的专利,其它主义也有,否则为什么freeware一词被资本主义的洋人注了册呢。
自由软件从诞生之日起就表现出一种旺盛的生命力,得到业界认可并迅速遍及全球,证实了她的存在价值和深层次的社会意义。
在芬兰赫尔辛基理工大学从事研究工作的科学家宫敏先生使用自由软件上了瘾,得出结论:自由软件优于商业软件!他在国外的体会是:鉴于自由软件的水平之高、应用面之广并有源代码,广泛提倡使用自由软件、学习自由软件、参与开发自由软件,对于方便用户使用、保护用户投资、提高软件应用与开发的综合水平、打破商业软件的垄断和控制都具有重大意义,是非常必要的。
自由软件有无商业意义,回答是肯定的。一个向公众提供好的自由软件的公司或企业,对于树立公司形象将超过铺天盖地的广告效应。自由软件的传播不必花广告费,自由拷贝转送过程中,就义务为软件作了免费广告。一夜暴富的netscape公司,很大程度上就是因为始终坚持免费发放自己开发的导航者浏览器(netscape navigator),在internet上占领先机,拥有一笔无法估量的财富--传遍网络的声誉,从而获得70%以上internet产品的市场份额。netscape公司在微软公司探险家浏览器(internet explorer)的穷追猛逼之下,宣布将新版本浏览器软件的源代码上载到internet主页让需要者免费下载。网上搜索引擎yahoo一直未改初衷,始终坚持免费向用户提供信息检索查询服务,每天吸引了上百万的网络来访者,大量商业广告为yahoo带来了滚滚财源。
自由软件具有满足表现欲的奇效,可以毫无约束地表现自己,就象internet上的个人主页一样,向世人尽情地展示自己的才华。个人主页没有访问者,那就是白占服务器的空间;自己编的程序不提供给他人用,等于白搭。计算机是年轻人的事业,年轻人具有极强的表现欲望,自由软件是电脑狂的最好表现方式,也是编程者个人价值的充分体现。
软件具有很强的时效性。操作系统在疯狂升级,用户的口味也在不断翻新, 老的程序在新操作系统上运行起来总是那么别扭。计算机编程语言层出不穷,编程工具功能日益强大,程序员的编程工作量也有所减轻,用比以往少许多的工作量编出的应用软件,其功能更强大速度更快捷。例如第五代函数型编程语言--j语言,与传统的编程语言相比,就先进多了。用basic编一个求平均值的计算程序需写8行代码,j语言仅用一行;用basic编写的求解二元一次线余行代码,j语言仅需两行。软件的时效性说明,今天的应用软件实在没有什么保存和收藏价值,更无增值意义。一种软件一旦成为明日黄花,也就意味着沦落到毫无价值无人问津的凄凉境地。不能形成商品的软件走自由软件之路实为明智之举,这也许是一些电脑程序狂随时将自己编的软件向社会无偿提供的原因之一。
自然,人们对自由软件最关心的是她的“免费”意义。免费似乎成了internet上最基本最流行的理念,许多计算机黑客的原始动机就是信息应该无偿获得,因此,黑客们(计算机高手)便在此原始动机的驱驶下肆无忌惮地猛闯各类计算机网络系统,让政府官员军方要员网络管理员们胆战心惊。无偿获得信息的原始动机导致了黑客的产生, 软件厂家的傲慢、狭隘、垄断和控制,创造了自由软件的辉煌。计算机用户们引吭高歌:我爱你!自由软件。
自由软件的文化内涵是丰富的,自由软件的自由情怀是浪漫的,自由软件的思想是先进的,自由软件的奉献情操是高尚的,自由软件的使用价值是公认的,自由软件的社会意义是深远的……。总之,自由软件是人类社会步入高级阶段的必然产物。
internet的全球化为自由软件的发展提供了绝妙的生存空间和交流通道,大约有40%的internet服务器所使用的软件是从网上免费获得的。internet上有大量的站点存放有成千上万种自由软件、共享软件(shareware)、和公共软件(public domain software),还有专门存放此类软件供人们下载的网址,如等等。一些此类软件还有适合多种软硬件平台的版本,如dos版、windows版、macintosh版和unix版。
“自由软件库”作为internet的一个重要组成部分,在国外已经非常普遍,大量著名的服务站点为自由软件的交流和发展起到了很好的推动作用。“中国自由软件库”1997年8月在国家经济信息网上正式开通, 网址:,存有80g容量的自由软件(97年8月公布),堪称是世界上规模最大的自由软件档案库之一。国内许多isp也在自己的网页上开辟有“自由软件”栏目,如瀛海威、东方网景等。时至今日,自由软件的交流也就不再仅限于磁盘拷贝这一业界古老的媒体传播形式了。
“免费”是internet的最大魅力,然而“免费”在internet上远不止仅限于自由软件!她还包括免费网址、免费主页、免费email、免费查询、免费教科书、免费服务、免费…。利用搜索引擎yahoo,在查询词条中输入“free,internet,stuff”,即可找到一些专门收集免费网上资源的网站,国内四通利方网站中的《网上免费服务大全》就是这样的一个网站。
水利水电工程地质专业的应用软件分散、标准化程度低,多为各单位或个人自主开发的自用软件,也有一些与高校或科研单位合作针对某一工程而开发的专门性软件。前者用户群有限,没有形成规模或事实标准,软件开发者和用户之间是单位与单位之间的转让关系(尽管也存在买卖关系,但算不上商品软件,原因请见参考文献1);后者由于针对性较强,从特殊到一般显然有些勉强,也没见到有多少是得以推广应用的。尽管在许多科技成果鉴定意见中都美言有推广价值,实际上正如北大方正集团的掌门人王选教授所言,谁要相信那些科研成果的鉴定意见,中国就是世界第一科技大国。多年来,水利水电系统的确也没有进行过规模性的投入和开发,更没有正规的开发商或软件组织来研究到底我们应该开发什么样的软件,上什么档次,以什么为标准,当然也就不具备象样的商业意义。
工程地质软件到底向何处去?这一长期困惑我们的疑难命题,随着勘测设计市场化进程的加快,冲突与矛盾将更加复杂化。新机制在落后的技术基础上运作,对于进入市场竞争是极为不利的,而技术的革命性进步又要面对尚在过渡中的管理机制的约束,这种进步更将步履维艰。专业软件的开发需要大量投入,谁来投入?谁来组织、研究、系统分析、总体设计?谁来实施?组建协作网的目的之一,是希望走开放联合之路,联合各单位共同投入,建立标准,高效通用。然而,协作网这样一种松散的专业技术性质的群众组织,不具备任何约束效力,完全是一种自愿合作的运作机制,能否完成这一历史使命,有待于实践去检验。
当前或者说近期我们应该为地质软件做些什么?请大家讨论,最好能提出一些可以操作的解决方案。所谓领导重视,国家支持,总院组织,联合开发等等大框架,不具备实际的操作意义。根据本系统的实际情况,两年前我们就提出走自由软件之路的倡议,希望各单位和地质计算机爱好者们将自己开发的不能形成商品的软件贡献出来广泛进行交流,得到了积极响应。成勘院任鸣春专家提供的“autocad图案生成器”工具,随“标准图例库”软件发至各网员单位,反映良好。最近又有长江勘测技术研究所的王秋明女士向协作网提供自由软件。衷心感谢他们。
为了我国的水利水电勘测事业,为了工程地质专业学科的发展,为了使本专业已经落后的计算机应用现状改观,希望我们的地质计算机专家,将你们的聪明才智贡献出来,服务于勘测事业,服务于社会。协作网将为本专业的自由软件交流提供广阔的天地。自由软件永存!
参考文献: 1 韦港,赞自由软件,《工程地质计算机应用》,1996年第3期CQ9电子平台 CQ9传奇





