861 resultados para Software Process
Resumo:
“21世纪是软件世纪(Software Century)”。随着网络和信息技术的飞速发展,作为信息技术载体的软件产品日益渗透到21世纪社会生活的各个领域。 一方面,日益增长的软件需求催使软件产业作坊式的生产模式逐步向规模化、产业化和过程化的方式转变。另一方面,随着重用、面向对象和组件等技术的进步,软件的规模、复杂度迅速提高,软件的可靠性、可扩展性和易用性等质量需求不断上升。基于“质量形成于产品生产过程”的重要理念,软件过程技术在 过去20年取得了巨大的成功。软件过程技术的成功,很大程度归功于它显示的过程建模、监控和改进理念。现有的软件过程管理系统大多由预先建立的软件过程模型所驱动,即首要前提是建模,在企业实际运用中还面临着大规模实施的困难。一方面,大量的软件组织在多年的项目实施过程中,并没有严格遵循先建模后实施再改进的规范化过程管理流程。在实施过程改进时,首要任务和主要手段就是由过程模型专家通过经验和访谈方式建立模型。因此,所建模型具有较强主观性,易出现遗漏和偏差;另一方面,为了在急剧变化的动态环境中保持竞争力,过程改进人员需要及时地监控软件过程动态运行状况并持续地进行过程改进。然而,现有分析技术执行成本高、易出错,难以适应软件过程的高动态性、演化性和不确定性等特点。针对现有软件过程技术在建模客观性和动态监控能力上的不足,软件过程挖掘技术日益成为软件过程领域的一个重要研究课题。针对现有软件过程挖掘技术在事件日志关联的任务数据挖掘和时序数据挖掘方面(主要是对具有多变元和可变规模收益特性的任务数据挖掘能力,以及时序数据趋势预测能力)的不足,本文提出了一种基于事件日志的软件过程挖掘方法。核心思想是从软件过程的实际执行的历史过程事件日志出发,挖掘出软件过程实际运行的行为模式(高性能任务、时序趋势和过程模型),为软件过程建模、监控和改进提供决策支持。本文所完成的主要工作和贡献包括: 1. 详细综述了过程挖掘技术的研究现状、发展趋势和存在问题。 对软件过程技术和软件过程挖掘技术进行了详细综述,尤其从研究团队出发对各团队在软件过程挖掘技术的研究侧重点、技术特点、贡献和工具研发情况等进行了对比分析,总结出了软件过程技术和过程挖掘技术的发展趋势和存在问题。见第二章。 2. 提出了一种基于事件日志的软件过程挖掘方法SoftProMiner。 基于对软件过程事件日志结构的分析,提出了一种基于事件日志的软件过程挖掘方法SoftProMiner。介绍了SoftProMiner的三维(任务维、时间维和 过程维)框架、挖掘流程和核心子方法(面向任务数据挖掘的askBeD和面向时序数据挖掘的SoPTSA)。见第三章。 3. 提出了一种基于数据包络分析的软件过程高性能任务挖掘方法TaskBeD。 TaskBeD是面向SoftProMiner任务维挖掘的核心子方法。针对任务数据的多变元和可变规模收益挖掘问题,把数据包络分析(DEA)方法引入到高性能任务挖掘。建立了基于DEA的任务性能评价模型、高性能任务挖掘算法、任务性能改进参考集建立算法、敏度分析算法等。见第四章。 4. 提出了一种基于ARIMAmmse的软件过程时序数据挖掘方法SoPTSA。SoPTSA是面向SoftProMiner时序维挖掘的核心子方法。总结了软件过程时序数据的特点,对现有的自回归求和移动平均(ARIMA)时序分析模型进行了改进,提出了基于ARIMAmmse的时序挖掘方法SoPTSA。介绍 了SoPTSA 时序模型、分析流程及分析算法等。见第五章。 5. 对SoftProMiner的核心子方法TaskBeD和SoPTSA进行了实例研究。对SoftProMiner,重点是其核心方法(TaskBeD和SoPTSA)进行了实例研究和结果分析。见第六章和第七章。 理论证明和实例研究结果显示:一方面,SoftProMiner有效刻画了软件过程挖掘技术的事件日志、任务、时序和过程特性,满足了实际的应用需求;另一方面,尤其是SoftProMiner 的两个核心子方法(TaskBeD 和SoPTSA),有效 地增强了现有软件过程挖掘技术对具有多变元和可变规模收益特性的任务数据挖掘和时序数据挖掘方面的能力。小结可知,基于事件日志的软件过程挖掘方法SoftProMiner为组织的软件过程建模、度量、监控和改进提供了决策支持。
Resumo:
软件过程建模是指对软件过程建立模型,并且对模型建立和模型执行提供自动化支持。软件过程建模技术为软件过程的描述、表示、执行、分析、跟踪、变更以及改进提供了方法和工具,从而为软件组织实现软件开发过程的管理和改进提供了有力的支持,对于保证软件组织的软件产品质量,提高开发效率具有重要的理论和实践价值。 软件过程的一个重要特征是极大地依赖于软件开发人员,当软件过程面临各种变化时,正是作为软件过程的主体——软件开发人员的及时反应和应对,使得软件过程能够灵活适应各种软件开发的实际和变化状况;忽视软件开发人员在软件过程中的核心作用,是目前大多软件过程建模方法不适用于软件企业实际应用的原因之一。Agent技术主要基于对人的观察,其已被认识到是软件过程建模领域的重要研究方向之一。然而,相关研究工作并没有很好地体现人在软件过程中的核心作用,其根本原因在于其所采用或关注的是单Agent技术,而非多Agent系统技术。以互联为背景的多Agent系统能够很好地刻画人类的社会性,因此,对于当前以全球性、分布式多点等为主要特点的软件过程而言,采用多Agent系统技术,关注软件过程中所涉及的实体之间的协商、协作、竞争、承诺等特性是将Agent技术应用于软件过程的研究重点。 本文提出一种适应性多边软件过程Agent协商模型AMNM-PA。AMNM-PA基于软件开发者为软件过程中的核心要素并且软件过程为这些核心要素之间的相互协同关系的观点,将软件开发建模描述为代表软件开发者的自治的软件过程Agent(简称过程Agent)之间的协商;在协商中,过程Agent能够在变化的环境下针对各种不同实际应用,以及根据对环境的感知和所拥有的知识,适应、灵活地确立彼此间的协同关系,即建立软件过程。 本文在组织上采用了从模型要素及其相互关系定义、模型要素具体描述到模型实现及验证的逻辑结构。首先,本文给出AMNM-PA的模型定义,对过程Agent的协商所涉及的协商要素及其相互之间的关系进行描述。其次,本文详细描述协商要素中的决策过程,即过程Agent在协商中进行决策所依据的协商策略选择方法及各种可选协商策略;并以决策过程为基础,提出一种多边适应性协商算法,以此给出基于AMNM-PA的适应性多边协商过程的基本算法。随后,本文详细描述了另一协商要素——协商规则,其解决了协商过程的离线和在线灵活性问题,从而为软件过程建模的灵活性提供了解决方案。最后,本文实现了基于AMNM-PA的协商系统,并在该系统的支持下进行了实验研究,验证了AMNM-PA能够在变化的环境中适应性地建立面向实际软件项目的软件过程,并且该软件过程所包含的个体利益能够得到均衡、整体利益较高;同时很好地支持了软件过程建立和执行的灵活性。
Resumo:
软件开发过程的不可见是软件项目失败的主要原因之一。为了提高软件开发过程的可见性,研究人员从软件开发过程的表示、软件开发知识的管理和软件开发数据的挖掘等方面提出了相应理论、方法和工具,这些理论、方法和工具对提高软件过程的可见性提供了一定的帮助,但却都有自己的局限性,难以全面覆盖提高软件开发过程可见性的要素。 为此,我们需要进一步融合软件过程建模、知识管理和数据挖掘等领域各自的研究成果,探索一种不但支持从过程资产库提取知识,而且支持对这些知识进行描述和管理,同时还能将这些知识直接用于建立符合组织能力的软件过程模型,并可以根据该软件过程模型生成符合组织中人的能力的软件开发项目计划的完整方法,为提高软件开发过程的可见性提供全面、有力的支持,从而有效保障软件开发的质量和效率。 本文给出一种根据组织的软件过程资产库生成软件过程Agent知识的方法,该方法生成的软件过程Agent知识可被用于建立一种基于组织实体能力的软件过程模型。基于该方法,本文实现了一个软件过程Agent自动生成工具,该工具可以根据指定的软件过程资产库自动生成软件过程Agent实例及其知识。同时本文在应用实例研究中进行了实验验证,证明了该方法的有效性。 本文研究是对基于组织实体能力的软件过程建模方法的扩展和补充。该方法和基于组织实体能力的软件过程建模方法的集成,可有效支持根据组织过程资产库生成组织的软件开发知识并将这些知识进行描述,使其能够被用于建立符合组织能力的软件开发模型,并最终根据特定目标生成符合组织实际能力软件开发项目计划。
Resumo:
随着软件应用范围的不断扩大和复杂程度的不断提高,软件开发过程越来越难以控制,软件质量也越来越难以保障。质量管理的思想和理念,已经从单纯的以面向软件产品的检验为主要手段的质量控制,发展到更加成熟、更加主动地对软件产品生产过程进行管理的质量保障。 作为高成熟度软件过程的特征,量化过程管理逐渐被软件组织接受并实施。通过实施量化管理,能够刻画项目或过程目标的满足程度,找到造成过程或产品重大偏差的根本原因。然而,在量化过程管理实施期间,软件组织面对不同的软件开发过程、众多的过程性能度量指标、复杂的统计分析方法,既要考虑量化管理方法的合理性和复杂程度,又要权衡量化管理的实施成本,这使得实施有效的量化过程管理充满挑战。本文以缺陷数据为中心,提出了一种缺陷驱动的量化过程管理框架,以及基于该框架的两个量化管理方法,支持软件组织收集量化过程管理所需数据,建立过程性能基线和过程性能模型,量化管理软件项目。该框架适合迭代、瀑布等不同的开发方法,支持项目全生命周期的量化管理。 本文主要贡献包括: 提出了一种缺陷驱动的量化过程管理框架(Defect-driven Quantitative Process Management framework, DefQPM)。量化管理中,保障软件质量是核心。质量和缺陷密切相关,软件开发过程中各类工程活动(如:需求、设计、编码、测试等)都伴随着缺陷的注入、排除和遗留。DefQPM框架以缺陷数据作为量化管理的出发点,自底向上的通过数据层、模型层、使用层来指导软件组织分析过程性能,识别度量指标间的相关性,建立符合自身情况的过程性能基线和过程性能模型,有效的实施量化过程管理。DefQPM框架给出了实施量化管理的过程和机制。基于DefQPM框架,可以建立针对特定应用场景的量化管理方法,以及针对特定软件组织的量化管理解决方案。 提出了一种基于DefQPM的迭代项目量化管理方法(process performance Baseline based Defect-driven iteration management, BiDefect)。迭代开发方法由于其灵活性和管理需求变更的能力,得到了广泛应用。然而,如何对迭代项目实施量化管理依然充满挑战。迭代项目中,各种活动多次并行执行,难以找到合适的控制点,也缺乏针对迭代项目的度量指标及分析方法。基于DefQPM框架,本文研究了迭代开发项目典型的量化管理需要(例如:通过控制每次迭代工作产品的质量来保障最终交付软件产品的质量),提出了一种针对迭代项目的量化管理方法,解决了量化管理迭代项目的几个主要挑战。该方法关注缺陷的注入、排除、遗留情况,指导项目策划期间建立整体估算和度量,在项目执行期间评价软件过程执行情况及软件产品的质量,及时识别异常并采取纠正措施,进而为项目后续工作中成本、进度、质量等方面提供估算、控制方面的指导。 提出了一种基于DefQPM的测试过程量化管理方法(Quantitatively Managing Testing process, TestQM)。测试是重要的质量控制活动,对于高成熟度软件组织来说也是需要进行量化管理的活动。缺陷检测和缺陷修复是测试过程的两类主要活动,需要不同技能的人员执行。目前流行的软件估算方法多是将缺陷检测和缺陷修复的工作量和进度统一纳入测试活动中进行估算和管理,不够准确。基于DefQPM框架,本文提出了一种专门针对测试过程的量化管理方法。该方法关注缺陷按注入阶段分布情况,缺陷与修复工作量的相关性,以及缺陷与修复进度的相关性,指导在早期项目建立测试过程的估算,在测试过程中根据缺陷按注入阶段分布情况调整缺陷修复工作量和进度,使得测试过程受控。同时,介绍了TestQM针对Web应用开发项目的经验模型。 最后,介绍了上述量化管理方法在国内软件组织中的应用,包括BiDefect方法在迭代开发项目中的应用,以及TestQM方法在Web应用开发项目中的应用。软件组织实施量化过程管理前后的过程性能变化表明,应用本文方法能够对项目进行有效的估算、度量、重新估算和控制,进而提高产品质量,改善客户满意度。
Resumo:
``软件危机'',这一始于上世纪~60~年代的概念,始终伴随着软件业的整个历史发展进程。 为了解决该问题,人们逐渐开始借鉴一些传统领域内的管理理论、方法和工具,以期解决软件开发中所面临的问题。其中,更多的是作为一种管理哲学,而不是具体管理方法的全面质量管理(Total Quality Management,TQM),在软件工程领域得到了广泛应用。全面质量管理对于软件工程的影响,一个很重要的方面是促进了软件过程和软件过程改 进的研究、实践。 作为软件过程研究的重要内容,软件过程建模是通过特定的方法对软件过程进行抽象、表示和分析以增加对软件过程的理解,并通过直接或者间接的方式指导实际软件开发活动。为了对软件过程管理活动提供方法和工具支持,人们提出了多种以过程为中心的软件过程工程环境(Process-centered Software Engineering Environment, PSEE),其最终目的是使得实际软件开发活动受软件过程模型的支配。但由于过程模型本身的正确性得不到保证、PSEE中执行的软件过程模型和实际开发过程之间的信息反馈缺乏客观性以及过程模型和实际开发过程之间的抽象层次不同和描述粒度不一致,导致PSEE中执行的软件过程模型和实际开发过程之间经常产生严重的偏差,以至于PSEE对实际开发活动逐渐地失去了支持和指导作用,进而使得投入大量成本所开发的软件过程模型无法发挥其应有的作用。 针对这些问题,本文提出了一种具有严格操作语义的图形化软件过程建模方法。由于在具有图形化表示方式的同时,又具备严格的操作语义,因此基于该方法所描述的软件过程比较易于分析。特别是,通过模型检测技术验证软件过程模型本身的正确性,可以减少由模型错误所导致的不一致;通过比较预定义的过程模型和实际开发过程,可以发现两者间的不一致并及时地消除。同时,具有严格操作语义的软件过程建模方法,可以为软件过程执行提供良好的支持。 首先,本文提出了一种具有严格操作语义的图形化建模语言——TRISO/ML。该语言具有图形化的表示方式,可以更容易地为软件工程人员所接受,以及更好地满足过程表示对易用性和可理解性的需求。该语言同时具有严格的操作语义,可以映射到多元PI演算,从而能够更准确地描述软件过程,避免歧义的产生。更为重要的是,该语言从行为角度出发,能够以一致的方式描述软件过程中的各种实体及其相互间的并发、同步和通信。 其次,在TRISO/ML语言的基础之上,提出了一系列的软件过程分析方法。主要研究如何利用多元PI演算的理论、方法和工具以及软件验证技术,对软件过程进行分析和验证。软件过程分析的研究主要集中在如下两个方面:a)软件过 程模型本身正确性的验证,以确保该模型准确地描述了所希望表达的内容。b)比较两个过程模型是否等价。 然后,基于软件过程移动性概念,研究了如何通过软件过程结构的变化支持过程的动态执行。软件过程移动性概念反映了软件过程执行时,由于软件过程实体的动态交互,导致构成软件过程的实体及其相互间的关系不断地发生变化。 软件过程移动性这一概念的提出,使得软件过程实体之间的关系可以在软件过程执行时动态地确立和调整,软件过程的定义随着过程信息的不断丰富而逐步地细化和明确,从而能够以更灵活的方式支持软件过程的表示和执行。 最后,描述了支持TRISO/ML的原型工具,包括基于TRISO/ML的过程表示、多元PI演算语义描述的自动生成,以及进一步的分析和验证。
Resumo:
Common Learning Management Systems (for example Moodle [1] and Blackboard [2]) are limited in the amount of personalisation that they can offer the learner. They are used widely and do offer a number of tools for instructors to enable them to create and manage courses, however, they do not allow for the learner to have a unique personalised learning experience. The e-Learning platform iLearn offers personalisation for the learner in a number of ways and one way is to offer the specific learning material to the learner based on the learner's learning style. Learning styles and how we learn is a vast research area. Brusilovsky and Millan [3] state that learning styles are typically defined as the way people prefer to learn. Examples of commonly used learning styles are Kolb Learning Styles Theory [4], Felder and Silverman Index of Learning Styles [5], VARK [6] and Honey and Mumford Index of Learning Styles [7] and many research projects (SMILE [8], INSPIRE [9], iWeaver [10] amonst others) attempt to incorporate these learning styles into adaptive e-Learning systems. This paper describes how learning styles are currently being used within the area of adaptive e-Learning. The paper then gives an overview of the iLearn project and also how iLearn is using the VARK learning style to enhance the platform's personalisation and adaptability for the learner. This research also describes the system's design and how the learning style is incorporated into the system design and semantic framework within the learner's profile.
Resumo:
A project within a computing department at the University of Greenwich, has been carried out to identify whether podcasting can be used to help understanding and learning of a subject (3D Animation). We know that the benefits of podcasting in education (HE) can be justified, [1]; [2]; [3]; [4]; [5]; [6] and that some success has been proven, but this paper aims to report the results of a term-long project that provided podcast materials for students to help support their learning using Xserve and Podcast Producer technology. Findings in a previous study [6] identified podcasting as a way to diversify learning and provde a more personalised learning experience for students, as well as being able to provide access to a greater mix of learning styles [7]. Finally this paper aims to present the method of capture and distribution, the methodologies of the study, analysis of results, and conclusions that relate to podcasting and enhanced supported learning.
Resumo:
Trabalho Final de Mestrado para obtenção de grau de Mestre em Engenharia Química e Biológica
Resumo:
La recherche en génie logiciel a depuis longtemps tenté de mieux comprendre le processus de développement logiciel, minimalement, pour en reproduire les bonnes pratiques, et idéalement, pour pouvoir le mécaniser. On peut identifier deux approches majeures pour caractériser le processus. La première approche, dite transformationnelle, perçoit le processus comme une séquence de transformations préservant certaines propriétés des données à l’entrée. Cette idée a été récemment reprise par l’architecture dirigée par les modèles de l’OMG. La deuxième approche consiste à répertorier et à codifier des solutions éprouvées à des problèmes récurrents. Les recherches sur les styles architecturaux, les patrons de conception, ou les cadres d’applications s’inscrivent dans cette approche. Notre travail de recherche reconnaît la complémentarité des deux approches, notamment pour l’étape de conception: dans le cadre du développement dirigé par les modèles, nous percevons l’étape de conception comme l’application de patrons de solutions aux modèles reçus en entrée. Il est coutume de définir l’étape de conception en termes de conception architecturale, et conception détaillée. La conception architecturale se préoccupe d’organiser un logiciel en composants répondant à un ensemble d’exigences non-fonctionnelles, alors que la conception détaillée se préoccupe, en quelque sorte, du contenu de ces composants. La conception architecturale s’appuie sur des styles architecturaux qui sont des principes d’organisation permettant d’optimiser certaines qualités, alors que la conception détaillée s’appuie sur des patrons de conception pour attribuer les responsabilités aux classes. Les styles architecturaux et les patrons de conception sont des artefacts qui codifient des solutions éprouvées à des problèmes récurrents de conception. Alors que ces artefacts sont bien documentés, la décision de les appliquer reste essentiellement manuelle. De plus, les outils proposés n’offrent pas un support adéquat pour les appliquer à des modèles existants. Dans cette thèse, nous nous attaquons à la conception détaillée, et plus particulièrement, à la transformation de modèles par application de patrons de conception, en partie parce que les patrons de conception sont moins complexes, et en partie parce que l’implémentation des styles architecturaux passe souvent par les patrons de conception. Ainsi, nous proposons une approche pour représenter et appliquer les patrons de conception. Notre approche se base sur la représentation explicite des problèmes résolus par ces patrons. En effet, la représentation explicite du problème résolu par un patron permet : (1) de mieux comprendre le patron, (2) de reconnaître l’opportunité d’appliquer le patron en détectant une instance de la représentation du problème dans les modèles du système considéré, et (3) d’automatiser l’application du patron en la représentant, de façon déclarative, par une transformation d’une instance du problème en une instance de la solution. Pour vérifier et valider notre approche, nous l’avons utilisée pour représenter et appliquer différents patrons de conception et nous avons effectué des tests pratiques sur des modèles générés à partir de logiciels libres.
Resumo:
Process supervision is the activity focused on monitoring the process operation in order to deduce conditions to maintain the normality including when faults are present Depending on the number/distribution/heterogeneity of variables, behaviour situations, sub-processes, etc. from processes, human operators and engineers do not easily manipulate the information. This leads to the necessity of automation of supervision activities. Nevertheless, the difficulty to deal with the information complicates the design and development of software applications. We present an approach called "integrated supervision systems". It proposes multiple supervisors coordination to supervise multiple sub-processes whose interactions permit one to supervise the global process
Resumo:
Uma série de iniciativas para melhoria do processo de software surgiu recentemente visando melhorar a qualidade e a produtividade em organizações de desenvolvimento de software. Alguns modelos e normas têm buscado a implantação de melhorias no processo de desenvolvimento de software, o MPS.BR é um deles. Esse modelo de melhoria de processo é voltado para as micro, pequenas e médias empresas, de forma a atender as suas necessidades de negócio e foi o modelo escolhido para ser explorado nesse trabalho. Várias são as vantagens adquiridas com a implantação de um modelo de melhoria, umas delas é a definição de um processo sistemático de desenvolvimento de software, que auxilie tanto na qualidade e produtividade do processo quanto na qualidade do produto desenvolvido. Com um modelo de processo definido a organização pode contar com diversos benefícios associados à padronização, como, por exemplo, a otimização, a redução de custos com retrabalho, a redução de defeitos nos produtos, dentre outros. Mas não existem modelos prontos que possam ser aplicados diretamente a uma empresa específica de desenvolvimento de software e, por isso, é necessário modelar o processo, customizando-o, com o objetivo final de gerar um modelo que adequadamente represente o processo da organização. Uma das dificuldades para a implantação de modelos como o MPS.BR é a falta de metodologia que mostre como a implantação de melhoria deve ser feita e não apenas o que deve ser feito. Este trabalho propõe uma metodologia para a implementação do modelo MPS.BR baseada no modelo de implantação IDEAL, através de uma ferramenta específica, chamada WebAPSEE. A metodologia foi experimentada no CTIC - Centro de Tecnologia da Informação e Comunicação da UFPA que ao final do trabalho foi avaliado Nível G do MPS.BR.
Resumo:
Collaborative Systems are designed to support individuals in order to solve a problem together, or cooperatively (or collaboratively). Such systems have the advantage of not requiring the presence in the same location of the participants. The basis of any Collaborative System is communication, where users interact with each other in order to exchange information. Communication among individuals is accomplished through collaborative tools such as chat, email, document repository, etc.. Using these tools, companies can reduce operational costs, saving on travel and accommodation of its employees to attend meetings. The project members only need a computer with internet access to use collaborative tools. Project management is essential to the quality of the nal product. To perform a proper management, methodologies must be applied using methods, tools and procedures. There are some phases that are considered generic for all software process models, they are: de nition, development, maintenance and activity to support the software process. In this paper is described a platform for project management using the concepts and features of Collaborative Systems. The goal of this platform is to unify various collaborative tools (such as chat and document repository) in a project management system. Using the system, it becomes possible to manage projects, and the ability to maintain an active constant communication between members of each project
Resumo:
En los últimos años hemos sido testigos de la creciente demanda de software para resolver problemas cada vez más complejos y de mayor valor agregado. Bajo estas circunstancias, nos podemos hacer la siguiente pregunta: ¿Está preparada la industria de software para entregar el software que se necesita en los próximos años, de acuerdo con las demandas del cliente? Hoy en día, muchos expertos creen que el éxito de esta industria dependerá de su capacidad para gestionar los proyectos, las personas y los recursos. En este sentido, la gestión de proyectos es un factor clave para el éxito de los proyectos software en todo el mundo. Además, considerando que las Pequeñas y Medianas Empresas de software (PYMEs) representan el 99,87% de las empresas españolas, es vital para este tipo de empresas la implementación de los procesos involucrados con la gestión de proyectos. Es cierto que existen muchos modelos que mejoran la eficacia de la gestión de proyectos, pero la mayoría de ellos se centra únicamente en dos procesos: la planificación del proyecto y la monitorización y control del proyecto, ninguno de los cuales a menudo es asequible para las PYMEs. Estos modelos se basan en el consenso de un grupo de trabajo designado para establecer cómo debe ser gestionado el proceso software. Los modelos son bastante útiles ya que proporcionan lineamientos generales sobre dónde empezar a mejorar la gestión de los proyectos, y en qué orden, a personas que no saben cómo hacerlo. Sin embargo, como se ha dicho anteriormente, la mayoría de estos modelos solamente funcionan en escenarios dentro de las grandes empresas. Por lo tanto, es necesario adaptar los modelos y herramientas para el contexto de PYMEs. Esta tesis doctoral presenta una solución complementaria basada en la aplicación de un metamodelo. Este metamodelo es creado para mejorar la calidad de los procesos de la gestión de proyectos a través de la incorporación de prácticas eficaces identificadas a través del análisis y estudio de los modelos y normas existentes relacionadas con la gestión de proyectos. viii ProMEP – Metamodelo para la gestión de proyectos Por lo tanto, el metamodelo PROMEP (Gestión de Proyectos basada en Prácticas Efectivas) permitirá establecer un proceso estándar de gestión de proyectos que puede adaptarse a los proyectos de cada empresa a través de dos pasos: En primer lugar, para obtener una fotografía instantánea (o base) de los procesos de gestión de proyectos de las PYMEs se creó un cuestionario de dos fases para identificar tanto las prácticas realizadas y como las no realizadas. El cuestionario propuesto se basa en el Modelo de Madurez y Capacidad Integrado para el Desarrollo v1.2 (CMMI-DEV v1.2). Como resultado adicional, se espera que la aplicación de este cuestionario ayude a las PYMEs a identificar aquellas prácticas que se llevan a cabo, pero no son documentadas, aquellas que necesitan más atención, y aquellas que no se realizan debido a la mala gestión o al desconocimiento. En segundo lugar, para apoyar fácilmente y eficazmente las tareas de gestión de proyectos software del metamodelo PROMEP, se diseñó una biblioteca de activos de proceso (PAL) para apoyar la definición de los procesos de gestión de proyectos y realizar una gestión cuantitativa de cada proyecto de las PYMEs. Ambos pasos se han implementado como una herramienta computacional que apoya nuestro enfoque de metamodelo. En concreto, la presente investigación propone la construcción del metamodelo PROMEP para aquellas PYMEs que desarrollan productos software de tal forma que les permita planificar, monitorizar y controlar sus proyectos software, identificar los riesgos y tomar las medidas correctivas necesarias, establecer y mantener un conjunto de activos de proceso, definir un mecanismo cuantitativo para predecir el rendimiento de los procesos, y obtener información de mejora. Por lo tanto, nuestro estudio sugiere un metamodelo alternativo para lograr mayores niveles de rendimiento en los entornos de PYMEs. Así, el objetivo principal de esta tesis es ayudar a reducir los excesos de trabajo y el tiempo de entrega, y aumentar así la calidad del software producido en este tipo de organizaciones. Abstract In recent years we have been witnessing the increasing demand for software to solve more and more complex tasks and greater added value. Under these circumstances, we can ourselves the following question: Is the software industry prepared to deliver the software that is needed in the coming years, according to client demands? Nowadays, many experts believe that the industry’ success will depend on its capacity to manage the projects, people and resources. In this sense, project management is a key factor for software project success around the world. Moreover, taking into account that small and medium-sized software enterprises (SMSe) are the 99.87% of the Spanish enterprises, it is vital for this type of enterprises to implement the processes involved in project management. It is true that there are many models that improve the project management effectiveness, but most of them are focused only on two processes: project planning and project monitoring and control, neither of which is affordable for SMSe. Such models are based on the consensus of a designated working group on how software process should be managed. They are very useful in that they provide general guidelines on where to start improving the project management, and in which order, to people who do not know how to do it. However, as we said, the majority of these models have only worked in scenarios within large companies. So, it is necessary to adapt these models and tools to the context of SMSe. A complementary solution based on the implementation of a metamodel is presented in this thesis. This metamodel is created to improve the quality of project management processes through the incorporation of effective practices identified through the analysis and study of relevant models and standards related to project management. Thus, the PROMEP (PROject Management based on Effective Practices) metamodel will allow establishing a project management standard process to be tailored to each enterprise’s project through two steps: Firstly, to obtain a baseline snapshot of project management processes in SMSe a two-phase questionnaire was created to identify both performed and nonperformed practices. The x ProMEP – Metamodelo para la gestión de proyectos proposed questionnaire is based on Capability Maturity Model Integration for Development v1.2. As additional result, it is expected that the application of the questionnaire to the processes will help SMSe to identify those practices which are performed but not documented, which practices need more attention, and which are not implemented due to bad management or unawareness. Secondly, to easily an effectively support the software project management tasks in the PROMEP metamodel, a Process Asset Library (PAL) is designed to support the definition of project management processes and to achieve quantitative project management in SMSe. Both steps have been implemented as a computational tool that supports our metamodel approach. Concretely, the present research proposes the accomplishment of the PROMEP metamodel for those SMSe which develop software products and enable them to plan, supervise and control their software projects, identify risks and take corrective actions, establish and maintain a set of process assets, define quantitative models that predict the process performance, and provide improvement information. So, our study suggests an alternative metamodel to achieve higher performance levels in the SMSe environments. The main objective of this thesis is help to reduce software overruns and delivery time, and increase software quality in these types of organizations.
Resumo:
El vertiginoso avance de la informática y las telecomunicaciones en las últimas décadas ha incidido invariablemente en la producción y la prestación de servicios, en la educación, en la industria, en la medicina, en las comunicaciones e inclusive en las relaciones interpersonales. No obstante estos avances, y a pesar de la creciente aportación del software al mundo actual, durante su desarrollo continuamente se incurre en el mismo tipo de problemas que provocan un retraso sistemático en los plazos de entrega, se exceda en presupuesto, se entregue con una alta tasa de errores y su utilidad sea inferior a la esperada. En gran medida, esta problemática es atribuible a defectos en los procesos utilizados para recoger, documentar, acordar y modificar los requisitos del sistema. Los requisitos son los cimientos sobre los cuáles se construye un producto software, y sin embargo, la incapacidad de gestionar sus cambios es una de las principales causas por las que un producto software se entrega fuera de tiempo, se exceda en coste y no cumpla con la calidad esperada por el cliente. El presente trabajo de investigación ha identificado la necesidad de contar con metodologías que ayuden a desplegar un proceso de Gestión de Requisitos en pequeños grupos y entornos de trabajo o en pequeñas y medianas empresas. Para efectos de esta tesis llamaremos Small-Settings a este tipo de organizaciones. El objetivo de este trabajo de tesis doctoral es desarrollar un metamodelo que permita, por un lado, la implementación y despliegue del proceso de Gestión de Requisitos de forma natural y a bajo coste y, por otro lado, el desarrollo de mecanismos para la mejora continua del mismo. Este metamodelo esta soportado por el desarrollo herramientas que permiten mantener una biblioteca de activos de proceso para la Gestión de Requisitos y a su vez contar con plantillas para implementar el proceso partiendo del uso de activos previamente definidos. El metamodelo contempla el desarrollo de prácticas y actividades para guiar, paso a paso, la implementación del proceso de Gestión de Requisitos para una Small-Setting utilizando un modelo de procesos como referencia y una biblioteca de activos de proceso como principal herramienta de apoyo. El mantener los activos de proceso bien organizados, indexados, y fácilmente asequibles, facilita la introducción de las mejores prácticas al interior de una organización. ABSTRACT The fast growth of computer science and telecommunication in recent decades has invariably affected the provision of products and services in education, industry, healthcare, communications and also interpersonal relationships. In spite of such progress and the active role of the software in the world, its development and production continually incurs in the same type of problems that cause systematic delivery delays, over budget, a high error rate and consequently its use is lower than expected. These problems are largely attributed to defects in the processes used to identify, document, organize, and track all system's requirements. It is generally accepted that requirements are the foundation upon which the software process is built, however, the inability to manage changes in requirements is one of the principal factors that contribute to delays on the software development process, which in turn, may cause customer dissatisfaction. The aim of the present research work has identified the need for appropriate methodologies to help on the requirement management process for those organizations that are categorised as small and medium size enterprises, small groups within large companies, or small projects. For the purposes of this work, these organizations are named Small-Settings. The main goal of this research work is to develop a metamodel to manage the requirement process using a Process Asset Library (PAL) and to provide predefined tools and actives to help on the implementation process. The metamodel includes the development of practices and activities to guide step by step the deployment of the requirement management process in Small-Settings. Keeping assets organized, indexed, and readily available are a main factor to the success of the organization process improvement effort and facilitate the introduction of best practices within the organization. The Process Asset Library (PAL) will become a repository of information used to keep and make available all process assets that are useful to those who are defining, implementing, and managing processes in the organization.
Resumo:
Los sistemas empotrados son cada día más comunes y complejos, de modo que encontrar procesos seguros, eficaces y baratos de desarrollo software dirigidos específicamente a esta clase de sistemas es más necesario que nunca. A diferencia de lo que ocurría hasta hace poco, en la actualidad los avances tecnológicos en el campo de los microprocesadores de los últimos tiempos permiten el desarrollo de equipos con prestaciones más que suficientes para ejecutar varios sistemas software en una única máquina. Además, hay sistemas empotrados con requisitos de seguridad (safety) de cuyo correcto funcionamiento depende la vida de muchas personas y/o grandes inversiones económicas. Estos sistemas software se diseñan e implementan de acuerdo con unos estándares de desarrollo software muy estrictos y exigentes. En algunos casos puede ser necesaria también la certificación del software. Para estos casos, los sistemas con criticidades mixtas pueden ser una alternativa muy valiosa. En esta clase de sistemas, aplicaciones con diferentes niveles de criticidad se ejecutan en el mismo computador. Sin embargo, a menudo es necesario certificar el sistema entero con el nivel de criticidad de la aplicación más crítica, lo que hace que los costes se disparen. La virtualización se ha postulado como una tecnología muy interesante para contener esos costes. Esta tecnología permite que un conjunto de máquinas virtuales o particiones ejecuten las aplicaciones con unos niveles de aislamiento tanto temporal como espacial muy altos. Esto, a su vez, permite que cada partición pueda ser certificada independientemente. Para el desarrollo de sistemas particionados con criticidades mixtas se necesita actualizar los modelos de desarrollo software tradicionales, pues estos no cubren ni las nuevas actividades ni los nuevos roles que se requieren en el desarrollo de estos sistemas. Por ejemplo, el integrador del sistema debe definir las particiones o el desarrollador de aplicaciones debe tener en cuenta las características de la partición donde su aplicación va a ejecutar. Tradicionalmente, en el desarrollo de sistemas empotrados, el modelo en V ha tenido una especial relevancia. Por ello, este modelo ha sido adaptado para tener en cuenta escenarios tales como el desarrollo en paralelo de aplicaciones o la incorporación de una nueva partición a un sistema ya existente. El objetivo de esta tesis doctoral es mejorar la tecnología actual de desarrollo de sistemas particionados con criticidades mixtas. Para ello, se ha diseñado e implementado un entorno dirigido específicamente a facilitar y mejorar los procesos de desarrollo de esta clase de sistemas. En concreto, se ha creado un algoritmo que genera el particionado del sistema automáticamente. En el entorno de desarrollo propuesto, se han integrado todas las actividades necesarias para desarrollo de un sistema particionado, incluidos los nuevos roles y actividades mencionados anteriormente. Además, el diseño del entorno de desarrollo se ha basado en la ingeniería guiada por modelos (Model-Driven Engineering), la cual promueve el uso de los modelos como elementos fundamentales en el proceso de desarrollo. Así pues, se proporcionan las herramientas necesarias para modelar y particionar el sistema, así como para validar los resultados y generar los artefactos necesarios para el compilado, construcción y despliegue del mismo. Además, en el diseño del entorno de desarrollo, la extensión e integración del mismo con herramientas de validación ha sido un factor clave. En concreto, se pueden incorporar al entorno de desarrollo nuevos requisitos no-funcionales, la generación de nuevos artefactos tales como documentación o diferentes lenguajes de programación, etc. Una parte clave del entorno de desarrollo es el algoritmo de particionado. Este algoritmo se ha diseñado para ser independiente de los requisitos de las aplicaciones así como para permitir al integrador del sistema implementar nuevos requisitos del sistema. Para lograr esta independencia, se han definido las restricciones al particionado. El algoritmo garantiza que dichas restricciones se cumplirán en el sistema particionado que resulte de su ejecución. Las restricciones al particionado se han diseñado con una capacidad expresiva suficiente para que, con un pequeño grupo de ellas, se puedan expresar la mayor parte de los requisitos no-funcionales más comunes. Las restricciones pueden ser definidas manualmente por el integrador del sistema o bien pueden ser generadas automáticamente por una herramienta a partir de los requisitos funcionales y no-funcionales de una aplicación. El algoritmo de particionado toma como entradas los modelos y las restricciones al particionado del sistema. Tras la ejecución y como resultado, se genera un modelo de despliegue en el que se definen las particiones que son necesarias para el particionado del sistema. A su vez, cada partición define qué aplicaciones deben ejecutar en ella así como los recursos que necesita la partición para ejecutar correctamente. El problema del particionado y las restricciones al particionado se modelan matemáticamente a través de grafos coloreados. En dichos grafos, un coloreado propio de los vértices representa un particionado del sistema correcto. El algoritmo se ha diseñado también para que, si es necesario, sea posible obtener particionados alternativos al inicialmente propuesto. El entorno de desarrollo, incluyendo el algoritmo de particionado, se ha probado con éxito en dos casos de uso industriales: el satélite UPMSat-2 y un demostrador del sistema de control de una turbina eólica. Además, el algoritmo se ha validado mediante la ejecución de numerosos escenarios sintéticos, incluyendo algunos muy complejos, de más de 500 aplicaciones. ABSTRACT The importance of embedded software is growing as it is required for a large number of systems. Devising cheap, efficient and reliable development processes for embedded systems is thus a notable challenge nowadays. Computer processing power is continuously increasing, and as a result, it is currently possible to integrate complex systems in a single processor, which was not feasible a few years ago.Embedded systems may have safety critical requirements. Its failure may result in personal or substantial economical loss. The development of these systems requires stringent development processes that are usually defined by suitable standards. In some cases their certification is also necessary. This scenario fosters the use of mixed-criticality systems in which applications of different criticality levels must coexist in a single system. In these cases, it is usually necessary to certify the whole system, including non-critical applications, which is costly. Virtualization emerges as an enabling technology used for dealing with this problem. The system is structured as a set of partitions, or virtual machines, that can be executed with temporal and spatial isolation. In this way, applications can be developed and certified independently. The development of MCPS (Mixed-Criticality Partitioned Systems) requires additional roles and activities that traditional systems do not require. The system integrator has to define system partitions. Application development has to consider the characteristics of the partition to which it is allocated. In addition, traditional software process models have to be adapted to this scenario. The V-model is commonly used in embedded systems development. It can be adapted to the development of MCPS by enabling the parallel development of applications or adding an additional partition to an existing system. The objective of this PhD is to improve the available technology for MCPS development by providing a framework tailored to the development of this type of system and by defining a flexible and efficient algorithm for automatically generating system partitionings. The goal of the framework is to integrate all the activities required for developing MCPS and to support the different roles involved in this process. The framework is based on MDE (Model-Driven Engineering), which emphasizes the use of models in the development process. The framework provides basic means for modeling the system, generating system partitions, validating the system and generating final artifacts. The framework has been designed to facilitate its extension and the integration of external validation tools. In particular, it can be extended by adding support for additional non-functional requirements and support for final artifacts, such as new programming languages or additional documentation. The framework includes a novel partitioning algorithm. It has been designed to be independent of the types of applications requirements and also to enable the system integrator to tailor the partitioning to the specific requirements of a system. This independence is achieved by defining partitioning constraints that must be met by the resulting partitioning. They have sufficient expressive capacity to state the most common constraints and can be defined manually by the system integrator or generated automatically based on functional and non-functional requirements of the applications. The partitioning algorithm uses system models and partitioning constraints as its inputs. It generates a deployment model that is composed by a set of partitions. Each partition is in turn composed of a set of allocated applications and assigned resources. The partitioning problem, including applications and constraints, is modeled as a colored graph. A valid partitioning is a proper vertex coloring. A specially designed algorithm generates this coloring and is able to provide alternative partitions if required. The framework, including the partitioning algorithm, has been successfully used in the development of two industrial use cases: the UPMSat-2 satellite and the control system of a wind-power turbine. The partitioning algorithm has been successfully validated by using a large number of synthetic loads, including complex scenarios with more that 500 applications.