软件工程规则:王立福2011自考课件精华

需积分: 37 19 下载量 86 浏览量 更新于2024-08-15 收藏 3.61MB PPT 举报
启发性规则-经验的总结是软件工程学习中的重要指导,由北京大学软件工程国家工程研究中心的王立福教授在2009年的课程材料中提出,主要针对2011版自学考试的软件工程课程。这些规则旨在帮助学生理解和实践有效的软件开发过程。 1. **改进软件结构与模块独立性**: - 通过优化软件结构,增强模块之间的独立性,使得每个模块的功能单一且易于测试,降低了系统的复杂性和维护难度。 2. **模块规模控制**: - 建议每个模块的代码行数保持在每页60行左右,这样既能保证代码的可读性,又能避免模块过大导致的管理困难。 3. **设计原则**: - 模块的深度、宽度、扇入和扇出应适度,这有助于控制模块间的依赖关系,确保模块职责清晰,避免循环调用。 4. **控制域与作用域**: - 力求将模块的作用域限制在控制域内,减少全局变量的使用,提高代码的局部性和一致性。 5. **简化接口**: - 降低模块接口的复杂性,使模块间的交互简单易懂,有助于外部模块更好地理解和使用。 6. **模块功能的预见性**: - 模块的功能应具有明确性和预测性,使得用户和开发者能够清楚地知道模块的功能和输入输出,有利于需求分析和文档编写。 **软件工程基础**: - 软件工程关注软件开发的全生命周期,包括软件生存周期过程的建立和管理,如需求分析、设计、编码、测试等。 **软件开发方法学**: - 提供了多种方法学路径,如结构化方法、面向对象方法、面向数据结构方法以及维也纳开发方法(VDM),每种方法都有其适用场景和优势。 **CMM模型**: - Capability Maturity Model (CMM) 是衡量软件开发过程能力成熟度的标准,通过不同级别的评估,帮助团队提升软件质量、效率和稳定性。 **软件开发本质**: - 软件开发的本质是将问题域的概念和计算逻辑映射到不同的抽象层次,如数据抽象和过程抽象,这涉及到需求分析和各种方法论的应用。 通过遵循这些启发性规则,软件工程师可以提高软件的可维护性、可靠性和可扩展性,同时增强整个团队的开发效率和软件产品的质量。在自学软件工程时,理解和掌握这些原则至关重要。