软件工程过程和软件系统分析与设计

  • 什么是软件工程
  • 软件工程要求下怎么编写出高质量的代码
  • 软件工程要求下写好代码后如何进行单元测试
  1. 知道软件是什么,和其他工程学科有什么不同,为什么需要一门专门的软件工程来研究。
  2. 软件工程是怎么一步一步发展起来的,目前对软件工程的定义是什么。

软件的定义:

软件 = 程序+数据+文档
程序:计算机可以接受的一系列指令,运行时可以提供所要求的功能和性能
数据:使程序能够适当地操作信息的数据结构
文档:描述程序的研制过程,方法和使用的图文资料

软件的本质特性:

软件具有复杂性,一致性,可变性和不可见性等固有的内在特性,所以软件开发的过程难以控制。

软件工程是怎么产生的:

软件开发面临的挑战:

  • 客户不满意(功能不是客户想要的,交付日期没有保障,有bug)
  • 项目过程失控(需求变动,交付质量不能预见,盲从流程)
  • 风险和成本问题(无法预测成本,导致预算超支)
  • 无力管理团队(无法评估开发人员的能力和工作进度,不知道如何提升效率)

软件工程就是致力于探索软件开发问题的解决之道。
软件工程的四个发展阶段:

  • 1956-1967 个人作坊式 没有方法可循-> 爆发了软件危机
  • 1968-1982 瀑布过程模型 需求,设计,编码,测试按线性方式执行的结构化开发方法
  • 1983-1995 面向对象开发方法,通过了一系列质量标准体系
  • 二十世纪九十年代至今,敏捷开发方法,采用迭代和增量的开发过程 ,有效应对需求变化,快速交付高质量软件

什么是软件工程

工程的通俗定义:团队协作解决大规模设计和建造的复杂问题
软件工程的定义:将系统性的,规范化的,可定量的方法应用于软件的开发,运行和维护,即把工程化的方法应用到软件,并且对这种方法进行研究。
软件工程的三个基本要素:过程,方法和工具

软件质量

什么是好的软件br> 主要从三个方面来考虑

  • 用户角度:考虑功能质量,功能符合需求,容易上手
  • 开发人员角度:考虑结构质量,代码可测试性,可维护性,可读性
  • 投资者的角度:可以按时在预算内交付

如何判断软件是好的软件br> ISO9126模型

  • 功能性
  • 可靠性
  • 易用性
  • 可维护性
  • 可移植性

软件开发的过程

软件过程是为了获得高质量软件而实施的一系列活动。包括

  1. 问题定义 :得到构想文档和用户故事
  2. 需求开发 :得到分析模型和软件需求规格说明
  3. 软件设计 : 得到设计模型,软件体系结构文档和软件详细设计文档
  4. 软件构造 : 得到源程序,目标代码和可执行构建
  5. 软件测试 :得到测试规程,测试用例和测试 告

软件过程模型

软件过程模型就是对软件过程的抽象化描述。

  1. 瀑布模型:将基本的开发活动看成一系列界限分明的独立阶段

    缺点在于各个阶段的划分严格固定,阶段之间产生大量的文档。开发过程中间很难发现错误。适用于软件需求在开发初期就可以被完整地确定
    的项目。

    • 软件定义和分析
    • 软件设计
    • 软件构造
    • 软件测试
    • 软件运行和维护
  2. 原型化模型:迅速建造一个可运行的软件原型,使用户和开发人员更好地沟通

  3. 迭代式模型:将描述,开发和验证交织在一起,在开发过程中建立一系列版本

    增量模型和迭代模型是迭代化开发的两种形式。

    1. 增量模型:在每一个新的发布中逐步增加功能直到构造全部功能
    2. 迭代模型:一开始提交一个完整系统,在后续发布中补充完善各子系统的功能
  4. 可转换模型:利用自动化的手段,通过一系列转换将需求规格说明转换为一个可交付的系统

    适合对安全性,保密性和稳定性要求高的模型

