个人阅读作业Week7

  上了大学之后其实就没有很多时间去读书了,与其说软工作业时给我们布置了一些任务,但是也是在另一方面让我们得到了更多的知识的填补,因为平常能够接触的书籍很少,平常自己也是一个很不爱看书的人,所以我觉得这样的作业对我来说还是有所收益,尽管很多东西要去斟酌阅读,但是也好比呆呆的编程好得多啦。在阅读这些内容的过程中也能逐渐明白书中看到的一句话,代码首先是为了人而写,并不是为了机器。  

  好了,那我来谈谈我的阅读感受吧,当然我也会认真的面对自己的情况去面对这次作业。

A. 关于 — 银弹

  我的理解呢,如果没有银弹,那么就是意味着现在情况下,没有任何一种技术还有方法可以使得软件工程生产力可以在十年内等同的提高十倍。我认为软件开发中困难的部分是规格化、设计和测试这些概念上的结构,而不是对概念进行表达和对实现逼真程度进行验证。当然,我们还是会犯一些语法错误,但是和绝大多数系统中的概念错误相比,它们是微不足道的。如果这是事实,那么软件开发总是非常困难的,天生就没有银弹。

  其实在团队分工的开始,我们确实是有了比较好的团队分配,最后也基本达到了软件当初的一些主要需求,但是在开发的过程中来说,没有想象的那么容易,因为我们每个人都是在互相的摸索如何合作更默契,并且自己也是出于一个摸索软件的过程中,我们不断的在面临问题,解决问题,达到最后要求。对于障碍这种问题,我们并不能期待出现银弹为我们打平障碍一路畅通,就像是我们学习变成从面相过程到面相对象一样,这一路的荆棘我们都是一路斩过走过,有过积累有过自己的学习,才能够在程序设计或者学习的过程中更快的完成自己的目标,这些都是我们必须要去做的和经历的。

  所以对于项目本身而言,我们需要踏踏实实完成我们的工作,对于学习而言,我们应当稳扎稳打,着重基础,没有任何捷径可走。

B — 大泥球问题

  大泥球单从字面上去理解就可以提现到,混乱邋遢,事实上呢这也是象征了代码的一种情况,代码的前期的设计不完全,缺乏开发经验以及技巧都是造成我们混乱邋遢有缺陷的一切原因,所以可以把大泥球发生的原因归结为:一次性代码,碎片式增长,为了让软件有正确性,Copy过程导致问题移植,缺少前期设计,应对需求变化过晚。在团队项目中,我最近负责的部分很少,因为我最近一直也是在跑医院,这也是属于我们大泥球的一部分原因吧,因为团队合作的缺陷也会导致很多不可避免的问题。

  不过我相信团队合作就应该是这样,会有自己的任务,也会有自己的失误,往往尽量减少自己IDE失误会给团队带来最大的收益,这也是我自己本身所追求的,我也会尽力在之后的工作中完成我自己的这个愿景吧。但是文章里提到“大泥球”似乎仍然是最常见的软件设计,很难避免。尽管涌现出各种鼓励、促进良好结构代码的开发方法,软件技艺运动也在不断成长,但是“大泥球”仍然是最常见的软件设计,即使人们已经从过去恶劣的设计中学到了东西,但在新的开发过程中,大泥球仍未消失。

C — CatB – Cathedral and the Bazaa

  我们在开发项目的过程中,采用的是大教堂的开发模式,我们将所有源代码都放到github上去,我们可以分享我们的代码我们可以一起阅读其他人写的代码。我觉得我们的项目现在是在不断分配需求,然后实现任务的过程中前进的。但是我们缺少了很多的项目跟踪,我自己也是这段期间参加项目比较少,可能也是跟我个人情况比较特殊一些吧。不过我们的项目也是在具体的需求上做到了基本的要求。

  不论是市集模式还是大教堂模式,都有其优缺点所在(这在上文中已经可以看出),关键是找到其适用的场景。这个观点虽然中庸,不过确实是实话。我以为,大教堂模式,适用于小的项目,或者是团队中有一个技术大牛带领,不需要过多的人来指点。而市集模式,则是那种涉及的方面比较广泛的项目,且不论如何,应该有一个几个人的团体对于项目的整体走向、代码有绝对的控制力,否则,会造成Kamp所说的那种混乱局面。

我们当前的项目(学霸系统的UI之用户管理部分),可以说是类似于大教堂模式。之所以说,类似,是我们的源码并非在互联网上公开的,只是相像而已。一来因为项目比较小,如果非要应用市集模式,可能会有意见无法统一,浪费资源的问题。

D — Worse is Better

  我认为这个文章主要讲的是简单的暴力的往往可以压制一切,我们通常都会追求简单的设计,实现结果也要简单,成就我们需求的简单性。为了简单性,正确性,一致性,完整性都会做出一些牺牲。有时候完整性和程序的一些绝对正确性会给程序带来很大的结构复杂,并且因为复杂也会相对的付出一些代价。

