5-需求驱动的软件自适应方法
如何进行软件开发中的自适应设计

如何进行软件开发中的自适应设计自适应设计是软件开发中的重要概念,它能够使软件在不同设备和屏幕尺寸上展现出良好的用户体验。
本文将从定义自适应设计的概念开始,介绍在软件开发中实施自适应设计的步骤和技巧。
一、自适应设计的概念自适应设计是指软件能够根据不同的设备和屏幕尺寸调整其布局和功能的能力。
通过自适应设计,软件可以适应各种设备,如电脑、智能手机和平板电脑等,并且在这些设备上提供出色的用户体验。
二、实施自适应设计的步骤1. 确定目标用户群体:在进行自适应设计之前,首先需要确定软件的目标用户群体。
不同的用户有不同的设备偏好和使用习惯,针对不同用户群体进行自适应设计能够更好地满足他们的需求。
2. 分析设备特性:了解目标设备的特性对于实施自适应设计至关重要。
不同设备的屏幕尺寸、分辨率和显示方式都会影响软件的界面布局和交互方式。
3. 设计灵活的布局:在进行界面设计时,应该采用灵活的布局方式,使得界面能够适应不同屏幕尺寸。
可以使用响应式网格布局或流式布局等技术,使得界面元素能够自动调整大小和位置。
4. 优化内容呈现:在不同屏幕尺寸上呈现内容时,需要根据屏幕大小和分辨率进行适配。
可以通过调整字体大小、图片尺寸和排版方式等来优化内容的呈现效果。
5. 考虑交互方式:不同设备的交互方式也需要进行适配。
例如,在触摸屏设备上,可以采用手势操作和滑动来代替鼠标点击和滚动条。
三、实施自适应设计的技巧1. 使用媒体查询:媒体查询是CSS中的一种技术,可以根据不同的设备特性来应用不同的样式。
通过使用媒体查询,可以实现不同设备上的界面适配。
2. 采用流式布局:流式布局是指界面随着屏幕大小的变化而自动调整。
采用流式布局可以使界面更好地适应不同设备的屏幕尺寸。
3. 图片优化:由于不同设备的屏幕分辨率不同,需要对图片进行优化。
可以使用CSS栅格系统或者响应式图片等技术来实现图片在不同屏幕上的自适应。
4. 考虑可操作性:在进行自适应设计时,还需要考虑用户的可操作性。
自适应管理的实施流程及效果分析

自适应管理的实施流程及效果分析引言自适应管理是一种良好的管理实践,旨在使组织能够灵活适应外部环境的变化以及内部的发展需求。
本文将探讨自适应管理的实施流程以及对组织所产生的效果进行分析。
通过深入研究自适应管理的概念和原则,我们可以更好地了解如何运用它来提高组织的适应性和创新能力。
一、背景介绍1.1 自适应管理的概念自适应管理是一种管理理念,旨在使组织能够应对不断变化的外部环境,同时还要保持内部的稳定和健康发展。
它要求组织能够积极适应变化,主动寻求创新机会,并能够灵活调整策略和资源分配。
1.2 自适应管理的重要性在如今的快速发展和不断变化的商业环境中,传统的管理模式往往难以适应这种变化。
自适应管理能够帮助组织更快地识别和把握机遇,有效应对竞争挑战,提高组织的创新能力和竞争力。
二、自适应管理的基本原则2.1 灵活性和适应性自适应管理要求组织能够快速适应外部环境的变化,不断调整战略和资源分配。
它强调在面对变化时,组织要具备灵活性和适应性,能够迅速作出反应和调整。
2.2 创新和学习自适应管理鼓励组织进行创新和学习,不断寻求新的机会和解决方案。
组织应该鼓励员工提出新想法,并为其提供学习和发展的机会。
2.3 持续改进自适应管理要求组织不断进行改进,通过反馈和评估来发现问题,并采取相应的措施进行改进。
它强调组织要保持持续改进的动力,以适应不断变化的环境。
三、自适应管理的实施流程3.1 环境分析自适应管理的第一步是进行环境分析,了解外部环境的变化和趋势。
组织可以通过市场研究、竞争分析和风险评估等手段来获取相关信息。
3.2 决策制定在环境分析的基础上,组织需要制定相应的决策,包括调整战略、制定目标和调整资源分配等。
这些决策应该能够使组织更好地适应外部环境的变化。
3.3 执行和监控决策制定完成后,组织需要将其付诸实施,并进行监控和评估。
组织应该建立相应的绩效指标,监控决策的执行情况,并及时进行调整和改进。
3.4 学习和反馈自适应管理强调学习和反馈的重要性。
开发适应性强的自适应软件系统

