概念&简答
-
软件危机:计算机软件 开发和维护 过程中遇到的一系列严重问题
-
软件工程:指导计算机软件 开发和维护 的一门学科
-
最广泛的软件工程方法学
- 传统方法学
- 面向对象方法学
-
软件工程方法学 3要素【简答问内涵全答】
- 方法:完成软件开发的各项任务的技术方法,回答"怎样做"的问题
- 工具:为运用方法而提供的自动或半自动的软件工程支撑环境
- 过程:规定了完成各项任务的工作步骤,为获得高质量的软件要完成的一系列任务的框架
-
软件生命周期 3大时期 8个阶段 的基本任务
- 软件定义
- 问题定义:要解决什么问题
- 可行性研究:上阶段 确定的问题 有行得通的解决办法吗
- 需求分析:确定为解决该问题必须具备哪些功能
- 软件开发【前2 系统设计 后2 系统实现】
- 总体设计:应该怎样 实现 目标系统
- 详细设计:应该怎样 具体 实现 这个系统
- 编码和单元测试:写出正确的容易理解、维护的程序模块
- 综合测试:通过各种类型的测试【及相应的调试】使软件达到预定的要求
- 运行维护
- 软件维护:通过维护活动持久满足用户需要
- 软件定义
-
了解几个模型的优点
| 模型 | 核心优势 | 主要不足 | 典型使用场景 |
|---|---|---|---|
| 瀑布模型 | 流程清晰,文档规范 | 灵活性差,变更成本高 | 需求稳定的军工、财务项目 |
| 快速原型模型 | 快速验证需求,用户参与高 | 易忽略性能,原型认知偏差 | 需求模糊的创新产品原型 |
| 增量模型 | 分阶段交付,风险可控 | 增量划分难,接口复杂 | 大型 ERP、电商平台 |
| 螺旋模型 | 风险驱动,迭代优化 | 流程复杂,周期长 | 高风险的航空、医疗软件 |
| 喷泉模型 | 面向对象,无缝迭代 | 阶段边界模糊,管理难 | 复杂嵌入式系统、游戏开发 |
| RUP | 全生命周期,用例驱动 | 文档繁重,灵活性不足 | 大型企业级应用 |
| 敏捷过程 | 响应变化,快速交付 | 大型项目统筹难 | 互联网产品、创业项目 |
| 极限编程 (XP) | 代码质量高,适应性强 | 团队纪律要求高 | 小型高变更项目 |
| 微软过程(MSF) | 角色清晰,风险控制 | 灵活性不足 | 微软技术栈企业应用 |