"软件工程方法与实践的期末考试复习资料,涵盖了软件工程的基本概念、软件危机、工程化思想、CMM能力成熟度模型、极限编程(XP)、软件生命周期模型、需求分类、结构化分析、面向对象编程、数据流类型、Jackson图、结构化程序设计、类的关系以及软件设计的活动和模块化原则。"
在软件工程中,我们首先要理解其核心定义——即通过系统化、规范化和数量化的工程化方法来解决软件开发、维护和管理中的问题。软件危机是指随着软件规模和复杂度的增长,传统的开发方式无法有效应对,表现为需求不明确、进度延迟、成本超预算等问题。
软件工程的基本思想包括:推迟实现,强调在完全理解需求后再编码;逐步求精,从粗略到详细逐步细化设计;分解与抽象,将复杂问题拆分为更小的部分;信息隐蔽,隐藏模块内部细节,提高模块独立性;以及质量保证,确保软件质量贯穿整个开发过程。
CMM能力成熟度模型是一种评估软件组织过程能力的标准,分为多个等级,帮助组织改进和标准化其软件开发过程。
极限编程(Extreme Programming, XP)作为敏捷开发的一部分,强调沟通、简单、反馈和勇气,鼓励频繁的客户交流、简洁的代码、持续的测试和团队成员间的信任。
软件生命周期模型如瀑布模型、螺旋模型、增量模型等,定义了软件开发的各个阶段,从需求收集、设计、编码、测试到维护。
软件需求通常分为功能需求(软件应执行的任务),非功能需求(性能、可靠性、安全性等),以及领域需求(特定领域的特定要求)。
结构化分析(SA)利用结构图(SC)来分析系统的数据流和处理逻辑。面向对象编程涉及类、实例、继承和消息传递等概念,其中继承是子类继承父类属性和方法的关键特性。
数据流类型包括变换型、事务型和混合型,分别对应不同的数据处理模式。
Jackson图用于描绘问题和软件的结构,使用伪码描述程序流程,便于理解和设计。
结构化程序设计的三大基本逻辑结构是顺序、选择(条件分支)和循环,它们构成了程序的基本构造块。
类与类之间的关系包括关联(两个类之间的合作关系)、泛化(继承关系)和聚集(部分-整体关系)。
软件设计包括总体设计(软件结构设计)、详细设计(模块过程设计)和设计测试,确保从高层次到低层次的全面考虑。
软件模块化设计遵循分解、抽象、逐步求精、信息隐蔽和模块化原则,以提高代码的可读性和可维护性,降低复杂性。
这些知识点构成了软件工程方法与实践的基础,是期末考试复习的重点。掌握这些概念和原则,将有助于理解和解决实际开发中的问题。