软件工程:从需求到设计的抽象转换

需积分: 29 20 下载量 170 浏览量 更新于2024-08-20 收藏 3.53MB PPT 举报
"这篇资料是北京大学软件工程国家工程研究中心王立福教授的2011年软件工程课程讲义,重点讲述了如何从分析类中识别出在体系结构上有意义的设计类,并介绍了软件工程的基础知识,包括软件开发的本质、软件过程、需求规约、开发方法学以及CMM模型。" 在软件工程中,标识在体系结构方面有意义的设计类是关键步骤。这通常基于对分析类的深入理解,这些分析类代表了系统的核心功能和实体。例如,"Invoice"分析类可能被提炼为"Invoice"设计类,因为它在系统架构中扮演着重要角色。通过分析类之间的关系,我们可以直接推导出设计类间的关系,如《Trace》和Analysis model与Design model的关联。 软件工程不仅关注如何开发软件,更强调理解为什么这样做。软件开发的本质在于将问题域(问题空间)的概念和逻辑映射到不同的抽象层,即解空间。这个过程包括数据抽象和过程抽象。数据抽象涉及将现实世界中的对象转化为模型化概念,如"对象=F(张山)",而过程抽象则关注将问题空间的处理逻辑转换为可执行的代码,如计算学生的平均成绩。 软件过程涵盖了软件开发的所有活动及其组织方式。从需求获取开始,通过软件需求及系统/产品(需求)规约来明确产品的预期行为,它是后续测试和验证的标准。接着,选择合适的软件开发方法学,如结构化方法、面向对象方法或面向数据结构的方法,来指导实际的开发活动。 CMM(Capability Maturity Model for software)模型旨在确保开发过程的能力,以产出正确的产品或系统。它提供了过程改进的框架,帮助团队提升质量和效率。 在软件工程基本知识结构中,包括了对软件开发本质的理解,软件生存周期过程的导出,以及各种支持过程和技术,如面向对象方法、结构化方法等,它们为软件开发提供实现路径。同时,管理和支持技术也是软件工程不可或缺的一部分,它们作用于整个开发过程,确保项目的顺利进行。 这篇资料深入探讨了软件工程的核心概念和实践,对于自学软件工程的人来说是一份宝贵的资源。通过学习这些内容,开发者能够更好地理解和应对软件开发中的各种挑战,从而提高软件质量和效率。