第二次阅读作业,第一次一口气读完好几篇英文技术论文。在不断的翻译中匍匐前进,在各种生涩的单词中爬取软件工程的哲学。在这里简单谈一下我对这几篇文章的看理解和看法。

《No Silver Bullet: Essence and Accidents of Software Engineering》介绍了软件工程要几个不可避免的问题,主要有复杂性(complexity),软件整合(conformity),可变性(changeability)和不可见性(invisibility)。作者接着对几种解决软件生产率的方法进行了讨论,如Ada和其它高级程序设计语言的发展、面向对象编程的方法、人工智能和专家系统、自动编程、图形编程等,但它们都存在着各自的问题,因此不能完全解决软件生产率问题。最后作者讲了下一步的研究方向,如Buy versus build, Requirements refinement and rapid prototyping是软件设计的基础工作,一开始就要设计好;另一方面人也是软件开发中最重要的决定因素,拥有强大的设计者(Great designers)会使软件开发效率提高,同时作者自己给出了培养Great designers的几个步骤。相信这些也会为软件工程的发展定会起到应有的作用。

在《MANAGING THE DEVELOPMENT OF LARGE SOFTWARE SYSTEMS》这篇文章中主要是介绍了“瀑布模型”。作者总结了自己在软件开发中的经验,提出了一个软件项目的开发架构,开发过程从系统需求分析开始直到产品发布和维护,每个阶段都会产生循环反馈。作者给出了固定的顺序,将生存期活动从上一个阶段向下一个阶段逐级过渡,就像瀑布一样,最终得到软件产品投入使用。每个阶段都有指定的起点和终点,过程最终可以被客户和开发者识别,在编写第一行代码之前充分强调了需求和设计,这避免了时间的浪费以及跳票的风险,同时还可以尽可能地保证实现客户的预期需求。提取需求和设计提高了产品质量,因为在设计阶段捕获并修正可能存在的漏洞要比测试阶段容易很多,毕竟在组件集成之后来追踪特定的错误要复杂很多。最后,因为前两个阶段生成了规范的说明书,当团队成员分散在不同地点的时候,瀑布模型可以帮助实现有效的知识传递。我认为“瀑布模型”强调了软件开发中的循环和传递,不过越复杂的结构意味着错误的提高,在实践过程中能否真正对“瀑布模型”完美实现衔接紧密是一个问题。我在项目开发的过程中深刻意识到了这点,团队的协作固然提高了编写效率,但各种互相传递信息的过程同样需要很多的时间,怎样协调仍然是一个问题。

在《Big Ball of Mud》这篇文章中,作者告诉了我们产生大泥球的原因:一次性代码、碎片式增长、Copy/paste导致问题转移、缺少前期设计、应对需求变化过晚等,它们导致软件开发没有清晰的结构的系统。这一点,我在这次项目开发中深有体会,在最初设计是产生的问题往往会对之后的开发造成巨大的麻烦。如这次我开发的一个模块需要被另一个人使用,而之后发现我这个模块的最初设计并没有完全达到使用这个模块的人的需求(这是最初设计时并没有彻底考虑清楚的原因),导致如果要引用我这个模块需要进行许多的修改工作,浪费了许多时间。这样的大泥球在模块之间的关联时最容易出现,至今我们仍在同这些大泥球同其他组一起战斗中。

《The Cathedral and the Bazaar》这篇论文中,提到了两种代表了不同类型的软件开发模型即Cathedral和Bazaar。目前我们的项目规模还比较小,大部分问题都可以通过各种方法组内解决,有不会的地方一般就在组员之间进行讨论,或者上网查找相关资料在网上提问等解决,所以我觉得我们的团队使用的是“大教堂”方式来建造软件。在《有人负责,才有质量:写给在集市中迷失的一代》一文中,作者认为通过市集的农民不可能造出和大教堂一样宏伟的建筑,那些像农民一样开发软件的人会把软件搞糟。但是我认为,在开发的最初设计阶段确实需要严谨的设计和紧密的协调,而软件不是异常不变的,需要更多更好的创意和功能,我们可以采纳其他更好的方法和创意,每一个人都应该为这个开发尽自己最大的努力。

《Agile Method》是一篇关于敏捷开发方法的文章。敏捷开发方法相对于传统的软件开发方法的一个明显的不同就是敏捷开发是与代码为主的,强调代码是文档的主要部分。相对于传统的软件开发方法,敏捷开发方法有以下的特点:敏捷开发方法是适应性比预见性更重要;敏捷开发是以人为本而不是以项目为本。在这次的软件工程中,我们也采用了敏捷开发的方法。极限编程的基础和价值观是交流、朴素、反馈和勇气;任何一个软件项目都可以 从四个方面入手进行改善:加强交流;从简单做起;寻求反馈;勇于实事求是。XP是一种近螺旋式的开发方法,它将复杂的开发过程分解为一个个相对比较简单的小周期;通过积极的交流、反馈以及其它一系列的方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程。在开发过程中,我们需要及时适应项目的变化,每天进行讨论,做到以人为本,以需求驱动开发都是我们敏捷开发的体现。

