中新计算机专业毕业设计指导
刘培强 整理(2007.7.17第一稿)
按:以下文章由kazi讲述,刘培强整理,在整理过程作了适当处理,为防止误解,必要处附有英文原文。也有适当的扩充,不当之处,请指教。
0 前言 软件就是个焦油坑
史前史中,没有别的场景比巨兽在焦油坑中垂死挣扎的场面更令人震撼。上帝见证着恐龙、猛犸象、剑齿虎在焦油中挣扎。它们挣扎得越是猛烈,焦油纠缠得越紧,没有任何猛兽足够强壮或具有足够的技巧,能够挣脱束缚,它们最后都沉到了坑底。大型软件就是个焦油坑,我们需要有足够的智慧和足够的方法对处理它。为了处理这个大焦油坑,我们需要团队合作,我们需要有力的、规范的设计方式、方法。
1关于分组 团结就是力量
团队合作(team work)对于软件开发来讲是必要的、必要的。在毕业设计中要锻炼学生的合作精神,当然要尽力团队中个别人的懒隋的滋生,一方面要告学生的自觉,另一方面的是要有相关的制度消除懒惰存在土壤,如要求学生在文档中详细确定的指出分工情况,如在项目计划(Project schedule)和程序计划(Program schedule)中指明分工情况。如下表所示:
Project schedule
Schedule | Estimate | Actual | Team Members |
Starting date | Dec 20th 2008 | Dec 22nd 2008 | Which one, which one… |
... | ... | ... | .. |
建议每四个学生一组,每组推举组长(team leader)一名,组长负责项目(project)的组织管理(the leader guide the whole team),组中的每一个成员,都要学会团队合做(…learn to how work with the team);每个项目组指导教师(supervisor)一名。项目的来源可以是指导教师给,也可以是学生商议后自定。
2主要参资料 要善于站在巨人的肩膀上
- CS316 Software Engineering (以下简称SE)
- CS220 Object Oriented Design (以下简称OOD)
- CS185 System Analysis and Design (以下简称SAD)
以上三本书是kazi再三强调的,在做毕业设计时要参考的资料。当然也可以参考相关的中文资料。
3关于调研 巧妇难做无米之炊
如果对项目所涉及的业务,如业务流程、业务数据等不熟悉,不可能做出一个好的软件来。要熟悉现实生活(real life)中要做的项目倒底是如何运转的。调研是熟悉业务的必要过程。学生对所做项目的内容可能不十分了解,因此,在做设计之前,应该做详细的调研。调研可以是直接的(direct)也可以是间接的(in direct),直接的包括与相关企业的相关工作人员的交谈(interview)或是用email与其交流,获取相关的业务流程。
4论文的结构 真把式是要会说(写)的
从整体看,新加坡要求写的论文,更象是软件的文档。
论文从整体上分三部分:
基本知识。(basic knowledge) 系统设计。(system guide) 用户指导手册。(user guider)
4.1基本知识 水有源,树有根
讲解项目来源、项目所用到的基本知识、所选开发环境(VB、C#或Java)的原因、优点等。
4.2系统设计 不要说外行话
写论文,切记不要讲外行话。什么是内行话呀?内行话就是指术语要标准确,图表要规范,遵循相应的标准。举个例子:先前的毕业生的论文中经常见到”物件导向”这个术语,这术语的英文原词是” Object Oriented”,在大陆一般译作”面向对象”,显然用物件导向是不恰当的。
系统设计中的分析(analysing)可以用两种范式来写:DFD(Data Flow Diagram)或UML(OOD)。
DFD参见SAD chapter 2,3,4。画DFD时注意从top level(顶层)到level 1, level 2的逐层的展开及对应。要注意其中的任务分解(break down),分解要恰当。下图是一个例子。
OOD:参见SAD chapter 4和OOD chapter 14。UML主要有12种图(diagram),分静态图和动态图两种。在做毕业设计时,主要用其中的四种就可以了,当然如果能用到其它的图进行描述更好了,前提是要用的恰当。四种主要的UML图:
- 类图,class diagram
- 序列图,Sequence diagram
- 用例图,Use case diagram
- 状态图,Stat diagram
4.3用户指导手册 再努力一下吧,系统毕竟是交给用户用的
用户(user)对你的系统一无所知,需要写用户指导手册帮助用户使用系统。
其中包括所需要的软硬件运和环境,如何安装、配置等
4.4其它 做软件真不是一件轻而易举的事
其它的还有
软件测试, 软件局限性,学生还不是一个职业(professional)软件开发人员,局限在所难免。
一个好的论文(good documentation),要图表清晰美观,格式良好。这不但可以给论文增色,关键是可以得到加分。同样的一篇论文内容如果是80分,那么图表清晰美观,格式良好的论文,可能最终分是85分。
另处,如果项目中用到了数据库,可以用简单的access或是oracle、SQL Server等大型数据库。在设计时要遵循范式要求,一般到第三范式就很好了(needed to develop)。可以用ER图表述数据库。
5项目/软件计划(schedule) 三思而后行
能不能不思而行,或是行后再思,当然可以,不果,N多前辈的实践告诉我们,不思而行的结果是:软件真得变成了焦油坑,你变了焦油坑中的恐龙、猛犸象、剑齿虎…,再回顾下前言吧。如果你要选择变成焦油坑中的恐龙、猛犸象、剑齿虎,是件比做出一个好的毕业设容易多的事。你自己选择啦。
论文中的计划有两个,一个是project schedule,一个是program schedule。
如何进行划分(divide)project schedule参见SE chapter 6、7。
如何进行划分(divide)program schedule参见SE 中对PERT Chart( Program Evaluation and Review Techniques chart)的讲解。
6最后的答辩 会做会说的才是真把式
会说不会做的是假把式,会做不会说的是哑把式,会做会说的才是真把式。在公司做事的人都真道,如何向上司report是很重要的事情。学生要学会如何表达自己的思想(how to present their topic),把自己做的东西清晰准确的表达出来。