新書推薦:
《
女人的胜利
》
售價:HK$
55.9
《
数据有道:数据分析+图论与网络+微课+Python编程(鸢尾花数学大系:从加减乘除到机器学习)
》
售價:HK$
266.6
《
500万次倾听:陪伤心的人聊聊
》
售價:HK$
53.8
《
英国商业500年(见证大国崛起与企业兴衰,启迪未来商业智慧。)
》
售價:HK$
80.6
《
万千心理·儿童心理治疗中的心智化:临床实践指导
》
售價:HK$
87.4
《
自我囚禁的人:完美主义的心理成因与自我松绑(破除你对完美主义的迷思,尝试打破自我评价过低与焦虑的恶性循环)
》
售價:HK$
66.1
《
周易
》
售價:HK$
44.6
《
东南亚的传统与发展
》
售價:HK$
67.2
|
編輯推薦: |
《软件产品线工程——原理与方法》可以作为大专院校软件工程专业或计算机软件与理论专业高年级本科生和研究生的教材,也可以作为软件工程专业技术人员的参考书。
|
內容簡介: |
软件产品线工程是有计划地进行大规模软件复用 的工程方法,它能使软件产品大幅度地缩短上市时间 、降低成本和提高质量。由李伟刚、李易编著的《软 件产品线工程——原理与方法》介绍软件产品线工程 的基本原理和方法,内容包括软件产品线工程的概念 、软件产品线工程的商业动机、软件产品线工程过程 、软件产品线的可变性、软件产品线需求工程、软件 产品线的设计和软件产品线工程的组织管理等。
本书可以作为大专院校软件工程专业或计算机软 件与理论专业高年级本科生和研究生的教材,也可以 作为软件工程专业技术人员的参考书。
|
目錄:
|
前言
1 软件产品线工程基础
1.1 产品线工程
1.1.1 来自制造业的案例
1.1.2 基于平台定制产品
1.1.3 定制产品的工程化
1.1.4 产品线工程的益处
1.2 软件产品线工程
1.2.1 发展历史
1.2.2 公共性和可变性
1.2.3 领域工程和应用工程
1.2.4 组织、过程和技术
思考与练习
2 软件产品线的导入
2.1 软件产品线工程的商业目标
2.2 软件产品线市场
2.2.1 软件产品定义策略
2.2.2 市场战略
2.2.3 软件产品线生存周期
2.2.4 产品线市场战略与产品线工程的关系
2.3 软件产品线的经济学
2.3.1 软件产品线工程带来的经济效应
2.3.2 简单的软件产品线经济模型
2.3.3 软件产品线的其他经济属性
2.4 产品的管理和范围界定
2.4.1 产品组合管理
2.4.2 领域潜能分析
2.4.3 资产范围界定
2.5 小结
思考与练习
3 软件产品线工程过程框架
3.1 软件产品线工程中的基本活动
3.1.1 三大基本活动
3.1.2 开发核心资产
3.1.3 开发产品
3.1.4 管理
3.1.5 整合三大基本活动
3.2 统一软件开发过程
3.3 软件产品线工程过程
3.3.1 为复用而开发
3.3.2 两个开发过程
3.3.3 过程框架
3.4 领域工程
3.4.1 核心工作流
3.4.2 主要阶段
3.5 应用工程
3.5.1 核心工作流
3.5.2 主要阶段
3.6 产品驱动和方案驱动的软件产品线工程模式
3.6.1 两种软件产品线类型
3.6.2 产品驱动的软件产品线工程
3.6.3 方案驱动的软件产品线工程
3.7 小结
思考与练习
4 可变性
4.1 基本概念
4.1.1 可变性是什么
4.1.2 软件产品线工程中的可变性
4.1.3 可变性的分类
4.2 可变性元建模
4.2.1 解析可变性
4.2.2 可变性元模型
4.2.3 正交可变性.
4.3 多种视图下的可变性
4.3.1 C-A-F-C-R视图
4.3.2 多视图下的可变性
4.4 应用工程与可变性
4.5 小结
思考与练习
5 从用例分析到特征模型
5.1 需求工程
5.1.1 概述
5.1.2 软件产品线中的需求工程
5.2 在领域工程中进行需求分析
5.2.1 领域工程中需求分析的主要工作内容
5.2.2 公共性需求
5.2.3 可变性需求
5.3 软件产品线的用例建模
5.3.1 用例模型
5.3.2 软件产品线中的用例模型
5.3.3 在用例中对可变性建模
5.3.4 对用例开发的进一步探讨
5.4 软件产品线的特征建模
5.4.1 有关特征模型和正交可变性模型的讨论
5.4.2 特征建模技术
5.4.3 扩展特征建模技术
5.4.4 用uML进行特征建模
5.5 小结
思考与练习
6 软件产品线设计
6.1 架构设计
6.1.1 架构设计的作用
6.1.2 架构设计的范围
6.1.3 软件产品线架构设计
6.1.4 架构评估
6.1.5 架构演化
6.2 基于IM的软件产品线设计
6.2.1 软件产品线设计中的静态建模技术
6.2.2 软件产品线动态建模:交互图法
6.2.3 软件产品线动态建模:有限状态机法
6.2.4 特征与类的耦合
6.3 小结
思考与练习
7 应用工程
7.1 应用工程的开发策略
7.2 应用工程过程实践
7.2.1 特征模型
7.2.2 用例模型
7.2.3 静态模型
7.2.4 动态模型
7.2.5 特征类依赖关系和类结构
7.3 小结
思考与练习
8 组织
8.1 组织在软件产品线工程中的作用
8.2 角色和职责
8.2.1 产品经理
8.2.2 领域需求工程师
8.2.3 领域架构师
8.2.4 领域开发工程师
8.2.5 领域测试工程师
8.2.6 领域资产管理者
8.2.7 应用需求工程师
8.2.8 应用架构师
8.2.9 应用开发工程师
8.2.10 应用测试工程师
8.3 组织结构
8.3.1 面向产品的组织
8.3.2 面向过程的组织
8.3.3 矩阵型组织
8.3.4 测试
8.3.5 资产管理
8.3.6 产品管理
8.4 地域分布
8.5 协作模式
8.6 小结
思考与练习
参考文献
|
內容試閱:
|
1 软件产品线工程基础
随着软件系统的规模和复杂度的增加,在软件工程中人们试图通过提高软件资产复用程度来达到降低开发成本?提高开发效率?缩短软件上市时间的目的?因此,软件复用相关的方法和技术得到了空前的关注,成为学术界和产业界研究与应用的热点?软件的模块化?抽象和组合机制等思想和技术层出不穷?软件复用意味着只有在软件资产具备足够的可变性时,才可能被应用于不同的产品中?因而,支持可变性[2]成为现代软件开发实践的重要特征,软件产品线software product line,SPL[3]机制以及产生式编程generative programming [4]等方法应运而生?这些机制与从零开始编码,创建独一无二的软件不同,在一定程度上实现了自动化的软件开发?通过引入可变性技术[5],可创建出高可复用的代码库和构件,从而达到降低开发成本和缩短上市时间的目标?
软件产品线是一个软件系统的家族,它们共享一组公共的和可管理的特性集,来满足特定市场或特定项目的个性化需求;它们基于一组公共的核心软件资产,用配置的方式开发出来,核心资产在这个产品家族中得到最大程度的复用?核心资产可以是文档?模型?代码和算法等,组成了产品的路线图?需求?项目计划?系统架构?设计模型和软件构件等工件工件是指在软件过程中被产生?修改和使用的信息片段,通常以某种信息载体的形式呈现,如文档和代码等[6, 7]?
软件产品线提供了在一套产品中管理可变性的系统化方法,主要的优点如下?
1可以标识产品线家族中的个体称为变种,描述各个变种之间的关系,追溯变种与核心资产之间的关联?
2充分考虑了对产品家族的未来扩展?
3既达到了产品实现的灵活性,又保持了模块化?
4能够管理产品家族中多产品之间的演化,保证其一致性?
在一个特定领域,需要建立的应用软件越具有相似性,越应该考虑使用软件产品线方法重用以前的开发成果?然而,软件产品线方法的应用仍有一些障碍,表现如下?
1规模的限制:大规模产品线环境中存在大量的产品变种,它们之间形成指数级数量的关联及依赖关系?从需求工件到实现工件可变性模型逐步细化,所以当追溯变种之间的交互时,会非常困难?
2产品中引入可变性会大大增加整个软件产品线架构设计的难度?
3软件产品线经常用于不同的业务环境中,每种环境都具有独特的复杂性,设计统一的产品线模型非常困难?
本书将系统地阐述软件产品线工程的基础理论,介绍该领域的最新研究成果,并举例说明软件产品线工程相关的工具及其实际应用?
1.1 产品线工程
在工业界,产品线是指一群相关的产品,这些产品可能功能相似,能满足同类需求而规格?型号和花色等不同,一般经过相同或相似的销售途径销售给同一顾客群?
1.1.1 来自制造业的案例
制造业是率先引入产品线技术来降低产品研发成本?缩短产品上市时间,同时又满足用户多样化需求的?然而,在20世纪初期,由于技术和管理水平的限制,工业产品尚不丰富,企业还无法为用户提供足够多的产品选型?美国福特汽车公司生产的T型车就是典型的案例[8]?
福特汽车公司成立于1903年,当时的汽车工厂都是处于作坊式的手工生产状态?这种生产方式使得汽车的产量很低,成本居高不下?当时,一辆汽车在美国的售价大约是4700美元,相当于一个普通工人好几年的收入?福特公司创始人亨利 福特认为,要想把汽车市场变成一个能够创造巨大利润的市场,就必须把汽车变成普通人也买得起的消费品,而要想做到这一点,就得大幅降低价格?于是,1908年,福特汽车公司推出了T型车,它广泛使用机器替代工人的手工劳作?当时,其他公司装配出一辆汽车需要700多小时,而福特仅仅需要12.5小时?这使得福特公司最初推向市场的T型车定价只有825美元,远远低于市场价格水平?
为了进一步提高生产率,1910年,在已经生产了12000辆T型车之后,亨利 福特将工厂从底特律的皮科特搬迁至海兰公园,并在那里首创了T型车生产流水线?这样,单辆汽车的装配时间进一步缩短至93分钟?随着流水线的不断改进,十几年后,福特公司的生产效率提高到了惊人的程度:10秒钟就可以生产出一辆汽车?与此同时,福特汽车的市场价格不断下降,1910年降为780美元,1911年下降到690美元,1914年则大幅降到了360美元,并且最终降到了260美元?
福特公司先进的生产方式为它带来了极大的市场优势?1908年,T型车的产量达到10660辆,创下了汽车行业的纪录?到了1921年,T型车的产量已占世界汽车总产量的56.6%,T型车的最终产量超过了1500万辆,福特公司也成了美国最大的汽车公司?可以说,福特创造出了现代工业史上的奇迹?
福特的T型车开创了汽车工业的革命,使得人们能够很容易地购买到一辆汽车?随着基本需求的满足,人们逐渐对汽车多样性的要求越来越迫切?虽然福特公司把单一型号大规模生产的潜力发挥到了极致,但是当市场转变成了买方市场后,简陋而千篇一律的T型车虽然价廉,但已经不能满足消费者的需求?面对福特汽车的价格优势,竞争对手通用汽车公司转而在汽车的舒适化?个性化和多样化等方面大做文章,以此来对抗廉价的福特汽车,推出了新款雪佛兰汽车?雪佛兰一上市就大受欢迎,严重冲击了福特T型车的市场份额?
然而,面对市场的变化,福特仍然顽固地坚持生产中心的观念,不相信还有比单一品种?大批量?精密分工和流水线生产更经济?更有效的生产方式,甚至不愿意生产除黑色以外的其他颜色的汽车?福特宣称:“无论你需要什么颜色的汽车,福特只有黑色的?”
无视用户核心需求的变化,不在产品可变性上下工夫的福特T型车,最终在1927年宣告停产?之后,福特公司面临着产品转型的问题?但是,过去几乎长达30年的时间福特一直只生产这一种型号的汽车,产品转型异常艰难:所有的设备和工艺都只能用于生产T型车,想要转产其他车型,就要在全面停产的条件下,花费大量的资金和时间全面更新这些设备和工艺?1927年开始,福特公司被迫停产,重组生产线,更换1.5万台车床,重新设计制造2.5万台机床?这些庞大的调整工作耗用了1亿美元的资金和16个月的时间?等到新车型投产时,福特公司已经从全美第一大汽车公司降至第二位?新车型仓促上市,许多部件的技术并不成熟,加之随后被迫更换发动机,福特不得不再一次停产?通用汽车公司等竞争对手趁机抢占市场?1933年,福特的新车重新上市?这时,福特公司落在了通用汽车公司和克莱斯勒汽车公司之后,成为美国第三大汽车公司?直到今天,福特公司也没有能够恢复昔日美国最大汽车公司的地位?
这个案例带给我们许多启示,仅从产品生产的角度分析福特公司所犯的错误,主要包括如下几个方面?
1没有及时把握用户需求的变化,并按新需求改善产品战略?
2产品型号单一,在设计中没有引入任何可能形成产品变种的机制?
3生产方式固定,生产工艺和生产工具无法适应形成产品变种的需求?
4同样,产品质量控制方法只能适应T型车一种产品型号的生产需求?
由此可见,现代流水线生产方式,与面向单用户的手工生产方式相比,在大幅提高生产效率和降低成本的同时,却降低了生产多样化产品的可能性?
工业生产在面临个性化需求时,能否达到优质的服务与高效生产和较低成本的平衡呢?人们逐渐发明了大规模定制的生产方法?
1.1.2 基于平台定制产品
大规模定制mass customization,MC是以大规模的方式生产产品,但能满足每个用户不同需求的生产模式?1970年美国未来学家Toffler在Future Shock一书中提出了一种全新的生产方式的设想:以类似于标准化和大规模生产的成本与时间,提供用户特定需求的产品和服务[9]?1987年,Davis首次将这种生产方式称为“mass customization”[10],即大规模定制?大规模定制的核心是大幅度提高产品品种的多样化和定制化水平,而不相应地增加成本;是个性化定制产品的大规模生产,其最大优点是提升制造企业战略优势和经济价值[11]?
大规模定制带来的经济价值可以用图1-1来描述[12]?虽然大规模生产早期需要在购买设备和工具?建立流程?培训等方面投入大量的资金,但是这些投资可以随着产量的增加分摊到单个产品个体上,结果是销售的产品越多,单个产品越能够维持较低的成本?因此,厂商可以降低产品定价而获得更多的订单?图1-1中的大规模生产成本曲线表明了这一现象?然而,用户一段时间内对大规模生产的标准化产品可能是满意的,但随着需求级别的提高,用户需要更多个性化的产品来满足不同的需求?例如,拥有一辆城市轿车的家庭,可能希望购买第二辆汽车用于旅游,他们倾向于选择SUV车型?虽然他们对以前的轿车品牌非常满意,但是这家厂商无法提供他们的新选型,这意味着厂商将丢掉一个潜在的用户?
图1-1 大规模定制的经济价值
为了满足用户需求的多样性,厂商必然无法对所有的产品大规模生产,产品成本升高但是用户愿意为此付出更多,因为他们的特殊需求得到了满足?为了尽量降低成本,缩短交货期,厂商通过大规模复用的方式争取到规模经济性,获得更高的利润,这就是大规模定制?由图1-1可见,大规模定制的成本曲线较为平缓,它与用户为了实现个性化需求而愿意付出的价格曲线达到最佳匹配,厂商的效益较优,取得了范围经济 ?
大规模定制如何实现呢?工业界,特别是汽车制造业,是通过预先设计,为不同种类的产品引入通用平台,达到将部件应用于不同种类产品的目的?下面仍以汽车制造业为例,说明平台在大规模定制中的应用?
平台产品开发就是产品群一次规划,车型分步开发的模式,以实现零部件共用化与产品个性化的最佳平衡,构成削减成本与满足用户需求多元化的解决方案?
引入平台的汽车产品开发将形成平台开发?车型开发和总成开发的三个层次,开发资源将向前期的平台开发倾斜,单个车型开发周期缩短?效率提高,有利于满足对用户需求变化的快速响应?
平台为汽车主要部件提供了一个结构,它确定了车身体积?发动机和传动装置的类型及大小?组成平台的零部件,从设计和生产准备费用来看,通常是最昂贵的子系统?使用平台制造不同种类的汽车,使得平台旗下车型实现了大规模的零部件通用和生产线通用,显著降低了零部件开发设计成本?模具开发设计成本?人力成本和固定资产厂房机器人标准设备等投资等?
据统计,在1980年至1991年期间,平均每3年时间,使用平台策略的厂商的销售量上涨了35%,而那些从头开始制造每一款新系列汽车的厂商的销售量下降了7%[13]?
基于平台大规模定制产品的策略在其他行业也屡见不鲜?例如,相机业的柯达公司,就是在20世纪90年代初,基于同一平台构建一系列有明显区别的不同相机型号,从而反超富士胶片,成为当时市场的主导厂商?波音公司前后研制的757和767客机,约有60%的零件是相同的?另外,家电?手机?计算机和办公耗材等都是成功使用平台进行大规模定制的行业?
平台在不同行业有不同的表现形式,但是其设计思路和作用大致相同,根据知名在线媒体公司TechTarget的定义如下?
定义1-1 平台
平台是任何一种在其上可以构建其他技术或过程的技术基础?
平台开发的关键是企业内部制定强制性技术规范,明确通用化原则,未来采用同一平台的所有产品的开发与生产必须严格遵循这些规范和原则,这也是保证平台规模效益的前提?
1.1.3 定制产品的工程化
基于平台的大规模定制,使用平台作为产品研发的基础?这使得产品线中的每个个体,都拥有一组能满足特定市场需求或任务需求的公共的?可管理的特性,并且是按预定义的方式,由平台开发而来的?称平台为核心资产,它们是构成产品线基础的资产?针对用户对个性化产品的需求,平台中还包含了大量可定制的特征?
创建平台是产品线工程化的关键?首先,关注哪些是所有产品共同的部分;其次,关注哪些是不同的?得到的工件适用于所有的产品的共性部分,同时必须具备一定灵活性,使其可以在不同的应用中得到复用,提供大规模定制的可能性?
这些工件的获得方式可以有三种?
1厂商自己构建:或者从头构建,或者从老产品中挖掘?
2购买:买来之后,直接使用?
……
|
|