ENGENHARIA DE REQUISITOS Análise e Modelação de Sistemas 2006 Engenharia de Requisitos • A engenharia de requisitos (no contexto da engenharia de software) • É um processo que engloba todas as actividades • Que contribuem para a produção de um documento de requisitos • E sua manutenção ao longo do tempo. Engenharia de Requisitos • Este processo deve ser precedido de estudos de viabilidade • Que a partir das restrições do projecto, determinam se este é ou não viável •E se se deve prosseguir para a identificação dos requisitos. Conceito de Requisitos O que são requisitos de um sistema? • descrições de como o sistema se deve comportar • descrições de propriedades do sistema • descrições de restrições do sistema ou condicionantes no seu desenvolvimento Conceito de Requisitos • mais definições... •uma capacidade de um sistema de software que um utilizador necessita para resolver um problema ou atingir um objectivo •uma capacidade que um sistema de software deve possuir para satisfazer um contracto, especificação, norma, ou qualquer outra documentação imposta Conceito de Requisitos requisitos funcionais descrevem o que o sistema deve fazer exemplos "o sistema deve possibilitar armazenar os pedidos de orçamento" "o sistema deve possibilitar a paragem de emergência do motor requisitos não-funcionais descrevem as restrições na implementação dos requisitos funcionais exemplos "o sistema deve permitir armazenar pelo menos 500 pedidos de orçamento por ano" "o sistema operativo a usar deve ser linux" "a paragem de emergência deve ser realizada em menos de 3 segundos" Onde terminam os requisitos? • "Os requisitos terminam onde começa a liberdade do implementador" • Idealmente, todas as decisões que têm de ser validadas pelo cliente (que o implementador não pode tomar isoladamente), devem estar contidas no documento de requisitos • Na prática, não é possível ou economicamente viável prever tudo à partida, e é necessário manter um diálogo constante com o cliente • O nível de detalhe desejável varia de situação para situação Conceito de Requisitos • níveis de requisitos •alto nível: missões, objectivos, regras do negócio •baixo nível: necessidades dos utilizadores, funcionalidades, restrições O processo de Engenharia de Requisitos • É constituído por quatro actividades de alto nível (Soares, 2005): • • • • Identificação. Análise e negociação. Especificação e documentação. Validação. O processo de engenharia de requisitos: modelo de actividades de alto nível documento de requisitos identificação, descoberta de requisitos análise e negociação de requisitos documentação, especificação de requisitos validação de requisitos necessidades dos utilizadores, sistemas legados, informação do domínio, normas organizacionais, etc. O processo de engenharia de requisitos: entradas e saídas sistemas legados necessidades dos utilizadores normas da organização regulamentos informação do domínio processo de engenharia de requisitos requisitos (acordados) especificação do sistema (Kotonya e Sommerville, 1998) O processo de engenharia de requisitos *qualidade do processo de ER modelo de maturidade nível 3. definido PER baseado em melhores práticas; melhoria contínua nível 2. repetível PER obedecendo a normas nível 1. inicial PER adhoc O processo de engenharia de requisitos actores no processo engenheiro de requisitos / analista especialista do domínio responsável de projecto processo de engenharia de requisitos utilizador final engenheiro de software O processo de engenharia de requisitos actores no processo: stakeholders • Quem são os "interessados no sistema" (stakeholders)? •São as pessoas que serão afectadas pelo sistema •E que têm uma influência directa ou indirecta na elaboração dos requisitos: O processo de engenharia de requisitos actores no processo: stakeholders • Quem são os "interessados no sistema" (stakeholders) • Utilizadores finais, gestores e outros envolvidos nos processos organizacionais que o sistema influencia, responsáveis pelo desenvolvimento e manutenção do sistema • Clientes da organização que possam vir a usar o sistema, organismos de regulação e certificação, etc. Processo de descoberta de requisitos "orientado ao problema" • análise de problemas - processo de compreender um problema e propor soluções para resolver esse problema identificar os stakeholders entender as causas do problema acordar na definição do problema definir as fronteiras da solução identificar as restrições da solução identificar os stakeholders • compreender as necessidades dos interessados no sistema é um factor decisivo no desenvolvimento de uma solução efectiva para um problema – – – – quem quem quem quem são os utilizadores do sistema? é o cliente (comprador) do sistema? será afectado pelas saídas que o sistema produz? fará a manutenção do sistema? Definir as fronteiras da solução – quem fornece, utiliza, remove informação do sistema? quem opera o sistema? quem faz manutenção do sistema? onde é que o sistema é usado? como obtém o sistema a sua informação? que outros sistema interactuam com o sistema? fronteira do sistema solução utilizadores outros sistemas identificar as restrições da solução • restrições no grau de liberdade que temos para desenvolver o sistema – económicas – políticas – tecnológicas – sistemas existentes – ambiente – recursos Acordar na definição do problema • exemplo de formulação do problema "o problema de se passar demasiado tempo a produzir a documentação do projecto afecta os parceiros do projecto e resulta em atrasos significativos no cumprimento dos prazos; os benefícios do sistema que gerisse a documentação à medida que é produzida residiriam numa menor percentagem de incumprimento de prazos e numa melhor relação com os parceiros" O processo de engenharia de requisitos boas práticas • algumas boas práticas • definir uma estrutura normalizada para o documento de requisitos • identificar univocamente cada requisito • definir políticas de gestão de requisitos • usar checklists de problemas para a análise de requisitos • usar cenários para identificar os requisitos • especificar os requisitos quantitativamente • usar prototipagem para animar os requisitos • reutilizar requisitos • especificar sistemas formalmente • etc., IDENTIFICACÃO DOS REQUISITOS Processo de engenharia de requisitos: modelo de actividades de alto nível identificação , descoberta de requisitos documento de Requisitos análise e negociação de requisitos especificação, documentação de requisitos necessidades dos utilizadores, sistemas legados, informação do domínio, normas organizacionais, etc. validação de requisitos Processo de engenharia de requisitos: modelo em espiral (Kotonya e Sommerville, 1998; SWEBOK) Dimensões da descoberta de requisitos conhecimento geral do domínio compreender o domínio de aplicação compreender as necessidades e restrições dos interessados que actividades devem ser suportadas pelo sistema? qual o papel de sistemas existentes? etc. estende e especializa conhecimento geral do domínio compreender o problema a ser resolvido compreender o contexto de negócio como é que o sistema contribui para os objectivos do negócio? etc. Kotonya, 1998 Estágios do Processo • Estabelecimento de objectivos – Objectivos gerais do negócio, descrição genérica do problema a resolver, necessidade do sistema e restrições sobre o sistema. • Aquisição de conhecimento de background – informação sobre a organização em que o sistema vai ser instalado, o domínio de aplicação do sistema e informação sobre sistemas existentes • Organização do conhecimento – Organizar a grande quantidade de conhecimento (informação?) recolhida no estágio anterior. • Recolher requisitos dos stakeholders – Consultar os interessados no sistema para descobrir os seus requisitos. Fontes de requisitos (1) (fonte: SWEBOK) – objectivos gerais de alto nível do sistema • objectivos gerais de alto nível do sistema, problema que o sistema deve resolver, motivação para a implementação do sistema, factores críticos de sucesso, interesse para o negócio, ... • necessário avaliar custos e benefícios de atingir os objectivos, por exemplo com estudo de viabilidade – conhecimento do domínio de aplicação • necessário para inferir conhecimento tácito que os stakeholders não explicitam, avaliar trade-offs entre requisitos conflituosos, etc. • pode ser obtido junto de especialistas do domínio, documentos, etc. – stakeholders do sistema • fundamental identificar, representar e gerir os pontos de vista, interesses e necessidades de todos os interessados no sistema (utilizadores, clientes, etc.) Fontes de requisitos (2) (fonte: SWEBOK) – ambiente operacional • o ambiente operacional em que o sistema vai executar pode impor diversos requisitos – aproveitamento de infra-estruturas físicas e lógicas existentes – interoperabilidade com sistemas existentes (internos ou externos) – etc. – ambiente organizacional • muitos sistemas destinam-se a suportar processos de negócio, devendo-se adequar à estrutura, cultura, políticas, regras e normas internas da organização (intra/inter) – ambiente externo • normas, regulamentos, legislação, etc. • podem impor requisitos • exemplos: lei de protecção de dados pessoais, normas de acessibilidade, POC, ... Técnicas de descoberta de requisitos – – – – análise de documentação análise de sistemas existentes entrevistas encontros facilitados (workshops, brainstorming) – cenários – protótipos – observação e análise social, estudos etnográficos – soft systems methods – reutilização de requisitos ENTREVISTAS Entrevistas • entrevistar os futuros utilizadores e outros stakeholders é a técnica mais vulgar e simples de obter informação para identificar requisitos Entrevistas • a entrevista é uma técnica simples, mas não é fácil de aplicar Entrevistas – Enviesamento de quem conduz a entrevista: – Relação pessoal entre os intervenientes na entrevista: – predisposição do entrevistado: – Capacidade de seguir um "plano" para a entrevista: Entrevistas • tipos de entrevistas – estruturadas vs. não estruturadas – descontextualizadas vs. contextualizadas pela solução Entrevistas • Entrevistas e Questionários: esta é talvez a técnica mais simples de utilizar. Ainda que seja bastante eficaz numa fase inicial de obtenção de dados (e mesmo de esclarecimento de algumas dúvidas), está condicionada a alguns factores: • Enviesamento de quem conduz a entrevista: convém que o entrevistador dê margem ao entrevistado para expor as suas ideias sem as enviesar logo à partida). • Relação pessoal entre os intervenientes na entrevista. Entrevistas • Predisposição do entrevistado: caso, por exemplo, o papel do entrevistado venha a ser afectado pela introdução de um sistema na organização, este pode propositadamente dificultar o acesso à informação. • Capacidade de seguir um "plano" para a entrevista: na ausência destes planos é natural que haja tendência para que os intervenientes se dispersem um pouco, levando a que a entrevista demore mais tempo do que seria suposto. Caso a entrevista se torne demasiado longa, as pessoas podem cair na tentação de "querer despachar" sendo os últimos pontos da entrevista abordados de forma superficial (ou podem nem chegar a ser abordados). Elaboração das perguntas Perguntas de contexto livre • Como exemplo de perguntas deste género, podemos ter: • • • • Quem são os utilizadores? Quem é o cliente? Têm necessidades diferentes? Onde podem ser encontradas outras soluções para este problema? Elaboração das perguntas Perguntas centradas na solução • Após terem sido feitas as perguntas de contexto livre, pode começar-se a explorar as soluções propostas com estas perguntas mais direccionadas: • (Apresentar as capacidade gerais de uma solução) E se pudesse fazer ... e ...? • Como classificaria a importância de cada uma das funcionalidades apresentadas? Aqui ficam algumas dicas para uma entrevista de sucesso: • Prepare uma entrevista de contexto livre apropriada, e tome nota para que isso sirva como referência no decorrer da entrevista. Faça uma revisão às questões a colocar nos momentos que antecedem a entrevista. • Antes da entrevista faça uma pesquisa ao background do stakeholder e da empresa a serem entrevistados. Não mace a pessoa a ser entrevistada com perguntas que poderia facilmente saber a resposta à priori. Ainda assim, pode confirmar brevemente essas respostas dando a mostrar o seu interesse e conhecimento da pessoa e empresa em questão. Aqui ficam algumas dicas para uma entrevista de sucesso: • Anote as respostas no seu bloco de notas durante a entrevista. (Não tente capturar a informação de forma electrónica nesta fase!) • Consulte as notas da estrutura da entrevista no decorrer da mesma. Desta forma tem a certeza que está a fazer as perguntas correctas e que não se está a desviar dos objectivos definidos. • Discuta os problemas com o utilizador. Esclareça situações que possa observar no ambiente. Faça sugestões e observações baseadas em conhecimento teórico e familiarização com outros sistemas. Entrevista e Compilação • O guião da entrevista não deve ser demasiado • restritivo. Depois de estabelecida uma ligação positiva com o entrevistado, é normal que a entrevista acabe por entrar numa dinâmica própria. Após a realização das entrevistas, o analista já deve ter ficado com um leque de necessidades identificadas. Para compilar o conjunto de necessidades gerais dos utilizadores entrevistados deve ser usado um método que pode ser denominado de "Resumo do Analista". Vantagens • É a forma mais fácil de descobrir as necessidades de um sistema, pois passa por perguntar directamente aos stakeholders. • Permite uma melhor compreensão do problema e seu domínio. • Pode ser utilizada em praticamente qualquer situação. • É uma solução de baixo custo. • Uma vez bem definidas as perguntas e estrutura da entrevista, é possível encontrar requisitos reais, e não apenas necessidades de alto nível. • É um método que aproxima as entidades envolvidas no projecto. Desvantagens • Consome bastante tempo. • Utilizadores diferentes podem ter necessidades contraditórias. • Pode originar grandes discrepâncias entre o funcionamento actual do processo de negócio, e o plano para o futuro. Workshops de Requisitos Workshops • uma workshop de requisitos é uma técnica de grupo para o debate e acordo das questões asociadas à identificação dos requisitos – levada a cabo através da formação de um grupo de representantes dos stakeholders – facilitada por alguém com competência para conduzir o processo de identificação e análise de requisitos Workshops • preparação – "vender" o conceito – assegurar a participação dos stakeholders adequados – garantir os aspectos logísticos – fornecer materiais para discussão antecipadamente – escolher o facilitador – estabelecer uma agenda Note-se que uma workshop, apesar de se assemelhar a uma reunião, difere em alguns pontos: • Reuniões são lideradas por um gestor (líder, que geralmente, faz pouca preparação). As workshops são lideradas por um facilitador neutro que se prepara intensivamente; • As reuniões não requerem trabalho prévio por parte da assistência. As workshops requerem muito trabalho prévio, incluíndo a criação de produtos que servem de candidatos a inputs do workshop; • As decisões numa reunião são tomadas pelo gestor, e podem não ser tópico de discussão. Numa workshop cada decisão está associada a uma regra. Existe um processo de decisão e a tomada de decisão pode estar associada a uma ou mais pessoas (mas não ao facilitador); • As reuniões prendem-se com troca de informação. Já ás workshops prendem-se com a descoberta e criação da informação; Note-se que uma workshop, apesar de se assemelhar a uma reunião, difere em alguns pontos: • Numa reunião existe pouca interacção entre os presentes. Nas workshops a participação é intensa e variada e os participantes realizam actividades individualmente, como membros de sub-grupos, ou colectivamente; • Reuniões não permitem quase nenhuns momentos de descontracção. Já as workshops encorajam a descontracção como forma de promoção da inovação e do trabalho de equipa. • As reuniões normalmente não envolvem a prodção de documentação. Já nas workshops os participantes criam e verificam documentos como p.ex diagramas de casos de uso; • As reuniões usam raramente meios visuais. Nas workshops sao fortemente utilizados meios visuais como posters, post-it, cartões diagramas. Planear uma workshop • Planear o horário da sessão: em que altura do dia se realizará, quanto tempo durará, ... • Planear o local: a sessão deve decorrer num local arejado, com boa luz; as cadeiras devem estar dispostas de forma que todos os participantes se vejam • Planear as regras básicas: – – Todos os membros devem participar o máximo possível Como a sessão é só uma, é importante que seja estabelecido um conjunto de regras básicas que regulem a participação. Ex: nunca se deve desviar do objectivo da sessão, nunca se deve desviar da questão base do momento, não se deve ultrapassar a vez dos outros, ... Planear uma workshop • Planear a agenda a seguir: – – – – – – – Dar as boas-vindas Rever a agenda Rever o objectivo da sessão Rever as regras básicas de participação Fazer uma introdução ao projecto Lançar as questões e conduzir as respostas Terminar agradecendo a participação • Escolher os participantes (ver quadro abaixo) • Planear a gravação da sessão – – Deve estar presente um ajudante (co-facilitador) que vá tirando notas ao longo da workshop Para além disso, pode ser útil gravar a sessão em suporte áudio ou video Conduzir uma workshop • De seguida será descrita uma possível abordagem ao modo como o mediador deverá conduzir a sessão: Conduzir uma workshop • Forming - Fase de orientação do grupo e introdução dos objectivos da sessão. Nesta fase o facilitador deve: – – – – Apresentar-se e apresentar o co-facilitador Agradecer a disponibilidade das pessoas Explicar os modos de gravação da sessão (só papel, gravador audio ou video) Apresentar/relembrar a agenda • Storming - divulgação de todas as ideias que os intervenientes possam ter, mesmo que estas sejam incompatíveis com outras áreas de negócio ou mesmo com o sistema que foi inicialmente idealizado. O facilitador deve: – Introduzir todas as questões antes de se iniciar o debate. Dar algum tempo aos participantes para pensarem sobre cada uma (e registarem as suas respostas). De seguida conduzir a discussão à volta das respostas a cada questão, sendo tratada uma de cada vez – Quando terminada uma questão, o facilitador deve fazer um breve resumo sobre as respostas dadas e a conclusão a que se chegou (pode ser o co-facilitador a fazer isto) Conduzir uma workshop • Norming - Promover a harmonia, a compreensão e o apoio das ideias uns dos outros, aumentando a coesão dos grupos intervenientes. O facilitador deve: – Garantir que as regras básicas de participação são respeitadas, dando voz a todos os participantes – O facilitador não deve participar no debate/discussão (nunca justificar a sua posição)... O seu papel fundamental é ouvir e coleccionar informação – Assegurar a participação uniforme - se 1/2 pessoas estão a liderar a discussão, o facilitador deve promover e incentivar os outros intervenientes, chamando-os a responder. Uma boa abordagem é usar uma mesa redonda, seguindo uma direcção, dando a cada participante 1 min para transmitir a sua opinião. • Performing - Nesta fase já deverá estar interiorizado no pensamento dos stakeholders uma actuação como equipa. Aqui já deverão emergir soluções. Os requisitos já deverão ser tratados com mais detalhe e ser prioritizados. Conduzir uma workshop • Adjourning - Deverá ser feita uma retrospectiva do projecto, e das soluções encontradas. Esta fase não deverá ser descurada, já que é essencial para que os intervenientes percebam que o papel que desempenharam foi tomado em conta e é essencial para este e futuros projectos. O facilitador deve: – Notificar os participantes da breve recepção de uma cópia do relatório resultante da sessão (contendo as principais propostas e conclusões) – Agradecer aos participantes a sua presença e participação – Terminar a sessão Como tirar mais proveito dos Workshops? • As tomadas de decisão devem seguir processos bem definidos e devem resultar de um processo de negociação, mediado pelo facilitador. • Uma técnica que é também útil em workshops é o uso de brainstorming como forma de gerar um elevado número de ideias numa pequena quantidade de tempo. • Como resultado dos workshops deve ser produzida documentação que reflicta os requisitos e decisões tomadas sobre o sistema a implementar. Brainstorming • brainstorming é uma técnica para a geração de novas ideias por um conjuto de pessoas – encoraja a participação de todos – permite o aproveitamento e refinamento de outras ideias – pode ser bastante produtiva (nº de ideias/hora) – o resultado pode ser um conjunto de soluções – encoraja o pensamento livre... (maluquices...) Brainstorming: reduzir ideias • "podar" ideias • agrupar ideias • definir as características de cada ideia • estabelecer prioridades Brainstorming • regras do brainstorming – não permitir críticas ou debate – deixar a imaginação voar... – gerar tantas ideias quanto for possível – mutar e combinar ideias – Atraso do julgamento – Criatividade em quantidade e qualidade Há 3 principais partes no brainstorming: • Encontrar os factos, • Geração da ideia, • Encontrar a solução. Há 3 principais partes no brainstorming: • Da busca dos factos na resolução de um problema existem duas sub partes: • Definição do problema, • Preparação. Há 3 principais partes no brainstorming: • Inicialmente, define-se o problema. Poderá ser necessário subdividir o problema em várias partes. A técnica de Brainstorming funciona para problemas que têm muitas soluções possíveis tal como a geração de ideias para o seu desenho. • Depois é necessário colher toda a informação que pode relacionarse com o problema. • Geração de idéias por brainstorming. • Busca da solução. Avaliar e seleccionar as melhores idéias. Brainstorming na educação • A técnica de brainstorming não é uma actividade exclusiva de um ambiente empresarial: pelo contrário, na escola esta, pode ser uma técnica muito importante na educação dos estudantes. Este grande ou pequeno grupo de actividade encoraja os estudantes a manteremse focados num tópico e contribuir para uma fluidez de ideias em liberdade. • O professor pode começar por propôr uma questão ou problema, ou introduzindo um tópico. Os estudantes, depois expressam e divulgam as possíevis respostas e soluções, palavras, expressões ou ideias relevantes. CENÁRIOS cenários • abordagem para colocar os interessados num sistema perante uma situação realista em que simulam ou apenas antevêem a sua interacção com o sistema – materializam-se em histórias que explicam como é que o sistema poderá ser usado Cenários • uma forma de levar as pessoas a imaginar o • comportamento de um sistema é o uso de cenários. Através de exemplos práticos descritivos do comportamento de um sistema, os seus utilizadores podem comentar acerca do seu comportamento e da interacção que esperam ter com ele. Trata-se de uma abordagem informal, prática e aplicável a qualquer tipo de sistema. De um modo geral, os cenários devem incluir os seguintes elementos: Cenários • Estado do sistema no início do cenário. • Sequência de eventos esperada (na ausência de erros) no cenário. • Listagem de erros que podem ocorrer no decorrer dos eventos do cenário e de como estes erros serão tratados. Cenários • Listagem de erros que podem ocorrer no decorrer dos eventos do cenário e de como estes erros serão tratados. • Outras actividades que podem estar a ser executadas ao mesmo tempo que as deste cenário. • Estado do sistema depois de o cenário terminar. Cenários: conteúdo fluxo normal de eventos excepções ao fluxo normal de eventos informação sobre outras actividades que ocorrem ao mesmo tempo descrição do sistema antes de se entrar no cenário descrição do estado do sistema depois de completado o cenário Cenários: definição • mais definições – uma história ou exemplo de eventos retirados da experiência do mundo real; incluem detalhes do contexto do sistema (cenas) – um caminho ou instância de um modelo (normalmente de casos de utilização) – a visão futura de um sistema a ser desenhado, com sequências de comportamento e descrições contextuais Sutcliffe, 2002 Cenários: objectivos • identificar e clarificar requisitos – adicionar detalhe a requisitos mais gerais – compreender a relação entre requisitos • validar requisitos – compreender um requisito no seu contexto de utilização – verificar se a sua relação com outros requisitos faz sentido Principais vantagens do uso de cenários em Engenharia de Requisitos • Tem em conta o ponto de vista do utilizador • Especificações parciais • Fácil de compreender • Ciclos de feedback curtos • Servir de base para os testes do sistema CENÁRIOS: conclusão • Engenharia de requisitos baseada em cenários é definitavamente um passo na direcção certa. • Em particular, cenários são uma chave que permite um novo estilo de engenharia de requisitos evolucionário e incremental. CENÁRIOS: conclusão • Os cenários focam-se nos utilizadores, em • • descrições concretas e instâncias específicas. O desenho de sistemas baseado em cenários atribui um grande ênfase aos utilizadores; articula qual o seu papel, o que fazem, como fazem, e sobre que circunstâncias o fazem. Um cenário é uma descrição concreta do trabalho e actividades, descrevendo assim uma instância específica e um caso de uso. Cenários versus casos de uso • Existem diferentes opiniões sobre a relação existente entre casos de uso e cenários: – Há quem os considere sinónimos – Há quem considere que um cenário corresponde a um conjunto de casos de uso (fluxo normal de eventos, e cada fluxo excepcional seriam casos de uso separados) – Há quem considere que um caso de uso corresponde a um conjunto de cenários • Em UML, um caso de uso admite variantes, podendo-se considerar cada variante como um cenário • Cada cenário pode ser representado por um diagrama de interacção (normalmente um diagrama de sequência) cenários: exemplo – reservar livro através do site da biblioteca • Entrar no sistema (log on) • Procurar o livro pretendido por autor, título ou • • • • ISBN Seleccionar um dos exemplares disponíveis Dar ordem para reservar esse exemplar Seleccionar o modo de entrega: levantamento na biblioteca, ou envio por funcionário Sair do sistema (logout) PROTOTIPAGEM Prototipagem • um protótipo é uma versão inicial de um sistema usado para apoiar essencialmente as fases de identificação, análise e validação de requisitos Prototipagem • características – desenvolvimento rápido – funcionalidades limitadas – requisitos não funcionais pouco considerados – várias tecnologias – pode ir desde maquetas a protótipos evolutivos Prototipagem: custos • a decisão de usar a prototipagem deve ser tomada com recurso a uma análise custobenefício • custos envolvidos na prototipagem – formação, desenvolvimento, prazos mais alargados, protótipos incompletos Prototipagem: benefícios • benefício principal – os clientes e utilizadores finais têm contacto com um sistema realista cedo o que lhes permite compreender melhor os requisitos que pretendem identificar e analisar • outros benefícios – ajuda a estabelecer a viabilidade e utilidade do sistema – é a única forma efectiva de desenvolver IPC – pode ser usado na validação – o estudo cuidadoso dos requisitos ajuda a revelar inconsistências e lacunas Prototipagem: tipos Existem 3 tipos de protótipos (Sommerville, Sawyer, 1997): – Protótipo em papel: é desenvolvido um conjunto de interfaces associadas a cenários de utilização que são apresentados aos utilizadores. Este tipo de prototipagem é barata e eficiente (Rogers, Sharp, Preece, 2002)(Kotonya, Sommerville 1998). È mais indicada quando o sistema a desenvolver é software. Não é necessário desenvolver software executável. Os analistas e utilizadores percorrem estes cenários, simulando a utilização do sistema, sendo analisado as reacções dos utilizadores, a informação requerida e a forma de interacção com o sistema. Este método é muito eficiente para sistemas interactivos. Este tipo de protótipo é de baixa fidelidade (Rogers, Sharp, Preece, 2002). Prototipagem: tipos – Protótipo “wizard of Oz”: uma pessoa simula as respostas dos sistemas em resposta as acções dos utilizadores. Este tipo de prototipagem é relativamente barata visto apenas a interface do sistema ter de ser desenvolvida (Kotonya, Sommerville 1998). Os utilizadores interagem com o que parece ser o sistema em que as suas acções são analisadas por um pessoa que simula a resposta do sistema. É particularmente útil quando o sistema a desenvolver tem por base numa interface existente. Este tipo de protótipo é de baixa fidelidade (Rogers, Sharp, Preece, 2002). Prototipagem: tipos – Protótipo automático: é utilizado linguagens 4GL ou outras linguagens que permitem um rápido desenvolvimento de protótipos executáveis. Este tipo de prototipagem é a mais cara (Kotonya, Sommerville 1998). Envolve o desenvolvimento de software, recorrendo a linguagens de programação de alto nível, que simule as funcionalidades do sistema. O problema principal do desenvolvimento de protótipos executáveis é de os Stakeholders não simularem a real utilização do sistema final devido ao facto de muitos dos requisitos não funcionais do sistema não estarem provavelmente implementados em conjunção com falta de treino. Um outro problema poderá surgir se o desenvolvimento do sistema estiver atrasado. Nesta situação pode ocorrer a tentação de prosseguir o desenvolvimento do protótipo com todas as nefastas consequências anteriormente referidas. Prototipagem: tipos • prototipagem evolutiva – o objectivo é proporcionar um sistema "produtivo" o mais rápido possível ao cliente – os requisitos objecto dos protótipos iniciais deverão ser aqueles mais facilmente compreendidos e que podem dar rapidamente um valor acrescentado útil ao utilizador ESTUDOS ETNOGRÁFICOS Etnografia • Técnica onde o sociólogo gasta um tempo considerável no ambiente de trabalho a observar e a anotar como os participantes envolvidos trabalham • Interacções implícitas são reveladas. As pessoas não têm que explicar o seu trabalho Estudos Etnográficos: • Este tipo de estudos são uma análise da • componente social das tarefas desempenhadas numa dada organização. Quando um dado conjunto de tarefas se torna rotineiro para uma pessoa, é de esperar que esta sinta dificuldade em articular todos os passos que segue ou todas as pessoas com as quais interage para as levar a cabo. Estudos Etnográficos: • Através de uma observação directa das actividades • • realizadas durante um período de trabalho de um funcionário é possível encontrar requisitos que não seriam observáveis usando técnicas convencionais. Esta observação pode ser acompanhada de registos áudio/vídeo, porém não convém usá-los em demasia visto que o tempo necessário para os processar pode ser demasiado. Nesta técnica assume-se que o stakeholder observado desempenha as suas funções "correctamente", pelo que convém ter algum cuidado na escolha do(s) stakeholder(s) a observar. Observação e Análise Social • estudos etnográficos e identificação de requisitos – há requisitos que não se conseguem identificar através das técnicas convencionais – os estudos etnográficos ajudam a fazer emergir requisitos derivados de formas rotineiras e tácitas de trabalhar Observação e Análise Social • grande parte dos sistemas que desenvolvemos visam apoiar o trabalho das pessoas • o trabalho é uma actividade social que envolve grupos de pessoas que cooperam para levar a cabo diferentes tarefas Kotonya, 1998 observação e análise social • as pessoas encontram frequentemente dificuldade em tornar explícita a forma como realizam tarefas e como trabalham em conjunto com outros • quando as tarefas se tornam rotina e as pessoas tendem a não pensar nelas conscientemente, torna-se difícil que articulem como é que o trabalho é realizado • as pessoas usam artefactos (ferramentas, documentos, etc.) de uma forma intuitiva Estudos Etnográficos • algumas directrizes – assumir que as pessoas que se estão a estudar são boas a realizar o seu trabalho – estabelecer relações de confiança com as pessoas envolvidas no estudo; os analistas devem ser externos à organização – escrever notas detalhadas e regulares das práticas de trabalho estudadas – realizar entrevistas abertas – não recorrer demasiado às gravações vídeo e áudio, porque são difíceis de tratar em tempo útil – realizar sessões de crítica por parte de elementos externos ao projecto observação e análise social • estudos etnográficos – observação detalhada das práticas sociais de uma sociedade – uma compreensao total destas práticas só é possível pela observação do detalhe e a partir do interior da comunidade – um grupo de funcionários numa biblioteca, num banco, num laboratório têm características dos elementos de uma sociedade Estudos Etnográficos reuniões de crítica análise etnográfica prototipage m experiências dos utilizadores etnografia focada protótipo ANÁLISE E NEGOCIAÇÃO O processo de engenharia de requisitos modelo de actividades de alto nível identificação , descoberta de requisitos documento de requisitos análise e negociação de requisitos documentaçã o de requisitos necessidades dos utilizadores, sistemas legados, informação do domínio, normas organizacionais, etc. validação de requisitos Processo de engenharia de requisitos: modelo em espiral (Kotonya e Sommerville, 1998; SWEBOK) Análise e Negociação de Requisitos objectivos • análise e negociação de requisitos – actividades que visam descobrir problemas com os requisitos e chegar a acordos para a sua resolução de forma a satisfazer todos os interessados no sistema – na realidade, na fase de identificação de requisitos já se desenrolam actividades de análise e negociação – análise e negociação de requisitos são actividades que incidem sobre conjuntos incompletos de requisitos Análise e Negociação de Requisitos características • a análise e negociação de requisitos é normalmente um processo complexo – requer pessoas com competências específicas – baseia-se muito no julgamento e experiência dos participantes – não é possível transformar este processo numa abordagem estruturada e sistemática – é custoso e moroso Análise de Requisitos necessidade, consistência e completude • no conjunto de requisitos identificados pode – haver requisitos que se sobrepõem – haver requisitos que estão em conflito ou que são contraditórios – faltar requisitos... Análise de Requisitos técnicas: check-lists • listas de questões que um analista usa para avaliar os requisitos – são um "lembrete" do que é importante considerar na análise – não devem ter mais do que 10 items – evoluem com a experiência ganha no processo de análise Análise de Requisitos técnicas: check-lists • exemplo – – – – – – – – o o o o o o o o requisito requisito requisito requisito requisito requisito requisito requisito inclui aspectos de desenho ou implementação poderia ser decomposto em sub-requisitos? é mesmo necessário?... implica a utilização de software não standard? está de acordo com os objectivos do negócio? é ambíguo? é realista? é "testável"? Sutcliffe, 2002 Análise de Requisitos análise quanto ao âmbito definir as fronteiras do sistema diagramas de contexto diagramas de casos de uso analisar e decidir se o requisito está dentro ou fora Análise de Requisitos análise de prioridades • definir prioridades na análise e implementação dos requisitos • classificação – alta, média, baixa, não/sabe – essencial, útil, pouco interesse, a ser decidido Análise de Requisitos organização dos requisitos • hierarquização – relações de composição ou "pai-> filhos" ou "requisito-> sub-requisito" – os requisitos são definidos a vários níveis de abstracção • a organização em hierarquias é adequada a uma abordagem iterativa (espiral) ao processo de engenharia de requisitos Análise de Requisitos hierarquia de requisitos e casos de uso 1. marcação de consulta (caso de uso) – 1.1 a consulta pode ser marcada pelo médico ou pela assistente – 1.2 um médico pode marcar uma consulta para outro médico – 1.3 não se podem marcar duas consultas para a mesma data, hora e médico (restrição) – 1.4 o sistema deve alertar o utilizador no caso do doente ter outras consultas marcadas (alerta) – 1.5 o sistema deve ajudar o utilizador a encontrar vagas (ajuda) – (...) Negociação de Requisitos aspectos gerais • negociação para quê? – chegar a acordo em relação a opções mais adequadas aos interesses dos stakeholders – definir as prioridades a dar aos requisitos para novas iterações de identificação e análise e para o desenvolvimento – chegar a acordo em relação a compromissos entre requisitos que entram em conflito Negociação de Requisitos tarefas na negociação estruturar opções e escolhas estabelecer critérios de avaliação explicar opções disponíveis e a escolha a fazer chegar a um acordo diagnosticar causas de desacordo Negociação de Requisitos intervenientes na negociação • stakeholders primários – os que operam o sistema – preocupam-se com os requisitos funcionais e questões de usabilidade – pretendem sistemas fáceis de usar e aprender Negociação de Requisitos intervenientes na negociação • stakeholders secundários – não operam o sistema mas consomem o que este produz – o sucesso das suas actividades depende da qualdade do sistema – são tipicamente gestores que usam a informação do sistema para controlar, monitorar e ajustar processos organizacionais Negociação de Requisitos intervenientes na negociação • stakeholders terciários – gestores de topo que raramente consomem as saídas do sistema (directamente) – usam-nas indirectamente para planear e controlar estrategicamente o negócio – interessam-se pelo papel que o sistema desempenha na prossecução dos objectivos estratégicos do negócio tais como aumentar a vantagem competitiva ou melhorar o serviço ao cliente Negociação de Requisitos gerir a negociação • problemas num processo de negociação – separar os aspectos a debater das questões pessoais – falta de entendimento partilhado e de pontos de vista pessoais – atitudes interpessoais Negociação de Requisitos técnicas para gerir a negociação • lidar com os ataques pessoais – evitá-los... – se acontecerem: mudar de assunto, fazer um intervalo... – resolver o problema fora da reunião Negociação de Requisitos técnicas para gerir a negociação • bloqueio – reacções negativas sem justificação: "isso não resulta", "não se pode fazer", "dá muito trabalho“. – desafiar os participantes a justificarem a sua posição negativa Negociação de Requisitos técnicas para gerir a negociação • conflitos entre grupos – choque de pontos de vista entre grupos – exemplos: qualidade vs. prazos, custos vs. desenvolvimento, segurança vs. acesso, complexidade funcional vs. usabilidade, etc. – deferir decisões, os ânimos arrefecem... Negociação de Requisitos técnicas para gerir a negociação • outras técnicas – testar e provar assunções (pressupostos) – relaxar restrições – tentar encontrar potenciais benefícios para todos – evitar tomar partidos ESPECIFICAÇÃO E DOCUMENTAÇÃO O processo de engenharia de requisitos modelo de actividades de alto nível + protótipo identificação, descoberta de requisitos + modelo documento de requisitos análise e negociação de requisitos documentação de requisitos validação de requisitos necessidades dos utilizadores, sistemas legados, informação do domínio, normas organizacionais, etc. Documento de Requisitos • O que é um Documento de Requisitos? – é uma descrição oficial dos requisitos de um sistema para os clientes, utilizadores e desenvolvedores – outras designações: especificação funcional, definição de requisitos, especificação de requisitos, caderno de encargos Documento de Requisitos • como se escreve um Documento de Requisitos? – depende de quem o escreve, para quem, onde, ... – normalmente é escrito em linguagem natural e pode ser complementado com diagramas, tabelas, fotografias, imagens, etc. – existem directrizes e recomendações para a escrita de documentos de requisitos – o grau de detalhe depende de quem o escreve, da organização em que está inserido, do seu propósito, Documento de Requisitos • Documento de Requisitos é usado para comunicar o que se pretende que um determinado sistema faça – destina-se aos clientes, utilizadores, gestores e desenvolvedores do eventual sistema – especifica que serviços o sistema deve prestar, as propriedades do sistema (fiabilidade, eficiência, etc.) e restrições impostas à operação e desenvolvimento do sistema – tanto pode ser um documento muito sucinto e genérico como um documento extenso e muito detalhado. Documento de Requisitos • O que é que normalmente se encontra num documento de requisitos? – uma visão geral do sistema e dos benefícios decorrentes do desenvolvimento do sistema – um glossário explicando os termos técnicos usados – uma definição dos serviços ou requisitos funcionais do sistema – uma definição das propriedades do sistema (requisitos nãofuncionais) tais como fiabilidade, segurança, etc. Documento de Requisitos • O que é que normalmente se encontra num documento de requisitos? – as restrições à operação do sistema e ao processo de desenvolvimento – uma definição do ambiente em que o sistema vai operar e as mudanças previstas para esse ambiente – especificações detalhadas recorrendo a modelos e outras ferramentas Documento de Requisitos • Estrutura sugerida por IEEE/ANSI (830-1993) • 1. Introdução – 1.1 – 1.2 – 1.3 – 1.4 – 1.5 Propósito do documento Âmbito do sistema Definições, acrónimos e abreviaturas Referências Resenha do resto do documento Documento de Requisitos • Estrutura sugerida por IEEE/ANSI (830-1993) (cont.) • 2. Descrição geral – 2.1 – 2.2 – 2.3 – 2.4 – 2.5 Perspectiva do produto Funções do produto Características dos utilizadores Restrições gerais Assunções e dependências Documento de Requisitos • Estrutura sugerida por IEEE/ANSI (830-1993) (cont.) • 3. Requisitos específicos – requisitos funcionais, requisitos não funcionais, requisitos da interface com o utilizador: • funcionalidade, interfaces externas, requisitos de desempenho, restrições de concepção, atributos do sistema, características de qualidade, ... • Apêndices • Índice Documento de Requisitos • Orientações – explicar como se usa o documento – descrever um ou mais cenários de utilização – definir claramente os termos especializados – formatar o documento para uma boa legibilidade – ajudar os leitores a encontrar informação – fazer o documento fácil de alterar Manual do Utilizador como Documento de Requisitos • Steve McConnel, no seu livro "Software Project Survival Guide", defende que, na maioria dos situações, é mais vantajoso documentar os requisitos através de um manual do utilizador e um protótipo da interface com o utilizador, facilmente percebidos por todos, do que através de um documento formal de requisitos • (documento formal deve ser apenas um complemento) VALIDAÇÃO DE REQUISITOS O processo de engenharia de requisitos modelo de actividades de alto nível identificação , descoberta de requisitos documento de requisitos análise e negociação de requisitos documentaçã o de requisitos necessidades dos utilizadores, sistemas legados, informação do domínio, normas organizacionais, etc. validação de requisitos Processo de engenharia de requisitos: modelo em espiral (Kotonya e Sommerville, 1998; SWEBOK) Validação de Requisitos • Consiste em demonstrar que os requisitos definem o sistema que o cliente realmente quer. Revisões de Requisitos • Revisões regulares devem ser realizadas enquanto a definição dos requisitos está sendo formulada • Ambos o cliente e o analista devem estar envolvidos nas revisões O processo de Engenharia de Requisitos validação de Requisitos • validação de requisitos diz respeito à verificação dos requisitos quanto à sua consistência, completude e precisão • envolve revisão de requisitos prototipagem validação de modelos teste de requisitos Validação de Requisitos análise vs. validação assegurar que os requisitos vão ao encontro das necessidades dos stakeholders assegurar que os requisitos estão correctamente descritos temos os requisitos certos? análise e negociação de requisitos validação de requisitos temos os requisitos correctamente? requisitos em "bruto", informais e pouco estruturados, escritos numa mistura de notações stakeholders draft final do documento de requisitos, isento de inconsistência e incompletude, segue normas de qualidade, Validação de Requisitos análise vs. validação • exemplos de problemas que aparecem na fase de validação não conformidade com normas de qualidade requisitos mal descritos, ambíguos erros na modelação do sistema ou problema conflictos entre requisitos que não foram detectados no processo de análise Validação de Requisitos processo de validação documento de requisitos normas da organização conhecimento organizacional lista de problemas validação de requisitos acções acordadas Kotonya, 1998 Validação de Requisitos Revisão de requisitos planear revisão distribuir documentos preparar para a revisão reunião de revisão acções de continuidad e rever o documento Kotonya, 1998 Validação de Requisitos revisão de requisitos • reunião de revisão de requisitos a reunião de revisão é uma reunião formal deve ser conduzida por alguém que não esteve envolvido na produção dos requisitos cada requisito deve ser apresentado à vez para discussão pelo grupo os problemas identificados são registados para posterior discussão Validação de Requisitos revisão de requisitos acções problemas clarificação, reescrita dos requisitos requisitos mal escritos falta de informação conflictos descobrir a informação que falta no documento os stakeholders devem negociar para resolver o conflicto requisitos não realistas o requisito deve ser modificado ou removido Validação de Requisitos revisão de requisitos: equipa especialista do domínio utilizador-final ou representante equipa de revisão de requisitos engenheiro de requisitos representante do cliente responsáveis pelo desenho do sistema Validação de Requisitos revisão de requisitos: checklists • checklists de revisão devem ser genéricas não devem incidir sobre requisitos individualmente mas com as propriedades de qualidade do documento como um todo e com as relações entre requisitos Validação de Requisitos revisão de requisitos: checklists questões cada requisito está identificado de forma única? os termos especializados aparecem no glossário? o requisito depende de outros para se compreender o seu significado? há requisitos que usam o mesmo termo com sentidos diferentes? o mesmo serviço é solicitado em vários requisitos? há contradições nestas solicitações? se os requisitos fazem referência a outras facilidade, isso está descrito algures no documento? os requisitos relacionados estão agrupados? se não como se referenciam mutuamente? atributo de qualidade rastreabilidade, conformidade com normas, compreensibilidade compreensibilidade, completude ambiguidade consistência, redundância completude organização, rastreabilidade Validação de Requisitos revisão de requisitos: checklists • atributos de qualidade dos requisitos compreensibilidade redundância completude ambiguidade consistência organização conformidade com as normas rastreabilidade Validação de Requisitos prototipagem • se num projecto já foram usados protótipos para a identificação de requisitos, então faz sentido que o sejam também na validação Validação de Requisitos prototipagem seleccionar os testadores do protótipo desenvolver cenários de teste executar cenários documentar problemas documentar e estender os protótipos Kotonya, 1998 Validação de Requisitos prototipagem • a reescrita dos requisitos noutro formato pode ajudar a validá-los – é necessário compreendê-los bem o que pode revelar conflictos, omissões e inconsistências • os manuais de utilização podem começar a ser produzidos na fase de validação (manual do protótipo) – descrição das funcionalidades implementadas e da forma de as aceder (interfaces) – menção às partes do sistema não implementadas – como recuperar de dificuldades – como instalar o protótipo Validação de Requisitos validação de modelos • parte da especificação de requisitos de um sistema pode ser constituída por vários modelos • a validação de modelos tem como objectivos – 1. avaliar individualmente a consistência de cada modelo – 2. avaliar a consistência externa (entre modelos) – 3. mostrar que os modelos reflectem os requisitos reais dos stakeholders Validação de Requisitos teste de requisitos • um requisito "testável" significa que se pode definir um ou mais testes a realizar no sistema final de forma a poder ser verificado se o sistema cumpre o requisito – cada requisito funcional no documento de requisitos deve ser analisado e um teste ser definido de forma a ser verificado objectivamente se o sistema satisfaz o requisito Validação de Requisitos teste de requisitos • registo de teste – 1. – 2. – 3. – 4. – 5. identificador do requisito requisitos relacionados descrição do teste problemas na realização do teste comentários e recomendações Verificação Automatizada de Consistência Requisitos em uma Relatório dos proble- linguagem formal mas com os Requisitos Processador Analisador de requisitos de requisitos Bases de dados de requisitos Validação de Requisitos • Erros nos requisitos custam caro, portanto a sua validação é importante – corrigir um erro de requisitos = 100 x corrigir erro de implementação Validação de Requisitos • “Checar” requisitos – Consistência. Há conflitos de requisitos? – Validade. O sistema provê as funções que atendem as necessidades do cliente? – Completude. Todas as funções requeridas pelo cliente estão incluídas? – Realismo. Os requisitos podem ser implementados com o orçamento e tecnologia disponíveis? – Verificabilidade. Os requisitos podem ser verificados? Técnicas de Validação de Requisitos • Revisões de requisitos – Análise manual sistemática dos requisitos • Prototipação – Utilização de um modelo executável do sistema Técnicas de Validação de Requisitos • Geração de casos de teste – Desenvolver testes para verificar os requisitos • Análise automatizada da consistência – Verificar a consistência de uma descrição de requisitos estruturada Revisões de Requisitos • Revisões devem se preocupar com: – Verificabilidade. O requisito é realisticamente testável? – Compreensibilidade. O requisito está bem compreendido? – Traço. A origem do requisito está claramente identificada? – Adaptabilidade. O requisito pode ser mudado sem grande impacto noutros requisitos? Requisitos Voláteis e Permanentes • Requisitos Voláteis Mudança provável durante ou depois do desenvolvimento Ex: Requisitos dos serviços bancários Tipos de requisitos voláteis: Mutáveis: mudanças no ambiente Emergentes: durante o desenvolvimento Consequentes: resulta da introdução do sistema de computador Compatibilidade: depende de sistemas ou processos particulares dentro da organização GESTÃO DE REQUISITOS Gestão de Requisitos • É o processo de gerir as mudanças nos requisitos durante o processo de engenharia de requisitos e o processo de desenvolvimento de sistemas Gestão de Requisitos • Requisitos são inevitavelmente incompletos e inconsistentes – Novos requisitos emergem durante o processo, pois as necessidades do negócio mudam e a compreensão dos requisitos melhora – Pode haver contradição no requisitos de viewpoints diferentes Gestão de Requisitos • Mudança de requisitos – A prioridade dos requisitos de viewpoints diferentes pode mudar durante o processo de desenvolvimento – O negócio pode sofrer alterações durante o desenvolvimento Evolução de Requisitos Compreensão inicial do Compreensão modificada do problema problema Requisitos Requisitos iniciais modificados Tempo Plano de Gestão de Requisitos • Durante o processo de engenharia de requisitos deve-se planear: – A identificação dos requisitos – Um processo de gestão de mudança – Políticas de traço – Suporte de ferramentas CASE referências e informação adicional • Gerald Kotonya, Ian Sommerville, Requirements • Engineering – Processes and Techniques, Wiley, 1998 (capítulo 3) User Centerd Requirements Engineering: Theory and Practice. Alistair Stutcliffe. Springer. 2002. • Soares (2005). Introdução, Identificação e Análise em Engenharia de Requisitos. António Lucas Soares. 2005. http://twiki.fe.up.pt/twiki/bin/view/ERSS0506/Er ssDocumentos0506