一、软件工程概述

软件工程概述

  • [1. 软件的概念和特点](#1. 软件的概念和特点)
  • [2. 软件危机的产生](#2. 软件危机的产生)
  • [3. 软件工程的概念和发展过程](#3. 软件工程的概念和发展过程)
  • [4. 软件工程知识体系与职业道德](#4. 软件工程知识体系与职业道德)

1. 软件的概念和特点

  • 软件定义
    软件=程序+数据+文档。
  • 软件生存周期
  1. 问题定义:要解决的问题是什么?
  2. 可行性分析:对于上阶段所确定的问题有行得通的解决办法吗?
  3. 需求分析:软件必须做什么,确定软件系统的功能、性能、数据和界面等要求,确定逻辑模型。
  4. 总体设计:应该如何解决这个问题。两个任务:确定可能的系统,预估成本和效益;设计软件的结构。
  5. 详细设计:应该怎么具体地实现这个系统?
  6. 编码和单元测试:编写程序,分单元测试
  7. 综合测试:通过各种测试使软件达到预定的要求。集成测试:将各模块串联起来测试;验收测试:用户参与测试,根据规格说明书。
  8. 维护:通过各种必要的维护活动使系统持久地满足用户的需要。有改正性、适应性、完善性和预防性四类维护活动。
  • 软件特点

  • 软件分类

    项目软件(教务管理系统)和产品软件(互联网软件)。

  • 软件发展


2. 软件危机的产生

  • 软件危机

    在计算机软件的开发和维护过程中所遇到的一系列严重问题。如:项目超出预算、项目超过计划完成时间、软件运行效率很低、软件质量差、软件通常不符合要求、项目难以管理并且代码难以维护、软件不能交付。1968提出

  • 软件危机产生原因

    1. 软件成本日益增长
    2. 软件技术进步<需求增长

      客观:软件本身特点。逻辑部件太多,代码规模过于庞大,复杂程度过高。通过技术进步可以解决,如机器学习的发展。
      主观:不正确的开发方法。忽视需求分析,错误认为:软件开发=程序编写,轻视软件维护。需求正确的管理方法和协同合作方法。
  • 解决危机

    1. 对计算机软件有一个正确的认识:软件!=程序
    2. 必须充分认识到软件开发不是某个劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。
    3. 推广使用在实践中总结出来的开发软件的成功技术和方法。开发和使用更好的软件工具。

3. 软件工程的概念和发展过程

  • 软件工程概念

将大问题分解为小问题,不断完善解决。
定义 :(1)应用系统化的、学科化的、定量的方法,来开发、运行和维护软件,即将工程应用到软件;(2)对(1)中各种方法的研究。
目标:软件工程的目标是在给定的时间和预算内,按照用户的需求,开发易修改、高效、可靠、可维护、适应性强、可移动、可重用的软件。

  • 软件工程要素

    三要素:方法、工具、过程。(质量焦点)

    1. 工具
      它为软件工程的过程和方法提供自动化或半自动化的工具支持。将若干工具集成起来,与软件工程数据库和计算机系统构成一个支持软件开发的系统称"计算机辅助软件工程CASE",系统中某一工具的信息加工结果可以作为另一工具的输入。集成的软件工程工具再加上人的因素构成了软件开发环境。
    2. 方法
      完成软件工程项目的技术手段。它支持项目计划和估算、系统和软件需求分析、设计、编程、测试和维护。软件工程方法依赖一组原则,它贯穿软件工程的各个环节。软件工程方法分为两类:结构化方法和面对对象方法。
    3. 过程
      贯穿软件开发的各个环节,在各个环节之间建立里程碑;管理者在软件工程过程中对软件开发的质量、进度、成本进行评估、管理和控制;技术人员采用相应的方法和工具生成软件工程产品(模型、文档、数据、报告、表格等)。
  • 软件工程发展

  • 软件工程原则(B.W.Boehm, 1983)

    1. 使用阶段性生命周期计划的管理
    2. 进行连续的验证(测试应该早进行)
    3. 保证严格的产品控制
    4. 使用现代编程工具/工程实践
    5. 保持清晰的责任分配
    6. 用更好更少的人
    7. 保持过程改进

4. 软件工程知识体系与职业道德

  • 软件工程知识体系


    多学科交融:
  • 软件工程与计算机科学

  • 软件工程误解


  • 软件工程职业道德和责任规范
相关推荐
CSTechEi1 天前
【SPIE/EI/Scopus检索】2025 年第二届数据挖掘,计算与软件工程国际会议 (DMCSE 2025)
人工智能·数据挖掘·软件工程·信息与通信·ei学术会议
江梦寻2 天前
软件工程教学评价
开发语言·后端·macos·架构·github·软件工程
吕永强2 天前
大话软工笔记—需求分析概述
项目管理·软件工程
张较瘦_2 天前
[论文阅读] 人工智能+软件工程(软件测试) | 当大语言模型遇上APP测试:SCENGEN如何让手机应用更靠谱
论文阅读·人工智能·软件工程
二倍本贝2 天前
【慧游鲁博】【12】小程序端 · 智能导览对接后端文物图片识别功能
小程序·uni-app·vue·软件工程
电子科技圈3 天前
IAR开发平台升级Arm和RISC-V开发工具链,加速现代嵌入式系统开发
arm开发·嵌入式硬件·设计模式·性能优化·软件工程·代码规范·risc-v
哆啦A梦的口袋呀3 天前
理解系统交互:UML时序图
软件工程·交互·uml
张较瘦_4 天前
[论文阅读] 人工智能+软件工程 | 理解GitGoodBench:评估AI代理在Git中表现的新基准
论文阅读·人工智能·软件工程
吕永强4 天前
大话软工笔记—需求分析详解
项目管理·软件工程·需求分析
Jasmin Tin Wei5 天前
软件工程 期末复习
软件工程