[BUAA_SE_2017]个人阅读作业 + 总结
个人阅读作业
银弹
银弹是指能让狼人一枪毙命的致命子弹,对于软件工程而言,我觉得是不存在银弹的。每一项软件开发都是极为特殊的,有特定的需求、特定的功能,如果存在银弹能够直击要害解决问题,那么软件的开发也只是机械化、流程化的操作了。“瀑布模型”、“敏捷”、“官僚”、“功能团队模式”等等各种被历史验证可行与不可行的模型都有利有弊,目前没有一个模型可以包括历史所有模型的所有优点。在这个从特殊到一般的过程中,还有很长的路要走,甚至没有尽头。
大教堂与集市
• The Cathedral model, in which source code is available with each software release, but code developed between releases is restricted to an exclusive group of software developers. GNU Emacs and GCC were presented as examples.
• The Bazaar model, in which the code is developed over the Internet in view of the public. Raymond credits Linus Torvalds, leader of the Linux kernel project, as the inventor of this process. Raymond also provides anecdotal accounts of his own implementation of this model for the Fetchmail project.
以上关于大教堂与集市的定义引用自The Cathedral and the Bazaar - Wikipedia,大教堂是代码只属于一个专门的开发团队,相比之下,集市中的代码是开源而且所有开发者都可以直接使用。
我们的团队使用的代码托管是github,代码完全开源而且所有其他开发者都可以直接获取。
Worse?Better?
• Completeness can be sacrificed in favor of any other quality. In fact, completeness must sacrificed whenever implementation simplicity is jeopardized. Consistency can be sacrificed to achieve completeness if simplicity is retained; especially worthless is consistency of interface.
感觉Worse Is Better讲求的就是一个快字,为了软件开发简单、快捷,可以牺牲当下的完整性和一致性。没有具体在软件工程领域实践过类似操作,但是基于以往比较naive的编程经历来看,不太认同这个观点。完整性和一致性从本质上来说就是给开发人员一个良好的基础以便于在这之上进行新增、修改与删除,软件只有在有了较好的完整性与一致性之后,对软件的开发才会真正变得简单;Worse Is Better可以过于具体地认识为为了实现某一新功能而不管未来可能对其他模块进行修改存在的潜在漏洞。在软件不需要长期维护或者不需要增量开发的时候,貌似是“一劳永逸”的方法,不然,后期真的会太痛苦。
我们的项目并没有使用这个概念,我们alpha运用了laravel框架,beta用了django,这两个框架在架构上是比较缜密且功能分散,有利于开发的一致性。
瀑布
• 瀑布模型(Waterfall Model) 是一个项目开发架构,开发过程是通过设计一系列阶段顺序展开的,从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈,因此,如果有信息未被覆盖或者发现了问题,那么最好 “返回”上一个阶段并进行适当的修改,项目开发进程从一个阶段“流动”到下一个阶段,这也是瀑布模型名称的由来。包括软件工程开发、企业项目开发、产品生产以及市场销售等构造瀑布模型。
优点:
- 为项目提供了按阶段划分的检查点。
- 当前一阶段完成后,您只需要去关注后续阶段。
- 可在迭代模型中应用瀑布模型。增量迭代应用于瀑布模型。迭代1解决最大的问题。每次迭代产生一个可运行的版本,同时增加更多的功能。每次迭代必须经过质量和集成测试。
- 它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。
缺点:
- 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。
- 由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。
- 通过过多的强制完成日期和里程碑来跟踪各个项目阶段。
- 瀑布模型的突出缺点是不适应用户需求的变化。
我们各个阶段的文档做得不好,在个人项目中文档也做得不好。这就导致了开发了一些功能之后还要回头来验证设计上的问题,这应该是软件开发中应该极力避免的。
软件工程的方法论到底有多少用处?
软件工程的方法论相当重要,虽然如第一个问题所说每个软件都具备特殊的需求、特殊的功能,而且软件工程的开发模式也参差不齐,但是不管使用怎么样的开发流程,根本上离不开软件工程的方法论的指导。《Why Software Development Methodologies Suck 》中作者提出缩小开发周期和提升反馈效率这两种方法来进行工程实践,其中提升反馈效率我认为是最重要的,一个产品只有经过市场的考验才能知道其优势与劣势,开发团队才能在此基础上进行研究与修改。软件工程方法论虽不尽完美,但是从思想上指导着每一次软件开发趋于完整、一致、可用、最佳用户体验。
在软工为期三个多月的实践中,我没有收获很多软件开发的成就感,但是从这些挫折之中,可以很清晰地体会到软件工程的方法论是一个明确的指引,可是你要真正运用于实践,除了自身需要百分之百投入,还需要的是co-workers的共同投入、产品经理的大局规划。明白了一点的软件工程方法论之后,在其他课的课程设计上也或多或少地开始运用了起来。
[BUAA_SE_2017]个人阅读作业 + 总结的更多相关文章
- 个人阅读作业Week17
个人阅读作业Week17 reading buaa software 解决的问题 这是提出问题的博客链接:http://www.cnblogs.com/SivilTaram/p/4830893 ...
- 个人阅读作业 final
前两次阅读作业链接: http://www.cnblogs.com/SteelPillar/p/4027877.html http://www.cnblogs.com/SteelPillar/p/40 ...
- 软件工程M1/M2总结及阅读作业总结
一.软件工程M1/M2总结 写下这篇总结的时候,我们的软件项目尚未完工.虽然尝试申请了延期答辩,但最终未能成功.这意味着,我们的项目能否正常发布已经处于了一个微妙的状态.可能可以,也可能不可以.只能尽 ...
- final个人阅读作业
一.软件工程M1/M2总结 1.M1阶段总结: 我们团队的软件工程开发是按照前后端来分别开发的,我是负责后端的.我们的项目是做一个北航的社团平台,是一个网站.在后端我们使用的是ruby on rail ...
- 个人阅读作业 --软件工程M1/M2总结
软件工程M1/M2总结 写在前面的话: 这学期的软件工程伴着考期的展开逐渐落下帷幕,回顾这学期的软件工程,我感觉我的热情在一次又一次的失落中逐步消耗殆尽,每个人对于这门课的体验都会有所不同吧,可以确定 ...
- 【M2】软件工程终期总结报告——阅读作业
PhylabWeb——阅读作业 问题回顾 提问博客地址:http://www.cnblogs.com/kibbon/p/4831104.html 尚待解决的问题: Alpha/Beta,ZBB/RC阶 ...
- [2019BUAA软件工程]第1次阅读作业
[2019BUAA软件工程]第1次阅读作业 Tips Link 作业连接 [2019BUAA软件工程]第1次阅读作业 读<构建之法>的疑惑 个人开发流程(Personal Software ...
- 【BUAA软件工程】第一次阅读作业
BUAA软件工程 第一次阅读作业 项目 内容 这个作业属于哪个课程? 北航软工 这个作业的要求在哪里? 第一次个人作业 我在这个课程的目标是? 学习高效严谨的软件工程开发过程,建立团队意识 这个作业在 ...
- [Week17] 个人阅读作业
个人阅读作业Week17 reading buaa software 解决的问题 这是提出问题的博客链接:http://www.cnblogs.com/SivilTaram/p/4830893 ...
随机推荐
- SpringMVC拓展——利用maven构建springMVC项目
一.构建项目结构 首先需要构建一个符合目录结构的maven项目 file->new->maven project,勾选 create a simple project->next / ...
- BZOJ2428_均分数据_KEY
题目传送门 这道题可以用C++的random_shuffle屮过去. random数列插入顺序,每次都插入数值和最小的那一组. #include <cmath> #include < ...
- PostgreSQL的 PITR实战---运用 recovery_target_time
磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面: PostgreSQL基础知识与基本操作索引页 回到顶级页面:PostgreSQL索引页 看了很多的例子,没有发现具体讲 recove ...
- iOS开发-通过正则表达式判断字符串是否为纯阿拉伯数字
iOS开发-通过正则表达式判断字符串是否为纯阿拉伯数字 简述:NSString * regex_0 = @"\\d{1,}"; /*允许首位为0*/ NSString * re ...
- htm5移动端开发 和 pc端开发
htm5移动端开发: 移动端开发需要注意的一些事情:http://www.duanliang920.com/learn/web/html5/321.html HTML5移动端手机网站开发流程:http ...
- 干货分享:五大最适合学习AI开发的编程语言
AI(人工智能)为应用开发者开创了一个全新的可能性.通过利用机器学习或深度学习,您可以生成更好的用户配置文件.个性化设置和推荐,或者整合更智能的搜索.语音界面或智能助手,或者以其他数种方式改进您的应用 ...
- How to implement a custom PropertyEditor so that it supports Appearance rules provided by the ConditionalAppearance module
https://www.devexpress.com/Support/Center/Question/Details/T505528/how-to-implement-a-custom-propert ...
- Frida----frida tools的使用
翻译自官方网站:https://www.frida.re/docs/home/ 如果有理解不对的地方,请大家指出 frida Cll frida -U 包名 调试连接到电脑上设备中的应用 frida ...
- fiddler和bugfree之间的联动(做伪请求、伪响应、并发、抓密码)
青.取之于蓝,而青于蓝:冰.水为之,而寒于水 不积跬步,无以至千里;不积小流,无以成江海. 1解压Fiddler Web Debugger V4.6.2017修正中文第6版至C盘Program Fil ...
- java学习(二)基础概念、语法
对象 类的实例(通俗点讲,new出来的玩意好像都是对象?初学者的感觉,不造对错啊,有大神给我解释下可以啊) 类 class嘛,模板嘛,可以给对象实例的嘛 方法 行为,学编程的,方法,这玩意心里都懂吧, ...