软件工程:王立福讲解状态机与软件开发本质

需积分: 31 73 下载量 32 浏览量 更新于2024-08-20 收藏 3.53MB PPT 举报
"北大王立福教授的《软件工程》自考课件,涵盖了软件开发的基础、过程、需求、方法学以及CMM等关键知识点。强调了软件开发的本质、生存周期和开发方法的重要性,并通过实例解释了问题域到计算逻辑的映射过程。" 在软件工程中,子状态机是一个重要的概念,特别是在状态机的设计和实现中。子状态机是指在一个状态机内部嵌套的另一个状态机,它可以是顺序子状态机或并发子状态机。顺序子状态机是非正交的,意味着它们按照一定的顺序执行,且只有一个子初态和一个子终态。这种状态机在设计时要注意状态之间的转换顺序和条件。 并发子状态机则是一种正交状态机,允许多个子状态同时活动。在正交状态下,每个子状态可以独立执行,互不干扰,提高了系统并行处理的能力。这种设计在处理多线程、并发任务或者复杂事件驱动系统时尤为常见。 软件工程基础强调了理解软件开发的原理和方法的重要性。软件过程包括了开发活动中的一系列步骤和这些步骤的组织方式。软件需求及系统/产品需求规约是开发的起点,它们定义了产品的预期功能和性能,同时也是后期测试和确认的标准。 软件开发方法学涵盖了多种方法,如结构化方法、面向对象方法、面向数据结构方法以及维也纳开发方法等。这些方法提供了实现开发过程的不同路径,每种方法都有其特定的应用场景和优势。例如,结构化方法侧重于过程的分解和控制,面向对象方法则强调数据和操作的封装。 CMM(Capability Maturity Model for software)是评估和改进软件开发过程能力的一种框架,它帮助确保开发出正确的产品或系统。通过实施CMM,可以提高软件质量和生产效率。 软件开发的本质在于将问题域(问题空间)的概念和逻辑映射到解空间(计算逻辑或模型化概念)。这一过程包括数据抽象和过程抽象,前者关注数据的表示,后者关注处理逻辑的构建。通过需求分析、面向对象方法、结构化方法等工具和技术,可以实现这种映射,从而形成可执行的代码。 王立福教授的《软件工程》课件深入浅出地介绍了软件开发的核心概念,为学习者提供了全面的理解和实践指导。