61阅读

软件工程最佳实践-史上最最佳软件开发实践指导

发布时间:2017-07-30 所属栏目:编程

一 : 史上最最佳软件开发实践指导

51fuMPmQoKL._SL500_SS500_-620x350.jpg

每过一段时间,我都能读到一些好东西,它是如此的深刻见解,写的如此的清晰,如此的条理,我必须把它收录进我的个人“史上最佳”圣物集里。最近,我新收录了一篇,非常棒的一篇叫做《Best Practices for Scientific Computing》的文章,我希望每个来读本文的读者都找个时间读读它。我在这里列出它的要点,是要鼓励你去阅读完整的全文。写的真是非常好。

一、给人写程序,而不是给计算机

1.一个程序,对于阅读它的人来说,不应该要求读者一次性的在大脑里加载过多的背景/相关知识。

2.命名需要一贯、明确、有意义。

3.代码风格和格式要统一一致。

4.软件开发中的各种工作都要分割成1小时左右的任务。

二、重复性的工作自动化

1.让计算机去做重复性的工作。

2.把最近使用过的命令存到一个文件里,以备复用。

3.使用编译工具来自动化系统流程。

三、用计算机做历史记录

1.用软件工具来自动跟踪计算机的工作。

四、逐步改进

1.每次做一小步,及时获得反馈,及时纠正。

五、使用版本控制

1.使用一个版本控制系统。

2.所有由手工创建的东西都要放到版本控制系统里。

六、不要重复自己(或他人)

1.系统中的每一段数据都要有一个权威的单一的存在。

2.代码应该模块化复用,而不是考来粘去。

3.复用代码,而不是重写代码。

七、准备好对付错误的方法

1.在程序中增加断言,检查它们的各种操作。

2.使用现成的单元测试框架。

3.测试程序时借鉴所有的可用的经验。

4.把bug做成测试用例。

5.使用一个有代码指令的调试工具。

八、只在软件能正确的工作后才可优化

1.使用监控工具找到瓶颈。

2.尽可能的用高级语言写程序。

九、文档里描述的应该是设计思路和目的,而不是技术细节

1.描述接口和原因,而不是实现。

2.重构代码,而不是注释解释运行原理。

3.引用其它程序时嵌入其它程序的文档。

十、协作

1.代码合并前进行代码审查。

2.当帮带新成员或解决特别诡异的问题时使用结对编程。

我要额外提到的是这个:

十一、 维护旧代码。

声明:eoe文章著作权属于作者,受法律保护,转载时请务必以超链接形式附带如下信息

原文作者: 安卓百晓生

原文地址:

二 : 软件工程毕业设计改革实践

一、软件工程专业毕业设计存在的主要问题

(一)毕业设计题目设置与选题方面

题目设置不合理,类别与层次不清晰,选题匹配效果差[2]。学生的毕业设计课题一般都按照指导老师的研究方向和实际工程项目提供,但每年真正来源于工程实践题目比例较少。部分题目理论性强,学生根据所学知识不能很好理解;部分题目开发工具复杂,占用了毕业设计的大部分时间。在选题时可能导致学生想选的题目选不上,能力差的学生所选题目难度大,影响学生的积极性,导致选题效果差,造成毕业设计很难完成。

[www.61k.com)(二)毕业设计过程监控方面

毕业设计监控工作实施困难,效果较差。软件工程专业毕业设计一般包含选题、开题、中期检查、程序测试、撰写毕业论文、答辩、成绩评定。但对这些环节的监控有时候会形成空白带,毕业设计不在实验室进行,有的学生在实习单位实习,有的学生在外地找工作,老师不能定时与学生见面,老师无法了解学生的具体情况,且学生提交的各阶段文档流于形式,只有指导教师在进行监控,未形成完善的监控体系,导致监控不到位,监控效果较差[3]。

(三)毕业设计论文答辩方面