开发适应性强的自适应软件系统自适应软件系统是指具备适应环境变化能力的软件系统。
在当今快速变化的信息时代,软件系统的适应性变得越来越重要。
因此,开发适应性强的自适应软件系统成为了需求领域的重要任务之一。
一、引言随着科技的不断进步和业务的不断发展,软件系统扮演着越来越重要的角色。
与此同时,各个领域的需求也在不断变化,因此需要软件系统具备适应变化的能力。
自适应软件系统应运而生,为满足这一需求提供了有效的解决方案。
二、自适应软件系统的定义与特点自适应软件系统是指具备自我调整和适应环境变化的能力的软件系统。
它能够根据环境条件的变化,自主地改变其行为和结构,以适应新的需求和变化的业务环境。
自适应软件系统具备以下特点:1. 自我感知:自适应软件系统能够通过感知环境变化,获取相关的信息,包括用户需求、环境条件等。
2. 自我分析:自适应软件系统能够对获取的信息进行分析处理,以识别环境变化的类型和程度。
3. 自我决策:自适应软件系统能够根据分析结果,制定适应性策略,并进行决策,以改变自身的行为和结构。
4. 自我执行:自适应软件系统能够根据决策结果,自主地实施相应的调整措施。
三、开发适应性强的自适应软件系统的关键技术为了开发适应性强的自适应软件系统,需要利用一系列关键技术。
以下是几个关键技术的简要介绍:1. 环境感知技术:自适应软件系统需要通过感知环境的方式,获取相关的信息。
这可以通过传感器、接口等技术手段实现。
2. 自适应决策技术:自适应软件系统需要具备自主决策的能力,以制定适应性策略。
这可以通过机器学习、智能算法等技术手段来实现。
3. 可调整结构技术:自适应软件系统需要具备可调整的软件结构,以适应不同的环境变化。
这可以通过模块化设计、分布式架构等技术手段来实现。
4. 运行时监控技术:自适应软件系统需要对系统运行状态进行实时监控,以及时发现并适应环境变化。
这可以通过日志记录、性能监测等技术手段来实现。
四、自适应软件系统的应用领域自适应软件系统可以广泛应用于各个领域,为企业和用户提供更好的服务和体验。
软件开发中的自适应与自学习

软件开发中的自适应与自学习随着科技的发展,软件开发领域也变得日益重要。
对于软件开发者来说,要开发出符合用户需求的软件并非易事。
因此,人工智能、自适应和自学习等技术正日益流行和应用于软件开发中。
这些技术有助于开发者们创建出高质量、高效、更智能的软件。
自适应软件:对用户需求的适应自适应软件指的是可以根据上下文环境、用户历史数据和实时反馈来进行决策的系统。
在软件开发中,自适应技术被广泛应用于各种领域,例如医疗、金融和人力资源等。
在医疗领域,自适应软件可以根据医生和病人之间的信息进行适应。
医生可以通过自适应软件记录病人的病历,并基于这些记录提供准确和高效的诊断和治疗方案。
在金融领域,自适应软件可以根据市场波动、投资者反馈和基本面分析来进行决策。
这些软件可以帮助投资者制定投资策略,并实时反馈市场动态,以便及时调整投资组合。
在人力资源领域,自适应软件则可以通过分析员工表现、培训和工作历史,智能地分配岗位和任务。
这些软件可以帮助公司提供高效的人力资源管理,减少人为偏差并提高生产力。
总之,自适应软件可以根据用户需求和环境变化进行智能调整,提供更好的服务和用户体验。
自学习软件:从实践中学习自学习软件指的是可以从实践中学习并随时间推移而变得更加智能和高效的系统。
在软件开发中,自学习技术被广泛应用于各种领域,例如机器学习、深度学习和神经网络等。
在机器学习中,算法可以通过训练数据来学习,并根据所学知识来预测未知数据。
在深度学习中,模型可以通过多层神经网络来学习并处理复杂信息。
这些技术可以帮助软件开发者创建出更加智能和高效的系统。
在语音识别领域,自学习技术可以用于自然语言处理。
例如,Siri和Alexa等语音助手就是基于自学习技术来实现的。
这些软件可以通过学习用户日常语言习惯,来更好地理解和回答用户的问题。
在图像识别领域,自学习技术可以用于实现智能监控和人脸识别等应用。
这些软件可以通过学习使用者常用的图像特征来更加准确地实现监控和识别功能。
敏捷开发流程详解

