• No results found

5 Statens

5.2 Dagens lederlønnssystem

5.2.2 Lederstyringsmodulen

No domínio da Engenharia de Software, foram desenvolvidos diversos vocabulá- rios controlados. Esses vocabulários apresentam estruturas variadas, contêm termos que representam conceitos em diferentes áreas de conhecimento dessa disciplina e podem ser usados com objetivos variados. Borges et al. (2013) contém resultado de mapeamento de ontologias para suporte a desenvolvimento distribuído de software; Ruiz e Hilera (2006) relacionam ontologias sobre o domínio da Engenharia de Software e ontologias sobre as áreas de conhecimento Requisitos de Software, Desenho (design) de Software, Manutenção de Software, Qualidade de Software, Processo de Engenharia de Software e Gestão de Engenharia de Software. Ainda se destacam a norma ISO/IEC/IEEE 24765 Systems and

Software Engineering Vocabulary (vide ISO (2010)) sobre vocabulário em Engenharia de Software e em Engenharia de Sistemas, e o SEVOCAB (vide IEEE (2016)), projeto desenvolvido por IEEE Computer Society e ISO/IEC JTC 1/SC7 que possibilita o acesso a vocabulário sobre Engenharia de Software e Engenharia de Sistemas por meio da Internet.

9.8.1

Esquemas de classificação da informação em Engenharia de Software

Segundo Damiani, Fugini e Bellettini (1999), a classificação de componentes de software pode contribuir para o sucesso de projetos de reuso de software, particularmente, quando o reuso engloba outros artefatos além de código e facilitar compreensão de código

em processo de engenharia reversa, de dependências e de padrões de uso. Em repositó- rios de software, esquemas de classificação podem ser usados para classificar recursos de informação. Prieto-Diaz (1990) relaciona as seguintes características como desejáveis a esquemas de classificação destinados à classificação de componentes de software: acomo- dar expansão da coleção, possibilitar localização de componentes similares, possibilitar localização de componentes funcionalmente equivalentes entre domínios, precisão, elevado poder descritivo, facilidade de manutenção, facilidade de uso e poder ser automatizado. Segundo Prieto-Diaz (1990), usar vocabulários controlados nesse contexto pode ser in- teressante pelos seguintes motivos: códigos de componentes de software geralmente têm pouca quantidade de texto; significados das palavras-chave em componentes de software geralmente decorrem de convenções ou preferências de desenvolvedores; nem sempre é óbvio aquilo que os componentes de software fazem, ou como fazem; intervenção humana é geralmente necessária para extrair índices significativos para componentes de software (PRIETO-DIAZ, 1990). Prieto-Diaz (1990) eAlbrechtsen (1992) descrevem esquemas de classificação de software e Albrechtsen(1992) compara esquemas. Apesar do exposto, vale destacar que existem questionamentos se o uso de vocabulários controlados melhora o desempenho da recuperação de componentes de software armazenados em repositórios.

Mili et al. (1997) destacam que a busca por componentes de software ocorre em duas fases. Na primeira fase, a busca é exploratória e o uso de vocabulário controlado pode ser um fator restritivo. Na segunda fase, são selecionados componentes dentre os potencialmente úteis. Nessa fase, as descrições dos componentes precisam ser mais detalhadas do que as descrições geralmente providas por meio de vocabulários controlados.

9.8.2

Taxonomias e ontologias em Engenharia de Software

Existem diversas taxonomias no domínio da Engenharia de Software. Essas taxono- mias são compostas por termos que representam conceitos em áreas de conhecimento da Engenharia de Software como Requisitos de Software, Desenho (design) de Software, Cons- trução de Software, Manutenção de Software, Gestão de Engenharia de Software, Processo de Engenharia de Software, e Qualidade de Software. Algumas delas abordam conceitos em diversas áreas de conhecimento. No domínio da disciplina Engenharia de Software, existem ontologias desenvolvidas com o objetivo de modelar subdomínios e ontologias desenvolvidas com o objetivo de modelar todo o domínio dessa disciplina (CESARE et al.,

2010;HILERA; FERNÁNDEZ-SANZ, 2010). Hilera e Fernández-Sanz (2010) destacam dificuldades na integração de ontologias que modelam subdomínios da disciplina Enge- nharia de Software, destacam que projetos de desenvolvimento de ontologias que visam modelar todo domínio dessa disciplina são complexos e tendem a consumir muitos recursos. Existem diversas abordagens que envolvem o uso de ontologias em Engenharia de Software, tais como: desenvolvimento guiado por ontologias (ontology-driven development), que consiste em usar ontologia em tempo de desenvolvimento; desenvolvimento capacitado por