答辩考核方法单一,答辩仅由学生的讲解和老师的提问两个环节组成,考核准确度低。答辩通过门槛较低,答辩只对学生的毕业设计进行排名,一般排名在最后的学生才可能不及格,不利于提高学生毕业设计积极性,造成大部分同学仅以答辩及格为目标,思想上不重视,答辩准备工作不扎实。再由于软件工程专业特点,毕业设计软件作品评分标准难于量化,考核具有一定难度,也造成答辩效果不好。同时为了提高学生毕业率和就业率,毕业答辩的质量控制有所放松,直接导致了软件工程专业毕业设计质量难以保障。

二、软件工程专业毕业设计的教学改革

针对上述各项实际问题,主要进行的相关工作具体如下:

(一)合理设置毕业设计题目,动态选题

依照软件工程专业的以市场需求为导向,培养应用型软件工程人才的培养目标,在毕业设计题目设置环节,紧紧围绕工程实际型、创新项目型、竞赛题目型、科研项目型等类型进行题目设置,以适应市场动态需求。同时着力避免在毕业设计题目中设置虚拟型题目、理论研究型题目、综述型题目、分析设计型题目等。在选题过程中,通过毕业设计管理系统(如图1所示)进行多轮双向动态选择,动态调整题目各项技术参数以保证学生能选择一个适合自己能力且能有利于自己以后工作的题目[4]。这样,在选题之后,每个指导老师就可以根据学生不同能力进行分别指导,使不同能力的学生都能够运用其所学知识解决工程实际问题,都能够通过毕业设计增强工程实践能力、工程设计能力与创新能力。近四学年软件工程专业毕业设计各类题目汇总。

(二)毕业设计过程实行三级监控管理机制

学校成立以主管副校长为组长的毕业设计工作领导小组以加强毕业设计宏观调控,学院成立以教学副院长为组长的毕业设计工作领导小组以加强毕业设计协调与监控工作,软件工程专业成立以专业负责人为组长的毕业设计工作小组落实并实施毕业设计各环节具体工作[2]。具体参见下图2。在实现毕业设计过程管理的三级管理机制的同时,为保障毕业设计工作质量,软件工程专业要求所有指导教师必须具有中级以上技术职称或硕士以上学位且有一定工程实践经验,具有较高教学、科研水平和创新能力,师德良好,工作态度认真负责。在每年的毕业设计指导工作开始前都对指导教师进行资格审查,择优任用,且每位教师指导的学生不超过6人,以保证指导教师对学生的充分指导[5]。

(三)毕业设计过程量化考核

以往软件工程专业毕业设计成绩通常由三部分组成:一是学生的平时表现由指导老师把握;二是学生的毕业论文成绩。由专业其他指导老师进行评阅;三是现场答辩成绩。由所在组的指导教师按照相关评分标准打分并取平均分。这样基本能够保证毕业设计成绩的公正,但是由于只有毕业答辩环节具有约束力即答辩未通过则总成绩不及格,其他环节不具约束力,因此造成毕业设计前期、中期工作流于形式,前期、中期阶段提交的文档趋于应付、质量不高,最终导致毕业论文质量较低[6,7]。为此,软件工程专业经过几年的探索与实践,实施了毕业设计各阶段的软件工程生命周期量化考核法即各个阶段量化考核,且考核成绩不合格者不能进行下阶段毕业设计工作,必须加以整改,整改通过后才能进入下一阶段毕业设计工作。经过几年的实践证明该考核方法切实可行,能够保证毕业设计各个环节的质量,最终提高毕业设计总体质量。

(四)在毕业设计过程中进一步提高学生工程能力与创新能力

辽宁工业大学于2011年制定并实施了大学生创新团队机制,建立了大学生创新项目申报机制引导大学生开展创新活动;引导学生每年都参加校级、省级、国家级软件设计大赛等各类各级比赛[8]。随着学校和学院创新教育活动多年持续深入开展,软件工程专业学生的创新与创业活动取得了显著成果。超过1/4的软件工程专业学生能够独立主持创新性项目,并以该项目为原型申报毕业设计题目[9],同时参加省级、国家级计算机竞赛并获得奖项。通过主持校级及省级创新项目既毕业设计题目,学生工程能力、创新能力得到极大锻炼与提高,本专业毕业生就业率与就业质量明显提高。软件工程专业学生主持参加创新项目既毕业设计题目情况见表3。

三、结束语

