zoukankan      html  css  js  c++  java
  • 软件工程笔记

    软件工程

    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.开发团队:执行工作,做出产品
  • 相关阅读:
    git使用小结
    关于vtordisp知多少?
    虚函数与虚继承寻踪
    最简git Server配置
    StarUML序
    CacheHelper对缓存的控制
    Web Service的一些经验和技巧总结
    月份信息二维坐标图绘制(绘制箭头算法)续
    dynamic与xml的相互转换
    如何将XML与OBJECT进行相互转换(泛型以及通用方法)
  • 原文地址:https://www.cnblogs.com/robotpaul/p/13252100.html
Copyright © 2011-2022 走看看