敏捷开发

敏捷开发是一种基于更加紧密的团队协作,能够有效应对快速变化的需求,快速交付高质量软件的迭代和增量的新型软件开发方法。

敏捷方法是一组轻量级开发方法的总称,包含很多具体的开发过程和方法,其中最有影响力的两个方法是极限编程XP和Scrum方法

Scrum详细说明

包含三个部分

  • 开发角色
    1. 产品负责人:定义产品需求,确定需求优先级,迭代开始前调整需求和优先级
    2. Scrum主管:直接管理项目,组织会议
    3. 团队成员
  • 开发活动
    1. 迭代计划会议
    2. 每日站立会议
    3. 迭代评审会议
    4. 迭代回顾会议
  • 开发制品
    1. 产品订单
    2. 迭代订单
    3. 燃尽图
  • 用户故事:从用户的角度来描述他所期望得到的功能
    书写用户故事的格式:身份+活动+价值
    如作为一个 站管理员,我想要统计每天有多少人访问了 站,以便赞助商了解这个 站会给他们带来多少收益
  • 燃尽图:以图形化方式展示剩余工作量和时间的关系

软件需求

  1. 系统需求分析:主要围绕系统级的需求以及少量顶层分析和设计
  2. 软件需求分析:围绕软件的信息域和所要求的功能,性能和接口

简述开发过程和配置管理过程的关系

配置管理

软件配置管理贯穿整个软件开发过程,其主要任务是每当有了更改,与其相关的软件配置项都得到正确处理,新版本软件内部没有冲突。

简述软件生存周期模型的内置本质特征

软件生存周期模型: 软件生存周期模型指的是软件从定义到终止的过程,活动和任务的框架。

软件工程过程和软件系统分析与设计
它的本质特征是:
  1. 描述了开发的主要阶段
  2. 定义了每一个阶段要完成的主要过程和活动
  3. 规范了每一个阶段的输入和输出
  4. 提供了一个框架,可以把必要的活动映射到该框架中

简述软件开发过程的基本步骤

软件工程过程的建立与监控

软件工程过程的三个层次:

  1. U 级 Universal Level :提供高层概要
  2. W级 Worldly Level:提供实际工作指导
  3. A级 Atomic Level:提供更加详细的求精

定义软件工程过程的一般步骤:

  1. 确定过程模型
  2. 确定活动
  3. 确定活动间的关系
  4. 文档化每个活动的其他有用信息
  5. 文档化如何剪裁过程
  6. 文档化如何改善过程
  7. 获得过程的买入
  8. 不断地使用和改善过程

在Infosys模型中,高层设计的主要过程包含哪几个方面的活动

在Infosys模型中,高层设计是从计算机实现的角度提出满足用户需求的抽象的解决方案的过程

  1. 定义相关标准(编码,文档,用户接口等)
  2. 确定 / 设计操作环境的详细资料
  3. 进行模块设计
  4. 开发物理数据库设计

在RUP模型的4个阶段中,测试工作流任务的重点是什么

统一软件工程过程模型

RUP模型横向按照事件顺序来组织,将软件开发周期分成4个阶段 —— 初始,细化,构造,移交
其中测试工作流任务的重点是:评估过程和产品质量的趋势

简述在Scrum模型中,分别采取了哪些措施来改善过程的透明性,检验性和适应性

敏捷过程

敏捷联盟的宣言:

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

知道了还有敏捷这种轻量型的开发过程以后,如果把它和重型开发过程放在一起对比,区别在哪儿呢/p>

  1. 最优先做的事尽早和持续地交付有价值的产品
  2. 欢迎需求的变更
  3. 业务人员和开发团队应该天天在一起工作,面对面交流
  4. 可以工作的软件产品是衡量工作的最主要的标准

敏捷过程的核心:迭代地交付价值

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年5月6日
下一篇 2019年5月6日

相关推荐