软件工程专业毕业设计是一个极具综合性、实践性的重要环节,是对学生大学四年学习后面向社会与企业前的有且仅有的一次大检验,它不仅检验了学生所学知识、能力与综合素质,还检验了软件工程专业的培养目标、培养模式、课程体系、实践体系、创新体系等相关环节[10]。经过几年的探索与实践证明,软件工程专业所做的系列教学改革工作中的毕业设计教学改革工作有利于进一步增强学生的工程实践能力和创新能力,有利于提高软件工程专业毕业设计质量,有利于提高软件工程专业学生就业率与就业质量。虽然软件工程专业毕业设计教学改革工作取得了一定的成绩,社会认可度逐年稳步提高,但如何动态调整教学计划以跟进市场需求变化;如何深入开展大学生创新创业教育活动以进一步增强更多软件工程专业学生的实践能力及创新能力;如何进一步加强专业教师工程实践能力、工程设计能力与工程创新能力以提高毕业设计指导效力;如何提高毕业设计过程管理效率等问题仍然是软件工程专业所面临的严肃课题[11]。因此,软件工程专业的毕业设计教学改革工作也一定会紧跟时代变化,与时俱进。

作者:佟玉军谢文阁王恩喜刘鸿沈姜悦岭工作单位:辽宁工业大学电子与信息工程学院

三 : Linux文件系统保护最佳实践:Tripwire(1)

【51CTO特稿】Tripwire是UNIX安全规范中最有用的工具之一,Tripwire可检测多达10多种的UNIX文件系统属性和20多种的NT文件系统(包括注册表)属性。Tripwire首先使用特定的特征码函数为需要监视的系统文件和目录建立一个特征数据库,所谓特征码函数就是使用任意的文件作为输入,产生一个固定大小的数据(特征码)的函数。入侵者如果对文件进行了修改,即使文件大小不变,也会破坏文件的特征码。利用这个数据库,Tripwire可以很容易地发现系统的丝毫细微的变化。而且文件的特征码几乎是不可能伪造的,系统的任何变化都逃不过Tripwire的监视。

推荐专题:Linux系统全方位管理

为了防止被篡改,Tripwire对其自身的一些重要文件进行了加密和签名处理。这里涉及到两个密钥:site密钥和local密钥。其中,前者用于保护策略文件和配置文件,如果多台机器具有相同的策略和配置的话,那么它们就可以使用相同的site密钥;后者用于保护数据库和报告,因此不同的机器必须使用不同的local密钥。

下要给出该软件的安装以及使用步骤,要得到该软件可以从Sourceforge直接获得(当前最新版本为tripwire-2.4.1.2-src.tar.bz2)。

(1)解压缩安装文件到/usr/local目录

//切换工作路径#cd /usr/local/ //解压缩#tar xvfj tripwire-2.4.1.2-src.tar.bz2

(2)执行make命令,进行安装

//进入已经解压的文件夹#cd tripwire-2.4.1.2-src //生成makefile文件#./configure//执行make命令#make //执行make install命令#make install

(3)生成基准数据库

成功编译Tripwire,就可以准备开始对须要监控的文件进行扫描,以生成Tripwire数据库,在Tripwire的src目录下:如下操作:

#./tripwire –init

(4)测试

数据库生成了,使用命令运行Tripwire,扫描系统变化和细小改变

#./tripwire—check

当第一次运行Tripwire时,须要进行一些准备工作,主要有编辑config文件、检查邮件报告是否正常、根据需要配置策略文件和初始化数据库文件,即创建一个签名的基线数据库。下一次运行时,它使用twpol.txt文件产生一个新的签名数据库。然后,比较两个数据库,实施用户定义的任何选项屏蔽(排除经常更改的文件),最后通过电子邮件或显示器来为用户在终端上输出一个可读的报告。

为了确保Tripwire正确地运行,要特别注意其安装和配置的过程,具体步骤如下:

Linux文件系统保护最佳实践:Tripwire(1)_文件保护

1.创建密钥和签名

在安装Tripwire之后,可以使用如下命令进行设置:

#./twinstall.sh

