一、软件工程概述

软件工程概述

  • [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. 软件工程知识体系与职业道德

  • 软件工程知识体系


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

  • 软件工程误解


  • 软件工程职业道德和责任规范
相关推荐
无风听海3 小时前
Skills 的工程学:把经典软件工程搬进一个概率型运行时
软件工程·claude code
疯狂打码的少年1 天前
【软件工程】软件项目管理(人员/产品/过程/项目)
笔记·软件工程
叫我Paul就好1 天前
RAG 从入门到精通 - 基础版本
人工智能·软件工程·rag
ttod_qzstudio2 天前
【软考备考】软件工程详解:四大开发模型、黑盒白盒测试、McCabe 环路复杂度(附 10 道练习)
软件工程·软考·黑盒·白盒·mccabe 环路复杂度
梁辰兴2 天前
软件工程:软件开发环境
软件工程·ide集成·软件开发环境·环境组成·环境分类·case工具·现代趋势
疯狂打码的少年3 天前
【软件工程】软件测试阶段:单元测试与集成测试(高频对比考点)
笔记·单元测试·集成测试·软件工程
ttod_qzstudio3 天前
【软考备考】软件工程收官篇:耦合与内聚、维护四类型、关键路径计算(附 10 道练习)
软件工程·软考·耦合·内聚
疯狂打码的少年4 天前
【软件工程】软件测试:黑盒测试(等价类/边界值/因果图)
笔记·软件工程
qiyongwork4 天前
敏捷方法论的演进:从 Scrum 到规模化敏捷的变革
项目管理·软件工程·scrum
梁辰兴4 天前
软件工程:软件开发模型
软件工程·迭代模型·软件开发模型·模型选择·梁辰兴·经典模型·其他模型