敏捷开发流程详解敏捷开发流程详解敏捷开发是一种以人为核心、迭代、循序渐进的软件开发方法。
它强调团队合作、客户需求和适应变化。
敏捷开发流程包括许多不同的方法和框架,例如Scrum、极限编程(XP)和精益开发(Lean Development)等。
本篇文章将详细介绍敏捷开发的核心原则、方法和实践。
一、敏捷开发的核心原则1.以人为本:敏捷开发强调人的重要性,包括开发人员、测试人员、产品负责人和客户。
它认为只有当人们能够有效地协作和沟通时,才能实现最大的效益。
2.可持续的开发:敏捷开发追求可持续的开发速度,保持长期稳定的工作节奏。
这需要避免突击和过度工作,以保持团队成员的积极性和效率。
3.适应变化:敏捷开发能够灵活地适应需求变化,因为客户和业务环境的变化是不可避免的。
敏捷团队应该能够快速响应这些变化,以满足客户需求。
4.快速反馈:敏捷开发通过频繁的反馈循环来优化开发过程。
团队成员应该能够及时获得反馈,以便对产品进行持续改进。
5.质量保证:敏捷开发注重质量保证,通过持续测试和代码审查来确保软件质量。
团队成员应该对代码质量负责,并采用自动化工具来提高效率。
二、敏捷开发方法1.Scrum:Scrum是一种流行的敏捷开发框架,它采用迭代式开发方法,将大型项目分解为小的可交付成果。
Scrum团队由产品负责人、开发人员、测试人员和利益相关者组成,他们共同协作完成产品目标。
2.极限编程(XP):XP是一种以实践为基础的敏捷开发方法,它强调高效率和高质量的软件开发。
XP的核心原则包括简单性、沟通、反馈、勇气和尊重。
XP实践包括测试驱动开发(TDD)、持续集成(CI)和重构等。
3.精益开发(Lean Development):精益开发是一种旨在消除浪费和提高生产率的开发方法。
它强调价值流分析、持续改进和客户需求,以最小化成本和最大化价值为目标。
精益开发框架包括价值流映射、5S管理、看板管理等。
4.Kanban:Kanban是一种可视化工作流管理方法,它通过可视化板和卡片来跟踪工作进度。
LSTM预测驱动的软件系统主动自适应方法

LSTM预测驱动的软件系统主动自适应方法LSTM预测驱动的软件系统主动自适应方法随着软件系统的快速发展和复杂性的增加,传统的静态软件设计面临越来越多的挑战。
软件系统需要具备主动自适应的能力,以应对环境和需求的变化。
近年来,基于机器学习的方法在软件系统自适应领域中取得了显著的进展。
本文将探讨一种基于长短期记忆(LSTM)网络的预测驱动的软件系统主动自适应方法。
在传统的软件系统中,开发人员通过预设规则和固定参数来指导系统的行为。
然而,这种静态的设计方式无法适应复杂多变的环境和需求,因此主动自适应成为现代软件系统设计的趋势。
LSTM是一种递归神经网络的变体,具有记忆单元和三个门控单元,能够有效处理时间序列数据。
通过对历史数据进行学习,LSTM网络可以捕捉到长期依赖关系,并预测未来的状态。
因此,我们可以利用LSTM网络来预测软件系统在不同环境和需求下的性能表现。
首先,我们需要收集大量的历史数据。
这些数据包括软件系统的运行状态、环境因素和需求变化等信息。
然后,我们将数据输入LSTM网络进行训练,以建立模型。
在训练过程中,LSTM网络学习历史数据之间的关系,并提取出重要特征。
通过反复迭代的训练,LSTM网络不断优化模型的准确性。
接下来,在软件系统运行时,我们可以将当前环境和需求作为输入,使用已经训练好的LSTM模型进行预测。
LSTM网络根据当前输入的数据和学习到的历史数据之间的关系,来预测软件系统的性能表现。
预测结果将作为系统自适应的依据,并根据预测结果进行相应的调整。
对于软件系统来说,自适应可以包括很多方面的调整。
例如,当预测结果显示系统性能可能下降时,可以自动调整资源分配,以提供更好的性能。
当预测结果显示系统可能遭遇高负载时,可以自动调整算法参数,以提高系统的处理效率。
在一些特殊场景下,预测结果还可以用于异常检测和故障修复等方面。
与传统的静态设计相比,基于LSTM预测驱动的软件系统主动自适应方法具有以下优势。
自适应mit方案

