软件工程复习L2
软件工程过程和软件生命期
软件生命期(Life cycle)
一个软件从定义、开发、使用和维护,直到最终被废弃,所经历的生存过程称为软件生存期或叫生命期。

软件过程模型--Software process models
- 是软件过程的抽象表示
- 三种过程模型
- 瀑布模型--The waterfall model
- 规范、开发、验证和演变的过程活动被视为单独的过程阶段
- 进化发展--Evolutionary development
- 交叉规范、开发和验证活动
- 基于组件的软件工程--Component-based software engineering
- 基于多个可重用组件的存在
- 集成这些组件
- 瀑布模型--The waterfall model
- 为过程建模的原因
- 形成共识
- 找到并评估实现过程目标的适当活动
- 针对将要使用的特定情况定制通用流程
瀑布模型--Waterfall model
- 瀑布模型中没有迭代
- 大多数软件开发应用了大量的迭代

缺点
- 不提供如何在开发期间处理产品和活动变更的指导(假设需求可以冻结)
- 将软件开发视为制造过程而不是创造性过程
- 不存在导致创建最终产品的迭代活动
- 在最终产品之前需要等待很长时间
原型
- 原型是部分开发的产品
- 原型设计有帮助
- 开发人员评估替代设计策略(设计原型)
- 用户了解系统将是什么样子(用户界面原型)
- 原型设计对于验证和确认很有用


V Model
- 是瀑布模型的一种变体
- 使用单元测试来验证程序设计--unit testing
- 使用集成测试验证体系结构(系统)设计--integration testing
- 使用验收测试来验证需求--acceptance testing
- 如果在验证和确认过程中发现问题,在重新实施右侧测试之前,可以重新执行V的左侧

Evolutionary development
- 定义:开发一个初始实现,将其公开给用户评论,并通过多个版本对其进行优化,直到开发出一个合适的系统
- 原型设计的两种基本类型
- 探索性开发--Exploratory development
- 一次性原型--Throwaway prototyping
- 优点
- 规范可以增量开发
- 是开发中小型系统的好方法
规范可以增量开发
是开发中小型系统的好方法

Incremental development


优点:
- 客户不必等到整个系统交付后才能从中获得价值
- 客户可以使用早期的增量作为原型,并获得经验,为以后的系统增量需求提供信息
- 整体项目失败的风险较低
- 大多数重要的系统服务不可避免地会受到最多的测试
增量和迭代的区别:Increments and Iterations
- 增量开发:从小型功能子系统开始,并在每个新版本中添加功能
- 迭代开发:从整个系统开始,然后在每个新版本中更改每个子系统的功能


Spiral development
这个过程被表示为一个螺旋
螺旋中的每个循环表示软件过程的一个阶段
螺旋中的每个环路被分成四个扇区
- 目标设定--Objective setting
- 风险评估--Risk assessment
- 开发和验证--Development and validation
- 计划--Planning


Component-based software engineering--CBSE
软件重用


Other Process Models
Relies on Formal Method (形式化方法)
Operational Specification Model
在开发过程的早期执行(检查)需求并评估其影响

Transformational Model
- 较少的主要发展步骤
- 应用一系列转换将规范更改为可交付系统
- Relies on formalism--基于形式
- 需要正式规范(允许转换)

过程活动--Process activities
Software specification

Software design and implementation
- 软件设计是对要实现的软件结构、作为系统一部分的数据、系统组件之间的接口以及有时使用的算法的描述
- 设计过程
The software design process

Software implementation
软件开发
从系统设计过程中自然遵循
CASE工具可用于从设计生成框架程序,包括定义和实现接口的代码
编程是一项个人活动,没有一般流程可遵循
The debugging process

Software validation
验证和确认(V&V)旨在表明系统符合其规范并满足系统客户的要求。
包括检查和审查流程和系统测试。
- checking and review processes and system testing.
系统测试涉及使用从系统要处理的实际数据的规范派生的测试用例来执行系统。
- test cases
The testing process

System testing

System evolution
软件优化(软件维护)的成本可能比软件开发要高得多

Computer-Aided software engineering (CASE)
计算机辅助软件工程(CASE)
包括设计编辑器、数据字典、编译器、调试器、系统构建工具等
活动的示例可以使用CASE实现自动化:
图形系统模型的发展
使用数据字典理解设计
从用户创建的图形界面描述生成用户界面
通过提供有关正在执行的程序的信息进行程序调试
自动将程序从编程语言的旧版本转换为更新版本
CASE整合
- Tools
- 支持单个流程任务,如设计一致性检查、文本编辑等。
- Workbenches
- 支持流程阶段,如规范或设计,通常包括许多集成工具。
- Environments
- 支持整个软件过程的全部或大部分。通常包括几个集成工作台。

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Yeの博客!