软件工程基础与UML建模策略

需积分: 37 19 下载量 192 浏览量 更新于2024-08-15 收藏 3.61MB PPT 举报
"王立福的2011版自学考试软件工程课件,重点讲解了软件工程的基础知识,包括软件开发的本质、软件过程、需求分析、开发方法学以及CMM等核心概念。" 在软件工程中,理解并掌握基本策略至关重要,尤其是在用统一建模语言(UML)进行建模时。以下是这些策略的详细解释: 1. 依赖关系的使用:依赖关系用于表示一个元素对另一个元素的非结构化依赖。这条策略强调,只有当两个元素之间的关系是非结构性的,即它们之间的关联不是长期稳定或结构性的,才应使用依赖关系。例如,一个类可能临时性地依赖于某个函数库中的特定函数。 2. 泛化的应用:泛化关系表示"is-a-kind-of"的关系,常用于类的继承。遵循这条策略意味着,只有当类B具有类A的全部特性和行为,并且可以视为A的一种特殊情况时,才应使用泛化。例如,动物类可以被狗类和猫类泛化,因为狗和猫都是动物的一种。 3. 避免循环的泛化关系:循环泛化是指两个类互相泛化,形成一个闭环。这通常会导致设计上的复杂性和不清晰的继承结构。在设计中应避免这种关系,以保持类的清晰性和独立性。 4. 泛化关系的平衡:保持泛化关系的深度和宽度适中,避免过深的继承层次(过多的嵌套)和过宽的继承树(很多子类继承同一个父类)。这有助于提高代码的可读性和可维护性,同时鼓励创建更有意义的抽象类,作为多个子类共享特性的中间层。 软件工程的过程涵盖了一系列活动,从软件的需求分析开始,通过定义、设计、实现、测试直至维护。需求分析是软件开发的起点,它确定了软件要解决的问题和满足的功能。软件开发方法学则提供了如何进行开发活动的指导,如结构化方法、面向对象方法等,每种方法都有其适用场景和优势。 CMM(能力成熟度模型)关注的是软件开发过程的能力提升,旨在确保软件开发过程中能够产出正确的产品。软件开发的本质在于将问题域的概念和计算逻辑映射到解决方案上,这个映射过程包含了数据抽象和过程抽象,是需求分析和设计的关键部分。 结构化方法侧重于过程的分解和控制流,面向对象方法强调数据和操作的封装,而面向数据结构方法则注重数据结构的设计。其他方法如维也纳开发方法(VDM)则提供了另一种形式化的方法来描述和验证软件系统。 软件工程是一门综合学科,涵盖了从需求获取到系统测试的全过程,涉及多种方法和技术,旨在提高软件的质量、可维护性和效率。王立福的课件深入浅出地解析了这些概念,是自学者理解软件工程理论和实践的重要资源。