软工个人博客-week7

Part 1       No Silver Bullet - Essence and Accidents of Software Engineering
软件工程中没用通用的方法或者技术让软件工程在短时间内快速进步,这一点其实我也没有很明确的概念。其实近几年的敏捷开发框架,mvc结构,rest风格,这些的出现都大大提高了软件工程的效率,在我看来银弹的出现也是不无可能,毕竟单纯一个rest风格结合html5,给我的感觉让开发效率提高了起码百分之三十。
Part 2  big ball of mud你的项目有一个大泥球么? 有什么解决办法?
所谓大泥球,是指杂乱无章、错综复杂、邋遢不堪、随意拼贴的大堆代码。其实在一开始写工程的是偶,就是我大一的时候,我写的代码都是这种大泥球式的代码,我觉得这种代码的产生主要是由于开发人员没有开发经验和合作编程经验,有要急于完成任务。解决这种代码的方法就是要做好分层解耦和回调,拿后端来说,我们起码要做到的一点是,逻辑处理和数据模型的分离,之后可以进一步解耦,前后端交接的api分离为路由,数据的处理逻辑主体分离为控制器,参数的预处理逻辑分离为中间件,后端的整体动作分离为系统服务和触发器,数据的处理分离为模型,数据库结构和填充分离为数据迁移和数据填充。这样就很好的保证了代码的条理清晰,重用性,易于维护。
Part 3  CatB – Cathedral and the Bazaar
关于教堂和大集市,这是对开源软件开发模式的分类,教堂模式,源码公开,但是开发过程有一个团体控制;市集模式,同源源码公开,且源码放在互联网上供人阅览,并可以贡献代码,进行开发。提倡市集模式,认为在足够的人的检视之下,BUG将无处藏身。我是认同作者的观点的,举个例子,国内的大部分开源cms都是大教堂模式,或者说连大教堂模式都不能算,由顶层控制太严重。可以说这些cms的安全性是非常差的,但是反观国外的开源项目,大部分都是在github上让众人一起维护,包括php这种非常流行的语言(尽管php的漏洞略多,或者我接触的比较多。。。),其安全性与国内的cms相比高了一个层次。
Part 4  Lost in CatB这些情况在你的团队中出现过么?
过度依赖的问题并没有出现在我们的开发中,因为在一开始制定api和开发文档时,我就为团队成员撰写了环境搭建的教程和要求,并规范了各种数据的存储形式和结构,在我们的项目中,数据都是存储在数据库中,进行报告生成的数据都是以文件形式。
其实唯一出现过一次依赖问题是这样的,我们需要用latex进行报告生成,我们调试脚本时发现,在普通用户下执行是可以成功的,然而通过php调用生成脚本时却一直在报so库文件引用错误,之后我放了一个木马获得apache守护进程用户的权限,发现在该用户下运行是不成功的,之后我用ldd看那个出错的so库的引用指向,发现,他竟然指向了apache的库文件,也就是说py的库和apache的库有重名冲突,之后发现apache会给他的用户自动添加他自己的lib路径到ld_library_path,然而php的命令执行是不起bash的,所以无法添加环境变量,最后我写了一个sh起一个bash把/lib路径添加到环境变量里最终解决了依赖问题。。。。。。
Part 5  Managing the development of large software systems: concepts and techniques
瀑布模型在我们的工程中是得到了充分的使用,一开始是制定计划和需求分析,之后计划其实对我来说只是一个大体的概念,知道大家会在大体什么时间做什么就好,因为如果是针对我的计划时间,我一般会超前完成很多,之后需求分析交到我手中后,我根据他们的网站原型进行后端路由和api的设计,之后交给前端和后端开发人员,我们一起进行开发,最后完成后进行对接,之后进行测试,上线后维护。
Part 6  软件工程的方法论到底有多少用处?
他其实可以指导大多数的合作项目,有通用性。
-----------------------------我是优雅不要污的分割线-------------------------
其实写到最后我还想写一点其他和作业无关的事情,您在我们团队的博客下评论,用户名密码的传输过程没有加密,后端存储时是不是也是明文。先说明一点的是,后端是采用加密的,并且加密方式是动态salt之后进行hash,以我的认知水平来看,在我们规定的最小密码长度6位下,这个加密方式是无法破解的。
之后是关于明文传输的问题,我的主业的搞信息安全的,其实我遇到很多很多人跟我提漏洞的时候都是跟我说,这个密码是明文传输的,我其实很不理解,就这样来说,单纯在前端做一次加密是没有任何卵用的,我遇到过很多网站,他们前端做了md5,之后进行传输,但是这个传输过程中我如果嗅探到数据包,照样可以拿这个数据包进行登录,并且,这些网站在拿到他们的数据库权限或者注入得到密码后,发现起码有七成是直接拿前端传过来的md5进行存储的,这是一种愚蠢到爆的方式。如果前后端都做加密,安全性确实会好一点,但是我同样可以拿数据包登录。
我能提出来的唯一一种可靠的前端加密方式就是使用时间戳作为动态salt,也就是说,我们拿一个时间间隔比如15s作为单位,来用时间戳计算出一个salt之后与密码做hash,后端同样拿这个方法进行校验,这样可以保证每个数据包的有效时间最多是15s,但是,就算是这样,也会出现随机的验证失败(比如验证时间刚好在更换salt的一瞬间),并且,我完全可以使用脚本,在嗅探到数据包后立即重放攻击,甚至不需要重发,我既然可以嗅探到你发出的包,同样可以嗅探到你接收的包,普通用户的密码并不重要,重要的是登录后开放的接口,这样才有更多的漏洞暴露,也就是说,重要的是cookie和session。然而,这是任何前端加密都不能解决的安全问题。
并且,还有一个很重要的成本问题,我能想到的最有效的办法就是如上的时间戳方案,但是,这个方案也是个可以被轻易攻破的方案,然而,实现这个方案也是需要成本,如果这个应用真的有这么高的安全需求,他不会去付出如此的成本去实现一个破绽百出的方案,而一定会使用ssl。然而没有这种安全需求的网站也不会去付出这个成本。
以上的讨论都是站在一个黑客或者运维的角度出发的,我的确没有为用户暴露明文密码着想,因为我觉得,用户密码被嗅探,无论如何都是极小范围内的,如果嗅探者是在服务器C段,那我觉得服务器安全是岌岌可危的,并且关键并不是在传输中。密码并不重要,密码是为了得到权限,数据和权限才是一个黑客想要得到的。
综上。
谢谢。