软件工程师一门需要实践的工科课程。理论上学习的再多也需要在实践中不断亲自体验。方法固然重要,不过我还需要将这些方法运用到我们的项目中,才能真正体会它们。并且团队的合作也十分重要,希望我们能够在之后的努力后更好的完成我们的项目。

转载于:https://www.cnblogs.com/DOOM-lyx/archive/2012/11/13/2768932.html

第二次阅读作业感想——在混沌的英文中爬取软件工程的哲学 刘宇翔相关推荐

  1. 软件工程阅读作业感想

    软件工程老师给我们留了阅读作业,刚开始觉得老师留的作业阅读量太大,而且时间太短,对此感到不是很理解,但是当我开始阅读<移山之道>这本书的时候,感觉这本书真的写的很通俗易懂,利用移山软件公司 ...

  2. python简单实践作业答案_python入门实践四:爬取牛客网面试专项练习题及答案

    说明:个人练手python用. 操作系统:window10 x64 IDE:Pycharm 2017.2.2 Python版本:3.6.2 目标 牛客网是一个IT笔试面试的平台,提供了很多题库,今天我 ...

  3. 第二次阅读作业--12061161 赵梓皓

    阅读笔记之No Silver Bullet 本文中,作者的观点是没有任何一项技术或方法可使软件工程的生产力在十年内提高十倍(1986) 作者列举的原因是 代码的完成分为两部分: 抽象(建模)和 代码实 ...

  4. 软件工程第二周阅读作业

    提出问题 快速通读教材<构建之法>,并参照提问模板,提出5个问题. 如何提出有价值的问题? 请看这个文章:http://www.cnblogs.com/rocedu/p/5167941.h ...

  5. python爬取公众号阅读量_如何快速、高效的爬取微信公众号阅读、在看数呢?

    ​自从2013年,自媒体开始崛起.再到2014年,自媒体开始能够赚钱,自媒体逐渐成为这个时代的一个趋势性的潮流. 随着公众号平台的不断火爆,各个自媒体平台如春笋班拔地而起.自媒体的蓬勃发展,很大程度上 ...

  6. 个人阅读作业2—《No Silver Bullet: Essence and Accidents of Software Engineering》读后感

    在进行了一次结对编程.一次团队编程和一次个人编程项目后,读了<No Silver Bullet: Essence and Accidents of Software Engineering> ...

  7. python3 爬虫 爬取华为应用市场 APP应用评论(一)爬取全部评论——作业帮

    python3 爬虫 爬取华为应用市场 APP应用评论(一)爬取全部评论--作业帮 import requests import re import requests from bs4 import ...

  8. python3 爬虫数据处理 爬取华为应用市场 APP应用评论(二)根据评论生成词云——作业帮

    python3 爬虫&数据处理 爬取华为应用市场 APP应用评论(二)根据评论生成词云--作业帮 # 导入扩展库 import re # 正则表达式库 import collections # ...

  9. python爬取搜狐新闻网站所有新闻的标题和正文并按阅读量排行输出

    # _*_ coding: utf-8 _*_ """实现定量爬取搜狐网站新闻 Author: HIKARI Version: V 0.2 ""&qu ...

最新文章

  1. 给批量用户设磁盘配额
  2. 干货 | Elasticsearch7.X Scripting脚本使用详解
  3. MacOS下如何通过命令搜索文件和打开文件
  4. Excel-在整个工作簿中查找/替换
  5. java中的action是指什么_Struts2【开发Action】知识要点
  6. 精通Android自定义View(十七)自定义圆形鸟巢加载转圈效果
  7. 剑指offer 面试26题
  8. 如何在Inceptor中使用日期函数获取与转换时间
  9. IAR(8.324)---安装教程
  10. 小写金额转换成大写金额
  11. 2017最新版《土地利用现状分类》GBT 21010-2017‰
  12. 程序员那些必须掌握的排序算法(上)
  13. 2021年茶艺师(中级)考试报名及茶艺师(中级)免费试题
  14. 激光雷达在自动驾驶中的关键技术应用
  15. oracle简单查询
  16. 计算机毕业设计ssh外卖订购网站
  17. 转载:SAP 标准教材和自学方法
  18. JavaScript编程精粹
  19. 网络编程--TCP/IP协议(一)
  20. php 半角 全角空格,PHP将全角空格转成半角, 并去除头尾空格

热门文章

  1. 四、golang类型讲解--go语言学习笔记
  2. Messari 2022年度报告8 - ETH, L1L2 , 跨链桥
  3. html5哪个标签首字母大写,HTML5中标签和常用规则有哪些?html5标签以及规则的介绍...
  4. 算法-对分查找(二分查找)C++实现
  5. tensorflow实现lenet5
  6. FTP-用户名密码暴力破解
  7. http://www.xueh188.top/index.php/archives/28/
  8. Redhat6更改yum源
  9. matlab 调日法,【图】手表调日期方法 教你各种表的使用教程_手表调日期_伊秀服饰网|yxlady.com...
  10. 计算机专业 拒绝清华,2次拒绝北大邀请,获清华保送生资格,网友:清华计算机全球第一...