zoukankan      html  css  js  c++  java
  • 17074211张昊 计算与软件工程作业5

    作业要求 https://edu.cnblogs.com/campus/jssf/infor_computation17-31/homework/10584
    自我目标 加强对软件开发的理解与掌握
    课程目标 软件开发方法思想的加深
    参考文献 https://www.ituring.com.cn/article/9363

    1.银弹
    什么是银弹?它是否存在?
        IT行业的大规模软件开发使得这些困难更早的被爆发,也引发了软件工程的方法论研究,自动化行业可以从其中窥见一斑。
        20世纪80年代,Brooks在其著作”No Silver Bullet: Essence and Accident in Software Engineering“,对软件工程的根本性困难和次要困难进行了论述,他的一个基本论断是”没有银弹“*(银弹:欧洲中世纪的传说中有一种叫“人狼”的妖怪,只有用银子制成的特殊子弹才能杀死人狼。银弹用于比喻解决软件开发的根本性困难的有效手段)。即,没有任何一种技术活管理上的进展能够独立地承诺在10年内大幅度提高软件的生产率、可靠性和简洁性“。
    Brooks所说的次要困难是指软件开发中那些曾经存在或者目前仍然存在,但并非与生俱来的一些困难。这些问题在过去一些年头里已经得到了解决,例如:高级语言、分时、统一开发平台等,这些进展极大的提高了软件开发效率和质量,但由于软件开发中的根本性困难的存在,这些进展对于软件开发的现状还难以带来本质的变化。
    与此同时,Brooks也对一些可能的“银弹”进行了分析,包括购买而非自行开发(商用第三方构件),需求净化和快速原型、增量开发、好的设计师等,这些手段虽然也不能从本质上解决问题,但无疑能够在一定程度上帮助我们提高软件开发效率和质量。
    2.大泥球
    大泥球,是指杂乱无章、错综复杂、邋遢不堪、随意拼贴的大堆代码。这些年来,为了对付这个泥球,我们看到了多种指导方法,比如 SOLID 、 GRASP 和 KISS ,与其他诸多年代久远的、提倡高内聚、低耦合的方法一起出现。
    大泥球发生的主要原因可以归结为:

    • 一次性代码
    • 碎片式增长
    • 为了让软件不出问题
    • Copy/paste 导致问题转移(有问题的代码被复制到很多地方,不断蔓延)
      有趣的是,根据 FJ 的记录,Yoder 认为 Agile 的很多方面会直接导致泥球,包括:
    • 缺少前期设计
    • 应对需求变化过晚
    • 应对架构变化过晚
    • 碎片式增长
      总结
      软件开发过程是随着开发技术的演化而随之改进的。从早期的瀑布式(Waterfall)的开发模型到后来出现的螺旋式的迭代(Spiral)开发,以致最近开始兴起的敏捷软件开发(Agile),他们展示出了在不同的时代软件产业对于开发过程的不同的认识,以及对于不同类型项目的理解方法。
      通过查看这几个软件工程的方法论,知道了一个软件的开发需要很多的步骤,讨论,沟通,环境等等都会影响整个的软件开发的进度与质量,而一个软件的实现就需要更多的方面的配合,不光自己还要和团队巧妙的配合。
  • 相关阅读:
    04: Dom
    03: JavaScript基础
    02: css常用属性
    01: html常用标签
    03: Memcached
    01: Redis缓存系统
    01: RabbitMQ
    04: 事件驱动、五种I/O操作、I/O多路复用select和epoll
    03: 进程、线程、协程
    [Android] 任意时刻从子线程切换到主线程的实现
  • 原文地址:https://www.cnblogs.com/17074211zh/p/12653220.html
Copyright © 2011-2022 走看看