2025系统分析师---软件工程主要知识点

发布于:2025-03-04 ⋅ 阅读:(11) ⋅ 点赞:(0)

一、软件生命周期

  1. 定义:软件从需求分析到废弃的完整过程,包括规划、开发、运行和维护阶段。
  2. 核心阶段
    • 需求分析:明确功能与非功能需求,输出需求规格说明书(SRS)。
    • 设计:分为架构设计(模块划分)和详细设计(类图、接口定义)。
    • 实现:编码与单元测试,遵循编码规范(如Google Java Style)。
    • 测试:集成测试、系统测试、验收测试(V模型)。
    • 部署:灰度发布、回滚策略(如蓝绿部署)。
    • 维护:缺陷修复、性能优化、适应性调整。
  3. 常见模型关联:瀑布模型(线性推进)、迭代模型(RUP)、敏捷模型(Scrum)。

二、信息系统开发方法

  1. 结构化方法
    • 特点:自顶向下分解,数据流图(DFD)为核心工具。
    • 适用场景:需求明确的大型系统(如银行核心系统)。
  2. 面向对象方法
    • 核心:对象、类、继承、多态,UML建模支持。
    • 优势:高复用性,适应需求变化(如电商平台)。
  3. 原型法
    • 类型:抛弃式原型(快速验证)、演化式原型(逐步完善)。
    • 工具:Axure(低保真)、Figma(高保真)。
  4. 敏捷方法
    • 实践:每日站会、用户故事、持续集成(Jenkins)。
    • 框架:Scrum(Sprint周期)、Kanban(看板管理)。

三、开发模型

  1. 瀑布模型
    • 特点:阶段严格递进,文档驱动。
    • 缺点:变更成本高,适用于需求稳定的项目(如航天软件)。
  2. 螺旋模型
    • 核心:风险驱动,每轮迭代包含风险分析。
    • 适用:高风险项目(如金融风控系统)。
  3. 增量模型
    • 策略:分批次交付功能模块(如先实现登录功能,再开发支付)。
  4. DevOps模型
    • 工具链:GitLab CI/CD、Docker、Prometheus监控。
    • 目标:开发与运维协同,缩短交付周期。

四、逆向工程

  1. 定义:通过反编译、反汇编等手段从已有系统提取设计信息。
  2. 应用场景
    • 遗留系统重构:无文档的老系统恢复架构。
    • 竞品分析:反编译APK分析功能实现(需注意法律风险)。
  3. 工具
    • 代码级:JD-GUI(Java反编译)、IDA Pro(二进制分析)。
    • 架构级:Understand(代码依赖可视化)。

五、需求工程

  1. 过程
    • 获取:用户访谈、问卷调查(如设计问卷星模板)。
    • 分析:用例图(Actor-Goal列表)、需求优先级矩阵(MoSCoW法)。
    • 验证:原型演示、需求评审会。
  2. 挑战
    • 需求蔓延:通过变更控制委员会(CCB)管理。
    • 二义性:使用形式化语言(如Z语言)描述关键需求。

六、面向对象基础

  1. 四大特性
    • 封装:隐藏实现细节(如Java的private变量)。
    • 继承:IS-A关系(如Dog extends Animal)。
    • 多态:方法重写(Override)与重载(Overload)。
    • 抽象:接口(Interface)与抽象类(Abstract Class)。
  2. 设计原则
    • SOLID原则:单一职责(SRP)、开闭原则(OCP)等。
    • GRASP原则:高内聚低耦合、控制器模式。

七、UML(统一建模语言)

  1. 核心图表
    • 结构图:类图(属性/方法)、组件图(模块依赖)。
    • 行为图:时序图(对象交互顺序)、状态图(对象状态变迁)。
  2. 工具:Enterprise Architect、PlantUML(代码生成图表)。
  3. 实践案例
    • 用例图:定义系统边界(如电商平台的“用户下单”场景)。
    • 活动图:描述业务流程(如退货审批流程)。

八、软件设计

  1. 架构设计
    • 模式:MVC(前后端分离)、微服务(Spring Cloud)。
    • 质量属性:通过ATAM方法评估性能与安全性权衡。
  2. 详细设计
    • 设计模式:工厂模式(对象创建)、观察者模式(事件通知)。
    • 数据库设计:ER图、范式化(3NF)与反范式化权衡。

九、业务流程设计

  1. 方法
    • BPMN 2.0:标准流程图符号(如事件、网关、任务)。
    • 价值流图:识别流程中的浪费(如审批环节冗余)。
  2. 优化案例
    • RPA应用:通过UiPath自动化重复性任务(如发票录入)。

十、软件维护

  1. 类型
    • 纠错性:修复线上Bug(如支付失败问题)。
    • 适应性:适配新操作系统(如Windows 11兼容)。
  2. 成本控制
    • 技术债务管理:SonarQube扫描代码坏味道。
    • 文档更新:Confluence维护最新系统手册。

十一、软件测试

  1. 测试层级
    • 单元测试:JUnit/Mockito覆盖核心逻辑。
    • 集成测试:Postman验证API接口。
    • 性能测试:JMeter模拟万级并发。
  2. 自动化策略
    • Selenium:Web UI自动化。
    • Appium:移动端测试。

十二、软件过程改进

  1. CMMI模型
    • 成熟度等级:从混乱(1级)到优化(5级)。
    • 实践:缺陷预防(DP)、量化项目管理(QPM)。
  2. 敏捷改进
    • Retrospective会议:总结迭代问题(如代码评审效率低)。

十三、遗留系统

  1. 评估维度
    • 业务价值:是否支撑核心业务。
    • 技术状态:代码可维护性、架构合理性。
  2. 处理策略
    • 重构:逐步替换模块(如Struts迁移至Spring Boot)。
    • 封装:通过API暴露功能,新旧系统并存。

十四、软件开发环境范围管理

  1. WBS分解
    • 工作包:拆解任务至80小时以内可完成单元。
  2. 变更控制
    • 流程:变更申请→影响分析→CCB审批→实施跟踪。

十五、配置管理

  1. 工具链
    • 版本控制:Git(分支策略:Git Flow)。
    • 依赖管理:Maven/NPM管理第三方库。
  2. 基线管理
    • 里程碑:需求基线、设计基线、发布基线。

十六、进度管理

  1. 计划方法
    • 甘特图:MS Project绘制任务依赖。
    • 关键路径法(CPM):识别最长耗时路径。
  2. 延迟应对
    • 赶工:增加资源(如临时雇佣开发者)。
    • 快速跟进:并行开发(如前端与后端同步编码)。

总结

以上知识点覆盖软件工程全生命周期,实际应用中需注意:

  1. 方法论结合:如敏捷开发(过程)结合DevOps(工具链)。
  2. 技术与管理平衡:设计模式(技术)与范围管理(管理)协同。
  3. 持续改进:通过CMMI或Retrospective会议优化团队实践。

可根据具体项目需求,选择合适的方法与工具组合,例如:

  • 小型团队:敏捷(Scrum)+ GitLab CI/CD + Jira。
  • 大型系统:瀑布模型 + Enterprise Architect + SonarQube。