Desenvolvimento, Testes e Qualidade de Software



Documentos relacionados
Modelo Cascata ou Clássico

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

Engenharia de Software. Parte I. Introdução. Metodologias para o Desenvolvimento de Sistemas DAS

ISO 9000:2000 Sistemas de Gestão da Qualidade Fundamentos e Vocabulário. As Normas da família ISO As Normas da família ISO 9000

Análise de Sistemas. Conceito de análise de sistemas

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

Projeto de Sistemas I

Engenharia de Software

Engenharia de Software

Engenharia de Software

Começo por apresentar uma breve definição para projecto e para gestão de projectos respectivamente.

Gestão do Risco e da Qualidade no Desenvolvimento de Software

Engenharia de Software

Requisitos e Modelação

ARCO - Associação Recreativa dos Correios. Sistema para Gerenciamento de Associações Recreativas Plano de Desenvolvimento de Software Versão <1.

CHECK - LIST - ISO 9001:2000

Engenharia de Software Sistemas Distribuídos

GARANTIA DA QUALIDADE DE SOFTWARE

3. Engenharia de Requisitos

Referências internas são os artefatos usados para ajudar na elaboração do PT tais como:

5. Métodos ágeis de desenvolvimento de software

GESTÃO de PROJECTOS. Gestor de Projectos Informáticos. Luís Manuel Borges Gouveia 1

Engenharia de Software. Apostila I >>> Introdução à ES - HEngholmJr

ISO/IEC 12207: Gerência de Configuração

Governança de TI. ITIL v.2&3. parte 1

PROFESSOR: CRISTIANO MARIOTTI

GereComSaber. Disciplina de Desenvolvimento de Sistemas de Software. Sistema de Gestão de Serviços em Condomínios

NP EN ISO 9001:2000 LISTA DE COMPROVAÇÃO

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite (81 )

Índice. Como aceder ao serviço de Certificação PME? Como efectuar uma operação de renovação da certificação?

Pós-Graduação em Gerenciamento de Projetos práticas do PMI

Rock In Rio - Lisboa

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO. SISTEMAS DE GESTÃO DE BASE DE DADOS Microsoft Access TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO

Desenvolvimento de Interfaces Prototipação

Engenharia de Requisitos

Processo do Serviços de Manutenção de Sistemas de Informação

Gestão dos Níveis de Serviço

Engenharia de Software: conceitos e aplicações. Prof. Tiago Eugenio de Melo, MSc tiagodemelo@gmail.com

Sumário. Engenharia de Software. Gestão da Complexidade. Objectivos. Engenharia de Software

O modelo unificado de processo. O Rational Unified Process, RUP.

Serviço a Pedido ( On Demand ) da CA - Termos e Política de Manutenção Em vigor a partir de 1 de Setembro de 2010

Introdução à Qualidade de Software. Profº Aldo Rocha

MODELO CMM MATURIDADE DE SOFTWARE

Professor: Curso: Disciplina:

