导图社区 华南师范大学——软件学院——软件工程导论
华南师范大学软件工程专业 软件工程专业解读 本专业主要培养德、智、体等全面发展,掌握自然科学和人文社科基础知识,掌握软件工程和通信网络专业知识、软件的...
编辑于2022-12-05 11:08:49 广东软工导论
概论
软件工程
应用计算机、数学及管理科学等原理,借鉴传统工程原则,以提高质量、降低成本为目的东西
软件生存周期
计算机系统工程
确定软件的总体应用范围,并对软件的可行性等进行分析
需求分析
对软件的各方面的要求,例如性能、功能等进行分析
设计
系统设计
设计这个系统大概是说明架构,分成几个板块
详细设计
实现各个板块的一些详细算法和数据结构
编码
将算法和数据结构采用变成语言编写成可执行的代码
测试
测试程序是否有错误,并更改
运行和维护
CMM
概念
一种软件成熟度模型,用于评价软件承接方能力的一种方法,也可以帮助企业更好的改善他们的软件过程
等级
初始级
可重复级
建立了基本的项目管理过程和实践来跟踪项目费用、进度和功能特性
已定义级
所有项目都采用根据实际情况修改后得到的标准软件过程来开发和维护软件
已管理级
收集对软件过程和产品质量的详细度量,对软件过程和产品都有定量的理解和控制
优化级
过程的量化反馈和先进的新思想、新技术促使过程不断改进
软件过程模型
瀑布模型
把软件开发分成确定的好几段,先从第一段开始执行,用第一段的结果作为输入到第二段,只有一段一段的才能开展
演化模型
增量模型
先根据用户的确定的一些重要的基本需求,产出第一个可运行的增量产品,然后再进行迭代发布新的增量产品,该增量产品是对第一个版本的补充说明,补充一些不核心的需求或者不确定的需求
在第一次增量开始之后不久,就开始第二个增量的迭代,第三个迭代的过程也类似
融合的瀑布模型的基本成分(重复利用)和演化模型的迭代特征,特别适合需求经常发生变化的软件开发
原型模型
先对用户的需求进行一个快速的分析,产生一个可运行的初始版本(通常称为原型),然后给用户用,用户再提出改进意见或者新的需求,然后再重复这个过程,直到模型建好,一环接一环的,线性的
螺旋模型
将原型实现的迭代特征和瀑布模型中控制和系统化结合了起来,而且还加入了风险分析
喷泉模型
是一种面向对象的过程模型,各个阶段之间没有明显的界限,重复、迭代的进行,喷泉一词就来源于此
基于构建的开发模型
利用预先包装好的构件来构造和应用系统
形式化方法
是一种建立在严格数学基础上的一种软件开发方法,在软件开发的全过程中,都采用严格的数学语言进行描述
易于发现需求的歧义性、不完整性和不一致性,易于对分析模型、设计模型和程序进行验证
CASE工具和环境
概念
计算机辅助软件工程(SASE),是指使用计算机及相关软件工具辅助软件开发、维护、管理等过程中各项活动的实施,以确保这些活动能高效率、高质量的进行
重要性
证明可以加快开发速度,提高应用软件生产率并保证应用软件的可靠品质
计算机专业人员通过计算机来是他们的企业提高了效率,增强了企业的竞争力,并使之带来了更多的利润
系统工程
系统工程的任务
识别用户的要求
识别用户对于计算机系统的总体要求,标识好系统的功能和性能范围,确定约束和接口
系统建模和模拟
硬件系统模型
描述基于计算机系统中的硬件(包括计算机、受系统控制的其他硬件设备)配置、通信协议、拓扑结构,以及确保计算机系统的安全性、可靠性、性能要求的措施
软件系统模型
计算机中的软件部分通常可以分成若干个子系统,软件系统模型描述各如软件子系统的功能、性能等要求,部署情况、软件之间的交互等
人机接口模型
描述人如何与基于计算机的系统进行交互,包括用户环境、用户的活动、人机交互的语义和语法等
数据模型
描述基于计算机的系统使用了哪些数据库管理系统,如果使用了多个,则描述他们之间的数据转换方式,必要时给出数据结构
成本估计和进度安排
可行性分析
从经济、技术、法律等方面分析所给出的解决方法是否可行
生成系统规格说明
作为以后开发基于计算机的系统的依据
简述可行性分析的任务
经济可行性
成本
效益
货币的时间价值
投资的回收期
纯收入
技术可行性
风险分析
资源分析
技术分析
法律可行性
方法的选择和折衷
需求工程
需求工程的步骤
需求获取
系统分析人员通过与用户的交流、对现有系统的观察及对任务进行分析的行为
需求分析与协商
根据每个需求与其他需求的关系以检查需求的一致性、重叠和遗漏情况,并根据用户的需求对需求进行排序
系统建模
选择合适的工具和符号系统地描述需求
需求规约
给出对目标软件的各种需求
需求验证
对功能的正确性、完整性和清晰性以及其他需求给予评价
需求管理
对需求工程所有相关活动的规约和控制
制定需求策略时3种主要考虑因素
功能需求
考虑系统要做什么,在何时做,以及如何修改或升级
性能需求
考虑软件开发的技术性指标
用户或者人的因素
考虑用户的类型
设计工程
软件设计阶段的基本任务
数据/类设计
将分析模型变换成类的实现和软件实现所需要的数据结构
体系结构设计
定义了软件的整体结构,由软件部件、外部可见的属性和他们之间的关系组成
接口设计
描述了软件内部、软件和协作系统之间以及软件同人之间的通信方式
部件级设计
将软件体系结构的结构性元素转变为对软件部件的过程性描述
简述模块、及模块化模块化设计的概念
模块
数据说明、可执行语句等程序对象的集合,是单独命名的,并且可以通过名字来访问
模块化
把软件按照规定原则,划分为一个个较小的,相互独立的但又相互关联的部件
模块化设计
程序的编写不是开始就逐条录入计算机语句和指令,而是首先用主程序、子程序、子过程等框架把软件的主要结构和流程描述出来,并定义和调试好各个框架之间的输入、输出链接关系
结构化分析与设计
数据流图
主要思想
数据流图描述输入数据到输出数据的变换(即加工),用于对系统的功能建模
分析过程
画出数据流图的输入和输出
确定源和宿
确定加工
确定数据流
顶层图通常没有文件
画出系统内部
确定加工
确定数据流
确定文件
确定源和宿
画出加工内部
重复第三步,直到合格
实现用户需求的精确化、一致化和完全任务化
父图和子图平衡
子图父图的输入和输出流必须保持一致
数据守恒
确保是输入得到输出
确保没有输入无效数据
局部文件
若只有子图内部加工实现需要这个文件,则其是临时文件,而且只需要在子图中画出,不需要画在父图中
数据流命名
输入数据流不应该和输出数据流同名
加工
每个加工至少要有一个输入和一个输出
文件
在整张图(子图例外),每个文件都至少要有一个加工读取该文件,有另一个加工写入该文件
命名
每个数据流和文件都必须命名(除了从文件流入或流出的数据流不需要),并且和数据字典保持一致
加工规约
分层DFD中的每个基本加工(即不再分解子图的加工)都应有一个加工规约
也就是加工小说明,用来描述加工的功能及其处理流程(或称加工逻辑),以帮助理解DFD所完成的功能
包含
激发条件
加工逻辑(最基本)
描述方法
结构化语言
概念
虽然没有形式化语言的那样精确,但是具有自然语言简单易懂的优点
可分为若干个段落,每个段落可以分成内外两层
外层有严格的语法来描述它的控制结构
内层可以用自然语言来描述
要求
语句力求精炼
语句必须易读
主要使用祈使句,祈使句中的动词要明确表达要执行的动作
所有的名字必须是数据字典中有定义的名字
不使用形容词、副词等修饰的东西
不使用含义相同的动词
可以使用常用的算术和关系运算符
判定表
判定树
优先级
执行频率
出错处理
结构图
概念
用来描述软件的体系结构的,该软件有哪些模块组成,这些模块又是怎样互相调用的
基本成分
模块
概念
模块类似一种函数的存在,可被调用
表示
在SD图中,我们忽略模块的内部特征(代码、内部数据),只展现模块的外部特征(模块名、输入输出参数、返回值等),用矩形框表示,能适当表示该模块的功能
调用
用一个模块指向另一个模块的箭头来表示,箭头指向被调用方,有时候为了方便,省略箭头,表示上方的调用下方的
数据
在箭头上附上一个小箭头和数据名来表示
基本概念
深度
指结构图中控制的层数,从最顶部开始算起
宽度
同一层次上模块数的最大值
扇出
模块的属性,表示该模块直接调用的模块数目
扇入
模块的属性,表示能直接调用该模块的数目
面向数据结构的分析与设计
面向数据结构的方法
概念
面向数据结构的方法是以数据结构为中心,从输入/输出的数据结构导出程序结构的一种软件需求分析与设计的方法
特点
以信息对象以及其操作对象为核心进行需求分析
认为复合信息对象具有层次结构,并且可按顺序,选择,重复3种结构分解为成员对象信息
提供由层次信息结构映射为程序结构的机制,从而为软件设计奠定良好的基础
采用Jackson图表示的
数据结构图
程序结构图
结构图的元素类型
顺序元素
由一个或者多个从左到右的元素组成,其中,每个元素只出现一次
选择元素
一个选择元素可以包括两个及以上的子元素,子元素用右上角有个圈的方框表示,使用元素时根据指定的条件S来选择
重复元素
重复元素只有一个子元素,根据条件I,来决定让子元素重复0到无穷多次来代表重复元素
Jackson图的三种结构
面向对象方法基础
UML语言
概念
是一种统一的、标准化的的建模语言,一种应用面很广泛的建模语言
视图
概念
一个系统从不同的角度去看,就会有不同的视图,每个视图仅仅展现了一个系统的某些方面的一些功能和信息,只是系统的一个投影,而若干个视图的合集才能表示一个系统
种类
结构化域
概念
描述系统的结构成员及其相关关系
图
静态视图(类图)
设计视图(构件图)
概念
设计视图对应设计结构自身建模,例如将设计结构扩展成结构化类元、为实现功能所需的协作和良定义结构的构件的组装
构件图
构件图展示了系统中的构件,构件之间通过接口连接,以及构件之间的依赖关系
用况视图(用况图)
概念
列出系统中的用况和执行者,并显示哪个执行者参与了哪个用况的执行
动态域
概念
描述系统的行为或其他随时间变化的行为
图
状态机视图(状态机图)
概念
对一个类的对象的可能生命历程建模
一个状态机包括,用迁移连接的状态,每个状态对一个对象在其生命期中满足某种条件的一个时间段建模
当一个事件发生时,会导致触发对象的一个状态向另一个新状态迁移,附加在迁移动作上的动作或活动也将同时被执行
活动视图(活动图)
概念
活动图展示了包含在执行计算或工作流中的计算活动的控制流
交互视图(顺序图)
概念
描述了系统的各个部分中信息交换的顺序
物理域
概念
描述了系统的计算资源及其总体结构上的部署
图
部署视图(部署图)
概念
运行时结点上制品的分布
制品是一个物理实现单元,如一个文件,制品也可以表示一个或者多个构件的实现
结点是运行时表示计算资源的物理对象,如计算机、设备,部署视图允许对分配的结果和资源分配进行评估
部署图
展示运行时系欸但和在结点上生存的制品的配置
模型管理
概念
描述层次结构中模型自身的组织,包是模型通常的组织单元
图
模型管理视图(包图,包图是类图的变种)
概念
模型管理视图对模型自身的组织建模,一个模型由一组保存模型元素(如类、状态机、用况)的包组成,包还可以包含其他包
包是操纵模型内容的单元,也是访问控制和配置控制的单元
每个模型元素可以被一个包,或者另一个元素拥有
包图
概念
由包和他们之间的关系组成的结构图
模型
模型是在某一给定精度上对系统的完整描述,一个系统可以根据不同的视图存在多个模型,如分析模型、设计模型等,一个模型可以看作一个特定类型的包,通常不用显示包内部的细节
剖面
背景
UML是一个用元模型(meta-model)定义的,元模型是指描述建模语言自身的模型,通常元模型的改变是复杂的,也是危险的
剖面机制允许在不修改基础元模型的前提下对UML进行有限的变化
UML三个主要的可拓展结构:约束、版型和标签值
约束
以自然语言或特定形式语言的正文表示的语义条件或限制,约束写在花括号上,如{value>=0}{or}
版型
版型是在基于现有各类模型元素的外形中定义模型元素的新结构,它本质上是一种新元类(metaclass),版型可以拓展语义,但是不能拓展模型类的结构,用《》标记版型,如《signal》
标签值
是贴在任何模型元素上的被命名的信息片
UML事物
结构事物
类、接口、用例、主动类、构件、结点等
动作事物
状态等
组织事物
包
注释事物
给建模者提供信息,提供关于任意信息的文本说明,但没有语义作用
面向对象建模
用况图
概念
描述一个系统应该做什么,系统的功能用用况来表示,每个用况都指明了一个完整的功能
组成元素
用况(椭圆)
执行者(线条人)
系统(大方框)
用况之间的关系(关联、拓展、包含、泛化等)
绘图要领
确定执行者
执行者是指与系统进行交互的人或者其他系统,执行者执行用况
确定用况
表示被执行者感受到的一个完整的功能,用况通过关联与执行者相连,关联指出一个用况与那些执行者的交互,这种交互是双向的
描述用况
用况描述通常用正文(text)来描述,正文是一份关于执行者与用况如何进行交互的简明和一致的规约,正文着眼于系统的外部行为而忽略系统的内部实现
简单描述示例: “客户:向公司订购商品的人,订购货物:用户创建一个新的请求商品的订单,并为那些商品付费”
详细描述
用况名称
参与的执行者
前置条件
一个合法的用户已经登录到了这个系统
事件流
基本路径
可选路径
在提交订单前,都可以选择cancel
后置条件
如果订单没有被取消,将保存到系统中,并做标记
定义用况之间的关系
1.关联
执行者和他所参与的一个用况之间的通信路径
———
2.拓展
拓展用况到基本用况的一种关系,拓展的用况是基本用况的一种完善修改或者补充
《extend》
------->
3.包含
表示基本用况所定义的行为,包含了被指用况所定义的行为,而且基本用况的执行依赖于包含用况的结果,但两者相互间不能访问其他属性
《include》
------>
4.用况泛化
一个一般用况与一个更特殊的用况之间的关系,特殊用况可继承一般用况的特征
(特殊的)———|>(泛化的)
确认模型
类图
概念
是静态的,因为它不描述与时间有关的系统行为,类图由系统中使用的类以及他们之间的关系组成,类之间的关系由关联、依赖、泛化、实现等
组成元素
类
类的属性和操作
对属性的描述
可见性
+
public
#
protect
-
private
~
package
重数
在属性名和类型之间,值的个数写在[]里,其形式是[MIN..MAX],表示该属性可能的值,包括*表示无限
属性
还可以定义为类属性,在属性下面划下划线表示
对操作的描述
可见性
同上
参数表
和c一样的风格,参数名:类型=默认值
类之间的关系
关联
类实例间连接的描述
——
二元关联
多元关联
三个或者三个以上的类之间的关联,中间用一个菱形以及菱形引出的通向各个相关类的直线组成
受限关联
聚集
表示整体与部分之间的关系,它的“部分”可以是任意“整体”的一部分
组合
表示一种更强的关联,代表整体的组合对象有管理它部分对象的特有责任
导航性
当一个实线箭头指向一个类的时候,说明这个被指向的类的全部都被另一个类的一个属性存储着,这样子来提高检索效率
依赖
两个模型元素之间的一种关系,表示被依赖元素的变化会要求或指示依赖元素的改变
《依赖名》
------->
泛化
更特殊描述与更一般的描述之间的一种关系,用于继承和多态性声明
(子类)——|>(父类)
父类中的操作,子类中可以不写或者重载,父类中的属性,子类不可再写
实现
规约与它的实现之间的关系
(如类)--------|>(如接口)
前者必须实现后者的全部操作
约束和派生
约束:用自然语言或指定形式语言的文本表达语义条件或者限制,在关系线上用{正文字符串}表示
{ordered}表示一个目录下的多个文件是有序的
{xor}指明了这两个关联之间存在异或关系
派生:一个元素与另一个元素之间的关系,前者能通过后者计算得到,计算派生元素的公式可以用约束给出,派生元素用元素名前+(/)表示
重数
在一个类的关联端点附加的重数表示这个类的多少个实例对象可以与另一个类(该关联的另一端)的一个实例相关
重数的写法与属性描述中重数的写法相同,其默认值是1
绘图要领
标识候选对象
筛选候选对象
标识属性和操作
确定类之间的关系
状态机图
概念
是对类的一种补充描述,指示了类可能存在几种状态,以及哪些事件将导致状态的改变,状态机图描述了对象的动态行为,是一种对象生存周期的模型
组成元素
状态
分类
起始状态
表示激活一个对象,开始对象生存周期的状态
中间状态
表示对象处于生存周期的某一时刻的状态
结束状态
表示对象完成了状态转换历程中的所有活动,结束了对象生存周期状态
概念
一个状态由状态名、状态变量和活动三个部分组成,其中状态变量和活动是任选的
状态变量可以是状态机图所显示的类的属性,也可以是计时器等临时变量
活动区可以使用三个标准事件
entry
指明进入该状态的特定事件
exit
指明退出该状态时特的特定动作
do
用于指明处于该状态时执行的动作
语法
event-name(可选) (参数列表)(可选) [警戒条件](可选) /要执行的动作(可选)
警戒条件为真时才可以出发
状态之间的迁移、分支、状态内的迁移
状态迁移:当一个对象接收到某个事件时,会导致该对象从一个状态转换到另一个状态
导致发生迁移的事件主要有:接收到另一个对象发来的调用信号、某个条件为真(如余额小于零)或经过了一段指定时间(如超时)
用连接两个状态的箭头来表示,把引起状态迁移的事件标在该迁移的箭头上
导致状态的迁移的事件可以中断正在执行的内部的do或者用户自定义的操作,但是entry和exit动作不能被中断
当迁移上未指明事件,这表明当位于迁移箭头的状态中的内部动作全部执行完后,该状态被自动触发
迁移的形式化语法
event-name(可选) (parameter-list)(可选) [guard-condition](可选) /effect-list(可选)
guard-condition
当警戒条件和事件特征都发生时,状态迁移才会被触发
effect-list
当迁移触发时执行的过程表达式,即动作表达式,一个状态迁移可以有多个用/符号分隔的动作表达式,从左到右依次执行
内部迁移
指状态不变的情况下,事件引发的动作
事件
概念
指已发生,并可能引发某种活动的一件事
分类
调用事件
收到一条被一个对象外部同步调用的请求
改变事件
布尔表达式值的改变
信号事件
收到供对象间异步通信的一个外部的、被命名的信号(实体)
时间事件
达到一个绝对时间或经过一段相对的时间量
复合状态
概念
一个简单状态没有子结构,一个组合状态被分解成区域,每个区域中包含一个或多个直接子状态
分类
顺序状态(非正交状态)
所有的子状态是互斥的,当状态活跃时,只能有一个子状态活跃
并发状态(正交状态)
有时会用虚线将状态分为两个或者多个并发的子状态,如果并发子状态有一个子状态先比其他子状态先到达终态,则其等待剩下的子状态到达终态
历史状态
历史状态用于在复杂的组合中标记转移过后需要返回的状态
UML状态机图中历史状态分为浅历史状态和深历史状态
用一个圆圈中加H表示,表示记录一个历史状态,当其他状态返回的时候,可以回到这个状态。有*的表示详细历史状态
绘图要领
列出对象的所有状态
表示导致状态转换的事件
为状态和迁移定义状态变量和动作
在迁移或者处于某种状态的时候,都可能需要执行一些相应的动作,必要时可定义一些状态变量,如计时器等
活动图
概念
展示整个计算步骤控制流的结点和流程的图,执行的步骤可以是并发的或者顺序的,可以看作一种特殊形式的状态机图
活动图使用状态机图的符号表示,有与状态机图相同的开始结点和结束结点,活动图中的状态被称为动作状态,用圆角矩形表示,动作状态之间的迁移用箭头表示,迁移上可以附加警戒条件、发送子句、动作表达式等
与状态机不同的是,活动图中动作状态之间的迁移不是靠事件触发的,而是当动作状态中的活动完成时触发的
事件只能附加到开始结点到第一个动作状态之间的迁移上
活动图中还可以画判定(decision)符号(菱形符号),判定符号可以有两个或两个以上携带警戒条件的输出迁移,当其中某个警戒条件为真时,该迁移被触发
组成元素
活动
泳道
一幅图可以被分为若干个矩形区,每个矩形区为一个泳道,泳道名放在矩形区的顶端,通常根据责任把活动组织到不同的泳道中,它能清楚地表明动作在哪里执行
分支
分岔和汇合
一个动作迁移可以被分解成两个或者多个导致并行动作的迁移,若干个来自并行活动的迁移也可以合并成一个迁移,但是合并前所有的动作必须完成
在活动图中,我们用一条黑线来表示迁移的分解和合并
对象流
活动图中可以表示对象,对象用对象符号(矩形)表示,可作为活动的输入或者输出(用虚线箭头连接),也可以展示一个对象受一个特定动作的影响(用动作和对象之间的虚线来表示)
绘图要领
顺序图
概念
描述对象间的交互行为,关注于消息的顺序,还揭示了一个特定场景的交互,即系统执行期间发生在某时间点的对象之间的特定交互
顺序图由两个坐标,垂直坐标表示时间(从上到下),水平坐标表示一组对象。顺序图中所包含的米一个对象用对象框来表示,对象名需要带下划线,对象框下画虚线,表示该对象的生命线
对象之间发送消息和接收消息用两个对象的消息箭头来表示,当一个对象接收到一个消息时,该对象开始活动称为激活
组成元素
对象
对象可以通过一条信息来创建另一个对象,被创建的对象可以在创建它的地方画上相应符号,对象消亡时,用x符号表示
生命线
激活
展示某个时间点哪个对象在执行,激活画成对象生命线上的一个长方形框,一个激活对象要么在执行自己的代码,要么在等待另一个对象的返回
消息
不同的消息表示对象间不同类型的通信,简单消息表示消息类型未知或与类型无关,或是一个同步消息的返回,异步消息表示发送对象在消息发送后立即继续执行,而不必等待接收对象的返回
传送延迟可以用倾斜的箭头表示,意思是消息发送后需要经历一段延迟时间才能被接收
语法
[attribute=](可选) name(argument-list)(可选) [:return-value](可选)
attribute是属于该生命线的属性,用以储存返回值,name是消息名(信号或操作名)
argument-list是一个参数值表,每个参数可以有以下形式
argument-value
parameter-name=argument-value
-
表示任何参数都是与模型一致的
开放箭头表示简单消息
反身消息
发送给自己的消息
实心箭头表示同步消息,表示发送对象必须等接收对象完成消息的处理后才能继续执行
条件
[]表示,为真,消息才发送,以此可以用来发送多条消息或者条件消息
定义循环和约束的标记
标记可以是任何类型,如时间标记
组合片段
概念
一个组合片段有一个关键字或多个子片段,关键字指明操作符,子片段指出操作对象
关键字
ref(引用)
对另一交互的引用
loop(循环)
有一个子片段,当循环的警戒条件为真时,执行子片段
alt(选择)
有多个子片段,从警戒条件为真的片段中随机选一个来执行
opt(任迭)
带单个子片段的特殊情况,即警戒条件为假时省略该子片段
par(并发)
两个或者多个子片段,处于此片段时,所有子片段都并发的执行,在不同片段中消息的相关顺序是不确定的,当所有子片段都完整地并发执行后,控制流又成为单一的流
形式
一般形式
描述一个场景中的所有可能的选择
可以包含条件、分支和循环
实例形式
说明一次可能的交互,因此实例形式的顺序图没有任何条件、分支和循环
绘图要领
基于构件的软件开发
什么是构件
构件是某个系统中有价值的、几乎独立并可替换的一部分,它在良好定义的体系结构语境内满足某种清晰的功能
构件的可变性分析和可变性机制
可变性
目的
为了能够让构件被广泛的复用,构件应该具有较强的通用性和可变性
形式
需要在构件复用时可能发生变化的一个或多个位置上标识变化,同时为变化点附加一个或多个可能会使用的变体,这样子就形成了一个抽象的构件
可变性机制
典型
继承
在变化点上创建指定的抽象类型或抽象的子类型或子类
子类公开了父类的实现机制,可能会导致意想不到的错误
扩展和扩展点
可以在用况和对象构件的变化点(或扩展点)上附加变体(或扩展)
扩展一个类或者用况或者对象类型的新责任和行为
参数化
用于模板、框架、宏的类型和类
在构件的变化点上插入参数和宏表达式,该构件可以通过绑定实参来展开特化
简述基于构件的软件开发过程
概念
CBSD过程由领域工程和应用系统工程两个并行的活动组成
领域工程
领域分析
收集领域中有代表性的应用样本,分析其公共部分和相似部分,抽取该领域的体系结构
建立基准体系结构模型
可以修剪和扩展的,以供该领域复用
标识候选构件
泛化和可变性分析
泛化提高其通用性,可变性分析是寻找可变点
构件重构
在泛化和可变性分析的基础上进行,让构件变成可复用性构件
构件的测试
构建的包装
根据构件库的要求,以便能分类存储和检索
构件入库
应用系统工程
建立应用体系的体系结构模型
可通过领域工程的基准体系结构模型的修改来获得
寻找候选构件
从构件库或其他构件源中找
评价和选择合适的构件
构件的修改和特化
使其符合开发软件的需求
开发未被复用部分
对于不能找到构件组成的部分,进行开发
构件的组装
将构件和新开发的部分组装成一个新的软件系统
集成测试
评价被复用的构件,并推荐可能的新构件
敏捷软件开发
概念
是一种基于更紧密的团队协作、能够有效应对快速变化需求、快速交付高质量软件的迭代和增量的新型软件开发方法
代表方法
以Scrum为基础的方法论(包括Scrum、Scrum/XP混合等)体系仍然具有主流地位,使用率最高
其他方法:看板方法、精益创业、极限编程等