时间: 2024-12-24 01:07:54

软工个人博客-week7的相关文章

软工总结博客

本学期是我大学这三年中最忙碌的一个学期,因为编译大作业.数据库大作业和软工项目都集中在了这一个学期中,在这个学期里我也第一次有了通宵码代码调程序的“可怕”经历.在我们的团队项目中,我担当的是主力的前端程序员,主要负责对往届的前端代码进行重构.在M1阶段中,我对往届的代码进行了认真的分析,在他们的代码逻辑基础上结合最新的android技术进行代码的重构.重构的任务比较重,我也为这项任务通宵过.在M1阶段中,我们团队的另外两位同学对后端进行修改,从而成功地支持了我前端的各类功能.虽然还有一些功能没有

个人博客-week7

团队任务收获及个人感想 团队任务已经进行了一个多月的时间,我很荣幸能和软剑攻城队的小伙伴们度过这一个月的开发时光.在这一个月的时间里,我亲身经历了一个软件从想法到实现,从创意到实体的过程.同时我也在和组员的共同探索中渐渐明白了如何用工程化的方法去完成软件开发的任务.现在的我对之前读过的一些软件工程方面的文章有了更深刻的见解,一些以前不明白的道理在有了这次小组软件开发的经历之后渐渐有了一些体会.下面就结合之前读过的一些软工方面的文章谈谈我的理解. 个人认为,在团队软件开发的过程中最重要的事情就是团

个人博客week7