脚本twinstall.sh的作用在于执行下列任务:

  1. 创建site和local密钥,这时会要求输入口令(参见下面的步骤);如果这两个密钥也已存在,则可以跳过此步骤。其中,site密钥存放在site.key文件中,而local密钥则存放在hostname-local.key(这里的hostname是指该机器的主机名)文件之中。
  2. 利用site密钥对默认配置文件twcfg.txt进行签名,并将签名(而非被签名的文件twcfg.txt)存放于文件tw.cfg之中。
  3. 利用site密钥对默认策略文件twcfg.pol进行签名,并将签名(而非被签名的文件twcfg.pol)存放于文件tw.pol之中。

2.编辑配置文件

首先打开文本格式的配置文件twcfg.txt,该文件的位置在前面所述安装过程后的/usr/local/etc目录下。然后根据需要修改配置文件,修改完毕后存盘。最后使用twadmin命令根据已编辑的文本文件生成一个加密的配置文件。

ROOT =/usr/local/sbinPOLFILE =/usr/local/etc/tw.polDBFILE =/usr/local/lib/tripwire/$(HOSTNAME).twdREPORTFILE =/usr/local/lib/tripwire/report/$(HOSTNAME)-$(DATE).twrSITEKEYFILE =/usr/local/etc/site.keyLOCALKEYFILE =/usr/local/etc/localhost.localdomain-local.keyEDITOR =/bin/viLATEPROMPTING =falseLOOSEDIRECTORYCHECKING =falseMAILNOVIOLATIONS =trueEMAILREPORTLEVEL =3REPORTLEVEL =3MAILMETHOD =SENDMAILSYSLOGREPORTING =falseMAILPROGRAM =/usr/sbin/sendmail -oi -t #twadmin --create-cfgfile --site-keyfile /etc/tripwire/site.key twcfg.txt

安装完毕后,该文件已存在,因此不必再重新创建。通常情况下,配置文件的内容不会发生变化,因此没有必要去修改它,使用Tripwire默认的就可以了。在此时我们应该测试一下Email报告功能是否起作用,以防以后遇到麻烦,输入以下命令进行测试。

#tripwire --test --mail user@domain.com

3.编辑策略文件

首先打开文本格式的策略文件twpol.txt。该文件的位置在前面所述安装过程后的/usr/local/etc目录下。Tripwire在安装时已经在策略文件中写入了默认的检查规则。这些默认的规则主要检查重要的系统文件和Tripwire自身文件的完整性。

由于默认的配置就不能监视系统中的SUID和SGID文件,而这对于我们的系统安全是非常重要的,因此,我们需要修改配置加入对这个项目的监视。使用如下命令可以找出系统中的所有SUID文件:

#find / -type f -perm -4000 -print

以下命令可以找出系统中的所有SGID文件:

#find / -type f -perm -2000 -print

现在,我们需要把以上命令找出的SUID和SGID文件加入到Tripwire的/策略文件中去。除此之外,我们还要把所有用户home目录下的初始文件也纳入监视的范畴。主要包括以下文件:

  1. .bashrc、.profile、.bash_profile、.cshrc、kshrc、.login等
  2. bash、csh以及ksh登录之后的初始化命令或者脚本
  3. .forward:告诉/usr/lib/sendmail把邮件转发到某些地址
  4. .rhosts:可以使用rsh登录到本帐户的远程主机名
  5. .xinitrc、.Xauthority、Xdefault等X窗口系统的一些重要文件

在创建Tripwire的特征码数据库之前,还有一件事情要做,就是检查.netrc和.rhosts文件的权限是否是600。修改完策略文件后存盘。最后使用twadmin命令根据已编辑的文本文件生成一个加密的策略文件。最后,策略文件的文本文件要删除掉,否则该文件的内容易被察看。

#twadmin --create-polfile twpol.txt

安装完毕后,该文件已存在,因此不必再重新创建。

4.生成基准数据库

配置文件和策略文件都编辑和生成好了之后,就应该根据配置文件的规则生成基准数据库。基准数据库在Tripwire安装完毕后生成一次即可。我们使用Tripwire命令来生成基准数据库。

#tripwire --init

基准数据库生成时,Tripwire会提示输入local key,对其进行高强度的加密,以防止对文件内容的非法改变。

