




























































































Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Os melhores documentos à venda: Trabalhos de alunos formados
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
Tabela 4.1 – Derivação de conceitos da ontologia de processo de software . ... definir processos de qualidade e automatizar esses processos, ...
Tipologia: Notas de aula
Compartilhado em 07/11/2022
4.6
(84)74 documentos
1 / 118
Esta página não é visível na pré-visualização
Não perca as partes importantes!
Dissertação apresentada ao Mestrado em Informática da Universidade Federal do Espírito Santo, como requisito parcial para obtenção do Grau de Mestre em Informática. Orientador: Prof. Dr. Ricardo de Almeida Falbo.
iii
Atualmente, é amplamente reconhecido que a qualidade dos produtos de software depende da qualidade dos processos de software utilizados em seu desenvolvimento e manutenção. Com isso, muito trabalho tem sido feito no sentido de apoiar organizações em seus esforços pela busca da qualidade de processo. Pesquisas na área de processos de software têm explorado duas principais vertentes: (i) abordagens para modelagem, análise e melhoria do processo de software e (ii) tecnologia de apoio ao processo de software.
A primeira vertente focaliza abordagens para estruturação, organização, documentação e descrição de processos de software e inclui normas de qualidade de processo de software. A segunda está voltada para o desenvolvimento de Ambientes de Desenvolvimento de Software (ADSs) Centrado em Processos, que integram ferramentas de apoio ao desenvolvimento de artefatos com ferramentas de apoio à modelagem e execução de processos de software, utilizados na construção desses artefatos. A representação explícita de processos, seus produtos e suas interações é a base sobre a qual modernos ambientes de desenvolvimento são construídos. Provendo formas mais poderosas de descrever e implementar processos de software, ADSs centrado em processos têm provido também um poderoso meio de integrar processos e ferramentas, e de automatizar, pelo menos parcialmente, tarefas.
Esta dissertação apresenta uma infra-estrutura de processos de software que define uma ferramenta de definição de processos construída e integrada ao ambiente ODE (Ontology- based software Development Environment). Para apoiar essa integração, a infra-estrutura proposta foi construída tomando por base uma ontologia de processos de software. Essa ontologia foi evoluída no contexto deste trabalho, procurando capturar conceituações importantes definidas em normas e modelos de qualidade de processo recentes.
Palavras-chave: Processos de Software, Modelos de Qualidade de Processos, Ambientes de Desenvolvimento de Software, Ontologias.
iv
Nowadays, it is widely recognized that the quality of a software product depends on the quality of the software processes used in its development and maintenance. With this, much work has been done aiming to support organizations in their efforts towards process quality. The software process research area has explored two main directions: (i) approaches for modeling, analyzing and improving software processes, and (ii) support technology for software processes.
The first goal focuses on approaches for structuring, organizing, documenting and describing software processes and includes process quality standards and maturity models. The second goal is concerned with the development of Process-Centered Software Engineering Environments (PSEEs) that integrate tool support for the development of artifacts with tool support for software process modeling and execution. The explicit representation of processes, its products and its interactions are the basis over which the modern development environments are built. Providing more powerful ways of describing and implementing software processes, PSEEs have also provided a powerful way to integrate processes and tools, and to automate, at least partially, tasks.
This work presents a software process infrastructure that includes a tool for defining software processes. This tool was built and integrated to ODE (Ontology-based software Development Environment). To support this integration, the proposed infrastructure was built based on a software process ontology. This ontology was evolved in the context of this work, taking into account recent quality models and standards.
Keywords: Software Process, Process Quality Models, Software Engineering Environments, Ontologies.
Capítulo 4 – Uma Ferramenta de Apoio à Definição de Processos de Software em ODE
vii
ix
Com a crescente demanda no setor de desenvolvimento de software, aumenta a necessidade de se dispor de ambientes automatizados que apóiem todo o processo de desenvolvimento. Essa necessidade se deve também à grande complexidade dos sistemas atuais, à expectativa de que eles tenham alta qualidade e que sejam desenvolvidos respeitando os prazos estabelecidos, sem a necessidade de alocação de mais recursos. Ambientes de Desenvolvimento de Software (ADSs) surgem, então, com o intuito de integrar diferentes ferramentas, construídas para finalidades específicas, mas que operam juntas para apoiar a construção de um produto de software. Tal integração é fundamental para os ADSs e envolve diversas dimensões, tais como apresentação, dados, plataforma, processo, controle e conhecimento (PFLEEGER, 2001). Contudo, apenas automatizar o desenvolvimento não é suficiente para atingir todos os critérios de qualidade necessários no desenvolvimento de software. Uma outra vertente de evolução é o próprio domínio de processos de software. Nos últimos anos, diversas normas de qualidade de software foram revisadas, tais como a ISO 9001 (ISO, 2000a) e o CMM (PAULK, 1993), e até mesmo elaboradas, como foi o caso da ISO/IEC 15504 (ISO/IEC, 2003). Em geral, essas normas descrevem requisitos de processos para serem implementados nas organizações, além de estabelecerem critérios para avaliação da maturidade e capacidade das organizações em desenvolver e manter software. Essas abordagens tiveram uma grande aceitação do mercado e passaram a ser uma ferramenta, de fato, para avaliar o nível da qualidade de organizações desenvolvedoras de software. Dessa forma, essas duas vertentes se completam, pois estabelecem uma forma de definir processos de qualidade e automatizar esses processos, buscando garantir eficiência e rapidez no desenvolvimento. Um problema quando se utiliza diversas normas e modelos de qualidade de processo distintos é que não há um vocabulário comum compartilhado por eles. Cada norma, família de
capturava conceitos como composição de processos, interação de processos e níveis de abstração de processos, que são essenciais na modelagem de processos. O objetivo principal deste trabalho é evoluir a infra-estrutura de processos de software de ODE e, por conseguinte, dado que essa infra-estrutura é construída sobre a base ontológica da ontologia de processo de software, evoluir essa ontologia. Assim, a ontologia de processo de software foi revisada para se adequar aos novos conceitos acerca do domínio de processo de software. Para tal, foi necessário estudar o estado da arte e o estado da prática de processos de software e propor uma revisão na ontologia de forma a acompanhar esse novo contexto. Após a revisão da ontologia de processo de software, torna-se necessário evoluir também a infra-estrutura de processo de software do ambiente, de forma a incorporar os novos conceitos, relações e restrições descritos na ontologia. Assim, a ferramenta de definição de processos de software de ODE foi revisada, de forma a atender à nova conceituação. Essa ferramenta foi desenvolvida já integrada a ODE e estabelece o ponto de partida para a execução de projetos no ambiente.
Este trabalho teve início com uma revisão bibliográfica sobre os principais temas que o compõem. Como fonte de pesquisa foram utilizados artigos científicos, relatórios técnicos, livros e trabalhos acadêmicos que tratam sobre Ontologias, Ambientes de Desenvolvimento de Software, Processo de Software e Qualidade de Software. A partir desse estudo, constatou-se a evolução de diversos conceitos relacionados com o domínio de processos de software. Dessa forma, a Ontologia de Processo de Software, publicada originalmente em (FALBO, 1998) e que compõe a base de ontológica de ODE, teve que ser revisada para incluir e adequar-se a novos conceitos. Um dos objetivos da ontologia é determinar um vocabulário comum acerca de um domínio, descrevendo a conceituação que envolve esse domínio. Dessa forma, para avaliar os conceitos da ontologia e sua aderência à literatura sobre processos de software, foi feito um mapeamento dos conceitos da ontologia com os conceitos envolvidos nas principais normas e modelos de qualidade de software existentes. O próximo passo foi avaliar a infra-estrutura de processos de software de ODE, analisando o impacto que a revisão da ontologia teria na abordagem de processos de software
adotada em ODE. Outro insumo para a evolução da infra-estrutura de processos de ODE foi a implantação, em caráter experimental, desse ambiente em uma organização de desenvolvimento de software. Do feedback dado por ela, verificou-se a necessidade de incorporar novas funcionalidades. Assim, a ferramenta de definição de processos do ambiente (BERTOLLO e FALBO, 2003) teve que ser revisada para atender aos novos conceitos da ontologia e aos novos requisitos identificados para a infra-estrutura de processos de ODE. O texto da dissertação foi elaborado à medida que o trabalho avançava, documentando os resultados dos estudos realizados, as técnicas utilizadas e as soluções adotadas, servindo inclusive de base para outros trabalhos. Parte do trabalho realizado foi publicado nos anais do I Workshop on Vocabularies, Ontologies and Rules for the Enterprise (VORTE’2005), realizado em Enschede, Holanda, em setembro de 2005, no artigo intitulado “Establishing a Common Vocabulary for Software Organizations Understand Software Processes” (FALBO e BERTOLLO, 2005). Esse trabalho foi convidado para ser submetido em versão estendida para a revista International Journal of Business Process Integration and Management, tendo sido submetido sob o título “A Software Process Ontology as a Common Vocabulary about Software Processes”, em março de 2006. Outro artigo oriundo desta trabalho, intitulado “Definição de Processos de Software em um Ambiente de Desenvolvimento de Software Baseado em Ontologias” (BERTOLLO et al., 2006), foi aceito para publicação nos anais do V Simpósio Brasileiro de Qualidade de Software (SBQS’2006).
Nesta dissertação há, além deste capítulo que apresenta a Introdução, mais quatro capítulos. O Capítulo 2 – Processos de Software – apresenta os conceitos do domínio de processos de software, descrevendo uma abordagem para tratamento de processos de software em diferentes níveis de abstração. Além disso, discute os principais aspectos relacionados à Qualidade de Software, apresentando as principais normas e modelos de qualidade de processo. Nesse capítulo também é discutida a automatização do processo de software por meio dos Ambientes de Desenvolvimento de Software e é apresentado ODE, ambiente no qual está inserido este trabalho.
Um dos principais objetivos da Engenharia de Software é desenvolver sistemas com qualidade, dentro dos prazos estabelecidos e sem a necessidade de alocação de mais recursos. Para que tal objetivo seja alcançado, o foco não deve estar apenas nos produtos gerados, mas também no seu processo de desenvolvimento. A qualidade de um produto de software depende fortemente da qualidade do processo de software utilizado em seu desenvolvimento (FUGGETTA, 2000). Assim, a definição de um processo de software é um requisito básico para se chegar a produtos de qualidade. Porém, a definição de um processo de software não é uma tarefa trivial. Processos devem ser definidos caso a caso, levando-se em consideração as especificidades do projeto em questão. Deve-se considerar a adequação às tecnologias envolvidas, ao tipo de software em questão, ao domínio de aplicação, ao grau de maturidade (ou capacitação) da equipe em engenharia de software, às características próprias da organização e às características do projeto e do grupo de desenvolvimento (ROCHA et al., 2001). Embora diferentes projetos requeiram processos com características específicas para atender às suas particularidades, é possível estabelecer um conjunto de ativos de processo de software (software process assets) a ser utilizado na definição de processos de software de uma organização. Essas coleções de ativos de processo constituem os chamados processos padrão de software. Processos para projetos específicos podem, então, ser definidos a partir da instanciação de um processo de software padrão da organização, levando em consideração suas características particulares. Essa necessidade de estruturação, organização, documentação e descrição padronizada de processos de software vem se tornando prática de mercado, sendo advogada por diversas normas e modelos de qualidade, tais como ISO/IEC 12207 (ISO, 1995), CMMI (CHRISSIS et al., 2003) e o MPS.BR (SOFTEX, 2005). À medida que aumenta a complexidade dos sistemas a serem desenvolvidos, o processo de software torna-se também mais complexo e cresce a necessidade de automatizá-
lo, através da utilização de ferramentas. Porém, ferramentas isoladas podem oferecer apenas soluções parciais, enquanto o que se deseja é utilizar ferramentas de apoio ao longo de todo o processo de desenvolvimento de software. Surgem, então, os Ambientes de Desenvolvimento de Software (ADSs), que podem ser descritos como coleções de ferramentas integradas que facilitam as atividades da engenharia de software, durante todo o processo ou pelo menos em porções significativas dele (HARRISON et al., 2000). Uma evolução desses ambientes são os ADSs Centrados em Processo, que integram ferramentas de apoio ao desenvolvimento de artefatos com ferramentas de apoio à modelagem e execução de processos de software, utilizadas na construção desses artefatos (HARRISON et al., 2000). A representação explícita de processos, seus produtos e suas interações é a base sobre a qual os modernos ambientes de desenvolvimento são construídos. Provendo formas mais poderosas de descrever e implementar processos de software, ADSs centrados em processo têm provido também um poderoso meio de integrar processos e ferramentas, e de automatizar, pelo menos parcialmente, tarefas (HARRISON et al., 2000). Este capítulo procura dar uma visão geral dos conceitos relativos a processos de software. A seção 2.1 discute aspectos relacionados à definição de processos de software. Na seção 2.2 é discutida a qualidade de processos de software, apresentando os principais modelos e normas de qualidade de processo. Na seção 2.3, o enfoque está na automatização de processos de software, sendo discutidos os ambientes de desenvolvimento de software e a evolução por que tem passado essa classe de sistemas. Apresenta, ainda, o ambiente ODE (Ontology-based software Development Environment) (FALBO et al., 2003), ambiente no qual este trabalho foi desenvolvido. Finalmente, a seção 2.4 apresenta as conclusões deste capítulo.
Um processo de software pode ser definido como um conjunto coerente de políticas, estruturas organizacionais, tecnologias, procedimentos e artefatos necessários para conceber, desenvolver, implantar e manter um produto de software (FUGGETTA, 2000). Um processo de software bem definido deve indicar as atividades a serem executadas, os recursos
Definição do Processo Organizacional
Normas, Modelos de Qualidade e Cultura Organizacional
Especialização do Processo Padrão
Tipo de Software, Paradigma, Domínio do Problema
Instanciação do Processo de Projeto
Características do Projeto e da Equipe
Processos de Software de Projeto
Processos de Software Padrão Especializados
Processo de Software Padrão da Organização
Figura 2.1 – Abordagem em Níveis para a Definição de Processos. Em uma abordagem de definição de processos em níveis, inicialmente a organização define seu processo de software padrão, contemplando apenas os ativos de processo essenciais (atividades, artefatos, recursos e procedimentos) que devem ser incorporados a quaisquer processos da organização. Idealmente, o processo padrão da organização deve ser definido considerando padrões e modelos de qualidade, como CMMI e ISO/IEC 12207. Além disso, a cultura organizacional e a prática da organização em engenharia de software influenciam diretamente na definição do seu processo de software padrão. Conforme citado anteriormente, para acomodar todos os projetos, esse processo estará em um nível de abstração muito alto, normalmente, ainda dando muito trabalho para que um gerente de projeto o adapte para seu projeto específico. Mas em uma organização pode ocorrer de muitos projetos serem realizados para um mesmo tipo de software (sistemas de informação, aplicações Web etc) ou seguindo um mesmo paradigma (por exemplo, orientado a objetos - OO). Assim, no nível intermediário, o processo padrão da organização pode ser especializado para considerar algumas classes de tipos de software, paradigmas ou domínios de aplicação. Durante a especialização, ativos de processo podem ser adicionados ou modificados de acordo com o contexto da especialização. Por último, o processo padrão especializado mais indicado pode ser instanciado para um projeto específico. Durante a instanciação do processo de projeto, particularidades desse projeto e características da equipe devem ser levados em conta. Nesse momento, o modelo de
ciclo de vida deve ser definido e novas atividades, assim como artefatos consumidos e produzidos, recursos requeridos e procedimentos, podem ser adicionados. É importante ressaltar que estabelecer um processo bem definido para um projeto de software não garante a qualidade do produto final, contudo aumenta consideravelmente a probabilidade de se obter, ao término de sua execução, um produto de software que atenda aos requisitos levantados. Conhecer o processo significa conhecer como os produtos são planejados e produzidos. A partir da definição de processo, é possível fazer medições e coletar dados de execução, dando visibilidade aos gerentes do andamento dos projetos.
Organizações bem sucedidas melhoram continuamente seus processos. Com a definição de um processo padrão organizacional, a melhoria sistemática dos processos é mais efetiva e eficiente se guiada por normas e modelos de qualidade de processo. A finalidade da maioria desses padrões é ajudar as organizações de software a conseguir a excelência seguindo processos e atividades adotados por organizações com alto grau de maturidade. Contudo, não é fácil selecionar os padrões apropriados. Existem muitas opções com uma grande sobreposição entre elas. Muitas vezes, é vantagem para uma organização de software usar ou implementar mais de um padrão ao mesmo tempo. Nessa situação, é melhor implementá-los simultaneamente. Tal abordagem permite aos engenheiros de processo maximizar os pontos fortes de um padrão e diminuir suas fraquezas (MUTAFELIJA, STROMBERG, 2003). A seguir, é apresentado um breve resumo das principais normas e modelos de qualidade, a saber: ISO 9000, ISO/IEC 12207, ISO/IEC 15504, CMMI e MPS.BR. Além desses modelos e normas, o modelo do Processo Unificado da Rational (Rational Unified Process – RUP) é também descrito, dada a sua ampla disseminação e aceitação.
Em 2000, uma revisão da família de normas ISO 9000 – Sistemas de gestão da qualidade – foi publicada, substituindo a versão anterior, cuja versão em português da ABNT