ontologia (ontology-enabled development), que consiste em usar ontologia com o objetivo de prover suporte aos desenvolvedores nas suas tarefas; arquitetura baseada em ontologia (ontology-based architecture), que consiste em usar ontologia como artefato em tempo de execução (as ontologias integram lógicas de aplicações); e arquitetura capacitada por ontologia (ontology-enabled architecture), que consiste em usar ontologia com o objetivo de prover suporte de infraestrutura em tempo de execução (AHMED, 2008; HAPPEL; SEEDORF,2006).

No domínio da Engenharia de Software, ontologias são usadas para organização da informação, compartilhamento de conhecimento, localização de recursos, entendimento de relações entre conceitos, comunicação, consistência, interoperabilidade e reuso; especificação, representação e gestão de requisitos de software; descrição e modelagem de domínios; descrição de regras de negócio; descrição de serviços; descrição de relações e dependências entre artefatos; descrição de componentes de software e de dependências entre os mesmos; mapeamento de modelos em códigos; documentação de interfaces de programação de aplicação (application programming interface); documentação de código; descrição de relações entre defeitos (bug) e códigos; descrição de domínio em formato processável por máquina para geração de teste; suporte à transformação entre modelos; representação de padrões (pattern) de software; implementação de software; estruturação e classificação de recursos de informação em desenvolvimento de software; promoção de terminologia comum entre interessados (stakeholder ); harmonização de vocabulários usados por grupos responsáveis por desenvolver normas em Engenharia de Software, tais como grupos de trabalho do comitê técnico ISO/IEC JTC 1/SC 7 (AHMED, 2008; AMBROSIO et al.,

2004;GASEVIC; KAVIANI; MILANOVIC, 2009; HAPPEL; SEEDORF, 2006; MENDES; ABRAN,2004; RUIZ; HILERA, 2006).

Existem diversos esquemas de classificação de ontologias em Engenharia de Soft- ware. Em Wongthongtham et al. (2005), é sugerido que ontologias nesse domínio podem ser genéricas ou específicas. As genéricas englobam conceitos em Engenharia de Software, enquanto as específicas englobam conceitos em projetos específicos de software. Em Ruiz e Hilera (2006), são sugeridas as classes “ontologia de domínio” e “ontologia de artefato de software”. As ontologias de domínio visam descrever o domínio ou subdomínios da Engenharia de Software. Entre as fontes usadas no desenvolvimento dessas ontologias, são encontrados glossários, guias e livros sobre o corpo de conhecimento da Engenharia de Software. Em Zhao, Dong e Peng (2009), é sugerida a seguinte classificação: ontologia de processo de software, ontologia de domínio de aplicação, ontologia de modelo de caracte- rísticas de domínio de aplicação, ontologia de comportamento de sistema, ontologia de arquitetura de software, ontologia de lógica de aplicação, ontologia de desenho (design) orientado a objetos, ontologia de padrões (pattern), ontologia de artefatos de software, ontologia de códigos fonte orientados a objetos, ontologia de versão, ontologia de configu- ração de sistema, ontologia de documentação, ontologia de qualidade, ontologia de teste,

ontologia de processo de manutenção de software e ontologia de tecnologia. Ontologia de processo de software relaciona atividades, artefatos, fases de processo, modelo de processo etc. Ontologia de domínio de aplicação engloba conceitos sobre domínio de aplicação e informação relevante a desenvolvimento de software em certo domínio. Ontologia de modelo de características de domínio de aplicação engloba características de software em certo domínio de aplicação. Ontologia de comportamento de sistema modela comportamento de sistema e ações do sistema em certos cenários. Ontologia de arquitetura de software engloba conceitos em estilos de arquitetura, componentes em estilos de arquitetura, interações entre componentes. Ontologia de lógica de aplicação engloba conceitos na modelagem de lógica de software. Ontologia de desenho (design) orientado a objetos engloba conceitos no desenho (design) de software orientado a objetos. Ontologia de padrões (pattern) provê catálogo de padrões. Ontologia de artefatos de software engloba conceitos que possibilitam classificar artefatos em função, por exemplo, de formatos e estruturas internas. Ontologia de código fonte orientado a objetos engloba conceitos em programação orientada a objetos. Ontologia de versões modela relações entre arquivos, releases e revisões de projetos de software. Ontologia de configuração de sistema modela restrições de componentes e versões. Ontologia de documentação engloba conceitos sobre documentos de software. Ontologia de qualidade engloba características e medidas de qualidade. Ontologia de teste engloba conceitos sobre teste de software. Ontologia de defeitos engloba conceitos sobre defeitos em software. Ontologia de processo de manutenção de software engloba conceitos sobre processo de manutenção de software. Finalmente, ontologia de tecnologia engloba conceitos sobre tecnologias, ambientes, plataformas e ferramentas (ZHAO; DONG; PENG, 2009).