跳转至

软件工程基础

本页用于整理生命周期、开发模型、需求分析、设计、模块化、内聚与耦合等内容。

依赖注入:把依赖的创建交给外部

依赖注入(Dependency Injection,DI)是一种控制反转思想:一个对象不在内部自行创建所依赖的具体对象,而由外部容器、装配代码或调用者创建依赖并传入。依赖方只声明自己需要的抽象接口,因此业务逻辑与具体实现解耦。

常见形式有三种:构造器注入在创建对象时传入依赖,适合表达必需依赖;Setter 或属性注入在对象创建后设置,适合可选或可变依赖;接口注入由约定的注入接口完成。以订单服务依赖支付服务为例,OrderService 应依赖 PaymentService 接口,运行时可注入真实支付实现,测试时注入内存桩或 Mock。

依赖注入带来可替换性、可测试性和集中配置能力,但并不等于“使用某个框架”。容器只能负责对象装配,接口设计、生命周期、作用域和循环依赖仍需明确管理。若注入过多依赖、隐藏关键必需依赖或滥用全局容器,反而会增加理解和排错成本。

来源:补充知识点1.md

开发模型与敏捷协作

瀑布模型按阶段顺序推进,阶段清晰、文档和评审边界明确,适用于需求相对稳定的项目;需求变化时,后续返工成本较高。增量模型将系统拆分为多个可交付增量,逐步扩展能力,便于尽早获得反馈。螺旋模型以多轮迭代为特征,每轮重点识别和分析风险,适合规模大、复杂度高或风险显著的项目。敏捷开发强调短周期迭代、持续交付、跨职能协作和根据反馈适应变化。

Scrum 常见职责包括 Product Owner(维护产品目标与待办优先级)、Scrum Master(促进 Scrum 实践并帮助团队消除障碍)和开发团队(将工作转化为可交付增量)。敏捷不是取消计划、文档或质量要求,而是以短周期检查和调整减少反馈延迟。

模块化设计目标

高内聚表示模块内部功能关联性强,低耦合表示模块之间依赖较少。高内聚、低耦合有助于限制变更影响、提升可理解性和可维护性,是模块化软件设计的重要目标。

来源:专业课速记/05_软件工程与系统架构.md

考前易错速记

软件工程和架构题可从安全、稳定、合规、连续性、最小权限、审计留痕等目标审视方案。设计时坚持高内聚、低耦合,按职责拆分模块;在需求变化较快时,敏捷开发以短周期迭代、持续反馈和持续交付降低反馈延迟,不能理解为取消计划、文档或质量控制。

来源:专业课速记/09_考前必背清单.md