计算与软件工程作业五

作业要求 https://edu.cnblogs.com/campus/jssf/infor_computation17-31/homework/10584
课程目标 学习到更多关于软件编程的知识,通过这门课程提高动手实践能力
此作业在哪个具体方面帮我实现目标 关于软件开发方法的认识
其他参考文献 https://blog.csdn.net/weixin_30718391/article/details/97198723?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-8&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-8
作业正文 https://www.cnblogs.com/shenlingha/p/12654852.html

正文

讨论软件开发方法的思潮

迄今为止,我们了解了不少软件工程的方法论。请从下表挑选几篇关于软件工程方法论的文章,仔细阅读(包括相关的讨论),根据你的软件工程经验分享你的看法。
https://www.cnblogs.com/xinz/p/3852390.html

敏捷的腐败(The Corruption of Agile)

艾伦·凯(Alan Kay)说当今的编程已成为一种流行文化时是完全正确的:“流行文化完全是关于身份和您正在参与的感觉。它与合作,过去或未来无关,它生活在当今世界。目前,我认为大多数为金钱而写代码的人都是这样,他们不知道[他们的文化来自哪里]-互联网做得很好,以至于大多数人将其视为像太平洋一样的自然资源,而不是人造的东西。什么时候如此规模的技术如此无误?

尽管敏捷已被主流采用,但其初衷的丧失削弱了其有效性。在瀑布模型的肆意抨击中,当今敏捷观点与早期现实之间的脱节同样明显。
我们从文章中可以了解到的是,对当今做事方式的迷恋,以及对这是获得良好代码的一条真实途径的看法,似乎是编程文化的永久组成部分。但是敏捷顾问团队极大地鼓舞了它。通过强调这些做法,他们破坏了敏捷的含义。重要的是要记住,敏捷宣言表达的是价值,而不是实践。但是,顾问立即将价值转化为编程实践,并且很快,前者就消失了。《敏捷宣言》的全部要点是,这是一套可以随团队规模扩展的个人实践。在Thomas的论述中有趣的是,敏捷是一种个人实践。隐式是一种使自己适应于接受甚至欢迎变化的发展过程的个人方式。而艾伦·霍尔布(Allen Holub)提醒我们敏捷是一种文化,而不是一套实践。

瀑布模型

瀑布模型是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,形如瀑布流水,最终得到软件产品。1970年温斯顿·罗伊斯(Winston Royce)提出了著名的“瀑布模型”,直到80年代早期,它一直是唯一被广泛采用的软件开发模型。瀑布模型是最早出现的软件开发模型,在软件工程中占有重要的地位,它提供了软件开发的基本框架。其过程是从上一项活动接收该项活动的工作对象作为输入,利用这一输入实施该项活动应完成的内容给出该项活动的工作成果,并作为输出传给下一项活动。同时评审该项活动的实施,若确认,则继续下一项活动;否则返回前面,甚至更前面的活动。对于经常变化的项目而言,瀑布模型毫无价值。因此瀑布模型最大的缺点就是不适应用户需求的变化。

大泥球

大泥球的形成:有时,大型丑陋的系统从THROWAWAY代码。THROWAWAY CODE是一种快捷方式代码,只能使用一次,然后丢弃。但是,尽管结构随意,文档不完善或不存在,但这样的代码通常都可以独立生存。它有效,那么为什么要解决它?当出现相关问题时,解决该问题的最快方法可能是方便地修改此工作代码,而不是从头开始设计适当的通用程序。随着时间的流逝,一个简单的一次性程序就产生了“泥泞大球”。
时间或缺乏时间通常是驱动程序员编写THROWAWAY CODE的决定性力量。花时间来编写适当的,经过深思熟虑,记录良好的程序可能会花费更多时间来解决问题,或者花更多时间解决问题。当最后期限迫在眉睫时,可以确定自己制作一个草率程序的确定性可能会超过学习和掌握他人库或框架的未知成本。因此,通过任何可用的方式,生成简单,方便,可处理的代码,这些代码可以解决当前的问题。

银弹(There Is a Silver Bullet)

掌握面向对象的方法意味着要认识到这是目的,而不是手段-目标而不是实现目标的技术。

面向对象技术
面向对象有面向对象的环境,面向对象的应用程序,面向对象的数据库,体系结构和用户界面,以及面向对象的规范,分析和设计方法。事实上,形容词面向对象的真正含义是说不清楚的。面向对象无法区分Ada和C ++的低级模块化/绑定技术与Smalltalk的高级技术,这三种语言以及像Objective-C这样的混合环境。掌握面向对象的方法意味着要认识到它是目的,而不是手段,而是目标,而不是实现目标的技术。这意味着改变我们对软件的看法,将重点转移到我们构建的对象上,而不是我们用来构建它们的过程上。

软件工艺宣言

价值观:不仅要让软件工作,更要精益求精;不仅要响应变化,更要稳步增加价值;不仅要有个体与交互,更要形成专业人员的社区;不仅要与客户合作,更要建立卓有成效的伙伴关系。

总结

传统的瀑布式开发,也就是从需求到设计,从设计到编码,从编码到测试,从测试到提交大概这样的流程,要求每一个开发阶段都要做到最好。特别是前期阶段,设计的越完美,提交后的成本损失就越少。螺旋开发,很大程度上是一种风险驱动的方法体系,因为在每个阶段之前及经常发生的循环之前,都必须首先进行风险评估。敏捷开发,相比迭代式开发两者都强调在较短的开发周期提交软件,但是,敏捷开发的周期可能更短,并且更加强调队伍中的高度协作。敏捷方法有时候被误认为是无计划性和纪律性的方法,实际上更确切的说法是敏捷方法强调适应性而非预见性。适应性的方法集中在快速适应现实的变化。因此,当项目的需求起了变化,团队应该迅速适应。

posted @ 2020-04-07 17:54  草莓葡萄  阅读(145)  评论(0编辑  收藏  举报