软件工程导论笔记(1)
注:笔记主要来自清华大学出版社出版的《软件工程导论》一书,侵删
若有不当,欢迎指出
第一章(软件工程学概述)
1.1(软件危机)
按功能划分软件:系统软件、支撑软件、应用软件。
软件危机:计算机软件的开发和维护过程中遇到的一系列严重的问题。
概括说明软件危机包含的问题:
- 如何开发软件,以满足对软件日益增长的需求。
- 如何维护数量不断膨胀的已有软件。
产生软件危机的原因:
- 软件自身的特点:缺乏“可见性”、较难维护、其中的程序规模庞大且复杂。
- 软件开发与维护的方法不正确。表现为忽视软件需求分析的重要性、轻视软件维护。
消除软件危机,既要有技术措施,又要有必要的组织管理措施。(软件工程应运而生)
1.2(软件工程)
软件的定义:软件 == 程序 + 数据 + 相关文档(最新的定义还要+知识)
软件的生命周期:定义->开发->运行维护
IEEE给出的软件工程的定义:
① 把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程。
② 研究①中提到的途径。
软件工程方法学(范型):软件生命周期全过程中使用的一整套技术方法的集合。
软件工程方法学包含3要素:方法、工具、过程。
目前使用得最广泛的软件工程方法学有:传统方法学(生命周期方法学/结构化范型)、面向对象方法学。
传统方法学:采用结构化技术,把软件的生命周期依次划分为若干个阶段,顺序完成每个阶段的任务。
只能面向行为或面向数据,不能兼顾面向行为和数据,增加软件开发和维护的难度
面向对象方法学:以数据为主线,把数据和对数据的操作结合的方法。
面向对象方法学的四个要点:面向对象方法 == 对象 + 类 +继承 + 用消息通道
- 创建对象融合数据和数据的操作。
- 把对象都划分为类
- 按照父类子类的关系(派生关系)划分层次
- 对象间仅发送消息来联系
1.3(软件生命周期)
软件的生命周期:定义->开发->运行维护
软件生命周期每个阶段的基本任务:问题定义->可行性研究->需求分析->总体设计->详细设计->编码和单元测试->综合测试->软件维护
1.4(软件过程)
软件过程:一系列任务框架,规定各项任务的工作步骤。
软件的生命周期模型:
- 瀑布模型
- 快速原型模型
- 增量模型
- 螺旋模型
- 喷泉模型
- Rational统一过程
- 敏捷开发与极限编程
- 微软过程
瀑布模型:阶段间具有顺序性和依赖性,推迟实现,质量保证。实际的瀑布模型带有反馈环。
优缺点都在于文档驱动模型,优在遵守文档易于维护,缺在依赖文档软件不能真正满足用户需要。
快速原型模型:与瀑布模型相比没有反馈环,但在第一步快速建立一个反映用户需求的原型系统,并以此为基础写文档。
优点:线性顺序进行,避免大返工,减少设计和编码的错误可能性。
增量模型:把软件产品作为一系列的增量构件来设计、编码、集成和测试。
优点:较短时间内向用户提交可完成部分工作的产品,减少用户得到一个全新软件时带来的冲击。
困难:把新构件集成到现有的软件体系结构中时,必须不破坏原来已经开发出的产品。
螺旋模型:使用原型及其他方法尽量降低风险(每个阶段都加了风险分析过程和快速原型模型)。
优点:风险驱动,注重软件质量,减少测试方面带来的风险,维护和开发没有本质区别。
困难:要求软件开发人员具有风险评估经验和相关知识。
喷泉模型:典型的面向对象的软件过程模型之一。
优点:开发过程无缝衔接,容易实现开发步骤的多次迭代,逐步深化认识,减少不一致性,降低出错的可能。
后续模型略
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律