软件工程:理解泛化关系与共享功能

需积分: 42 14 下载量 55 浏览量 更新于2024-08-16 收藏 3.53MB PPT 举报
"本资源是一份关于软件工程自学考试的全程学习资料,主要讨论了如何使用泛化关系来标识和描述共享功能,并涉及到软件工程的基础、软件过程、需求规格、开发方法学以及CMM等内容。" 在软件工程中,泛化关系是一种用于描述类与类之间继承关系的概念,它在面向对象设计中扮演着重要角色。在这个例子中,"Buyer"和"Seller"可以被视为两个特定类型的用户,而"Pay Invoice"和"Perform Transaction"是这两个用户都可能执行的操作。"Pay Invoice"可能是"Perform Transaction"的一个特例或子集,表明买家和卖家都需要进行交易,而支付发票是交易的一部分。这种泛化关系有助于我们理解不同用例之间的通用性和差异性,简化系统设计,提高代码复用。 软件工程的基础是理解软件开发的本质和基本手段。它涵盖了从软件生存周期模型的建立到软件开发过程的支持,包括需求分析、设计、实现、测试和维护等各个阶段。软件开发的本质在于将问题域的概念和计算逻辑映射到解空间,这个映射过程包含了数据抽象和过程抽象。 数据抽象是将问题空间中的实体转化为模型化概念,如在示例1中,"张山"被抽象为对象,这个过程中通常会使用面向对象方法,以形成计算的客体。而过程抽象则是将问题空间的处理逻辑转换为解空间的可构造计算逻辑,例如示例2中计算学生平均成绩的过程,常采用结构化方法来实现。 软件过程则关注如何组织和执行这些开发活动,以确保项目的高效和质量。此外,软件需求及系统/产品需求规约是软件开发的起点,它们为后续的开发工作提供了基准,并作为产品确认测试的标准。 软件开发方法学,如结构化方法、面向对象方法等,提供了解决问题的不同途径。结构化方法侧重于自顶向下、逐步求精的设计,而面向对象方法强调对象的封装、继承和多态性。 CMM(Capability Maturity Model for software)是评估和改进软件开发过程能力的一种框架,旨在确保软件开发过程中能够产出正确的产品或系统。 这份自学资料全面覆盖了软件工程的关键方面,对于学习者来说,它提供了深入理解软件开发过程、方法和技术的宝贵资源。通过学习和掌握这些知识,可以提升软件开发的专业水平和实践能力。