Skip to content

软件工程


一、软件工程概要📌

1、定义📌

研究如何用系统化、规范化工程原则和方法指导软件开发维护的学科

2、目标📌

  • 提高软件开发效率
  • 提高软件质量
  • 提高软件可维护性

二、软件生存周期和模型📌

1、生存周期📌

flowchart LR
    A[需求分析] --> B[软件分析]
    B --> C[软件设计]
    C --> D[编码]
    D --> E[软件测试]
    E --> F[运维]

2、软件过程模型📌

(1)瀑布模型📌

阶段间顺序性和依赖性

  • 必须等待前一阶段
  • 依赖于文档
  • 编码阶段才完成程序

Danger

  • 存在问题: 需求分析 在开发初期容易出错
    flowchart TD
        A[Requirements] --> B[Design]
        B --> C[Implementation]
        C --> D[Verification]
        D --> E[Maintenance]

(2)原型模型📌

(3)螺旋模型📌

  1. 典型的迭代模型
  2. 依赖于风险评估成败 Spiral_model_(Boehm,_1988).svg

(4)构件集成模型📌

  1. 基于构件
  2. 不断迭代

3、过程模型新发展📌

(1)统一过程 RUP (Rational United Process)📌

RUP.svg

基于迭代,四个阶段(初始、细化、构造、交付)

(2)敏捷过程📌

以人为核心,迭代的,循序渐进的

把大项目分为小项目,分别完成,过程中软件一直可用


三、软件开发方法和工具📌

Tip

个性化→结构化→面向对象→基于构件→新方法

1、结构化📌

面向数据流,自顶向下逐步求精

工具📌

建模类型 工具/描述
数据流图 (DFD) 功能建模
数据字典 (DD)
加工说明 (PSPEC)
结构图 (SC)
实体关系图 (EC) 数据建模
状态图 行为建模

2、面向对象📌

工具UML(Unified Modeling Language)📌

(1)用例图📌

Use_case_restaurant_model.svg

(2)活动图📌

SwimlaneActivity.svg

(3)类图📌

classDiagram
    Animal <|-- Duck
    Animal <|-- Fish
    Animal <|-- Zebra
    Animal : +int age
    Animal : +String gender
    Animal: +isMammal()
    Animal: +mate()
    class Duck{
        +String beakColor
        +swim()
        +quack()
    }
    class Fish{
        -int sizeInFeet
        -canEat()
    }
    class Zebra{
        +bool is_wild
        +run()
    }