5.运行完整性检查

基准数据库生成完毕之后,我们可以使用tripwire命令随时进行完整性检查了:

#tripwire --check

进行检查时可以指定检查报告的存贮位置:

#tripwire --check --twfile/var/lib/report/report.twr

进行检查时也可发送Email报告结果:

#tripwire --check --email-report

进行检查时指定使用Email进行发送的报告等级:

#tripwire --check --email-report --email-report-level 2

使用指定严重性等级的规则进行检查:

#tripwire --check --severity 80

使用指定的规则名进行检查:

#tripwire --check --rule-name rulename

只检查指定的文件或目录:

#tripwire --check object1 object2 object3 …

进行检查时忽略某些属性(因为有些属性的检查比较耗费系统资源,比如Hash算法):

#tripwire --check --ignore "property, property, property, property"

如果完整性检查完毕后,发现Email报告功能未生效,可以检查两个方面:一个是策略文件中规则的emailto属性必须填写妥当,另一个是运行tripwire命令时,--email-report选项必须被包含。

6.查阅报告

完整性检查进行完毕后,我们就可以查阅报告以发现有哪些文件遭到了改动,改动了什么。使用twprint命令可以输出报告,它有多种使用方式。

如下命令将加密的报告内容输出到显示器:

#twprint --print-report --twrfile /var/lib/report/report.twr

如下命令将加密的报告内容输出到一个文本文件:

#twprint --print-report --twrfile /var/lib/report/report.twr - >myreport.txt

如下命令输出报告时指定输出的报告等级:

#twprint --print-report --report-level 4 --twrfile /var/lib/report/report.twr

7.升级基准数据库文件

如果在报告中发现了一些违反策略的错误,而这些错误又是被认为正常的,那就要使用Tripwire命令更新基准数据库:

#tripwire --update --twrfile /var/lib/report/report.twr

也可以在进行完整性检查之后立即自动进行更新:

#tripwire --check --interactive

8.升级策略文件

随着系统的变化,原来的策略文件必然会不能满足需要,因此必须要不断的更新策略文件中的规则。更新和创建新的策略文件不同,因为如果为Tripwire创建了新的策略文件,那么就必须要重新生成基准数据库。更新时首先打开策略文件的文本文件:

#twadmin --print-profile > twpol.txt

然后编辑该文件,完毕后存盘。最后使用Tripwire命令进行策略更新:

#tripwire --update-policy twpol.txt

在此步骤中,Tripwire软件会要求输入site key。

9.改变site key和local key

sitekey和localkey是在安装时生成的,但是也可以随时修改。注意,如果已经用来加密的密钥文件被删除了或是被覆盖了,那么Tripwire加密过的文件都不能访问了。因此,我们要对这两个文件做备份。 很多时候会发现我们的口令可能不太安全,因此要改变口令。需执行以下命令即可:

#twadmin --generate-keys --local-keyfile /etc/tripwire/site.key#twadmin --generate-keys --local-keyfile /etc/tripwire/local.key

但是这么做的话,会造成使用以前密钥进行加密的文件无法打开的情况。我们要使用以前的策略文件、配置文件、数据库文件、报告文件的话,因此在改变口令之前,我们必须使用以下的命令把这些已加密的文件进行解密。

#twadmin --remove-encryption file1 file2 ...

在生成新的密钥文件之后,我们还应该用新密钥对这些文件进行加密。配置文件和策略文件只能用site key加密,而数据库文件和报告文件只能用local key加密。

#twadmin --encrypt --site-keyfile /etc/tripwire/site.key file1 file2 file3 ...#twadmin --encrypt --local-keyfile /etc/tripwire/local.key file1 file2 file3 ...

以上就是Linux文件系统保护的实现步骤参考。Tripwire是一个非常不错的开源工具,可以说是系统运维们不可替代的工具,值得仔细研究学习。除了Linux文件系统保护之外,Linux系统的安全管理还包括用户管理、进程保护、日志管理等三个方面,这些将在之后的文章中进行讲解。

本文标题:软件工程最佳实践-史上最最佳软件开发实践指导
本文地址: http://www.61k.com/1054315.html

61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1