夜雨聆风学习资料网

ARTICLE · 1270942

01-软件工程基础

01-软件工程基础
大家好!今天我们继续细说软考高级架构知识点。本节来讲解软件工程基础的内容

一、软件工程的概念

软件工程是采用工程的概念、原理、技术和方法,来开发、维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。
简单一句话:用工程化的方式解决软件开发与维护问题。
目标:低成本、高质量、按时交付、易于维护。

二、软件危机

概念

软件危机是指在软件开发和维护过程中遇到的一系列严重问题。典型表现:
  1. 软件开发进度失控、工期一再延期;
  2. 成本远超预算;
  3. 软件质量差,bug 多、可靠性低;
  4. 软件难以维护,修改成本极高;
  5. 需求不断变更,软件不满足用户实际需要;
  6. 文档缺失、文档与代码不一致,难以交接。

产生原因:

  1. 软件本身特点:逻辑复杂、抽象,没有实体;
  2. 开发方式落后,早期手工作坊式开发,没有规范流程;
  3. 忽视需求分析、缺少规范设计、轻视测试和文档;
  4. 管理跟不上,缺少项目管控。
解决途径:软件工程(工程化方法、规范、工具、管理)。

三、软件工程的原则

  1. 抽象:忽略次要细节,抽取核心本质(如类、接口、模型),降低复杂度。
  2. 模块化:把大系统拆成独立、低耦合高内聚的模块,分而治之。
  3. 信息隐藏:模块内部实现细节对外隐藏,只暴露接口。
  4. 局部化:相关的资源、逻辑集中在一起,减少依赖。
  5. 一致性:设计、文档、编码风格、接口规范保持统一。
  6. 完整性:保证需求、功能、安全、校验不缺失。
  7. 可验证性:软件的每个部分都可以通过评审、测试进行验证。
  8. 可复用:组件、模块、设计模式尽量复用,减少重复开发。

四、软件生命周期(软件生存周期)

概念

软件生命周期:软件从提出需求开始,经过开发、交付使用,直到退役废弃的全过程,是软件工程的时间基线,用来划分阶段、管控项目。

生命周期各个阶段 + 核心任务

  1. 可行性研究任务:从技术、经济、操作、法律角度评估项目能不能做、值不值得做;输出可行性研究报告。
  2. 需求分析任务:和用户沟通,明确系统要 “做什么”;划分功能、性能、约束;输出需求规格说明书。
  3. 概要设计(总体设计)任务:确定系统架构、模块划分、模块之间接口、数据结构总体方案;输出概要设计文档。
  4. 详细设计任务:每个模块内部怎么实现,算法、流程、类设计;输出详细设计文档。
  5. 编码实现任务:程序员按照详细设计编写代码、单元自测。
  6. 软件测试任务:发现缺陷,验证是否符合需求;单元测试、集成测试、系统测试、验收测试;输出测试报告。
  7. 运行与维护任务:上线交付后持续维护,分为 4 类维护:
a)改正性维护:修复 bug
b)适应性维护:适配新环境(操作系统、数据库升级)
c)完善性维护:新增功能、优化性能(占比最高)
d)预防性维护:提前改造,防止未来出问题
8.退役:软件不再使用,下线归档。
说明:不同过程模型(瀑布、原型)会改变阶段的执行顺序,但阶段本身不变。

五、软件工程三要素:方法、工具、过程

  1. 方法(Method):“怎么做”,技术手段。          
    包含需求方法、设计方法、编码、测试方法(结构化方法、面向对象方法等),给出开发各项活动的实施办法。
  2. 工具(Tool):支撑方法的自动化 / 半自动化支撑。          
    需求工具、建模工具、IDE、测试工具、版本控制、缺陷管理工具,用来提升效率。
  3. 过程(Process):把方法和工具组织起来的框架,规定什么时候、谁、做什么、产出什么、如何评审,也就是软件过程模型(瀑布、原型、螺旋、敏捷都属于过程)。

✅ 三者之间的关系

过程是框架,方法是技术,工具是支撑。
  1. 过程定义活动的顺序、规范、角色;
  2. 在过程的各个活动里,使用对应的开发方法;
  3. 使用工具来落地方法,提升质量与效率;         
  4. 三者缺一不可:          
    只有方法没有过程 → 混乱无序;         
    只有过程没有方法 → 不知道怎么干;         
    只有方法和过程没有工具 → 效率低,全靠手工。
非常感谢大家一直以来的支持与陪伴!如果这期内容对你有收获、有帮助,欢迎点赞、关注,持续解锁更多IT架构干货,我们下期再见!
如果有遗漏知识可查看之前文章:
02.软件工程-概念

相关学习资料