ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

现代软件工程书籍

2022-09-04 01:34:32  阅读:217  来源: 互联网

标签:软件开发 想法 我们 学习 现代 软件工程 软件 书籍


现代软件工程书籍

你好,我想告诉你另一本好书。

到书 你可以在这里找到它。

工程——科学的实际应用

软件开发是一个发现和研究的过程;因此,要想在这方面取得成功,软件工程师必须精通学习。

人类最好的学习方法是科学,因此我们必须接受科学的技术和策略,并将它们应用于我们的问题。这通常会导致一种误解,即从软件环境来看,我们应该是不合理地测量精度水平的物理学家。工程比这更务实。

当我说我们必须应用科学的技术和策略时,我的意思是我们必须应用一些简单但仍然非常重要的思想。

我们大多数人在学校学到的科学方法, 维基百科 描述如下:

  • 表征 : 观察当前的情况。
  • 做一个假设 :创建一个解释,一个可以解释你的观察的理论。
  • 猜测 :根据您的假设做出预测。
  • 实验 : 测试你的猜测。

当我们以这种方式组织我们的思维并开始在许多小实验的基础上取得进展时,我们就开始更好地消除不适当的结果。

如果我们开始考虑在实验中控制变量,以便我们可以在结果中实现更高的一致性和可靠性,这将引导我们走向更具确定性的系统和代码。

这本书基于一种解决软件问题的实用、务实的方法,基于对基本科学原理的非正式采用,即工程!

什么是软件工程?

软件工程是应用实验性的、科学的方法来为软件中的实际问题寻找有效、经济的解决方案。

采用工程方法进行软件开发很重要,主要有两个原因。首先,软件开发始终是一种发现和学习的练习,其次,如果我们的目标是“高效”和“负担得起”,那么我们的学习能力必须是可持续的。

这意味着我们必须以保持我们学习和适应新事物的能力的方式管理我们创建的系统的复杂性。

因此,我们必须是学习和管理复杂性的专家。

有五种技术构成了学习中专注的根源。具体来说,我们需要以下内容才能精通学习:

• 迭代
• 反馈
• 渐进式进展
• 实验
• 经验主义

这是创建复杂系统的进化方法。复杂的系统并不完全由我们的想象力组成。它们是许多小步骤的产物,我们在这些小步骤中尝试我们的想法并在此过程中对成功和失败做出反应。这些是使我们能够做出这一发现的工具。

以这种方式工作对我们如何安全前进施加了限制。我们需要能够以促进发现之旅的方式工作,这是每个软件项目的核心。

因此,除了专注于学习之外,我们还需要以使我们能够在答案方面取得进展的方式工作,有时甚至在方向不确定的情况下也是如此。

为了这 复杂性管理专家 我们需要。无论我们解决的问题的性质或我们用来解决问题的技术如何,解决我们面临的问题的复杂性以及我们应用于这些问题的解决方案揭示了坏系统和好系统之间的根本区别。

复杂性管理专家 要成为一个,我们需要以下内容:

• 模块化
• 内部凝聚力
• 关注点分离
• 抽象
• 虱子联轴器

很容易看到这些想法并将它们视为熟悉的。本书的目的是将它们组织起来,并以一种连贯的方法来开发软件系统,这将帮助您充分利用它们的潜力。

这本书,这 你的十个想法 解释了如何将它们用作指导软件开发的工具。然后它继续描述一组想法,这些想法充当任何软件开发和执行有效策略的实用工具。这些想法包括:

• 可测试性
• 可部署性
• 速度
• 检查变量
• 持续交付

当我们应用这种想法时,后果是深远的。我们生产质量更好的软件,我们更快地生产工作,在采用这些原则的团队中工作的人们报告说他们更喜欢自己的工作,压力更小,工作更好。 工作与生活的平衡 他们说他们有。

虽然这些都是夸大的声明,但它们是有数据支持的声明。

回收“软件工程”

我为这本书的名字苦苦挣扎,因为我不知道该怎么称呼它,但是我们的行业, 你的工程 它重新定义了它在软件上下文中的含义,以至于该术语的含义变得毫无价值。

在软件中,它通常被视为“代码”的同义词,或者以过度官僚和程序化的方式拖延人们的东西。对于真正的工程来说,没有什么比事实更离谱的了。

在其他学科中,工程学很简单 “有用的东西” 它的意思是。这是您应用的过程和实践,以增加您做好工作的机会。

如果我们的“软件工程”实践不允许我们更快地构建更好的软件,那么它们真的不是工程,我们必须改变它们!

这是本书的核心思想,其目的是描述一个智力上连贯的模型,它结合了支撑所有主要软件开发的一些基本原则。

从来没有成功的保证,但是通过采用这些心理工具并组织原则并将其应用到您的工作中,我相信您一定会增加成功的机会。

如何进步

软件开发是一项复杂的活动。在某些方面,这是我们作为一个物种进行的最复杂的活动之一。此外,假设每次我们开始一项新业务时,每个个人和团队都可以而且应该发明如何从头开始处理它,这很有趣。

