《软件工程》了解一下

软件工程

软件危机
就是软件开发和维护过程中遇到的一系列的严重问题

软件工程的基本原理

  • 用分阶段的生命周期计划严格管理
  • 坚持进行阶段评审
  • 实行严格的产品控制
  • 采用现代程序设计技术
  • 结果应能清楚地审查
  • 开发小组的人员应该少而精
  • 承认不断改进软件工程实践的必要性

软件工程方法学

管理就是通过计划、组织和控制等一系列活动,合理的配置和使用各种资源,以达到既定目标的过程
软件声明周期全过程中使用的一整套技术方法的集合称为方法学,也称为范型
包括三个要素:方法、工具和过程
- 方法:是完成软件开发的各项任务的技术方法
- 工具:是为运用方法而提供的自动的或半自动的软件工程支撑环境
- 过程:是为了获得高质量的软件所需要完成的一系列任务的框架

软件工程方法学分别是:传统方法学和面向对象方法学
传统方法学:生命周期方法学或结构化范型,采用结构化技术来完成软件开发的各项任务

面向对象方法学
- 把对象作为融合了数据及在数据上的操作行为的统一的软件构件
- 把所有对象都划分成类
- 继承
- 封装

软件生命周期

  1. 问题定义
  2. 可行性研究
  3. 需求分析
  4. 总体设计
  5. 详细设计
  6. 编码和单元测试
  7. 综合测试
  8. 软件维护

每个阶段都明确了本阶段的关键任务,完成上阶段的问题,提出下阶段需要的目标.

软件过程

软件过程是为了获得高质量软件所需要完成的一系列任务的框架,规定了完成各项任务的工作步骤

  • 瀑布模型
    必须等前一阶段的工作完成之后,才能开始后一阶段的工作
    前一阶段的输出就是后一阶段的输入
    每个阶段必须完成规定的文档
    每个阶段结束前都要对所完成的文档进行评审
    可以规范化,文档驱动

  • 快速原型模型
    快速建立起来的可以在计算机上运行的程序,所完成的功能往往是最终产品能完成的功能的一个子集

    软件产品的开发基本上是线性顺序进行的

    原型系统已经通过与用户交互而得到验证,不会进行较大的返工

  • 增量模型
    把软件产品作为一系列的增量构建来设计、编码、集成、测试
    每一个增量构建往往实现软件的基本需求,提供最核心的功能

  • 螺旋模型
    使用原型及其他方法来尽量降低风险
    每个阶段之前都增加了风险分析过程的快速原型模型
    风险驱动

  • 喷泉模型

  • Rational 统一过程
    迭代式开发允许在每次迭代过程中需求都可以变化,这种开发方法通过一系列细化来加深怼问题的理解,因此能更容易地容纳需求的变更

    使用基于构件的体系结构
    可视化建模
    验证软件质量
    控制软件变更

    RUP软件开发生命周期
    核心工作流

    • 业务建模
    • 需求
    • 分析与设计
    • 实现
    • 测试
    • 部署
    • 配置与变更管理
    • 项目管理
    • 环境
      工作阶段
    • 初始阶段
    • 精化阶段
    • 构建阶段
    • 移交阶段
      RUP迭代式开发
      强调采用迭代和渐增的方式来开发软件
      整个项目开发过程由多个迭代过程组成
      每次迭代中只考虑系统的一部分需求

    敏捷过程

    • 个体和交互胜过过程和工具
    • 可以工作的软件胜过面面俱到的文档
    • 客户合作胜过合同谈判
    • 响应变化胜过遵循计划

    极限编程

    • 客户作为开发团队的成员
    • 使用用户素材
    • 短交付周期
    • 验收测试
    • 结对编程
    • 测试驱动开发

可行性研究

说起来这个,不得不说前段时间的一个需求了,
产品经理要求根据手机壳的颜色来改变应用主题的颜色
还提出的解决方案,结果…俩人被开除了


可行性研究是确定问题是否值得解决

  • 技术可行性
  • 经济可行性
  • 操作可行性

    1. 复查系统规模和目标
    2. 研究目前正在使用的系统
    3. 导出新系统的高层逻辑模型
    4. 进一步定义问题
    5. 导出和评价供选择的解法
    6. 推荐行动方针
    7. 草拟开发计划
    8. 书写文档提交审查

系统流程图

基本思想是用图形符号以黑盒子形式描绘组成系统的每个部件
系统流程图表达的是数据在系统各个不减之间流动的情况
而不是对数据进行加工处理的控制过程

数据流图

当数据在软件系统中移动是
将一系列变换所修改
数据流图DFD是一种图形化技术
描述信息流和数据从输入移动到输出的过程中所经受的变换
只是描绘数据在软件中流动和被处理的逻辑过程

数据字典

  • 数据流
  • 数据元素
  • 数据存储
  • 处理

需求分析

是软件定义时期的最后一个阶段
基本任务是准确地回答系统必须做什么

  1. 功能需求
  2. 性能需求
  3. 可靠性和可用性需求
  4. 出错处理需求
  5. 接口需求
  6. 约束
  7. 逆向需求
  8. 将来可能提出的需求

分析建模与规格说明

为了理解事物而对事物作出的一种抽象
是对事物的一种无歧义的书面描述

实体联系图

数据模型:数据对象、数据对象的属性及数据对象彼此间相互连接的关系

  • 数据对象
    对软件必须理解的复合信息的抽象

  • 属性
    定义了数据对象的性质

  • 联系
    客观世界的事物彼此间往往是有联系的

数据规范化

状态转换图

  • 状态:
  • 是任何可以被观察到的系统行为模式,
  • 一个状态代表系统的一种行为模式,
  • 状态规定系统对事件响应方式

状态图:表示系统循环运行过程,也可以表示系统单程生命期

事件:在某个特定时刻发生的事情,对引起系统做动作从一个状态转换到另一个状态的外界事件的抽象

形式化说明技术

软件工程使用的方法划分成非形式化、半形式化、形式化三类

总体设计

基本目的就是回答系统如何实现
通过这个阶段的工作将划分出组成系统的物理元素 程序、文件、数据库、人工过程和文档
设计软件结构

设计过程

  • 系统设计阶段
  • 结构设计阶段

    1. 设想供选择的方案
    2. 选取合理的方案
    3. 推荐最佳方案
    4. 功能分解
    5. 设计软件结构
    6. 设计数据库
    7. 制定测试计划
    8. 书写文档
    9. 审查和复审

总体设计阶段的基本目的是用比较抽象概括的方式确定系统如何完成预定的任务,应该确定系统的物理配置方案,并且进而确定组成系统的每个程序的结构

详细设计

确定应该怎样具体地实现所要求的系统
是对目标系统的精确描述
详细设计的结果基本上决定了最终的程序代码的质量

实现

编码和测试统称为实现

单元测试

集成测试

确认测试

维护

改正错误或满足新需求要而修改软件的过程

  • 完善性维护
  • 改正性维护
  • 适应性维护
  • 其他维护

软件项目管理

估算项目规模


书里面的UML图
项目这么着急
无法闲下来慢慢画了

看完了依然没有找到解决的办法
都是新手
走了不少弯路
难道真要一步一步走过来
爬过这些坑
培养自己的默契
制定自己的规约

猜你喜欢

转载自blog.csdn.net/java_sparrow/article/details/81950132