自适应MIT方案引言在软件开发过程中,如何确保软件能够适应不同的环境和设备成为了一个重要的课题。
自适应性是指软件能够根据不同的设备、操作系统或网络环境自动进行调整和适配,以达到最佳的用户体验。
本文将介绍一种自适应MIT方案,通过使用MIT(多目标迭代训练)算法来实现软件的自适应。
什么是MITMIT(多目标迭代训练)算法是一种集合了多目标优化和迭代训练的方法。
它通过对多个目标进行优化,并使用迭代训练来逐步改进模型,以达到最佳的自适应效果。
在软件开发中,MIT算法可以用于自动化调整和优化软件的响应速度、界面布局、数据传输等方面,以适应不同的设备和环境。
实施自适应MIT方案的步骤以下是实施自适应MIT方案的基本步骤:1.识别关键的适应性需求:首先需要明确软件需要适应的关键需求,例如响应速度、界面布局等。
2.收集训练数据:根据关键需求,收集软件在不同环境和设备上的性能数据。
这些数据可以包括响应时间、网络延迟等。
3.定义适应性目标:根据收集的训练数据,定义适应性目标。
例如,可以将响应时间控制在某个范围内,确保界面布局在不同设备上能够自动适配等。
4.设计MIT算法:根据适应性目标,设计MIT算法。
MIT算法可以包括多个目标函数、适应性规则和迭代训练策略。
5.实施与调试:根据设计的MIT算法,实施自适应功能,并进行调试和优化。
在这个过程中,需要不断地收集性能数据,与目标进行对比,并对算法进行调整与改进。
6.测试与评估:完成自适应功能的实施后,进行测试和评估。
可以通过对比不同环境和设备上的性能指标,以及用户的反馈来评估自适应功能的效果。
MIT算法的优势使用MIT算法实现软件的自适应具有以下优势:1.灵活性:MIT算法可以根据不同的适应性需求进行调整和优化,以适应不同的场景和环境。
2.自动化:MIT算法可以实现自动化的调整和优化过程,减少了人工干预的需求。
3.演化性:MIT算法通过迭代训练来不断改进模型,逐步提高软件的自适应能力。
软件开发知识:如何构建高效的自适应系统