E — 瀑布

  严格把软件项目的开发分隔成各个开发阶段:需求分析,要件定义,基本设计,详细设计,编码,单体测试,结合测试,系统测试等。

使用里程碑的方式,严格定义了各开发阶段的输入和输出。如果达不到要求的输出,下一阶段的工作就不展开。 

  强调文档,在开发的后期才会看到软件的模样。在这种情况下,文档的重要性仿佛已经超过了代码的重要性。

  瀑布模型把开发人员定义为流水线上的工人。由于各阶段的开发人员只能接触到自己工作范围内的东西,所以对客户需求的理解程度高低不等。对于客户需求变更,编码人员会比设计人员更容易产生很强的抵触情绪。

  在每个开发阶段都会有一些信息刻意的不让其他开发阶段的人员知道(本意是为了提到效率,但实际上有时候产生的是互相的理解偏差)。

  瀑布模型产生的管理文档(计划书,进度表)等,能让不太了解该项目的人也能看懂项目的进度情况(只有能看懂百分比就行),很适合向领导汇报用。所以管理人员比较喜欢瀑布模型,但是开发人员不喜欢,因为它束缚了开发人员的创造性。

  既然叫做瀑布,就意味着不应该走回头路。否则如果出现返工,付出的代价会很大。

  软件生命周期前期造成的Bug的影响比后期的大的多。

F — 敏捷开发

  而软件存在的意义就是与现实相适应。敏捷开发的核心即:符合现实的软件。一个符合现实的软件,才能够可持续地与现实共同发展。一旦软件与现实背离,软件的生命周期也就到了结束的时候了。

  现实的世界是动态变化的,人类造出来的东西,往往是落后于世界的变化的。如,地图造出来之后,可能又多修了几条路,几个建筑;刚买了一款高配置的计算机,几个月后,自己的机器配置又处于被甩的地位了……这些变化,人是被迫要去接受。因为这些东西属于硬件,人在目前还无法轻易地改变硬件。

  而与此不同的软件,则是另外一种现象了。改变软件的代价是相当低廉的。改变软件,实际上只是改变硬盘上的磁性。改变软件的容易性,带来的结果是: 一、软件开发者容易以自己的想象来决定软件怎么做。 开发出一个无用的软件,比起因为出错而要毁掉待出售的10万张地图,比起因为工艺漏洞而要招回已经出售的计算机来讲,代价太低廉了。 二、软件更加具备符合现实的条件。 开发者让软件与现实相适应,所要付出的代价非常低廉,当然对于敏捷开发我们也会有一些相应的办法:Scrum meeting 以及 个人学习团队互助的编程。

  在Scrum meeting 上 : 每天都会进行scum meeting汇报,包括今天自己完成了什么任务,明天的计划是什么。并生成每天的燃尽图,显示整体项目进度。这样的做法可以监督每一个成员每天按时按量完成自己的任务,保证项目的整体进度。

  在个人学习和团队互助的编程过程中 : 我们都会自己有阶段性的学习,然后在学习之后我们会进行交流,分享不懂不会的地方最后进行一个汇总,交给编程能力或者对语言比较熟悉的同学对这些我们收集到的问题进行解答。

  所以,敏捷开发的核心就是符合现实的软件。为了造出符合现实的软件,才有了进一步的价值观及方法论。

G — 团队项目

  我们的团队项目是"BUAAMOOC“,我负责的部分是PM和测试,但是我觉得我在个人的工作完成上十分不满意,也是因为我前段时间的身体情况耽误了太久,不过我希望在之后的团队项目的工作中自己可以打起精神吧,不希望自己因为自己的不足而感到失落,我应该投入到团队的合作中去发挥更大的力量才是我应该继续要做的事情。

转载于:https://www.cnblogs.com/Cocky/p/4965950.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/256425.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图像的像素、分辨率、像元尺寸、大小、清晰度的关系

图像的像素: 图像是由像素所组成的,像素的多少表明摄像机所含有的感光元件的多少。像素是指一张图像中所有的像素数之和。 图像分辨率: 是指表达方式也为“水平像素数垂直像素数” 像元尺寸: 是指一个像素在长和宽方向上所代表的实…

机器学习——支持向量机SVM实例(兵王问题,SVM求解步骤以及思路,不求解不编程)

目录 一、问题描述(兵王问题) 二、步骤 1、获得数据 2、样本划分(训练样本和测试样本) 3、训练样本得到SVM模型 ​ 1)数据处理 2)训练样本和测试样本归一化 3)选择核函数和调参 4&#…

单摄像机对于二维平面的测量

二维平面测量 首先我们应该知道什么是二维平面,二维平面简单的说就是只含有x,y坐标系的平面,在z轴上没有当量。这种一般出现在对于一个平面的宽度,长度,变形的测量,一般应用较多的场合是对一个规则的机械零件进行尺寸…