我们已经了解了哪些有效或无效,并且我们将继续学习。嗯,正如艾萨克牛顿曾经说过的, “每个人都有否决权” 作为一个行业和团队,我们如何才能取得进步?因此,我们需要商定的原则和指导我们活动的纪律。这种思维方式的危险在于,如果误用、无情、过度指导, “权威的决定” 风格可以引发思考。我们正在恢复以前的坏想法,即所谓的经理和领导者的工作是告诉别人该做什么以及如何去做。

“禁止”或过度“指导”的最大问题是:如果我们的一些想法是错误的或不完整的,我们该怎么办?他们不可避免地会这样做,所以我们如何挑战和驳斥陈旧但有充分根据的坏想法。我们如何评估新的、潜在的伟大的、未经检验的想法?

我们有一个非常有力的例子来说明如何解决这些问题。这给了我们挑战、驳斥教条的机会。这是一种方法,让我们在智力上自由区分伟大的想法,无论是时尚的,还是坏的想法。它使我们能够用更好的想法代替坏想法并发展好想法。我们对此 科学的好例子 我们说!

当我们将这种思维运用到解决实际问题时, 工程 我们说!

这本书是关于以一种有纪律的方式应用科学推理,以便我们能够真正准确地 软件工程 这是关于了解实现我们可能称之为的目标意味着什么

软件工程的诞生

软件工程作为一个概念是在 1960 年代后期创建的。该术语最初是由麻省理工学院仪器实验室创造的。 软件工程部主任 这是 玛格丽特汉密尔顿 被使用玛格丽特正在领导为阿波罗太空计划开发飞行控制软件。

大约在同一时间,北大西洋公约组织 (NATO) 在德国召开了一次会议,试图定义该术语。 这是第一次软件工程会议 .

最早的计算机是通过转动钥匙来编程的,甚至是硬编码作为其设计的一部分。先驱们很快就明白这是缓慢且不灵活的,并且 “存储程序” 于是,这个想法诞生了。这是明确区分软件和硬件的第一个想法。

到 1960 年代后期,计算机程序变得如此复杂,以至于难以自行创建和维护。他们开始参与解决更复杂的问题,并迅速成为解决某些类别问题的便利步骤。

检测到硬件中的起搏和软件中的起搏之间存在显着差异。这是当年 软件危机 被称为。

北约会议的召开部分是为了应对这场危机。

今天,当我们阅读会议纪要时,我们发现有很多想法显然是经久不衰的。他们抵制了时代的破坏性,今天仍然像 1968 年一样真实。如果我们希望确定定义我们学科的一些关键特征,这对我们来说应该很有趣。

几年后回首, 图灵奖得主弗雷德布鲁克斯 1986 年,“没有银弹”。 ) 软件进步与硬件进步的比较:

“无论是技术还是管理技术,都没有一项单一的发展可以承诺在十年内提高生产力、可靠性和简单性。”

Brooks 使这一点出名,硬件开发多年来一直遵循这一点。 摩尔定律 比较它。 加速(2018) 在他的书中说:

“1965 年,Gordon Moore 预测晶体管密度将每年翻一番,并在接下来的十年(直到 1975 年)每两年修订一次。这一预测成为半导体制造商的目标,大大超出了摩尔的预期,并持续了几十年。一些观察家认为,由于当前方法和量子效应方法的局限性,我们已经达到了产能爆炸性增长的终点,但在撰写本文时,高密度半导体的发展继续遵循摩尔定律。”

这是一个有趣的观察,我认为会让很多人感到惊讶,但它的核心始终是正确的。
布鲁克斯 ,这不是软件开发问题;注意到对硬件性能独特的、令人惊讶的改进的观察:

“我们应该观察到异常不是软件进展太慢,而是计算机硬件进展太快。自文明开始以来的 30 年里,没有其他技术的性价比提高了六倍。”

他在 1986 年写了这篇文章,当时,我们认为今天是计算机时代的黎明。从那时起,硬件的进步一直以这种速度发展,与现代系统的容量和性能相比,在布鲁克斯看来如此强大的计算机就像玩具一样。再一次,他对软件开发改进速度的观察仍然是正确的。

改变范式

范式转变的想法,物理学家 托马斯·库恩 由...制作
大多数学习是一种积累。我们创建了理解层,每一层基本上都由前一层补充。然而,并不是所有的学习都是这样的。有时我们会从根本上改变对某事的看法,这使我们能够学习新事物,但这也意味着我们必须丢弃以前的东西。

范式转变的想法隐含地包括这样的想法,即当我们做出这样的改变时,作为该过程的一部分,我们将丢弃一些我们不再知道是正确的想法。

将软件开发视为基于科学方法和科学理性主义哲学的真正工程学科的意义是深远的。

这为我们提供了一种更有效地学习和更有效地丢弃坏想法的方法。
我相信我在本书中描述的软件开发方法代表了这种范式转变。我认为这将为我们提供一个关于我们做什么以及如何做的新视角。

2. 什么是工程?

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/11876/00460401

标签:软件开发,想法,我们,学习,现代,软件工程,软件,书籍
来源: https://www.cnblogs.com/amboke/p/16654115.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有