Requisitos e Modelação combinação essencial para melhorar o processo de desenvolvimento de software Class4 -End1 -End2 Class1 * * System Actor1 * -End3 -End5 -End7 * Actor2 UseCase1 -End4 * UseCase2 -End6 * UseCase3 -End8 * O sistema deve possibilitar o registo de facturas. O sistema deve permitir a O sistema deve possibilitar o impressão de segundas vias. registo de facturas. As facturas não podem ser O sistema deve permitir a alteradas depois O sistema de registadas. deve possibilitar o impressão de segundas vias. Apenas o utilizador registo que de facturas. registou a As facturas não podem ser fectura a pode O conferir. sistema deve permitir a alteradas depois O sistema de registadas. deve possibilitar o O sistema deve impressão. de segundas vias. Apenas o utilizador registo que de facturas. registou a O sistema deve As facturas. não podem ser fectura a pode O conferir. sistema deve permitir a O sistema deve alteradas. depois O sistema de registadas. deve possibilitar o O sistema deve impressão. de segundas vias. O sistema deve Apenas. o utilizador registo que de facturas. registou a O sistema deve As facturas. não podem ser O sistema deve fectura. a pode O conferir. sistema deve permitir a O sistema deve alteradas. O sistema deve impressão depois de. de registadas. segundas vias. O sistema deve Apenas. o utilizador que registou a O sistema deve As facturas. não podem ser O sistema deve fectura. a pode conferir. O sistema deve alteradas. depois de registadas. O sistema deve. O sistema deve Apenas. o utilizador que registou a O sistema deve. O sistema deve fectura. a pode conferir. O sistema deve. O sistema deve. O sistema deve. O sistema deve. O sistema deve. O sistema deve. O sistema deve. O sistema deve. Component1 Component3 Component2 Component4
Agenda O contexto actual do desenvolvimento de software Gestão de requisitos Modelação de software Projecto Project IT Requirements Conclusão
Qual é a nossa imagem? Fonte: Business Week Dezembro 1999
Porque falhamos? 100 90 80 70 60 50 40 30 20 10 0 33 49 46 53 40 23 28 31 28 26 27 16 2000 1998 1996 1994 Insucesso Com Problemas Sucesso Fonte: Standish Group
There is no Silver Bullet! Apesar de todos os esforços, continuamos a enfrentar problemas Custos de projectos ultrapassados Prazos ultrapassados Qualidade deficiente Negócio Problema G A P Solução Tecnologia O que podemos fazer? Aplicar ao desenvolvimento de software os principios rigorosos de outras áreas de engenharia Aplicar estes principios nas actividades iniciais do processo de desenvolvimento
Esforços de melhoria Processos de desenvolvimento Desenvolvimento incremental e iterativo RUP Abordagens Ágeis Modelação UML MDD (Model Driven Development) Requisitos Poucas inovações O que existe é de divulgação e aplicação limitada
O que são Requisitos Uma propriedade do software necessária para resolver um problema e para atingir um objectivo Uma condição ou propriedade com a qual o sistema deve estar em conformidade Gestão de requisitos: Abordagem sistemática Identificação Organização Especificação Gestão de alterações Objectivo: garantir a rastreabilidade
Artefactos Requisitos Pedidos dos utilizadores Visão Documento especificação requisitos Regras de negócios Standards, orientações,... Criar factura Especificação Complementar Utilizador Comercial imprimir() Imprimir 2ª Via Utilizador Financeiro Receber Pagamento Factura
Problemas associados aos requisitos Elevada abrangência: desde uma descrição abstracta de alto nível até uma especificação funcional detalhada Confusão de conceitos: Preferências dão requisitos? Descrição do problema versus descrição da solução Requisitos implicitos Requisitos incompletos Inconsistência de requisitos Inviabilidade de requisitos Má definição (problemas relacionados com a linguagem utilizada) Dificuldade de compreensão Ambiguidade Muitas fontes de requisitos Os requisitos mudam com frequência Os requisitos multiplicam-se
Abordagens de definição de Não formais requisitos As mais comuns Recorrem a linguagem natural Requisitos expressos em documentos de texto Semi formais Cada vez mais utilizadas Utilizam modelos para a especificação de requisitos (por exemplo, diagramas UML) Existem opiniões contrárias em relação a esta abordagem Formais Baseadas em linguagens de especificação formal
Ferramentas de Requisitos Cradle Analyst Pro RDT Catalyze IRQA Core STP CaliberRM RTM Reconcile PLM Slate TeamCenter RDD Statemate RequisitePro Doors TrueReq
Ferramentas - Problemas Muitas concentram-se na área de gestão de requisitos Várias não integram adequadamente com outras actividades do processo de desenvolvimento Muitas ainda estão condicionadas pelo facto dos requisitos serem expressos textualmente São por vezes verdadeiras máquinas de escrever!!!
A actividade de modelação Mundo Real gap semântico Modelo dono homem lar carro casa Estrutura de Conceitos Esquema textual Esquema gráfico
Beneficios da modelação Modelação é uma técnica de engenharia bem aceite e com provas dadas (e.g., engª civil, mecânica),... Facilita a comunicação entre diferentes intervenientes Introduz um grau de formalismo na definição do sistema. Promove a utilização de um vocabulário consistente no projecto Facilita a visualização do sistema Os melhores modelos reflectem a realidade Nenhum modelo único é suficiente UML é cada vez mais o standard para construção de modelos
UML - Diagramas Standard Class Use cases State Machine Protocol State Machine Object Sequence Component Modelos Communication Deployment Composite Structure Activity Timing Interaction Overview
Exemplos de diagramas UML Utilizador Comercial Criar factura Imprimir 2ª Via Factura data valor registar() consultar() 0..* 1 Cliente Pagamento data valor nome morada Utilizador Financeiro Receber Pagamento Factura
Exemplos de diagramas UML Financeira Comercial Cliente Encomendar Produto Conferir Plafond cliente Validar Stock Criar Factura Enviar Factura Conferir Factura Receber pagamento Pagar Factura
Requisitos e Modelação Especificação de requisitos e modelação estão relacionados Utilização de técnicas de modelação para especificação de requisitos Descoberta de requisitos em modelos existentes A modelação facilita a construção de um vocabulário comum utilizado na descrição dos requisitos É a partir do modelo do sistema que é normalmente efectuada a rastreabilidade dos requisitos Modelos do sistema aparecem nos documentos de especificação de requisitos Mas não são a mesma coisa
Requisitos e Modelação Não é fácil expressar todos os requisitos (especialmente os não funcionais) através de modelos Requisitos usam representações informais enquanto a modelação utiliza diagramas (semi-formais) Modelos não são adequados para expressar relações contratuais Não existem regras universais para a transformação dos requisitos textuais em modelos
Motivação para fazer algo Contexto de negócio e tecnológico complexo Ciclos de produção mais curtos Time to market cada vez mais reduzido Tamanho e complexidade das soluções aumenta Requisitos de qualidade aumentam Muitos conceitos, alguma confusão Actualmente, muita da prática de gestão de requisitos está focada na apresentação textual de requisitos, auxiliada pela utilização de representações gráficas informais Ferramentas na área dos requisitos podiam ir mais longe Desfasamento entre as iniciativas de investigação nesta área e a sua divulgação e aplicação (research - practice dilemma)
Motivação para fazer algo Linguagem natural é a técnica mais utilizada para expressar os requisitos Ambiguidade Falta de entendimento comum Falta de rigor Incapacidade de reutilizar Incapacidade de integrar Métodos formais baseados em conceitos matemáticos Dificuldade de leitura Dificuldade de utilização Só justificável em situações pontuais Formalizar através da utilização de linguagem natural
Objectivo do projecto Projecto ProjectIT Requirements Construir um modelo para definição e documentação de requisitos que, através do aumento do rigor da sua especificação, facilite a reutilização e integração com ambientes de desenvolvimento conduzidos por modelos.
O projecto ProjectIT ProjectIT-MDD (XIS) ProjectIT- Requirements ProjectIT-Tests ProjectIT-Time ProjectIT-Workbench
ProjectIT Requirements Definição de um modelo de requisitos Definição de uma linguagem de especificação de requisitos Especificação rigorosa dos conceitos do projecto Especificação dos requisitos do sistema Definição de mecanismos de reutilização de requisitos Definição de um perfil para integração com modelos (extensão ao actual perfil XIS/UML)
Principios orientadores Reutilização Simplicidade Automatização Formalização Aproximação das abstrações da solução ao problema Compreensão por todos os intervenientes no processo de desenvolvimento Integração de actividades Extensibilidade Suporte por ferramentas Integração de boas práticas
Estado do Projecto Análise detalhada do estado da arte Definição do modelo de especificação de requisitos Prova de conceito da abordagem Implementação de um protótipo de especificação de requisitos Reutilização Novas funcionalidades Integração MDD Evolução do protótipo Abril 04 Setembro 04 Abril 05 Tempo
Problema Conclusão Solução Os contextos de negócio e tecnológico são cada vez mais complexos. Os próximos esforços de melhoria devem ser na gestão de requisitos e modelação Apesar de todos os esforços, continuamos a ter insucessos no desenvolvimento de software O problema não está nas actividades de implementação mas sim nas de concepção Formalizar Reutilizar Automatizar Integrar Este pretende ser o contributo do projecto ProjectIT, e em particular do ProjectIT Requirements
Obrigado cvideira@ual.pt