软件工程概论
- 格式:doc
- 大小:118.00 KB
- 文档页数:9
软件工程概论知识点汇总软件工程概论知识点汇总第一章软件工程概述1. 软件工程定义及概念2. 软件工程的历史发展3. 软件开发生命周期模型a. 瀑布模型b. 迭代模型c. 增量模型d. 螺旋模型e. 敏捷开发模型第二章需求分析与管理1. 需求工程的基本概念2. 需求获取与分析方法3. 需求规格说明书4. 需求变更与配置管理第三章软件设计与架构1. 结构化设计方法2. 面向对象设计方法3. 设计模式及应用4. 软件架构设计与选择第四章软件编码与测试1. 编码规范与风格2. 测试方法与策略3. 单元测试与集成测试4. 软件质量保证与评估第五章软件项目管理1. 软件项目组织与人力资源管理2. 软件项目计划与进度管理3. 风险管理与配置管理4. 软件项目质量管理第六章软件维护与演化1. 软件维护的类型与阶段2. 软件维护的过程与方法3. 软件重构与演化第七章软件工程的理论与方法1. 软件需求建模方法2. 软件设计原则与方法3. 软件度量与评估方法4. 软件工程的形式化方法第八章软件工程的伦理与职业道德1. 软件工程的伦理问题2. 软件工程师的职业道德要求3. 软件工程师的专业素养与发展本文档涉及附件:________本文所涉及的法律名词及注释:________1.著作权法:________保护软件的著作权,禁止未经授权的复制、修改、发布等行为。
2.商标法:________保护软件的商标权,禁止他人未经授权使用相同或相似的商标。
3.专利法:________保护软件的发明专利权,禁止他人未经授权使用相同或相似的发明。
4.合同法:________规定软件开发过程中的合同签订与履行等事项。
软件工程概论软件工程是一个涉及软件开发、维护和管理的学科,它强调系统化的方法和标准化的过程,旨在提高软件的质量和效率。
本文将介绍软件工程的基本概念、重要原则和发展趋势,以及软件工程师的职责和技能要求。
一、软件工程的概念与意义软件工程是一门应用科学,它研究如何以系统化、规范化和可重复的方式开发和维护软件。
与传统的工程学科一样,软件工程通过运用各种工程原则和方法,使软件开发生命周期中的每个阶段都能得到有效管理和控制。
软件工程的意义在于提高软件质量和效率,减少开发成本和时间投入,同时满足用户需求,并保证软件的可靠性和安全性。
二、软件工程的原则与方法1. 需求分析:软件工程过程的第一步是准确理解和规范用户需求。
通过与用户的交流和分析,软件工程师能够明确软件的功能和特性,为后续开发阶段提供有力的指导。
2. 设计与建模:设计是软件工程的核心环节,它包括系统架构设计、模块设计和数据库设计等。
通过合理的设计和建模,软件工程师能够确保软件的可扩展性、灵活性和可维护性。
3. 编码与测试:编码是将设计的结果转化为可执行的程序代码,测试则是验证程序的正确性和稳定性。
软件工程师应该遵循规范的编程实践和测试方法,确保代码的质量和可靠性。
4. 配置管理:配置管理是软件工程中的重要过程,它涉及到对软件配置项的标识、控制和变更管理等。
通过配置管理,软件工程师能够管理软件的版本、变更和发布,确保软件的可追溯性和一致性。
5. 迭代与持续改进:软件工程是一个不断迭代和改进的过程。
软件工程师应该通过持续的监控和评估,发现软件开发过程中存在的问题和改进的空间,并及时调整和优化。
三、软件工程的发展趋势1. 敏捷开发:敏捷开发是一种反传统的软件开发方法,强调团队合作、迭代开发和快速反馈。
相比传统的瀑布模型,敏捷开发更加注重灵活性和快速交付,适应了快速变化的市场需求。
2. 云计算与大数据:随着云计算和大数据技术的发展,软件工程也面临着新的挑战和机遇。
第⼀章软件⼯程概论第⼀章⼀、体系结构的发展(1)主机结构(2)F/S结构(⽂件-服务器结构)(3)C/S结构(客户-服务器结构)(4)B/S结构(浏览器结构)⼆、开发环境(1)单⾏命令式调式器(如DEBUG)(2)多⾏代码编辑器(如EDIT编辑器)(3)集成开发环境三、软件的概念软件是计算机系统中与硬件相互依存的另⼀部份,它是包括程序、数据及其相关⽂档的完整集合。
可以理解为:软件=程序+数据+⽂档四、软件的特点1.软件具有抽象特征2.软件具有⽆明显制造过程的特征3.软件⽆备件的特征4.⼿⼯制作特征5.成本⾼昂特征五、软件的分类(1)按软件功能进⾏划分:1系统软件 2⽀撑软件 3应⽤软件2.按软件规模进⾏划分六、软件危机指什么在软件开发和维护中所产⽣的⼀系列严重的问题。
⼀是如何开发软件,满⾜⽤户对软件的需求;⼆是如何维护数量众多的已有软件。
七、解决软件危机的途径(1)加强软件开发过程的管理(2)推⼴使⽤开发软件的成功技术与⽅法(3)开发和使⽤好的软件⼯具,建⽴良好的软件⼯程⽀持环境。
⼋、软件⼯程的⽬标1.付出较低的开发成本2.实现要求的功能3.取得较好的软件性能4.开发的软件易于移植5.需要的维护费⽤较低6.能按时完成开发⼯作,及时交付使⽤。
九、软件⽣存周期及其⼯作任务软件从定义、开发、使⽤和维护,直到最终被废弃,要经历⼀个漫长的时期,通过称为软件⽣命(⽣存)周期。
⼯作任务1.计划时期:主要任务是调查和分析:调查⽤户需求,分析新系统的主要⽬标,分析开发该系统的可⾏性。
细分为问题定义和可⾏性研究两个阶段。
可⾏性研究分为技术可⾏性和经济可⾏性。
2.开发时期:完成设计和实现两⼤任务,设计包括需求分析和软件设计,实现阶段包括编码和测试。
从重要性和⼯作量上看,设计要重于实现。
分为四个阶段:(1)需求分析(2)软件设计(3)编码(4)测试3.运⾏维护阶段:发现错误、⼯作变化、增加功能等需要的软件升级⼯作。
⼗、软件开发模型分类1.瀑布模型传统的⽣命周期⽅法学通常被命名为“瀑布模型”,包括:问题定义、可⾏性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试、软件维护。
软件工程概论软件工程概论随着信息技术的不断发展,软件在我们的生活中扮演着越来越重要的角色。
同时,软件行业也成为了当今世界最具活力的产业之一,具有无限的发展前景。
为了能够更好的利用信息技术及其应用,软件工程应运而生。
软件工程是一门关于软件开发及其维护的学科,旨在建立一组标准化的方法,规范软件的生产过程,以确保软件的质量、可靠性、有效性和安全性。
本文将介绍软件工程的概念、软件生命周期、流程模型、软件开发方法以及软件工程中的人员角色。
一、软件工程的概念软件工程是一种系统化、规范化、可量化的软件开发方法。
它是应用工程的思想、方法、技术和经验,以满足用户需求为核心,从软件的开发到维护全过程的管理学科。
软件工程的主要任务是:掌握软件开发中必要的知识、方法和技能,理解软件开发中的困难和问题并寻求合理的解决方案。
软件工程要求软件开发人员从纯技术的视角上,向管理、计划和控制等方面发展,以满足软件市场日益增长的需求。
二、软件生命周期软件生命周期指软件开发从提出需求到废止使用的整个过程。
它包括五个基本阶段:计划阶段、需求分析阶段、设计阶段、编码阶段和测试阶段。
其中,计划阶段包括项目开始前的准备活动,需求分析阶段主要是明确用户对软件的需求,设计阶段则是将需求转化为软件模型,编码阶段是根据设计方案编写程序代码,测试阶段则是对软件进行系统测试以确保质量。
三、流程模型为了更好的管理和控制软件开发过程,人们提出了软件开发流程模型。
软件开发的游程模型是指软件建设过程中不断实施的各个阶段和活动的组合,基本上可以分为瀑布模型、原型模型、迭代模型、螺旋模型、敏捷模型等。
(1)瀑布模型瀑布模型是一种经典的、线性的软件开发流程模型。
它是按照顺序完成各个阶段的,即只有当上一个阶段完成后才能进入下一个阶段。
这种模型的优点是开发流程清晰明确,整个过程非常可控,但是也有缺点,即在后期发现问题,需要回到前一个阶段进行修改,费用和时间成本较高。
(2)原型模型原型模型的主要特点是在软件开发的初期,开发人员会根据用户的需求和建议,开发出一个草图性质的产品原型。
软件工程•概述o软件▪定义•软件 = 程序 + 数据 + 文档o数据▪程序加工处理的对象。
▪包括数据的表示、组织与存储。
▪数据 = 初始化数据 + 测试数据o文档▪开发、使用和维护程序所需的图文资料。
▪文档 = 开发文档+管理文档+用户文档+维护文档。
o程序▪能完成预定功能和性能的指令集合。
o软件和程序的区别▪程序只是完整软件产品的一部分。
▪编写程序只是软件开发过程数据中的一个阶段,一般来说,其工作量仅仅是软件开发全部工作量的10%-20%▪软件的特点•抽象性o逻辑实体。
可记录。
但看不到,开发过程可视化程度低,开发结果难以直观表示。
•可复制性o与开发成本相比,复制成本很低。
•无折旧•受硬件制约•未完全摆脱手工工艺•开发费用高▪软件分类•按适用范围分o定制软件(Custom Software)项目软件▪满足特定客户的特定需要的软件。
例如网站。
o通用软件(Generic Software)产品软件▪满足市场潜在客户的通用需求的商业成品软件。
例如:Office、Windows等。
•按软件功能分o系统软件▪管理计算机自身的资源、提高计算机的使用效率并为计算机用户提供各种服务的基础软件。
例如操作系统OS、数据库管理系统DBMS等o应用软件▪解决某一具体领域的实际问题的软件。
例如CAD。
o支撑软件▪协助用户开发的工具软件,如编辑程序、程序库、图形软件包等。
•按软件体系结构分o桌面软件▪全部工作由在单一机器上的一个软件系统完成。
o分布式软件▪由多个软件协调工作来完成任务。
例如客户端与服务器C/S、浏览器与服务器B/S软件。
o并行软件▪基于多CPU环境能完成并行计算的软件。
•按规模分o小型软件(1-5人年)o中型软件(5-50人年)o大型软件(50人年以上)•按工作方式分o实时软件o分时软件o交互式软件o批处理软件o嵌入式软件(Embedded Software)▪运行于特定硬件设备中的软件。
例如:手机、汽车等中的软件。
软件工程概论
第一篇:软件工程概论简介
软件工程是一门涵盖软件开发全过程的学科,是将工程学应用于软件开发的过程。
它主要依靠不断变化和改进的软件过程模型,来实现软件开发,从而提供更加可靠、高质量、易于维护的软件。
首先,软件开发的重要性是显而易见的。
软件在现代社会中扮演着至关重要的角色,此外,软件的功能和质量越来越受到人们的关注,这更加强调了软件工程的重要性。
软件开发过程的复杂性也越来越明显,需要更加科学、系统的方法来管理和控制。
其次,软件工程涉及到的过程包括了软件需求分析、设计、编码、测试等方面。
针对不同的任务需求和开发阶段,软件工程采用了多种软件开发模型和方法,如:瀑布模型、原型模型、敏捷开发等。
每种开发模型都有优点和缺点,开发人员需要进行合适的选择和应用。
最后,软件工程也需要不断的更新和升级,以适应时代快速发展的需求。
软件工程领域近年来出现了很多新兴技术和方法,如云计算、大数据、DevOps等,这导致软件开发的方式和方法也在不断地变化和改进。
因此,软件工程不仅是一门学科,更是一门不断进步和发展的学科。
总之,软件工程是一个旨在提高软件开发效率和质量的科学方法。
随着时代的不断变化和发展,软件工程也在不断地更新和改进。
它已经成为现代科技领域中不可或缺的一部分。
软件工程1、软件危机:软件危机是指在计算机软件的开发和保护过程中碰到的一系列严重问题。
包含双方面的问题:(1)如何开发软件,以知足对软件日趋增添的需求;(2)如何保护数目不停膨胀的已有软件。
2、软件危机的主要表现:(1)对软件开发成本和进度的预计常常很不正确;(2)用户对“已达成的”软件系统不满意的现象常常发生;(3)软件产品的质量常常靠不住;(4)软件常常是不行保护的;(5)软件往常没有适合的文档资料;(6)软件成本在计算机系统总成本中所占的比率逐年上涨;(7)软件开发生产率提升的速度,远远跟不上计算机应用快速普及深入的趋向。
3、产生软件危机的原由(1)从软件特色上看,软件是逻辑零件,不是物理零件;(2)软件是很大的程序,复杂且有好多技术问题,但缺乏严格而科学的管理;(3)软件的参加人员多且成分复杂(需求人员,开发人员,用户,保护人员等);(4)在软件实践过程中或多或少的采纳的错误的(但当时没法了解的)方法和技术(这是主要原由)4、除去软件危机的门路(1)第一应当对计算机软件有一个正确的认识;(2)更重要的是,一定充足认识到软件开发不是某种个体劳动的神奇技巧,而应当是一种组织优秀、管理严实、各种人员共同配合、共同达成的工程项目;(3)应当推行使用在实践中总结出来的开发软件的成功的技术和方法,而且研究探究更好更有效的技术和方法,赶快除去在计算机系统初期发展阶段形成的一些错误观点和做法;(4)应当开发和使用更好的软件工具总之,为认识决软件危机,既要有技术举措(方法和工具),又要有必需的组织管理举措。
5、软件工程:软件工程是从管理和技术双方面研究如何更好地开发和保护计算机软件的一门新兴学科。
(1)1968年NATO会议:软件工程就是为了经济地获取靠谱的且能在实质机器上有效地运转的软件,而成立和使用完美的工程原理。
(2)1993IEEE定义:软件工程是①把系统的、规范的、可胸怀的门路应用于软件开发、运转和保护过程,也就是把工程应用于软件;②研究①中提到的门路。
第13章软件重用技术13.1 典型问题分析和解答【例1】实施软件重用的目的是要使软件开发工作进行得( A )。
软件重用的实际效益除了( B )之外,在企业的经营管理方面也渴望达到理想的效益。
新的应用软件开发技术和工具是以( C )作为关键,重用大粒度的( D ),为的是快速开发应用软件。
这些新技术包括微软的( E )、( F )、(G ),SUN公司的Java,OMG公司的CORBA、IDL等。
供选择的答案:A. ①更简捷②更方便③更快、更好、更省④更丰富B. ①重用率②功能扩充③效率④空间利用率C, D. ①软件②固件③构件④属性⑤对象⑥事物⑦数据⑧代码E~G. ①office ②Visual Basic ③Active X ④Photoshop⑤OLE ⑥Fortran ⑦COBOL ⑧Delphi答案:A. ③, B. ①, C. ③, D. ⑤, E. ②, F. ③, G. ⑤。
其中,E、F、G的答案顺序可互换。
分析:实施软件重用的目的是要使软件开发工作进行得是更快、更好、更省。
“更快”是指在市场竞争环境中,软件开发工作能满足市场上时间方面的要求(即在提供软件产品的时间方面能赛过竞争对手);“更好”是指开发出来的软件在未来的运行中失效可能性小;“更省”是指在开发和维护期间所花费的开销少。
日美一些大公司的资料表明,软件重用率最高可望达到90 %,而且软件重用使得企业在及时满足市场、软件质量、软件开发和维护费用等方面都得到显著的改进。
除了重用率之外,在企业的经营管理方面也可望达到理想的效益。
例如,上市时间可缩短2 ~ 5倍;软件产品的缺陷密度可减少5 ~ 10倍;软件产品的维护费用可减少5 ~ 10倍;软件开发总费用可减少15% ~ 75%,其中,75%是针对长期项目,包括开发可重用构件及支持重用的负担。
新的应用软件开发技术和工具是以“构件”作为关键,重用大粒度的“对象”,为的是快速开发应用软件。
这些新技术包括微软的Visual Basic、Active X、OLE(对象链接与嵌入),SUN公司的Java,OMG公司的CORBA(公用对象请求代理程序体系结构)、IDL(接口定义语言)等。
非面向对象语言(如COBOL和Fortran)在重用实践中已经相当的成功。
这些非面向对象程序设计语言构件技术的成功实践说明了实现软件重用并不限于面向对象语言构件或类库。
【例2】以往的软件工程技术不能满足重用的需要,体现在工程、( A )、( B )、经营业务等4个方面。
“工程”指软件开发工程,表现在缺乏( C )手段,缺乏( D )构件,缺乏对潜在可重用的( E ),缺乏实施重用的工具。
供选择的答案:A, B. ①需求②过程③环境④组织管理C ~ E. ①重用②可靠性③灵活性④界定⑤工具⑥互连性答案:A. ②, B. ④, C. ④, D. ①, E. ③。
其中,A、B的答案的顺序可互换。
分析:以往的软件工程技术不能满足重用的需要,体现在工程、过程、组织管理、经营业务等4个方面。
这里所说的“工程”是指软件开发工程,其技术和方法面对重用的需要已显得低效,主要表现在:▪缺乏界定手段:为了软件重用,需要循软件开发流程的各个阶段,通过分析它们的描述模型,明确界定出潜在可重用的部分,被界定出的部分,可能是可被重用的部分,也可能是可被可重用构件代用的部分。
而以往的软件工程缺乏这种界定手段。
▪缺乏可重用的构件:这反映在许多方面。
例如,不能有效地挑选出可重用构件并对它们进行强化;缺乏对构件打包、文档化、分类、界定的技术;缺乏有效方法进行(构件)库的设计和实现;缺乏良好的构件库存取方法。
▪缺乏对潜在可重用构件的灵活性:如果一个构件很死板,那么它被重用的机会就很少。
而过去的软件工程方法在设计灵活的、分层的软件体系结构方面一直没有成熟的办法。
过去的方法是对构件进行调节使之满足新的需求,或者使对新的体系结构进行限制。
▪缺乏实施重用的工具:为了实施重用,需要一系列新的工具,并把它们集成到面向重用的软件工程环境中去。
而过去的工程缺乏这方面的工具。
【例3】论域工程过程要在选定的应用论域中界定出( A )和( B ),要为多个应用和构件定义一个( C ),并开发一系列可适度扩展的( D )。
创建可重用构件既困难又昂贵。
所以,应当帮助软件人员进行界定工作,以及按重要性对各项( E )进行优先性排队。
在一定程度上,这项工作要依赖于( F )。
供选择的答案:A, B, E, F:①共性②特性③可变性④属性⑤灵活性⑥可靠性⑦健壮性⑧适用性C, D:①固件②构件③体系结构④组件⑤总体框图⑥数据结构答案:A. ①, B. ③, C. ③, D. ②, E. ②, F. ⑥。
其中,A、B的答案顺序可互换。
分析:论域工程过程要在选定的应用论域中界定出共性和可变性,要为多个应用和构件定义一个体系结构,并开发一系列可适度扩展的构件。
创建可重用构件既困难又昂贵。
所以,应当帮助软件人员进行界定工作,以及按重要性对各项“特性”进行优先性排队。
在一定程度上,这项工作要依赖于预测的可靠性(预测需要哪些应用层的可靠性和构件层的可靠性),这也关系到我们要冒多大的风险。
【例4】软件体系设计的一个中心问题是能否( A ),以及采用何种软件体系结构风格。
有原则地使用体系结构风格可带来一些实际的好处:(1)它促进了对设计的( B );(2)它可以带来显著的( C )(体系结构风格的不变部分使它们可以共享同一个实现代码);(3)只要系统是使用常用的、规范的方法组织起来的,就可以让其它设计者很容易地理解软件的体系结构;(4) 对标准或规范风格的使用也支持了( D ),例如像CORBA这样的面向对象的架构和基于事件机制的工具的集成;(5)在限制了设计空间的情况下体系结构风格通常允许进行特殊的与风格有关的分析;(6)通常可以对特定的风格提供( E )手段。
供选择的答案:A C. ①使用特定的体系模式②使用重复的体系模式③重用④专用⑤代码重用⑥结构重用D ~ E. ①可视化②构件③互操作性④可移植性⑤可调度性⑥框架答案:A. ②, B. ③, C. ⑤, D. ③, E. ①。
分析:软件体系设计的一个中心问题是能否使用重复的体系模式,以及采用何种软件体系结构风格。
例如可以采用通用的基于层次或数据流的系统体系结构,或者采用特殊的系统组织(如经典的编译器分解方式),OSI七层协议,MVC用户界面语义图等。
有原则地使用体系结构风格可带来一系列实际的好处。
(1)它促进了对设计的重用。
一些经过实践证实的解决方案可以拿来可靠地解决新问题。
(2)它可以带来显著的代码重用。
体系结构风格的不变部分使它们可以共享同一个实现代码。
(3)只要系统是使用常用的、规范的方法组织起来的,就可以让其它设计者很容易地理解软件的体系结构。
例如,如果某人把系统描述为“客户机∕服务器”模式,则不必给出细节,人们立刻就会明白它们是如何一部分一部分地组织起来,并在脑海中清晰地得到这个图像。
(4) 对标准或规范风格的使用也支持了互操作性,例如像CORBA这样的面向对象的架构和基于事件机制的工具的集成;(5)在限制了设计空间的情况下,体系结构风格通常允许进行特殊的与风格有关的分析。
例如,分析管道过滤器系统的可调度性(吞吐量、延时、死锁的解决)是可行的,但对于任意的、或用其它方法构造的架构来说,这种分析可能毫无意义。
(6) 通常可以对特定的风格提供可视化的手段。
例如,可以对与客户的专业领域有关的设计作出图解或文字说明。
对于应用软件体系结构风格来说,由于视点的不同,软件人员有很大的选择空间。
要为系统选择或设计某一个体系结构风格,必须根据特定项目的具体特点,进行分析比较后再确定。
体系结构风格的使用几乎完全是特化的。
【例5】分层系统采用层次化的组织方法,每一层向其( A )提供服务,并利用( B )的服务。
在一些分层系统中,( C )全部被隐藏起来,只有( D )和一部分精心选择的功能可以被系统外部看到。
在这种系统中,( E )是实现在层次结构中的一些虚拟机,( F )是层次与层次之间交互的协议,(G )包括对层次之间交互的限制。
分层系统中有许多可取的属性。
首先,它支持( H )的系统设计,这使得设计者可以把一个复杂的系统按递增的步骤分解开来;其次,它支持(I ),像管道结构的系统一样,因为每一层至多和相邻的上下层交互,因此,功能的改变最多只影响相邻的上下层。
另外,它能支持(J ),和抽象数据类型一样,只要提供的服务接口定义不变,同一层的不同实现可以交换使用。
供选择的答案:A ~ D. ①下层②内部层次③外部层次④上层⑤中间件⑥接口E ~ G. ①接口定义②软件部件③连接④拓扑约束⑤规范定义⑥推理机制⑦系统结构H ~ J. ①基于抽象程度递增②基于具体细节递增③重用④可视化⑤互操作⑥功能增强⑦效率提高⑧结构化答案:A. ④, B. ①, C. ②, D. ③, E. ②, F. ③, G. ④, H. ①, I. ⑥, J. ③。
r t L L t r L L R )C /C 1(1C r n n --t t E L n nE L R )C /C (1C r n n -t r n n L )E /E (1E -分析:对于分层系统:(1) 基本结构:分层系统采用层次化的组织方法,每一层向其上层提供服务,并利用其下层的服务。
在一些分层系统中,内部层次全部被隐藏起来,只有外部层次及一部分精心选择的功能可以被系统外部所见。
在这种系统中,软件部件是实现在层次结构中的一些虚拟机,连接是层次与层次之间交互的协议,拓扑约束包括对层次之间交互的限制。
如图所示。
(2) 应用:这种系统最广泛的应用是分层通信协议。
在这一应用论域中,每一层提供一级抽象的功能,作为上层通信的基础。
较低的层次定义低层的交互,最低层通常只定义硬件物理连接。
其它应用论域有数据库系统、操作系统等。
(3) 分层系统中有许多可取的属性。
首先,它支持基于抽象程度递增的系统设计,这使得设计者可以把一个复杂的系统按递增的步骤分解开来;其次,它支持功能增强,像管道结构的系统一样,因为每一层至多和相邻的上下层交互,因此,功能的改变最多只影响相邻的上下层。
另外,它能支持重用,和抽象数据类型一样,只要提供的服务接口定义不变,同一层的不同实现可以交换使用。
这样,就可以定义一组标准的接口,并允许有各种不同的实现方法(典型的例子是ISO OSI 参考模型和某些Windows 的系统协议)。
【例6】软件重用可分为以下三个层次:( A ),例如软件工程知识的重用。
( B ),例如面向对象方法或国家制定的软件开发规范的重用。
软件成分的重用。
软件成分的重用又可进一步划分为( C ),如剪贴;( D ),如重用设计模型;( E ),更高级别重用。