软件工程导论/导论
本书是软件工程艺术的入门书。它旨在作为大学本科课程的教科书。
软件工程是关于团队的。要解决的问题过于复杂或庞大,以至于单个开发人员无法再解决它们。软件工程也关乎沟通。团队不仅包括开发人员,还包括测试人员、架构师、系统工程师、客户、项目经理等等。软件项目可能非常庞大,因此我们必须进行周密的计划。实现不再仅仅是编写代码,还包括遵循指南、编写文档以及编写单元测试。但仅仅靠单元测试是不够的。不同的部分必须组合在一起。我们必须能够使用指标来识别问题区域。它们告诉我们我们的代码是否遵循特定标准。一旦我们完成编码,并不意味着我们完成了项目:对于大型项目而言,维护软件可能会让很多人忙上很长时间。由于有许多因素影响着项目的成功或失败,我们还需要学习一些关于项目管理及其陷阱的知识,但最重要的是了解哪些因素可以使项目取得成功。最后但并非最不重要的一点是,优秀的软件工程师,就像任何工程师一样,都需要工具,你需要了解这些工具。
在你的初级学期,你是作为个人进行编码的。你所解决的问题足够小,一个人可以掌握它们。在现实世界中,情况有所不同:- 问题规模和时间限制要求只有团队才能解决这些问题。
为了有效地工作,团队需要一种沟通语言(UML)。团队不仅包括开发人员,还包括测试人员、架构师、系统工程师,最重要的是客户。因此,我们需要了解什么构成了良好的团队,如何与客户沟通,以及如何记录源代码以及与软件项目相关的所有内容。
在之前的课程中,我们学习了 Java 或 C++ 等语言,以及如何将想法转化为代码。但这些想法独立于语言。借助统一建模语言 (UML),我们将看到一种独立于语言描述代码的方法,更重要的是,我们学会以更高的抽象级别进行思考。UML 可以成为宝贵的沟通和文档工具。
我们将学习如何看到全局:模式。这为我们提供了更高一级的抽象级别。这再次扩展了我们的词汇量,使我们能够更有效地与同事交流。此外,它是一种从资深人士那里学习的绝佳方式。这对于设计大型软件系统至关重要。
同样,仅仅能够编写软件并不意味着软件就很好。因此,我们将探索什么构成了良好的软件,以及如何衡量软件质量。一方面,我们应该能够通过静态分析和度量指标来分析现有源代码,但我们如何才能保证我们的代码符合特定的质量标准?测试在这个背景下也很重要,它保证了高质量的产品。
到目前为止,你可能已经了解了 IDE、编译器和调试器。但软件工程师还有许多其他工具可以使用。有一些工具可以让我们进行团队合作、记录我们的软件、协助和监控整个开发工作。有一些工具是为软件架构师准备的,还有一些工具用于测试和分析、自动化和重构。