软件开发知识:如何构建高效的自适应系统在当今信息化时代,随着人工智能技术的快速普及以及生活数据的逐步积累,自适应系统也成为了各大领域关注焦点之一。
自适应系统作为一种能够根据外部环境自主调整运行状态的系统,已经广泛运用到人工智能领域、物联网领域以及人机交互领域等众多场景中。
本文将从构建自适应系统的基本原理、核心技术以及应用举例等方面进行阐述,以期能够引领读者深入探索自适应系统的奥秘。
1.构建自适应系统的基本原理自适应系统是指一个能够自动运行并根据外部环境实时调整运行状态的系统,它通过对外部信息的感知、分析和决策,调整自己的行为以适应外部环境的变化。
构建自适应系统的关键在于如何实现系统对外部环境的感知和对外部环境的响应。
从监测、分析和应对三个方面来探讨自适应系统的构建原理。
(1)监测外部环境自适应系统需要准确地了解当前外部环境的状态,这就要求系统能够准确地获得外部环境的各种数据。
常见的监测方式包括传感器数据的采集、网络数据的收集、用户数据的分析等。
在物联网领域中,可以通过传感器节点来收集地理位置、温度、湿度、光照等大量的数据;在人机交互领域,则可以通过分析用户的行为、情感等数据来了解用户的需求和操作习惯。
(2)分析外部环境对外部环境数据的分析是自适应系统的核心技术之一,其中包括数据挖掘、机器学习、深度学习等多种分析技术。
通过对各种环境数据的分析和处理,系统可以得到更加准确的环境状态,同时也为系统的决策提供了基础。
(3)应对外部环境自适应系统需要根据外部环境的状态动态地调整自身的行为和响应。
响应方式多种多样,比如机器人可以根据环境情况选择相应的动作或轨迹;智能家居可以通过智能家居控制平台实现设备的自动控制。
在人机交互领域,系统可能会提醒用户注意力、推荐用户感兴趣的内容等。
2.构建自适应系统的核心技术构建自适应系统需要运用到多种技术,其中包括数据采集、数据分析、决策制定、反馈调整等环节。
其中,机器学习和深度学习是自适应系统的核心技术,可用于解决环境状态分析和系统行为优化的问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
彭鑫陈碧欢赵文耘复旦大学需求驱动的软件自适应方法关键词:软件需求自适应考结构(如图1所示)在自适应软件研究和实践中得到了广泛应用。
按照这一参考结构,每一个具备自适应能力的软件实体都具有一个称为MAPE-K 的控制环路。
其中,监控(monitor环节负责侦测上下文环境及系统自身的事件,发现可能导致自适应调整的变化,分析(analyze环节负责分析变化对于需求及相关约束的影响,规划(plan环节负责规划能够适应变化的自适应调整方案,执行(execute环节负责执行规划的调整方案,知识(know-ledge 则表示完成以上各项任务所需的知识。
自适应软件与自治计算目前,以网构软件为代表的新形态网络化软件系统逐渐成为主流。
同时,普适计算和社会计算的兴起促使软件与物理世界和社会环境进一步融合。
这些都使得软件系统越来越多地运行在复杂、开放并且动态变化的网络环境、物理环境和社会环境之中,导致软件的运行时行为经常偏离系统的需求规约或处于非优化的运行状态。
因此,自适应逐渐成为许多软件系统必备的能力。
具备自适应能力的软件系统能够在运行时根据上下文环境和需求的变化动态地调整自身的结构和行为。
通过运行时的自适应调整,软件系统可以实现一系列重要的运行时特性,包括保障可靠性和鲁棒性、提高能源利用效率、实现失效的自动恢复、动态配置和定制以及动态自优化等[1]。
软件系统的自适应是一种典型的自治管理能力(包括自配置、自优化、自治愈和自保护四个方面[2])。
IBM提出的自治元素参图1IBM 提出的自治元素参考结构[2]需求反射与运行时需求模型传统的软件系统(即非自适应系统)的规格说明建立在对于需求和系统上下文环境充分理解的基础上。
例如,一个救护车系统的需求规格说明及体系结构设计往往建立在一系列涉众需求和上下文环境的假设基础上,例如涉众的质量偏好、系统的峰值和平均请求量、可用的救护车资源、网络通信状况等。
在这些因素相对稳定且能够被充分理解的情况下,软件开发者可以在开发阶段通过权衡决策确定软件规格说明,并开发相应的软件解决方案。
然而,网络化软件系统面临的运行时环境往往具有很大的不确定性并处于持续变化中。
这就使得开发者关于系统需求和设计的静态决策无法适应动态变化且不确定的运行时环境。
而另一方面,系统需求中往往包含一些在任何情况下都应当满足的关键性目标,同时包含一些可以适当放宽的非关键性目标,从而为系统提供了运行时动态调整所需的灵活性[1]。
例如,按照传统的开发过程,救护车系统的需求规格说明需要对上下文环境做出假设(如每分钟呼救请求在10个以内,救护车与调度中心的网络通信一直保持畅通等),同时明确相关的质量要求(如调度中心对于救护车导航请求的响应时间在5秒之内,导航精度在10米范围内等)。
然而,在实际运行过程中,某些突发事件可能会造成短时间内救护车的请求数量激增,从而导致调度系统无法及时响应调度和导航请求。
此时,适当放宽导航精度要求(如50米范围内)从而确保更加关键的响应时间需求(如改为采用精度较低但效率更高的导航方式)是一种合理的选择。
因此,需求感知应成为自适应软件系统的一种基本特性,即系统能够在运行时感知自身的需求并根据需要进行调整。
自适应系统的实现一般都依赖于不同层次上的反射(reflection能力,即系统在运行时观察并感知自身结构和行为的能力。
基于体系结构的软件自适应方法(例如Rainbow [3])以及基于体系结构的反射式中间件[4]提供了体系结构级的反射能力,使得系统可以动态监控系统的运行时体系结构及行为,并在必要时进行调整。
与之相似,需求感知系统需要具备需求层面上的反射能力,即系统维护需求模型的运行时表示,并使其与运行中的系统保持双向的因果关联。
这种运行时需求模型应当支持需求的自省(introspec-tion ,即运行时需求实体能够提供自身的信息,从而允许系统对运行时需求进行推理[5]。
需求目标模型与目标推理为了实现需求的动态评价和推理,运行时需求模型应当支持一系列丰富的运行时分析能力,包括涉众目标、软件的功能和非功能性需求、候选方案、领域假设、场景、风险和冲突等[5]。
鉴于需求目标模型的表达能力和推理能力,一些研究工作已将该模型应用于运行时需求模型的表示、推理和自适应方案规划。
目标模型目标模型描述了涉众的需求及其精化和依赖关系,同时捕捉了满足系统高层目标的多种候选方案以及相应的质量关注。
目前比较常用的目标建模主要包括基于与/或(AND/OR分解[6]、基于i*框架[7]和基于KAOS 框架[8]等方法。
这些方法有不同的关注点和侧重点:基于AND/OR分解的目标建模主要关注于目标精化,面向主体的建模框架i*主要关注于社会性系统的分析建模,KAOS 框架主要关注于目标的冲突建模、操作化以及责任分配。
在目标模型中,功能性需求用硬目标来建模,它的满足性是确定的,即满足或不满足;而非功能性需求用软目标来建摸,它的满足程度并没有一个明确的标准,即软件系统在一定程度上满足或者不满足需求。
图2是一个基于i*框架的救护车系统的目标模型。
其中,“救护车调度”是一个硬目标,“导航精度”是一个软目标。
目标可以通过AND 分解和OR 分解持续精化,直至得到软件、硬件或者人可直接完成的任务。
其中,OR 分解刻画了满足系统目标的多种候选方案。
例如,图2中的“目的地导航”可以被OR 分解为“GSM 导航”和“GPS 导航”,意味着目的地导航可以通过GSM 或GPS 实现。
除了分解关系,目标之间还存在相互影响的关系,例如一个目标的不同候选方案(如OR 分解子目标或任务)往往对相关软目标有着不同的影响,从而支持不同的质量偏好。
目标之间的影响可以通过贡献度链接Make(++, Help(+, Hurt(-和Break(--来表示,其含义是一个目标的满足对于另一个目标的满足程度起到正面或负面的影响。
Make/Help表示一个目标的满足图2救护车系统目标模型将使另一个目标完全满足/部分满足;Break/Hurt表示一个目标的满足将使另一个目标完全不满足/部分不满足。
此外,还可以通过在Help 和Hurt 链接上附加一个(0, 1 区间的值来定量地表示部分满足和部分不满足的程度。
一般而言,OR 分解的子目标对同一个软目标往往有不同的贡献度链接。
例如,“GPS 导航”相对于“GSM 导航”而言导航精度更高,因此“GPS 导航”的满足使得“导航精度”部分满足(Help 链接或者+0.8链接),而“GSM 导航”的满足使得“导航精度”部分不满足(Hurt 链接或者-0.7链接)。
目标推理目标推理是根据AND/OR分解和贡献度链接的语义以及期望的一组目标的满足程度,通过标签传递算法得到各个目标的满足程度[9,10]。
目标推理根据贡献度链接的定性或者定量表示方法,分为定性推理和定量推理;根据标签传递的方向,分为自顶向下推理和自底向上推理。
例如,给定“安排合适的救护车”、“GSM 导航”和“自动更新”的满足程度都为1.0(完全满足),那么通过自底向上推理得到“目的地导航”、“救护车位置更新”和“救护车调度”的满足程度都为1.0(完全满足);给定“紧急电话接听”的满足程度为1.0(完全满足),那么通过自顶向下推理得到“记录紧急事故信息”、“判断紧急电话是否重复”和“报告新事故”的满足程度都为1.0(完全满足)。
由于目标模型建模了满足系统高层目标的多种候选实现方案,而不同的实现方案往往对不同的非功能需求有不同的质量关注,因此,不同的候选方案对多个非功能性需求的综合贡献度的度量值(即多个非功能性需求的满足程度的权重和)成为运行时目标推理的衡量标准。
例如,在救护车请求数量激增的情况下,“响应时间”和“位置精度”比“导航精度”和“开销”有更高的偏好值。
由于“GSM 导航”和“人工更新”分别对“响应时间”和“位置精度”有Help 贡献度链接,因此选取它们分别作为实现“目的地导航”和“救护车位置更新”的方案。
自适应需求分析方法上下文环境的不确定性和系统需求本身的动态性使得自适应系统的需求往往包含一定程度的不确定性或者不完整性[1]。
自适应需求的分析和规约方法应当能够处理这种上下文环境的不确定性以及由此导致的系统行为的不完整性,而且可以支持需求的运行时动态演化。
运行时的需求自适应要求所使用的需求模型和描述语言支持动态调整,例如需求和约束能够在运行时动态放宽或加强。
为此,文献[11]提出了一种需求语言RELAX 来帮助分析和识别自适应系统中的不变(invariant需求和可变(non-invariant 需求。
其中,不变需求表示必须严格满足的关键性需求,而可变需求则表示可以在运行时有所放宽的需求。
为了支持需求的动态调整,RELAX 定义了一组用于需求规约的RELAX 操作,例如SHALL (表示必须被满足)、AFTER (表示必须在某个事件发生之后被满足)、AS EARLY AS POSSIBLE (表示需要尽早满足某个条件)、AS CLOSE AS POSSIBLE TO(表示需要尽可能达到或接近某个数量或频率)等;RELAX 定义了4个属性并关联到每个可变需求来描述环境的不确定性:ENV (定义了环境中的上下文特性)、MON (定义了环境中可观察到的信息)、REL (定义了如何通过MON 属性来推导出ENV 属性)和DEP (定义了可变需求被放松之后对其他需求的影响程度);RELAX 利用了模糊分支时序逻辑来进行形式化规约。
以智能办公室为例[11],爱丽丝(Alice的手机、平板电脑和台式电脑等设备会在爱丽丝走进办公室之后开始进行客户联系方式同步,此后每隔30分钟进行一次同步。
这个需求按照传统的需求分析方法可规约为R1。
由于网络延迟或者设备故障等环境的不确定性,R1并不能严格地被满足,同时需求分析师也难以枚举所有可能的系统自适应行为。
而这个需求按照RELAX 可规约为R1’,其中描述了与该项需求相关的上下文环境特性,即爱丽丝的位置和同步间隔;定义了如何通过监控获得这些特性,即通过运动传感器得到爱丽丝的位置和通过网络传感器得到同步间隔。
因此,只要满足需求中声明的灵活性,任何可能的自适应行为都是允许的。
为了提高运行时自适应所需的灵活性,自适应需求应当明确业务需求、领域假设、质量约束等可以被放松和调整的限度。
例如,一些关键性需求应当一直满足或具有比较高的满足概率,而其他非关键性需求的满足概率可以较低。
为此,文献[12]提出了感知需求(awareness require-ments 的概念,并提供了典型的类型和模式,以便于进行形式化规约。
感知需求刻画了业务需求、感知需求本身、领域假设或者质量约束在运行时的满足状况。
以救护车系统为例[12],当接线员收到一个紧急电话后,首先要记录紧急事故的信息,然后判断紧急电话是否重复,如果不重复则报告一个新事故,最后调度救护车到达事故现场。