软件工程导论笔记(1)

注:笔记主要来自清华大学出版社出版的《软件工程导论》一书,侵删
若有不当,欢迎指出

第一章(软件工程学概述)

1.1(软件危机)

按功能划分软件:系统软件、支撑软件、应用软件。
软件危机:计算机软件的开发和维护过程中遇到的一系列严重的问题。
概括说明软件危机包含的问题:

  • 如何开发软件,以满足对软件日益增长的需求。
  • 如何维护数量不断膨胀的已有软件。

产生软件危机的原因:

  • 软件自身的特点:缺乏“可见性”、较难维护、其中的程序规模庞大且复杂。
  • 软件开发与维护的方法不正确。表现为忽视软件需求分析的重要性、轻视软件维护。

消除软件危机,既要有技术措施,又要有必要的组织管理措施。(软件工程应运而生)

1.2(软件工程)

软件的定义:软件 == 程序 + 数据 + 相关文档(最新的定义还要+知识)
软件的生命周期:定义->开发->运行维护
IEEE给出的软件工程的定义:
① 把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程。
② 研究①中提到的途径。

软件工程方法学(范型):软件生命周期全过程中使用的一整套技术方法的集合。
软件工程方法学包含3要素:方法、工具、过程。
目前使用得最广泛的软件工程方法学有:传统方法学(生命周期方法学/结构化范型)、面向对象方法学。

传统方法学:采用结构化技术,把软件的生命周期依次划分为若干个阶段,顺序完成每个阶段的任务。

只能面向行为或面向数据,不能兼顾面向行为和数据,增加软件开发和维护的难度

面向对象方法学:以数据为主线,把数据和对数据的操作结合的方法。

面向对象方法学的四个要点:面向对象方法 == 对象 + 类 +继承 + 用消息通道

  1. 创建对象融合数据和数据的操作。
  2. 把对象都划分为类
  3. 按照父类子类的关系(派生关系)划分层次
  4. 对象间仅发送消息来联系

1.3(软件生命周期)

软件的生命周期:定义->开发->运行维护
软件生命周期每个阶段的基本任务:问题定义->可行性研究->需求分析->总体设计->详细设计->编码和单元测试->综合测试->软件维护

1.4(软件过程)

软件过程:一系列任务框架,规定各项任务的工作步骤。
软件的生命周期模型:

  1. 瀑布模型
  2. 快速原型模型
  3. 增量模型
  4. 螺旋模型
  5. 喷泉模型
  6. Rational统一过程
  7. 敏捷开发与极限编程
  8. 微软过程

瀑布模型:阶段间具有顺序性和依赖性,推迟实现,质量保证。实际的瀑布模型带有反馈环。
优缺点都在于文档驱动模型,优在遵守文档易于维护,缺在依赖文档软件不能真正满足用户需要。

快速原型模型:与瀑布模型相比没有反馈环,但在第一步快速建立一个反映用户需求的原型系统,并以此为基础写文档。
优点:线性顺序进行,避免大返工,减少设计和编码的错误可能性。

增量模型:把软件产品作为一系列的增量构件来设计、编码、集成和测试。
优点:较短时间内向用户提交可完成部分工作的产品,减少用户得到一个全新软件时带来的冲击。
困难:把新构件集成到现有的软件体系结构中时,必须不破坏原来已经开发出的产品。

螺旋模型:使用原型及其他方法尽量降低风险(每个阶段都加了风险分析过程和快速原型模型)。
优点:风险驱动,注重软件质量,减少测试方面带来的风险,维护和开发没有本质区别。
困难:要求软件开发人员具有风险评估经验和相关知识。

喷泉模型:典型的面向对象的软件过程模型之一。
优点:开发过程无缝衔接,容易实现开发步骤的多次迭代,逐步深化认识,减少不一致性,降低出错的可能。

后续模型略

posted @   kksk43  阅读(395)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
特效
黑夜
侧边栏隐藏
点击右上角即可分享
微信分享提示