Inteligência Artificial Aplicada a Ambientes de Engenharia de Software: Uma Visão Geral


Inteligência Artificial Aplicada a Ambientes de Engenharia de
Software: Uma Visão Geral



Resumo. A Inteligência Artificial sistematiza e automatiza tarefas intelectuais e, portanto, é potencialmente
relevante para qualquer esfera da atividade intelectual humana. Softwares são produtos intangíveis
e utilizam no seu processo de construção recursos intelectuais humanos, que vão desde sua especificação
até sua distribuição e pleno funcionamento. Como meio de auxiliar o processo de Engenharia de Software,
foram criados os ambientes de Engenharia de Software centrados no processo, que possuem um
conjunto de ferramentas integradas. Baseado neste contexto, este artigo vem mostrar alguns ambientes
existentes que utilizam técnicas de Inteligência Artificial e propor o uso de outras técnicas para melhorar
os Ambientes de Engenharia de Software, trazendo uma maior facilidade de construção de softwares e
uma maior qualidade para os mesmos.



Artificial Inteligence in Software Engineering Environments: A
Roadmap
Abstract. The Artificial Intelligence organizes and automates intellectual task and, therefore, is potentially
relevant for any sphere of the human intellectual activity. Softwares are immaterial products and
in their construction process use human intelectual resources, that go since its specification to its distribution
and full operation. As a mean of helping out the software engineering process, Process-centered
Software Engineering Environment were created, which has a set of integrated tools. Presented that,
this paper is going to show some existing environments that use techniques of Artificial Intelligence
and proposes the use of other techniques in order to improve the Software Engineering Environments,
developing a easier technique of software construction and improving its quality.
Keywords: Artificial Inteligence, Software Engineering Environments, Software Process



1 Introdução
A Engenharia de Software refere-se à aplicação disciplinada
de princípios e métodos no projeto e construção
de software de qualidade de forma economicamente
viável [2]. Alguns métodos procuram apoiar o gerente
de desenvolvimento de software na tarefa de observar
e controlar o desenvolvimento de software em termos
de seus recursos, prazos, alocação de tarefas e orçamento.
Entretanto, a natureza multidisciplinar da área
demanda cooperação entre profissionais e ferramentas
que apoiem o desenvolvimento de software.
Informalmente, o processo de desenvolvimento de
software pode ser compreendido como o conjunto de


todas as atividades necessárias para transformar os requisitos
do usuário em software [13, 21]. O processo
de desenvolvimento de software é formado por um conjunto
de passos parcialmente ordenados, relacionados
com conjuntos de artefatos, pessoas, recursos, estruturas
organizacionais e restrições, tendo como objetivo
produzir e manter os software requisitados [17, 7]. A
partir de um esboço dos requisitos iniciais para o problema
a ser resolvido, através de software, um modelo
de processo de desenvolvimento de software será adotado,
o qual resultará no software para atender os requisitos
dos usuários.
Com a tecnologia de processo de desenvolvimento
de software, surgiu nos últimos anos um novo conceito
de ambiente de trabalho que dá suporte de forma integrada
aos processos de gestão e produção: Ambientes
de Engenharia de Software Centrados no Processo,
os chamados PSEEs (do inglês, Process-Centered Software
Engineering Environments) [16], que constituem
um tipo especial de ambiente de desenvolvimento de
software que apoia a definição rigorosa de processos
de software, objetivando a automação da gerência do
desenvolvimento. Tais ambientes geralmente provêem
serviços para análise, simulação, execução e reutilização
das definições de processos, que cooperam no aperfeiçoamento
contínuo de processos.
Dentro deste ambiente, existem os agentes, que estão
relacionados com as atividades de um processo, podendo
ser pessoas ou ferramentas automatizadas. Agentes
diferentes terão percepções diferentes acerca do que
acontece durante o processo de desenvolvimento de software.
Um gerente, por exemplo, perceberá os aspectos
de controle e alocação de recursos e cronogramas
para atividades, enquanto um desenvolvedor perceberá
as suas atividades como atribuições que devem ser feitas
para produzir um resultado [7].
Este artigo apresenta, na Seção 2, conceitos sobre
ambientes de Engenharia de Software. Na Seção 3 são
apresentadas algumas técnicas de Inteligência Artificial
que podem ser aplicadas em conjunto com os PSEEs e
em seguida, na Seção 4, são mostrados alguns PSEEs
que utilizam alguma técnica de IA. Logo após, na Seção
5, é apresentada uma avaliação desses ambientes
do ponto de vista do uso de técnicas de IA e algumas
propostas são apresentadas, tendo em vista a restrição
observada do uso dessas técnicas nos ambientes atuais.
2 Ambientes de Engenharia de Software
Embora o uso de ferramentas para auxiliar os desenvolvedores
na produção de softwares venha sendo aplicado
há algum tempo, o conceito de ambiente de Engenharia
de Software - SEE (do inglês, Software Engineering
Environment) é bastante recente. Um SEE é definido
como uma coleção de ferramentas que fornece apoio
automático, parcial ou total, às atividade de Engenharia
de Software. Normalmente essas atividades são executadas
dentro de uma estrutura de projeto de software, e
se referem a aspectos tais como especificação, desenvolvimento,
reengenharia ou manutenção de software
[25].
O termo SEE pode ser aplicado a vários sistemas
de alcances bem diferentes: desde um conjunto de poucas
ferramentas executando sobre um mesmo sistema,
até um ambiente totalmente integrado capaz de gerenciar
e controlar todos os dados, processos e atividades
do ciclo de vida de um software. Graças a automatização
total ou parcial das atividades, um SEE pode contribuir
com importantes benefícios para uma organização:
redução de custos, aumento da produtividade, melhora
da gestão e maior qualidade do software final. Por
exemplo, automatização de atividade repetitivas como
execução de casos de teste que não apenas melhoram
a produtividade, mas também ajuda a garantir o término
e a consistência das atividades testadas [25]. Normalmente,
um SEE gerencia informações relacionadas
com:
• Desenvolvimento ou manutenção do software (especificações,
dados de projeto, códigos fonte, dados
de teste, planos de projeto, ...);
• Recursos do projeto (custos, recursos de informática,
pessoal, responsabilidades e obrigações, ...);
• Aspectos organizacionais (política da organização,
padrões e metodologias empregadas, ...).
Um SEE oferece suporte às atividades humanas mediante
uma série de serviços que descrevem as capacidades
do ambiente. Os serviços proporcionam uma
correspondência entre um conjunto de processos selecionados,
relativos ao ciclo de vida do software, e sua
automatização mediante o uso de ferramentas. Na maioria
dos casos as funcionalidades de uma ferramenta estão
relacionadas com um ou mais serviços.






Share:

0 comentários

POPULAR POSTS