IBM大型机之父佛瑞德·布鲁克斯(Frederick P. Brooks, Jr.)在1986年发表的一篇关于软件工程的经典论文,便以<没有银弹:软件工程的本质性与附属性工作>(No Silver Bullet — Essence and Accidents of Software Engineering)为标题.其中的“银弹”是指一项可使软件工程的生产力在十年内提高十倍的技术或方法.该论文强调由于软件的复杂性本质,而使这样“真正的银弹”并不存在. 大泥球,是指杂乱无章.错综复杂.邋遢不堪.随

软工_结对项目总结博客

关于结对编程 第一次进行真正的结对编程,而且我们组又是最奇葩的三人组合(14061183韩青长)(14061195陈彦吉),在经历了三天的合作以后,感觉收获还是蛮多的,下面是我对于结对编程的一些个人体验. 优点 在结对编程的过程中,两个人共同面对同一份代码,编码时旁边时刻有人提示监督.这样写出的代码,首先考虑的特殊情况会更多,能避免很多一个人编程时因为考虑不周而在某个不起眼的地方产生的Bug,代码质量更高,少了很多调试时间. 同时,由于两个人交替工作,一方面可以缓解疲劳,同时又因为身旁有人共同工

[福大软工] Z班——个人技术博客评分

个人技术博客 作业地址 https://edu.cnblogs.com/campus/fzu/SoftwareEngineering2015/homework/1070 作业要求 个人技术博客单次作业满分为10分,博客的形式与内容不做任何限制,但要在博客中说明博客所介绍的技术与团队项目的关系.第一次个人技术博客的截止日期会定在团队阿尔法阶段结束时(初步设定了截止日期,之后会根据团队项目整体的进度调整). 注意:技术博客是个人作业,需要每位同学独立完成. 评分准则 本次技术博客的分数由两部分组成,

【2017下集美大学软工1412班_助教博客】团队作业7——第二次项目冲刺(Beta阶段)成绩公示

作业要求 团队作业7 团队评分结果 Beta计划 Total GN SX GJ LC AP WT PHILOSOPHER 3 1 0 1.5 0 0.5 0 三人行 3.5 1 1 1 0 0.5 0 音乐播放器 0 0 0 0 0 0 0 博客管理系统 3.5 1 0 1.5 0 1 0 Beta冲刺日志 Total NR JG LG QR RJ Photo TH HD PHILOSOPHER-day1 3.5 1 0 1 0 1 0 0.5 0 PHILOSOPHER-day2 3.5 1

【2017下集美大学软工1412班_助教博客】团队作业9——事后分析(Beta版本)成绩公示

作业要求 团队作业9 团队评分结果 编号 Total 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 PHILOSOPHER 8 0.4 0 0.5 0 0.2 0.5 0.5 0.5 0.2 0.5 0.5 0 0.2 0.5 0.5 0.5 0.1 0.2 0.3 0.2 0.2 0 0 0 0 0 0.3 0.3 0.2 0.4

南工院移动1521班博客及分组情况

南工院移动1521班第一次课程,分组并创建博客.具体内容如下:   姓名 博客地址 分组 组长标记 徐昊 http://www.cnblogs.com/xuritian317/ 1 * 张伟港 http://www.cnblogs.com/z952061617/ 1   李雪 http://www.cnblogs.com/lixue1206/ 1   张志辉 http://www.cnblogs.com/z809931330/ 1   沈犇 http://www.cnblogs.com/qq71

个人博客作业Week7(心得体会)

Alpha阶段结束了,内心可以说是五味杂陈.不是说我们的产品拿不上台面那般差劲,复杂的心绪主要来源于和别的队的比较,别的队才刚刚发布没多久访问量和注册量就破百了,并且还发起了找bug送红包的活动.可能是觉得付出了相同的努力,却没办法换回相同的效果,看来还是得审视自己的问题. 本周的个人作业是阅读关于软件开发本质和开发方法的博客/文章,结合自己在个人项目/结对编程/团队项目的经历,谈谈自己的理解或心得.借这个机会找一下我们的不足吧. 阅读材料目录: