软件工程笔记

软件工程

Software Engineering
冲!
软件工程-》系统开发

绪论

  • 什么是软件
    • 简化的软件定义:
      程序+方法+数据+文档
    • 依照功能性来分类
      • 系统软件
        操作系统、编译程序
      • 支撑软件
        协助开发应用程序的工具性软件,如Java, Web Server, MySQL等
      • 应用软件
        图书管理系统等
    • 依照规模来划分
      微型、小型····
      项目经理,开发人员,测试人员
  • 软件危机 Software Crisis
    软件系统开发本身是复杂的,有着高风险、高失败率的一项工作,所以在开发及维护过程中所遇到的一系列严重问题称为软件危机。
  • 什么是软件工程
    以系统化的方式去管理软件开发流程
  • 软件生命周期分为7个阶段+管理
    • 可行性研究
      目的:研究方案是否可行
      完成的工作:首先问题定义要解决的问题是什么?进一步讨论项目的可行性,确定问题是否值得解。
    • 需求分析
      目的:系统必须做什么事情
      完成的工作:进行需求规划、详尽规格和需求确认
    • 系统分析,总体设计OOA
      目的:系统要如何实现
      完成的工作:如何实现包括系统的业务逻辑、功能模块和系统架构等一系列问题
    • 系统设计,详细设计OOD
      目的:具体如何去实现设计的系统
      完成的工作:采用OOAD&UML设计方法,具体去如何实现设计的系统
    • 编码OOP
      面向对象的
      目的:代码实现
      完成的工作:面向对象的编程
    • 测试
      目的:对开发的系统进行测试,保证系统不出问题
      完成的工作:单元测试,系统测试,集成测试等各阶段的测试
    • 部署与运行维护
      目的:保证软件正常运行
    • 加入管理方法
      过程管理,项目管理及效绩管理

第二章 过程模型

瀑布模型

最主要缺点:需求变动困难、客户参与不高
成本、时间、架构更改都很困难

原型模式

  • 演化雏形法
    以需求开始,逐步加入新功能
  • 丢弃雏形法
    先对最不了解的系统需求建立雏形,待确定系统需求后则将不需要的部分丢弃
  • 工具
    • ps 、vscode

反复式流程

?开发流程由强调瀑布式流程转为强调反复式流程

  • 增量式
  • 迭代式

V模型

V模型是瀑布模型的变体,用于演示测试活动如何与分析和设计相关联。
特点:每一个阶段都会有一个相应的测试阶段

  • 单元测试
  • 集成测试
  • 系统测试
  • 需求测试

转化模型

分阶段开发是增量和迭代

  • 增量开发
    从小型功能子系统开始,并为每个新版本添加功能
    适用于需求变化大的
  • 迭代开发
    从完整系统开始,然后在每个新版本中更改每个子系统的功能
    适用于需求变化不大的

统一软件过程RUP

螺旋式开发程序

  • 开发过程由最内圈螺旋转出并向外延伸,每一个循环代表一个开发阶段
  • 加入风险评估
  • 适合大型、复杂性高、风险高的系统开发项目使用

    敏捷式管理

    快速和敏捷开发(Agile)
  • SCRUM团队
    • 项目经理
    • SCRUM发展团队成员
    • SCRUM经理(教练)
      • 没有管理权限
      • 不是产品经理的角色
      • 团队促进者
  • SCRUM过程
    • 1.利害关系人Stakeholders
      拥有产品的愿景和想法
    • 2.产品拥有者PO
      需求管理与验收产品
    • 3.Scrum大师SM
      确保Scrum过程顺畅执行
    • 4.开发团队
      执行工作,做出产品

结构化分析概述

  • 发现需求的方法:
    与用户交谈,观察用户的操作
    参观用户的工作流程,观察用户的操作
    向用户群体发调查问卷
    与同行、专家交谈,听取他们的意见
    分析已经存在的同类软件产品,提取需求
    从行业标准、规则中提取需求
    从Internet上搜索相关资料等
  • 对需求进行求精
    对初步需求反复求精多次细化
  • 建模
    建立模型
    • 数据模型:实体-关系图和数据对象描述
      E-R图表达
      描述数据对象间关系
      图中数据对象属性用“数据对象描述”表达
    • 功能模型:数据流图和处理规格说明
      DFD表达
      描绘数据在软件中移动、变换及相应功能
      图中功能用“处理规格说明”表达
    • 行为模型:状态转换图和控制规格说明
      描绘系统状态和在不同状态间转换方式
      图中软件控制附加信息用“控制规格说明”表达
    • 数据字典 核心
      描述软件使用和产生的所有数据对象
  • 规格说明
    书写软件需求规格说明,作为分析阶段最终成果
  • 复审
    保证不出问题

1.需求分析

(1)列出需求列表
(2)根据需求画出UML用例图,顺序图
(3)根据需求画出UML活动图(如果有必要的话)
(4)整理出蓝图(系统原型)
(5)分析整理出的数据词汇录入 数据库
整理好后编写需求分析说明书
可行性研究:需求的评估法(商业模型)
(2.2PPT)
2.系统分析阶段
(1)系统架构
(2)UML类图
3.系统设计阶段
类图的详细规划,要符合原则:

  • 高内聚、低耦合
  • SOLID(单一职责SRP、开闭OCP、里氏代换LSP、接口隔离ISP、依赖倒转DIP)详细概述见:5.1
  • 合成复用
  • 迪米特原则
    4.编码阶段
  • 将类图转换成代码
  • 代码写作要符合编码规范
    IDEA插件 阿里巴巴java
  • SVB版本控制
  • Git
  • TortoiseSVN。。。
    5.测试阶段
    V模型
  • 黑盒测试
  • 给定输入期望预期输出
  • 白盒测试
  • 即清楚盒子内部的东西以及里面是如何运作的。"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据

1.单元测试:白盒测试
2.集成测试:黑盒为主,白盒为辅
3.系统测试:黑盒测试
4.验收测试:alpha测试、beta测试

git->基线版本(下一个版本更新的快照版本)
6.部署与维护

三层结构的表达

  • 表达层
    • 控制怎样把数据通过用户界面显示给用户,同时接受用户的交互输入。
  • 业务层
    • 把跟这个应用相关的业务流程和业务规则集中在一起,形成一个独立部分
  • 数据层
    • 负责与数据打交道,把数据库中的表,记录等细节隐藏起来,使业务层见到的是普通函数或者数值对象。

软件生命周期

7个阶段+管理
1.可行性研究
2.需求分析
3.系统分析(总体设计)
4.系统设计(详细设计)
5.编码
6.测试
7.运行维护

另外加入管理方法(过程管理、项目管理及绩效管理等等)

Agile敏捷管理(2.4)

常见的有Scrum,XP,Lean...
Scrum或者敏捷(Agile)是同一个东西

  • 终极制程(XP)
    • 强调客户满意及促进团队合作
    • 主要以下列四个方向来促进软件开发
      • 沟通
      • 简化
      • 回馈
      • 勇气
    • XP是一种严谨有规律的软件开发方式
  • SCRUM过程
    • 1.利害关系人:拥有产品的愿景和想法
    • 2.产品拥有者:需求管理与验收产品
    • 3.Scrum大师:确保Scrum过程顺畅执行
    • 4.开发团队:执行工作,做出产品

你可能感兴趣的:(软件工程笔记)