软件工程学习笔记

本文详细阐述了软件工程的各个方面,从软件危机的原因和消除途径,到软件工程的基本原理和方法学,涵盖软件生命周期的不同模型,如瀑布模型、快速原型、增量模型等。此外,深入探讨了需求分析、总体设计、详细设计、实现与测试的过程,强调了模块独立性、内聚和耦合的重要性。文章还介绍了面向对象方法学,包括对象模型、动态模型和功能模型,以及软件项目管理和维护的概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

软件工程概述

软件危机

介绍

  • 软件危机包含两个问题:如何开发软件以应对日益增长的需求,以及如何维护数量不断增长的已有软件。
  • 软件危机表现:
    • 对软件开发成本和进度估计不明确
    • 用户对已完成的软件系统市场不满意
    • 软件质量靠不住
    • 不可维护
    • 软件通常没有合适的文档材料
    • 软件成本在计算机系统的成本中所占的比例提升
    • 软件开发生产率提高速度过慢

原因

  1. 软件开发不同于硬件,是逻辑部件,缺乏可见性,所以开发进展较难衡量
  2. 软件规模庞大,难以组织分工合作

消除途径

  • 软件是程序,数据及相关文档的完整集合。(不仅仅是程序)
    • 程序是能够完成预定功能和性能的可执行的指令序列
    • 数据是使程序能够适当地处理信息的数据结构
    • 文档是开发、使用、和维护程序所需要的图文资料

软件工程

软件工程是知道计算机软件开发和维护的一门工程学科

介绍

本质特征:

  • 软件工程关注余大型程序的构造
  • 软件工程的核心课题是控制复杂性:把大问题分解成几个小的问题
  • 软件经常变化
  • 软件开发效率非常重要
  • 和谐合作是软件开发的关键
  • 软件必须有效的支持他的用户
  • 通常由具有一种文化背景的人体具有另一种文化背景的人创造产品

基本原理

  • 用分阶段的生命周期计划严格管理
  • 坚持进行阶段评审
  • 实施严格产品管控
  • 采用现代化程序设计技术
  • 结果应能清楚地审查
  • 开发人员小组应少而精
  • 承认不断改进软件工程实践的重要性

方法学

  • 软件生命周期全过程中使用的一整套技术方法的集合称为方法学
    • 软件工程方法学包含三个要素:方法工具和过程。
    • 传统方法学
      • 又名生命周期方法学或结构化范型
      • 采用结构化技术(结构化分析结构化设计结构化实现)
      • 把软件开发的生命周期划分为若干个阶段,然后顺序的完成每个阶段。
      • 维护较为困难
    • 面向对象方法学=对象+类+继承+用消息通信
      • 软件规模较大时,使用传统方法学往往不成功
      • 数据和行为同等重要,以数据为主线,把数据和对数据的操作紧密的结合起来。
      • 主要有以下四个要点:
        • 把对象作为融合了数据以及在数据上操作行为的统一软件构件
        • 把所有对象都划分成类
        • 按照父类与子类的关系把若干个相关类组成一个层次结构的系统
        • 对象之间仅能通过发送消息互相联系

软件生命周期

  • 软件定义:问题定义,可行性研究,需求分析
  • 软件开发:总体设计,详细设计,编码和单元测试,综合测试
  • 软件维护

软件过程

瀑布模型

  • 阶段间具有顺序性和依赖性
  • 推迟实现的观点
  • 质量保证的观点
    • 每个阶段都必须完成规定的文档
    • 每个阶段结束前都必须对所完成的文档进行评审
  • 反馈环
  • 文档驱动

快速模型原型

  • 快速建立起可以在计算机上运行的程序,它所完成的功能往往是最终产品的一个子集。通过用户提出的修改意见来改进系统

增量模型

  • 将系统分解为一系列的增量构件来设计编码和测试
  • 分解必须遵守的约束:当把新的构件添加到系统中时,所形成的产品必须是可测试的

螺旋模型

  • 风险驱动

喷泉模型

  • 主要用于面向对象开发

Rational统一过程

  • Rational Unified Process(RUP)
  • 最佳实践
    • 迭代式开发
    • 管理需求
    • 使用基于构建的体系结构
    • 可视化建模
    • 验证软件质量
    • 控制软件变更
  • RUP软件开发生命周期
    • 二维的生命周期模型
    • 纵轴核心工作流,横轴时间

敏捷过程与极限编程

  • 敏捷过程
    • 四个简单的价值观:
      • 个体和交互胜过过程和工具
      • 可以工作的软件胜过面面俱到的文档
      • 客户合作胜过合同谈判
      • 相应变化胜过遵守计划
  • 极限过程
    • 属于敏捷过程
    • 极限编程的有效实践
    • 极限编程的整体开发过程极限编程的迭代过程

微软过程

可行性研究

可行性研究的任务

  • 技术可行性
  • 经济可行性
  • 操作可行性

可行性研究过程

  • 复查系统规模和目标
  • 研究目前正在使用的系统
  • 导出新系统的高层逻辑模型:数据流图和数据字典
  • 进一步定义问题
  • 导出和评价供选择的解法
  • 推荐行动方针
  • 草拟开发计划
  • 书写文档提交审查

系统流程图

概括的描述物理系统的传统工具

  • 符号:基本符号,系统符号
  • 例子
  • 分层:先用高层次整体概括再具体细化每个功能

数据流图(DFD)用于建立功能模型

  • 符号:四种基本符号:正方形,表示数据的源或终点;圆角矩形,表示数据的变换处理;开口矩形,表示数据的存储;箭头,表示数据的流动方向。
  • 附加符号的含义。"* + 抑或"
  • 通常忽略出错处理和内务处理,只考虑做什么而不考虑怎样做。

数据字典

数据字典内容:

  • 数据流
  • 数据流分量
  • 数据存储
  • 处理

需求分析

结构化分析方法准则:必须理解并描述问题的信息域,根据这条准则建立数据模型
必须定义软件应该完成的功能,根据这条准则建立功能模型
必须描述作为外部事件结果的软件行为,根据这条准则建立行为模型
必须对描述信息,功能,行为的模型进行分

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值