Análise e Conc epç ão de Sist em as de Inform aç ão,qwurgxomrj(qj GH5HTXLVLWRV. Adaptado a partir de Gerald Kotonya and Ian Sommerville

4.1. UML Diagramas de casos de uso

Plano de Gerenciamento do Projeto

DEMONSTRAÇÕES FINANCEIRAS COMBINADAS

GereComSaber. Desenvolvimento de Sistemas de Software. Universidade do Minho Conselho de Cursos de Engenharia Licenciatura em Engenharia Informática

Gerenciamento de projetos.

Múltiplos Estágios processo com três estágios Inquérito de Satisfação Fase II

Fundamentos em Teste de Software. Vinicius V. Pessoni

Engenharia de Software II

Gerenciamento de Problemas

Requisitos de Software. Teresa Maciel DEINFO/UFRPE

GUIA DE CURSO. Tecnologia em Sistemas de Informação. Tecnologia em Desenvolvimento Web. Tecnologia em Análise e Desenvolvimento de Sistemas

Suporte Técnico de Software HP

CES-32 e CE-230 Qualidade, Confiabilidade e Segurança de Software. Conceitos de Qualidade. CURSO DE GRADUAÇÃO e DE PÓS-GRADUAÇÃO DO ITA

Processos de Desenvolvimento de Software

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

ISO 9001:2008. A International Organization for Standardization (ISO) publicou em a nova edição da Norma ISO 9000:

Processo de Implementação de um Sistema de Gestão da Qualidade

XI Mestrado em Gestão do Desporto

Tipos de teste de software

Base de Dados para Administrações de Condomínios

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

Requisitos de Software

NCRF 19 Contratos de construção

DESENVOLVER E GERIR COMPETÊNCIAS EM CONTEXTO DE MUDANÇA (Publicado na Revista Hotéis de Portugal Julho/Agosto 2004)

A Gestão, os Sistemas de Informação e a Informação nas Organizações

FACULDADE DE ENGENHARIA DE COMPUTAÇÃO. PROJETO FINAL I e II PLANO DE TRABALHO <NOME DO TRABALHO> <Nome do Aluno> <Nome do Orientador>

Objetivos. Requisitos de Software. Tipos de Requisitos. O que é um requisito? Requisitos Funcionais e Não- Funcionais. Requisitos Funcionais

Planejando o aplicativo

Universidade do Minho Licenciatura em Engenharia Informática

Arquitecturas de Software Licenciatura em Engenharia Informática e de Computadores

Requisitos de Software

MASTER IN PROJECT MANAGEMENT

Objetivos. Processos de Software. Tópicos abordados. O processo de software. Modelos genéricos de modelos de processo de software.

Desenho de Software. Desenho de Software 1

Plataforma de Gestão de Actualizações de Software Descrição do Problema

TRANSIÇÃO DA ISO 9001:2000 PARA ISO 9001:2008 DOCUMENTO SUMÁRIO DE ALTERAÇÕES ALTERAÇÕES QUE PODEM AFECTAR O SISTEMA

QUALIDADE DE SOFTWARE. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 27 Slide 1

Certificação da Qualidade dos Serviços Sociais. Procedimentos

Ciclo de Vida Clássico ou Convencional CICLOS DE VIDA DE DESENVOLVIMENTO DE SISTEMAS. Ciclo de Vida Clássico ou Convencional. Enfoque Incremental

Plano de implementação da ISO 9001:2008 PLANO DE IMPLEMENTAÇÃO DA ISO 9001:2008

Capítulo 2. Processos de Software Pearson Prentice Hall. Todos os direitos reservados. slide 1

Metodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi

Gerenciamento de Níveis de Serviço

natureza do projeto e da aplicação métodos e ferramentas a serem usados controles e produtos que precisam ser entregues

Análise de Sistemas. Visão Geral: Orientação a Objetos. Prof. José Honorato Ferreira Nunes honorato.nunes@bonfim.ifbaiano.edu.br

Engenharia de Software III

DEPARTAMENTO DE MATEMÁTICA E CIÊNCIAS EXPERIMENTAIS

Faculdade Pitágoras. Engenharia de Software. Prof.: Julio Cesar da Silva.

Especificação Operacional.

Transcrição:

Ricardo Sequeira Ferreira Desenvolvimento, Testes e Qualidade de Software Orientador: Professor Doutor Nuno Manuel Garcia dos Santos Escola de Comunicação, Artes e Tecnologias da Informação Lisboa 2010

Ricardo Sequeira Ferreira Desenvolvimento, Testes e Qualidade de Software Dissertação apresentada para a obtenção do Grau de Mestre em Engenharia de Software e Sistemas de Informação pela Universidade Lusófona de Humanidades e Tecnologias Orientador: Prof. Doutor Nuno Manuel Garcia dos Santos Escola de Comunicação, Artes e Tecnologias da Informação Lisboa 2010

Agradecimentos Ao concluir a dissertação não posso deixar de expressar uma palavra de agradecimento a todos aqueles que pelo incentivo, sugestões e observações contribuíram para a sua realização. À família e amigos pelos constantes incentivos, apoio e motivação que manifestaram e que proporcionaram as condições necessárias para que realizasse o mestrado. Ao meu orientador de mestrado, o professor Nuno Garcia, pelos comentários, sugestões e disponibilidade demonstrada. A todas as pessoas não mencionadas e que me ajudaram, o meu sincero agradecimento. Escola de Comunicação, Artes e Tecnologias da Informação 1

Escola de Comunicação, Artes e Tecnologias da Informação 2

Resumo Hoje em dia o software tornou-se num elemento útil na vida das pessoas e das empresas. Existe cada vez mais a necessidade de utilização de aplicações de qualidade, com o objectivo das empresas se diferenciarem no mercado. As empresas produtoras de software procuram aumentar a qualidade nos seus processos de desenvolvimento, com o objectivo de garantir a qualidade do produto final. A dimensão e complexidade do software aumentam a probabilidade do aparecimento de não-conformidades nestes produtos, resultando daí o interesse pela actividade de testes de software ao longo de todo o seu processo de concepção, desenvolvimento e manutenção. Muitos projectos de desenvolvimento de software são entregues com atraso por se verificar que na data prevista para a sua conclusão não têm um desempenho satisfatório ou por não serem confiáveis, ou ainda por serem difíceis de manter. Um bom planeamento das actividades de produção de software significa usualmente um aumento da eficiência de todo o processo produtivo, pois poderá diminuir a quantidade de defeitos e os custos que decorrem da sua correcção, aumentando a confiança na utilização do software e a facilidade da sua operação e manutenção. Assim se reconhece a importância da adopção de boas práticas no desenvolvimento do software. Para isso deve-se utilizar uma abordagem sistemática e organizada com o intuito de produzir software de qualidade. Esta tese descreve os principais modelos de desenvolvimento de software, a importância da engenharia dos requisitos, os processos de testes e principais validações da qualidade de software e como algumas empresas utilizam estes princípios no seu dia-a-dia, com o intuito de produzir um produto final mais fiável. Descreve ainda alguns exemplos como complemento ao contexto da tese. Palavras-chave: modelos, requisitos, testes, qualidade, software. Escola de Comunicação, Artes e Tecnologias da Informação 3

Abstract Nowadays the software has become a useful element in people's lives and it is increasingly a need for the use of quality applications from companies in order to differentiate in the market. The producers of software increase quality in their development processes, in order to ensuring final product quality. The complexity and size of software, increases the probability of the emergence of nonconformities in these products, this reason increases of interest in the business of testing software throughout the process design, development and maintenance. Many software development projects are postpone because in the date for delivered it s has not performed satisfactorily, not to be trusted, or because it s harder to maintain. A good planning of software production activities, usually means an increase in the efficiency of all production process, because it can decrease the number of defects and the costs of it s correction, increasing the reliability of software in use, and make it easy to operate and maintenance. In this manner, it s recognized the importance of adopting best practices in software development. To produce quality software, a systematic and organized approach must be used. This thesis describes the main models of software development, the importance of requirements engineering, testing processes and key validation of software quality and how some companies use these principles daily, in order to produce a final product more reliable. It also describes some examples in addition to the context of this thesis. Keywords: models, requirements, testing, quality software. Escola de Comunicação, Artes e Tecnologias da Informação 4

Índice Capítulo 1. Introdução... 11 Capítulo 2. Processos de testes e qualidade no desenvolvimento de software... 13 2.1. Introdução... 13 2.2. Modelo de desenvolvimento em cascata... 13 2.3. Modelo de desenvolvimento em protótipo... 15 2.4. Modelo de desenvolvimento em espiral... 16 2.5. Modelo de desenvolvimento de entrega incremental... 18 2.6. Modelo de desenvolvimento em V... 20 2.7. Modelo de desenvolvimento baseado em componentes... 22 2.8. Conclusão... 24 Capítulo 3. A importância da engenharia dos requisitos... 25 3.1. Introdução... 25 3.2. Visão geral da engenharia dos requisitos... 25 3.3. Principais actividades da engenharia dos requisitos... 26 3.3.1. Identificação de requisitos... 26 3.3.2. Análise e negociação de requisitos... 27 3.3.3. Modelação de requisitos... 27 3.3.4. Validação de requisitos... 28 3.3.5. Documento de requisitos do software... 28 3.4. Linguagens de especificação... 29 3.4.1. Vantagens... 30 3.4.2. Desvantagens... 30 3.4.3. Desmistificação de convicções relativas aos métodos formais... 30 Escola de Comunicação, Artes e Tecnologias da Informação 5

3.5. Gestão de requisitos de software... 31 3.6. Requisitos funcionais... 35 3.7. Requisitos não funcionais... 35 3.8. Regras de ouro dos requisitos de software... 36 3.9. Conclusão... 37 Capítulo 4. Testes de software... 39 4.1. Introdução... 39 4.2. Principais objectivos e princípios de teste... 39 4.3. Critério de cobertura de teste... 40 4.4. Abordagem estratégica ao teste de software... 43 4.5. Teste caixa-branca... 46 4.6. Teste caixa-preta... 47 4.7. Teste caixa-cinzenta... 48 4.8. Teste de unidade... 49 4.9. Teste de integração... 49 4.10. Teste de validação... 50 4.11. Teste de sistema... 51 4.11.1. Teste de recuperação... 51 4.11.2. Teste de segurança... 51 4.11.3. Teste de carga... 51 4.11.4. Teste de desempenho... 52 4.12. Testes de ambiente, arquitecturas e aplicações especializadas... 52 4.12.1. Testes de interfaces gráficas... 52 4.12.2. Testes de arquitecturas cliente / servidor... 52 4.12.3. Testes de documentação... 53 Escola de Comunicação, Artes e Tecnologias da Informação 6

4.12.4. Testes de sistemas em tempo real... 53 4.13. Testes Alfa e Beta... 53 4.14. Depuração de software... 54 4.15. Defeitos e falhas no software... 54 4.16. Planeamento de testes... 55 4.17. Ferramentas automáticas de testes... 56 4.18. Conclusão... 58 Capítulo 5. Qualidade de software... 61 5.1. Introdução... 61 5.2. Visão histórica... 61 5.3. Principais conceitos de qualidade de software... 62 5.4. Garantia de qualidade de software... 64 5.5. Fiabilidade do software... 65 5.6. Custo da qualidade de software... 65 5.7. Normas de qualidade... 66 5.7.1. International Organization for Standardization... 66 5.7.2. Institute of Electrical and Electronics Engineers... 67 5.7.3. CMMI Capability Maturity Model Integration... 68 5.8. Métricas de qualidade de software... 70 5.9. Planeamento da qualidade... 72 5.10. Relação entre testes e qualidade de software... 72 5.11. Conclusão... 73 Capítulo 6. Casos de estudo... 75 6.1. Introdução... 75 6.2. Gestão da qualidade em companhia de seguros... 75 Escola de Comunicação, Artes e Tecnologias da Informação 7

6.3. Experiência, metodologias e ferramentas em consultora de sistemas de informação... 79 6.4. Gestão da melhoria do processo da qualidade de software... 81 6.5. Conclusão... 83 Capítulo 7. Considerações finais... 85 Bibliografia... 87 Escola de Comunicação, Artes e Tecnologias da Informação 8

Figuras Figura 1 Modelo de desenvolvimento em cascata... 14 Figura 2 Modelo de desenvolvimento em espiral... 17 Figura 3 Modelo de desenvolvimento de entrega incremental... 19 Figura 4 Modelo de desenvolvimento em V... 20 Figura 5 Modelo de desenvolvimento baseado em componentes... 23 Tabelas Tabela 1 Vantagens e desvantagens do modelo de desenvolvimento em espiral... 18 Tabela 2 Ferramentas de gestão de requisitos... 35 Tabela 3 Matriz de teste... 42 Tabela 4 - Resultados de erros de empresas... 45 Escola de Comunicação, Artes e Tecnologias da Informação 9

Escola de Comunicação, Artes e Tecnologias da Informação 10

Capítulo 1. Introdução A história do software é muito recente. Ainda assim, nos últimos anos, a engenharia de software enquanto indústria evoluiu significativamente, causando e provocando uma procura pela qualidade do desenvolvimento produzido, verificando-se frequentemente a escassez na disponibilidade de profissionais nas áreas de testes e qualidade. Como consequência da evolução da indústria, os sistemas de informação estão cada vez mais complexos e volumosos, com prazos de desenvolvimento mais curtos e com utilizadores a exigir soluções com maior qualidade. O mercado de software tem exigido dos produtores de software um nível de qualidade dos produtos e dos serviços prestados cada vez maior, o que pressupõe uma maior qualidade de todos os actores envolvidos, desde a de engenharia e concepção, passando pela equipa comercial até à equipa técnica de assistência pós-venda. Acrescente-se que com o mercado global, ficou cada vez mais fácil encontrar fornecedores em qualquer parte do mundo, sendo esta uma nova característica do mercado das Tecnologias de Informação, i.e., um fornecedor que ambicione deter uma quota de mercado significativa, quer em volume, quer em especialização, tem que ter também a capacidade de garantir a qualidade de serviço, produção e manutenção do software à escala global. O processo de desenvolvimento de uma aplicação é complexo e envolve uma série de actividades, as quais, apesar das técnicas de controlo usadas, permitem a indesejável existência de erros. Para minimizar a ocorrência de erros, devem usar-se técnicas de teste de software, que ao serem postas em prática resultam num aumento da qualidade, eficácia e numa diminuição de custo. No sector da produção do software, com as progressivas exigências do mercado, têm havido várias iniciativas com o intuito da elaboração de normas e padrões internacionais para a melhoria da qualidade do software, quer em termos do produto final, quer em termos do processo de desenvolvimento. Escola de Comunicação, Artes e Tecnologias da Informação 11

Assim, neste contexto, foram criados processos e certificações com o intuito de auxiliar as empresas fornecedoras e os clientes a procurar uma evolução constante na qualidade, unificando todos os interessados em torno do mesmo objectivo, ou seja, numa maior consistência do produto, aumentando a sua produtividade, eficiência do produto e nível serviço a ele associados. A presente dissertação é uma abordagem ao estudo compreensivo e detalhado dos modelos de desenvolvimento, da engenharia de requisitos, dos processos de testes e de validação da qualidade de software, incluído uma descrição de como algumas empresas têm utilizado estes princípios no seu processo de desenvolvimento, esperando que este trabalho contribua para a promoção da importância da prevenção dos erros e da melhoria contínua da qualidade de software. Esta dissertação está organizada da seguinte forma: este capítulo consiste na introdução ao tema e na definição dos objectivos deste trabalho; o Capítulo 2 faz uma apresentação dos principais modelos de desenvolvimento utilizados; o Capítulo 3 está orientado para a importância da engenharia dos requisitos, começando com uma visão geral da engenharia dos requisitos, apresentando as principais actividades, a importância da utilização da engenharia de requisitos e linguagens de especificações, a gestão de requisitos e por fim os requisitos funcionais e não funcionais; o Capítulo 4 está orientado para os testes usados no desenvolvimento de software começando com uma abordagem inicial aos testes de software, passando pelas principais técnicas usadas e acabando pelo planeamento e ferramentas automáticas de testes; o Capítulo 5 está orientado para a qualidade de software, começando com uma retrospectiva histórica e passando pela identificação dos principais conceitos, garantia, confiabilidade, custo, principais normas, métricas e planeamento; no Capítulo 6 apresentam-se alguns casos de estudo, nos quais se pode ver como as empresas abordam a temática dos testes e qualidade do software; finalmente no Capítulo 7 são apresentadas as considerações finais para este trabalho. Escola de Comunicação, Artes e Tecnologias da Informação 12

Capítulo 2. Processos de testes e qualidade no desenvolvimento de software 2.1. Introdução Um processo de desenvolvimento de software é um conjunto actividades que conduzem à criação de um produto de software [1]. Os modelos de processos de desenvolvimento de software são uma descrição do caminho a seguir com o objectivo de passar os requisitos do cliente [2], englobam actividades como por exemplo a especificação, codificação, implementação, manutenção e testes, caracterizando se frequentemente pela existência de interacção entre estas actividades. Nesta secção são analisados os principais modelos ditos clássicos ou não-ágeis de ciclos de vida do desenvolvimento do software e embora sejam modelos diferentes, estuda-se ainda a forma como estes podem ser combinados entre si. 2.2. Modelo de desenvolvimento em cascata Vários autores [1-3] fazem referência a este modelo, embora com diferentes nomes, como por exemplo ciclo de vida clássico, modelo de desenvolvimento sequencial linear ou modelo de desenvolvimento em cascata. O nível de detalhe do modelo dependerá de autor para autor, e a Figura 1 mostra uma possível sequência de fases. Este tipo de modelo implementa o registo da sequência das actividades, seguindo a possibilidade de permitir interacções entre as várias etapas e até, caso seja necessário, desenvolver actividades alternativas [2]. Caso se tenha identificado uma nova funcionalidade ou observado algum erro, devem-se redefinir os requisitos do utilizador. Segundo Sommerville [1], as principais vantagens do uso deste modelo são a documentação que se produz no final de cada fase, tendo como desvantagens a sua relativa inflexibilidade, resultante da divisão do projecto em etapas distintas. Devem fazer-se compromissos nas etapas ao longo do desenrolar do projecto, com o intuito de se atingirem os objectivos e de não ser posta em causa a conclusão atempada do projecto dentro do orçamento. Escola de Comunicação, Artes e Tecnologias da Informação 13

Requisitos do Sistema Requisitos do Software Desenho do Sistema Desenho dos Programas Codificação Testes Operação Figura 1 Modelo de desenvolvimento em cascata (adaptado de [2]). Como se pode verificar na figura 1, o modelo têm as seguintes actividades, descritas resumidamente: sistema; requisitos do sistema nesta fase define-se aquilo que o utilizador pretende do requisitos do software definem-se os atributos do sistema para os quais o utilizador pretende para a aplicação; desenho do sistema define-se a implementação de um sistema com os atributos pretendidos; Escola de Comunicação, Artes e Tecnologias da Informação 14

desenho do programa define-se a implementação do programa ou módulo, com cada um dos atributos previamente definidos; codificação nesta etapa é criado o código fonte dos programas; testes o produto de software é testado e caso ocorra algum erro ou não conformidade com as especificações, é removido ou corrigido nesta fase; operação depois da aplicação estar desenhada, codificada e testada, é colocado em operação o produto de software. 2.3. Modelo de desenvolvimento em protótipo É frequente o cliente definir um conjunto de objectivos gerais para o software. Mas muitas vezes o programador tem dúvidas sobre a eficiência ou da adaptabilidade do sistema, quando implementado. Nestas situações o modelo de protótipo pode ser a melhor abordagem. descritas: Segundo Pressman [3], este modelo prevê a seguinte sequência de etapas, brevemente definição de requisitos nesta etapa os objectivos gerais são definidos de comum acordo entre o programador e o cliente; realização do projecto nesta etapa o programador concentra-se nos aspectos que serão visíveis aos clientes e utilizadores; avaliação do protótipo as funcionalidades do protótipo são avaliadas pelo utilizador e em seguida refinam-se os requisitos, que serão posteriormente desenvolvidos num novo protótipo ou finalmente, na versão final; conjunto de interacções esta etapa consiste num conjunto de interacções durante as quais o software é ajustado, com o objectivo de satisfazer as necessidades do cliente e fazer com que o programador entenda o que é preciso ser feito. Escola de Comunicação, Artes e Tecnologias da Informação 15

Aqui entende-se por cliente o grupo de utilizadores finais da aplicação e o programador o grupo de pessoas encarregues do desenvolvimento do produto de software. Este modelo tem como principal vantagem a de ser visto como um primeiro sistema, ajudando os programadores a convergir mais rapidamente para a solução final. Como desvantagens tem, para o lado do cliente, ser um programa feito com erros imprevistos e funcionalidades incompletas, podendo não ter a qualidade global desejada; para os programadores, este modelo poderá resultar na escolha de soluções menos apropriadas, uma vez que o planeamento e a análise total dos requisitos são sacrificados com o objectivo de permitir rapidamente um protótipo executável. Apesar de poderem ocorrer vários problemas neste modelo, é bastante importante definir as regras do jogo, isto é, a aplicação deste modelo deverá ser vista como um mecanismo para definição de requisitos, com o objectivo da busca da qualidade e prossecução da solução final. 2.4. Modelo de desenvolvimento em espiral Este modelo de processo de software foi originalmente proposto por Boehm [2]. Como mostra a Figura 2, representa uma sequência de actividades, em cada ciclo da espiral identifica uma fase do processo de desenvolvimento de software. A espira mais interior representa a viabilidade do sistema, seguindo-se a definição dos requisitos, passando pela fase de desenho de sistema e assim sucessivamente. Escola de Comunicação, Artes e Tecnologias da Informação 16

Determinar objectivos, alternativas e restrições Evolução das alternativas, resolução dos riscos Planeamento da fase seguinte Desenvolvimento e verificação para o nível seguinte Figura 2 Modelo de desenvolvimento em espiral (adaptado de [1]). Para Somerville [1], este modelo pode-se dividir nas seguintes fases, brevemente descritas como segue: determinar objectivos, alternativas e restrições o projecto começa aqui, e nesta fase definem-se os objectivos do projecto, identificam-se as restrições do processo de desenvolvimento e do produto e planeiam-se as alternativas; planeamento da fase seguinte nesta fase toma-se a decisão de se se deve continuar para a fase seguinte do projecto; Escola de Comunicação, Artes e Tecnologias da Informação 17

evolução das alternativas, resolução dos riscos aqui leva-se a cabo uma análise detalhada dos riscos e definem-se os passos para reduzir estes riscos; desenvolvimento e verificação para nível seguinte nesta fase escolhe-se um modelo para desenvolvimento do sistema e implementa-se de forma a atingir os objectivos inicialmente planeados. Miguel [2]. A tabela 1 mostra as vantagens e desvantagens do modelo em espiral, de acordo com Vantagens Desvantagens Processo bastante flexível e adaptável a alterações de requisitos Mais difícil gerir Pode disponibilizar o produto mais rapidamente no mercado Mais difícil determinar a situação do projecto Pode melhorar a qualidade do produto entregue Risco maior Melhor ajuste do produto aos requisitos do utilizador Compromisso mais difícil com o cliente Tabela 1 Vantagens e desvantagens do modelo de desenvolvimento em espiral (adaptado de [2]). 2.5. Modelo de desenvolvimento de entrega incremental Este tipo de modelo têm como objectivo a entrega de funcionalidades parciais, onde cada versão do produto entregue é semelhante à anterior, mas integrando novas funcionalidades [2]. A figura seguinte mostra-nos este modelo em forma de esquema. Escola de Comunicação, Artes e Tecnologias da Informação 18

Incremento 1 Especificação Desenho Codificação Implementação Núcleo Incremento 1 Especificação Desenho Codificação Implementação Núcleo Incremento 2 Incremento 1 Especificação Desenho Codificação Implementação Núcleo Incremento 2 Incremento 3 Figura 3 Modelo de desenvolvimento de entrega incremental (adaptado de [2]). Para Sommerville [1], este tipo de modelo tem como principais vantagens as seguintes características: a entrega incremental do sistema permite obter uma validação da versão anterior, quer pela equipa de desenvolvimento e testes quer, eventualmente, pelo próprio cliente; existe um baixo nível de falha total do projecto, pois as falhas são elas também resultantes do incremento; os serviços e funcionalidades com mais prioridade são entregues em primeiro, possibilitando encontrar menos falhas nas partes mais importantes do sistema. Em contrapartida tem as seguintes desvantagens: os incrementos podem ser muitos e pouco relevantes, causando dificuldade na implementação de todos os requisitos do cliente num tempo e orçamento apropriados; alguns sistemas podem requerer um conjunto de recursos que utilizam partes diferentes do sistema e os requisitos dessas partes podem não estar detalhados aquando da entrega do incremento. Escola de Comunicação, Artes e Tecnologias da Informação 19

2.6. Modelo de desenvolvimento em V O modelo em V foi desenvolvido originalmente na Alemanha pela IABG, destinado a ser utilizado pelo Ministério Federal da Defesa [2], mas depressa passou a ser utilizado a nível internacional. Este tipo de modelo é constituído por dois grandes grupos: o da especificação e o da verificação e validação, como se pode ver na figura seguinte (Figura 4). Camada do Utilizador Especificação de Requisitos Especificação do Sistema Sistema Entrege Sistema Operacional Camada Arquitectural Desenho do Sistema Testes de Integração do Sistema Camada da Implementação Desenho Detalhado Codificação Testes de Módulos e de Integração de Subsistemas Especificação Verificação e Validação Figura 4 Modelo de desenvolvimento em V (adaptado de [2]). Ao longo da fase da especificação existe um conjunto de etapas progressivas, constituindo um processo de desenho, que vai desde os requisitos à codificação. Na fase de verificação e validação, o sistema deve demonstrar satisfazer as especificações referidas na primeira parte, através de um conjunto de testes. Escola de Comunicação, Artes e Tecnologias da Informação 20

são as seguintes: Como se pode verificar na figura 4, existem várias camadas transversais no modelo, que Camada do Utilizador fases do projecto: Esta camada apresenta o sistema do ponto de vista do utilizador, contendo as seguintes sistema; especificação de requisitos o utilizador descreve as funções específicas do especificação inicial; especificação do sistema descreve o sistema que satisfaz os requisitos da sistema entregue nesta fase o utilizador verifica se o sistema entregue está de acordo com a especificação previamente definida; dos requisitos. sistema operacional o utilizador valida o sistema de acordo com a especificação Camada Arquitectural Esta camada apresenta a arquitectura do sistema e descreve o modo como a estrutura funcional do sistema se insere no ambiente da infra-estrutura, onde se incluem as seguintes fases: desenho do sistema são identificados os principais componentes do sistema, as respectivas relações lógicas e estrutura dos dados que suportam a arquitectura; integração do sistema. testes de integração do sistema são definidos e realizados os testes de Escola de Comunicação, Artes e Tecnologias da Informação 21

Camada da Implementação fases: Esta camada regista a forma como é implementada a arquitectura, tendo as seguintes desenho detalhado define os respectivos atributos funcionais e não funcionais; codificação fase onde se faz a escrita do código fonte; testes de módulos e de integração de subsistemas nesta fase testam-se cada um dos módulos desenvolvidos e a integração com os outros módulos do sistema. Segundo Miguel [2], as principais vantagens deste modelo são as de fornecer uma estrutura global do projecto, com uma sequência bem definida de fases. Em relação às desvantagens, há a referir que uma opção de compromisso se pode vir a transformar num risco e desta forma, os respectivos erros virem a ser descobertos demasiado tarde no processo de desenvolvimento. 2.7. Modelo de desenvolvimento baseado em componentes Nos últimos anos tem aumentado o interesse no desenvolvimento denominado em software baseado em componentes. Como o próprio nome sugere, este modelo usa módulos de software que foram construídos para outros projectos e promove a sua reutilização no contexto de projecto diferente [1]. Este tipo de software é baseado no paradigma de programação orientado aos objectos, cujo desenvolvimento do produto enfatiza a criação de classes que encapsulam os dados e algoritmos a manipular [3]. Segundo Pressman [3] e Sommerville [1], a utilização deste tipo de modelo pode ter como benefícios a redução do prazo de ciclo de desenvolvimento, a redução de custo do projecto e o aumento da produtividade. De acordo com Sommerville as desvantagens deste tipo de modelo têm a ver com o controlo de novas versões, pois havendo várias versões de vários módulos, poderá perder-se o conceito do histórico do desenvolvimento do sistema, ou ainda mais grave, perder funcionalidades causadas por incompatibilidade de funcionamento entre módulos de Escola de Comunicação, Artes e Tecnologias da Informação 22

diferentes versões, fundamentalmente porque os módulos reutilizados são construídos sem que esse desenvolvimento tenha em consideração a sua aplicação real num projecto em particular. Especificação de requisitos Análise de componentes Modificação de requisitos Desenho do sistema com reutilização Desenvolvimento e integração Validação do sistema Figura 5 Modelo de desenvolvimento baseado em componentes (adaptado de [1]). Como podemos verificar na figura 5, o modelo baseado em componentes tem as seguintes fases: especificações de requisitos nesta fase existe a preocupação com a definição e especificação e requisitos, ou seja, deve-se ter uma visão geral dos processos de negócio; análise de componentes através da especificação dos requisitos, faz-se a análise dos componentes que é necessário implementar; modificação de requisitos nesta etapa, os requisitos são analisados utilizando a informação acerca dos componentes desenvolvidos, podem alterar-se os requisitos para satisfazer os componentes disponíveis, ou se necessário, desenhar novo software; desenho do sistema com reutilização nesta fase desenha-se o sistema com base na reutilização dos componentes e caso não existam, desenham-se novos componentes de software; desenvolvimento e integração nesta fase criam-se os componentes e integramse os vários módulos no sistema; validação do sistema faz-se a verificação de que o sistema está de acordo com o que foi definido na fase de especificações de requisitos. Escola de Comunicação, Artes e Tecnologias da Informação 23

2.8. Conclusão Neste capítulo foram descritas as principais características dos modelos de desenvolvimento de software, e apresentados os diferentes modelos de desenvolvimento. Adoptando a utilização de um modelo de desenvolvimento de software, é possível aumentar a qualidade e produtividade no desenvolvimento, tendo maior controlo sobre este processo, em particular no que respeita a custos e prazos. Como é expectável, os benefícios tendem a aparecer quando os intervenientes têm formação adequada, e tempo para se adaptar e familiarizar com uma dada metodologia. Escola de Comunicação, Artes e Tecnologias da Informação 24

Capítulo 3. A importância da engenharia dos requisitos 3.1. Introdução A engenharia de requisitos é um processo que tem vindo a ser utilizado com o objectivo de melhorar a qualidade de software, pois encontravam-se muitas falhas aquando do processo de desenvolvimento do software. É frequente recorrer às diferentes actividades de engenharia de requisitos para produzir um documento de requisitos adequado e que posteriormente resulte num software de qualidade. Os clientes actuais beneficiam destas metodologias, pois permitem uma diminuição de custos e contribuem para que os engenheiros de requisitos ajudem os utilizadores a um melhor controlo dos requisitos e a reutilização da documentação produzida. Neste capítulo são descritos as principais características da engenharia de requisitos de software. É apresentada uma visão geral da engenharia dos requisitos, as principais actividades da engenharia de requisitos, linguagens de especificação, a gestão dos requisitos, requisitos funcionais e não funcionais e as regras de ouro da engenharia de requisitos do software. 3.2. Visão geral da engenharia dos requisitos A engenharia de requisitos tem como finalidade descobrir os objectivos para os quais o sistema de software se destina [4], envolvendo as actividades de descoberta, documentação e manutenção dos requisitos para um determinado sistema. É através dos levantamentos das necessidades de todas as partes envolvidas e da consequente elaboração da documentação dos requisitos que se faz a identificação dos pontos a abordar, das funcionalidades a implementar e até dos testes a realizar no desenvolvimento da aplicação. Os requisitos são definidos na fase inicial do desenvolvimento do sistema como especificações a ser implementadas, descrevendo o comportamento, as propriedades e os atributos do sistema, reflectindo as necessidades dos stakeholders. Entendam-se como stakeholders todas as partes interessadas no desenvolvimento da aplicação. Escola de Comunicação, Artes e Tecnologias da Informação 25