十六进制,输出的时候怎样控制所输出字母的大小写。

the first:printf("%x",10);printf("%X",10); 可以用x的大小写来控制,所输出字符的大小写,真是一个巧妙的技能。转载于:https://www.cnblogs.com/A-FM/p/4970114.html

Django的安装

Django是Python的一款Web开源框架,所以Django是依赖于Python的,首先要安装Python。 Python安装 官网地址:http://www.python.org/download/ 在安装Python的时候,会有人纠结,是要安装Python2还是Python3呢?其…

机器学习——支持向量机SVM之多分类问题

目录 方法1:改造目标函数与限制条件 方法2:一类对其他类(类数为N,需要建立N个SVM模型) 情形1:多个SVM模型结果交集得出确切归类 情形2:多个SVM模型结果交集没有得出确切归类 方法3&#xff…

python3版本无法加载reload解决办法NameError: name 'reload' is not defined

很多人在运行八点法求基础矩阵问题时,都会遇到NameError: name ‘reload’ is not defined的错误 只需在最前面加上from imp import reload即可

hdu 2612 Find a way(bfs)

Problem DescriptionPass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. Leave Ningbo one year, yifenfei have many people to meet. Especially a good friend Merceki. Yifenfei’s home is at the countryside, but Merceki’s home is in …

定义类或对象

学习总结: 工厂方式 原始的方式(对象创建后动态定义对象的属性) var oCar new Object; oCar.color "blue"; oCar.doors 4; oCar.mpg 25; oCar.showColor function() {alert(this.color); };创建对象 car,属性&…

七桥问题

怎么不重复地走完连接两座岛和陆地的七座桥? 简化为以下: 答案是不能走完的。 奇点:这个点有奇数条线汇聚于此 偶点:这个点有奇数条线汇聚于此 七桥问题——一笔画问题 若一个图形全部是偶点或者只有2个奇点(没有…

office2016打开PPT出现解决VBE6EXT.OLB不能被加载问题的解决办法

第一步 打开路径C:\Program Files (x86)\Microsoft Office\root\VFS\ProgramFilesCommonX86\Microsoft Shared\VBA。找到VBA只要是默认安装路径均一样。 第二步 打开VBA6找到VBE6EXT.OLB将其复制到VBA7.1中。 第三步 打开VBA7.1找到VBE7.DLL将其复制到VBA6中。 第四步…

20151118小问题

1.模板引擎 百度百科:模板引擎(这里特指用于Web开发的模板引擎)是为了使 用户界面与业务数据(内容)分享而产生的,它或以生成特定格式的文档,用于网站的模板引擎就会产生一个标准的HTML文档. 目的:生成一个标准的HTML文档. 概念:模板引擎不属于特定技术领域,它是跨领域跨平台的概…

机器学习——人工神经网络之发展历史(神经元数学模型、感知器算法)

目录 一、神经元的数学模型 ​ 二、感知器算法(SVM算法前身) 1、目的 2、流程 >>>问题1:下图w和b的调整是什么意思? 3、算法的有效性验证 1)原算法 2)增广矩阵 3)修改后的算法…

PHP 基础知识-数组

PHP 的数组主要分为: 索引数组 - 带有数字索引的数组关联数组 - 带有指定键的数组多维数组 - 包含一个或多个数组的数组 索引数组:有两种创建索引数组的方法:索引是自动分配的(索引从 0 开始): 第一…

打开word2016总是出现很抱歉,此功能看似中断需要修复。。问题解决办法

第一步 打开运行窗口,在电脑桌面左下角有个圆圈点击进去,输入regedit,即可进入。 第二步 打开HKEY_CURRENT_USER中的SOFTWARE 第三步 找到HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Word\Options项如图红色箭头标示。然后点击O…

机器学习——人工神经网络之多层神经网络(多层与三层)

目录 一、多层神经网络 1、多层神经网络数学模型 2、数学模型中的非线性函数fai 1)非线性函数fai存在的意义 2)非线性函数fai具体是什么? 3、多层神经网络与单层神经网络的区别与改进 1)单层神经网络数学模型 2&#xff0…

noip2012-day2-t2

【问题描述】 在大学期间,经常需要租借教室。大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室。教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样。 面对海量租借教室的信息,我…

机器学习——人工神经网络之后向传播算法(BP算法)

目录 一、后向传播算法的本质——梯度下降法求局部极值 1、w迭代公式的合理性

获取视图的宽高

1 view.measure(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 2 int width view.getMeasuredWidth(); 3 int height view.getMeasuredHeight(); 转载于:https://www.cnblogs.com/cmgrass/p/4978222.html

排序算法02--冒泡排序

思路:冒泡排序 就是把大的数一个个沉到下面,当然也可以是把小的数一个个浮到上面。 在最外层需要比较n-1次,因为n-1个大的数被沉到了下面,剩下一个自然就是最小的数了。 在这n-1次的里层,还需要亮亮相互比较&#xff0…