《软件工程—实践者的研究方法》读书笔记

发布时间 2023-12-22 00:02:24作者: 实名吓我一跳

  与以前的软件工程书籍不同,本书在敏捷开发以及 Web 应用程序和移动应用程序的分析、设计、测试和质量管理方面有大量篇幅。本书的内容并不局限于理论知识的阐述,而是用大量的篇幅在简单的例子中进行分析和设计,主要使用SafeHome来演示如何推进软件项目。它也不同于布鲁克斯的“人月神话”,它关注工程项目中的重大问题,分析软件开发和软件工程中的一些问题,探讨是否有消灭“人狼”的“灵丹妙药”。在本书中,我认为作者想给大家呈现一套比较完整的软件工程理论体系,同时用项目实例来演示如何将各种理论方法应用到项目工程中。

  本书分为五个主要部分,软件过程、建模、质量管理、管理软件项目和软件工程高级课程。这五个部分之前有两章专门讨论软件和软件工程的定义。

  软件是:(1)指令的集合(计算机程序),通过执行这些指令可以满足预期的特性、功能和性能需求;(2)数据结构,使得程序可以合理利用信息;(3)软件描述信息,它以硬拷贝和虚拟形式存在,用来描述程序的操作和使用。IEEE对软件工程下的定义是:(1)将系统化的、规范化的、可量化的方法应用于软件的开发、运行和维护,即将软件工程化方法应用于软件;(2)对(1)中所述方法的研究。作者认为我们需要规范,也需要可适应性和灵活性。

  第一部分是软件过程,软件工程的通用过程框架定义了五种框架活动:沟通、策划、建模、构建以及部署,此外,还有一系列普适活动:项目跟踪控制、分线管理、质量保证、配置管理、技术评审以及其他活动。过程模式有惯用过程模式、专用过程模式和统一过程。惯用过程模型有:瀑布模型(变体V模型)、增量过程模型、演化过程模型(原型开发、螺旋模型)、并发模型;专用过程模型有:基于构建的开发、形式化方法模型、面向方面的软件开发。敏捷开发推崇:让客户满意且尽早的增量发布;小而高度自主的项目团队;非正式的方法;最小化软将工程工作产品以及整体精简开发。极限编程是敏捷开发中使用最广泛的一种方法。XP关键活动有策划、设计、编码和测试。

  第二部分是建模部分,主要内容有指导实践的原则、理解需求、需求建模和设计。软件工程是以一系列核心原则作为指导的,这些原则有指导过程的原则和指导实践的原则。构建一个软件系统最困难的部分是确定构建什么,它会严重的影响随后所开发的系统,于是出现了需求工程。需求工程的任务是为设计和构建活动建立一个可靠且坚固的基础。软件团队成员需要完成7个不同的需求工程任务:起始、获取、细化、协商、规格说明、确认和管理。需求建模有基于场景的方法、基于类的方法以及行为、模式和Web/移动App。软件设计是一个迭代的过程,通过这个过程,需求被变换为用于构建软件的“蓝图”。本书设计内容有:体系结构设计、构件级设计、用户界面设计、基于模式的设计、web App设计和移动App设计。