上图显示了域分析活动的主要输入、输出项目、参与人员及控制。域分析的输入信息可以从多种渠道获得:技术文献,已完成的同类软件项目(其中包括源代码、设计文档、测试方案、用户手册等),用户述评,专家建议,用户需求,以及当前软件项目反馈过来的域特征信息。域分析活动一般由域分析师、分析辅助人员和领域专家协同完成。它们在域分析方法和管理机制的控制下提交域分析活动的结果信息——一般化的域结构模型(包裹域中概念和实体分类方法),软件开发标准(包括需求分析与软件的方法框架、软件开发过程标准、编码标准、界面标准等),以及用于刻画域的特征、域中对象、操作及其关系的域语言。
由于域分析与需求分析都以构筑应用领域的模型为主要任务,因此,某些需求分析技术可以在域分析过程中发挥作用,需求描述语言(数据流图、实体—关系图,面向对象的需求描述机制等)也可作为域语言的基础。但是,域分析必须进行一般化、抽象化和参数化,以抽象后的域模型元素表示同类域中不同软件项目之间的相似性,通过参数实例化刻画差异性,从而实现域模型元素面向不同软件项目的可适应性和灵活性。于是,在省略有关建模的技术细节之后,域分析过程可大致归纳以下步骤: (1) 发现并描述可重用的实体; (2) 对这些试题及它们之间的关系进行抽象化、一般化和参数化; (3) 对可重用的实体进行分类、归并,以备日后重用。
除上图所示的域分析结果外,域分析还可产生一种重用超结构,以管理在后续软件项目的各个开发阶段的软件重用的可能性,以及收集有关重用活动的各类统计数据。这些数据可反馈至域分析方法,以便不断改进之。在重用超结构中,软部件库管理人员负责软部件的检索和提取,软部件人员负责软部件的质量控制和标准化,重用管理员则收集与重用有关的统计数据,协调所有的重用活动。
软部件的开发
域分析的结果为软部件的选取提供了指导原则。一旦确定某些软件应该作为重用部件加入部件库,开发人员就必须实际构造它们。由于软部件的生命周期将跨越开发项目甚至应用领域,因此,软部件的开发具有相当的特殊性,即如何使软部件更为通用,更易于组装为新的软件系统,以及在新的运行环境下表现出更好的强壮性?
代码级重用是最简单、也是最流行的。但是,本书的软部件不仅包括代码级部件,也涵盖域知识、需求分析文档、设计文档、测试方案、测试用例等软件元素,因为这些级别上的软部件可望更好的发挥重用技术的潜力,同时也是代码级重用的必要补充。
1. 需求及设计级软部件
需求级软部件通常包括问题(及子问题)描述、有关域知识以及相应的需求规格说明。问题描述及域知识说明均用域语言表示,必要时可辅以结果化的自然语言。 类似地,设计级软件部件包括设计规格说明(片段)、设计决策描述以及相应的设计文档(例如总体设计方案,抽象算法)。于是,设计级软件与需求级软部件相结合,使需求级部件和设计级部件的重用同时发生,简化了对这些软部件的理解和组装过程。 需求级与设计级软件部件的开发必须遵循下列两项原则: (1) 将软部件应用的上下文与软部件严格分离; (2) 利用抽象化、参数化等手段提取公共性,增强软部件对未来不同应用项目的适应能力。 需求级、设计级与代码级软部件相结合,有助于代码级软部件的提取和理解。借助较高抽象级别的软部件可望提高重用效能,因为这样不仅可以重用代码,而且可以重用需求模型和设计方案。
2.代码级软部件
代码级重用是迄今为止研究最深入、应用最广泛的重用技术。代码级软部件除包含通常的代码段外,还必须辅以相应的解释和上下文说明。这些辅助说明可以用结构化自然语言或其他表示机制描述,但最好以相应的需求或设计软部件的形式出现。传统上,代码级软部件的主体是子程序(函数或过程)。现在,由于基于对象和面向对象的程序设计语言及相应开发环境的发展,软部件还可以用Ada程序及C++类实现。 开发代码级软部件与通常的程序设计活动的主要区别在于,开发人员必须使用各种抽象化手段,以发觉公共性,分离软部件的应用上下文、功能及行为,从而提高可重用性。可以用下列三种抽象方法开发软部件: (1) 功能抽象:软部件的功能由接口说明中的输入-输出关系确定,实现细节对软部件使用者透明。 (2) 数据透明:在功能抽象的基础上进一步隐藏除界面参数之外的所有数据。 |
相关推荐
python学习资源
jfinal-undertow 用于开发、部署由 jfinal 开发的 web 项目
基于Andorid的音乐播放器项目设计(国外开源)实现源码,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。
python学习资源
python学习资源
python学习一些项目和资源
【毕业设计】java-springboot+vue家具销售平台实现源码(完整前后端+mysql+说明文档+LunW).zip
HTML+CSS+JavaScarip开发的前端网页源代码
python学习资源
【毕业设计】java-springboot-vue健身房信息管理系统源码(完整前后端+mysql+说明文档+LunW).zip
成绩管理系统C/Go。大学生期末小作业,指针实现,C语言版本(ANSI C)和Go语言版本
1_基于大数据的智能菜品个性化推荐与点餐系统的设计与实现.docx
【毕业设计】java-springboot-vue交流互动平台实现源码(完整前后端+mysql+说明文档+LunW).zip
内容概要:本文主要探讨了在高并发情况下如何设计并优化火车票秒杀系统,确保系统的高性能与稳定性。通过对比分析三种库存管理模式(下单减库存、支付减库存、预扣库存),强调了预扣库存结合本地缓存及远程Redis统一库存的优势,同时介绍了如何利用Nginx的加权轮询策略、MQ消息队列异步处理等方式降低系统压力,保障交易完整性和数据一致性,防止超卖现象。 适用人群:具有一定互联网应用开发经验的研发人员和技术管理人员。 使用场景及目标:适用于电商、票务等行业需要处理大量瞬时并发请求的业务场景。其目标在于通过合理的架构规划,实现在高峰期保持平台的稳定运行,保证用户体验的同时最大化销售额。 其他说明:文中提及的技术细节如Epoll I/O多路复用模型以及分布式系统中的容错措施等内容,对于深入理解大规模并发系统的构建有着重要指导意义。
基于 OpenCV 和 PyTorch 的深度车牌识别
【毕业设计-java】springboot-vue教学资料管理系统实现源码(完整前后端+mysql+说明文档+LunW).zip
此数据集包含有关出租车行程的详细信息,包括乘客人数、行程距离、付款类型、车费金额和行程时长。它可用于各种数据分析和机器学习应用程序,例如票价预测和乘车模式分析。
把代码放到Word中,通过开发工具——Visual Basic——插入模块,粘贴在里在,把在硅基流动中申请的API放到VBA代码中。在Word中,选择一个问题,运行这个DeepSeekV3的宏就可以实现在线问答
【毕业设计】java-springboot+vue机动车号牌管理系统实现源码(完整前后端+mysql+说明文档+LunW).zip
【毕业设计】java-springboot-vue交通管理在线服务系统的开发源码(完整前后端+mysql+说明文档+LunW).zip