Baixe o app para aproveitar ainda mais
Prévia do material em texto
SISTEMA DE ENSINO ENGENHARIA DE SOFTWARE Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso Livro Eletrônico 2 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro Sumário Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ................................................3 1. Requisitos de Software ............................................................................................................................................3 1.1. Introdução à Engenharia de Requisitos ......................................................................................................3 1.2. Requisitos de Software ........................................................................................................................................8 1.3. Documento de Requisitos de Software ....................................................................................................18 1.4. Especificação de Requisitos ..........................................................................................................................20 1.5. Processos de Engenharia de Requisitos .................................................................................................21 1.6. Elicitação e Análise de Requisitos .............................................................................................................23 1.7. Validação de Requisitos ................................................................................................................................... 29 1.8. Gerenciamento de Requisitos .......................................................................................................................30 2. Diagrama de Casos de Uso .................................................................................................................................32 Resumo ...............................................................................................................................................................................36 Questões de Concurso ...............................................................................................................................................40 Gabarito ..............................................................................................................................................................................48 Gabarito Comentado ...................................................................................................................................................49 O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 3 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro REQUISITOS DE SOFTWARE. CASOS DE USO E DIAGRAMAS DE CASO DE USO 1. Requisitos de softwaRe Os requisitos de um sistema são as descrições do que o sistema deve fazer, os serviços que serão oferecidos, e as restrições do seu funcionamento. Esses requisitos refletem as necessidades dos clientes para um sistema que serve a uma finalidade determinada, como controlar um dispositivo, colocar um pedido ou encontrar informações. O processo de desco- brir, analisar, documentar e verificar esses serviços e restrições é chamado de engenharia de requisitos (RE, do inglês requirements engineering). 1.1. intRodução à engenhaRia de Requisitos A engenharia de requisitos (ou análise de requisitos) engloba todas as tarefas que lidam com investigação, definição e escopo de novos sistemas ou alterações. A engenharia de re- quisitos é uma parte importante do processo de desenvolvimento de softwares, no qual o engenheiro de requisitos e o analista de negócio, juntamente com engenheiro de sistema ou desenvolvedor de software, identificam as necessidades ou requisitos de um cliente. Na engenharia de requisitos são realizadas as primeiras reuniões com os clientes e/ou usuários do software para conhecer as funcionalidades do sistema que será desenvolvido. Uma vez que os requisitos do sistema tenham sido identificados, os projetistas de sistemas estarão preparados para projetar a solução. A engenharia de requisitos é o processo de compreensão e identificação das necessida- des do cliente, que espera a resolução da demanda especificada, a qual será solucionada pelo sistema ou aplicativo que será desenvolvido e bem definido em suas funções, ou seja, o que este software irá realizar. Também envolve a comunicação entre os membros da equipe do projeto e as partes interessadas, além da adequação às mudanças de requisitos ao longo do curso do projeto. A engenharia de requisitos é uma das primeiras atividades do desenvolvimento de softwa- res. O produto do seu trabalho é a especificação de requisitos, que procura definir o escopo do software em duas dimensões: requisito funcional e requisito não funcional. O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 4 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro Na imagem abaixo, temos diferentes visões de um requisito: No âmbito da engenharia de software, um requisito consiste na definição documentada de uma propriedade ou comportamento que um produto ou serviço em particular deve atender. Em alguns casos, o requisito é apenas uma declaração abstrata em alto nível de um servi- ço que o sistema deve oferecer, ou uma restrição a um sistema. No outro extremo, o requisito pode ser uma definição detalhada e formal de uma função do sistema. Podemos trabalhar com uma distinção que envolve os requisitos de usuário, para expres- sar os requisitos abstratos de alto nível, e os requisitos de sistema, para expressar a descrição detalhada do que o sistema deve fazer. Esses diferentes níveis de descrição de requisitos podem ser definidos como: • Requisitos de usuário são declarações, em uma linguagem natural com diagramas, de quais serviços o sistema deverá fornecer a seus usuários e as restrições com as quais este deve operar. • Requisitos de sistema são descrições mais detalhadas das funções, serviços e restri- ções operacionais do sistema de software. O documento de requisitos do sistema (às vezes, chamado especificação funcional) deve definir exatamente o que deve ser im- plementado. O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 5 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro Diferentes níveis de requisitos são úteis, pois eles comunicam informações sobre o siste- ma para diferentes tipos de leitor. Na figura abaixo, podemos observar um exemplo de distin- ção entre requisitos de usuário e requisitos de sistema: O exemplo acima é de um Sistema de Gerenciamento da Saúde Mental de Pacientes (MHC– PMS, do inglês Mental Health Care Patient Management System), e mostra como um requisito de usuário pode ser expandido em diversos requisitos de sistemas. Os requisitos de usuário são mais gerais. Os requisitos de sistema fornecem informaçõesmais específicas sobre os serviços e funções do sistema que devem ser implementados. O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 6 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro Os requisitos precisam ser escritos em diferentes níveis de detalhamento para que dife- rentes leitores possam usá–los de diversas maneiras. A figura abaixo mostra possíveis leitores dos requisitos de usuário e de sistema. Os leitores dos requisitos de usuário não costumam se preocupar com a forma como o sistema será implementado. Os leitores dos requisitos de sistema precisam saber mais deta- lhadamente o que o sistema fará, porque estão interessados em como ele apoiará os proces- sos dos negócios, ou porque estão envolvidos na implementação do sistema. A engenharia de requisitos abrange sete tarefas distintas: concepção, levantamento, ela- boração, negociação, especificação, validação e gestão. É importante notar que algumas de- las ocorrem paralelamente, e que todas são adaptadas às necessidades do projeto. O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 7 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro Concepção – Na concepção do projeto, é estabelecido um entendimento básico do pro- blema, as pessoas que querem a solução, a natureza da solução desejada, e a eficácia da comunicação e colaboração preliminares entre os demais envolvidos e a equipe de software. Levantamento – Poderia ser resumida no processo de perguntar ao cliente, aos usuários e aos demais envolvidos quais são os objetivos para o sistema ou produto, o que deve ser obtido, como o sistema ou produto atende as necessidades da empresa e, por fim, como o sistema ou produto deve ser utilizado no dia a dia. Uma parte importante do levantamento é estabelecer metas de negócios. Sua tarefa é mobilizar os envolvidos e estimulá–los a compar- tilhar suas metas honestamente. Uma vez capturadas as metas, deve ser estabelecido um me- canismo de atribuição de prioridades, podendo ser criado um raciocínio lógico para a possível arquitetura do projeto (que esteja de acordo com as metas dos envolvidos). Elaboração – As informações obtidas através do cliente durante a concepção e o levanta- mento são expandidas e refinadas durante a elaboração. Essa tarefa concentra–se no desen- volvimento de um modelo de requisitos refinado que identifique os diversos aspectos da fun- ção, do comportamento e das informações do software. A elaboração é guiada pela criação e pelo refinamento de cenários que descrevem como o usuário (e outros atores) vão interagir com o sistema. Cada cenário de usuário é analisado para extrair classes de análise – entida- des do domínio de negócio visíveis para o usuário. Os atributos de cada classe de análise são definidos, e os serviços exigidos de cada uma são identificados. As relações e a colaboração entre as classes são identificadas, e uma variedade de diagramas suplementares é produzida. Negociação – Não é raro clientes e usuários pedirem mais do que é possível, dados os recursos limitados de seu negócio. Também é relativamente comum que diferentes clientes ou usuários proponham necessidades conflitantes, argumentando que sua versão é “essencial para nossas necessidades especiais”. É preciso conciliar esses conflitos por meio de um pro- cesso de negociação. Devemos solicitar a clientes, usuários e outros envolvidos para que orde- nem seus requisitos e discutam sua prioridade, usando uma abordagem iterativa que priorize os requisitos, avalie seus custos e riscos e trate dos conflitos internos. Os requisitos são elimi- nados, combinados e/ou modificados, de modo que cada parte atinja certo nível de satisfação. Especificação – No contexto de sistemas baseados em computador (e software), o termo especificação assume diferentes significados para diferentes pessoas. Especificação pode ser um documento por escrito, um conjunto de modelos gráficos, um modelo matemático formal, um conjunto de cenários de uso, um protótipo, ou qualquer combinação dos fatores citados. Alguns sugerem que um “modelo padrão” deve ser desenvolvido e utilizado para a especifica- ção, argumentando que ele leva a requisitos que são apresentados de forma consistente e, portanto, mais compreensível. Entretanto, algumas vezes é necessário permanecer flexível quando uma especificação precisa ser desenvolvida. Para sistemas grandes, um documento escrito, combinando descrições em linguagem natural e modelos gráficos, pode ser a melhor abordagem. Entretanto, talvez sejam necessários apenas cenários de uso para produtos ou sistemas menores que residam em ambientes técnicos em compreendidos. O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 8 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro Validação – Os artefatos produzidos pela engenharia de requisitos possuem sua qualidade avaliada durante a etapa de validação. A validação de requisitos examina a especificação para garantir que todos os requisitos de software tenham sido declarados de forma não ambígua, que as inconsistências, omissões e erros tenham sido detectados e corrigidos, e que os arte- fatos estejam de acordo com os padrões estabelecidos para o processo, projeto e produto. O principal mecanismo de validação de requisitos é a revisão técnica. A equipe de revisão que valida os requisitos é formada por engenheiros de software, clientes, usuários e outros envol- vidos que examinam a especificação em busca de erros no conteúdo ou na interpretação de áreas em que talvez sejam necessários esclarecimentos de informações faltantes, de incon- sistências (um problema grave quando são criados produtos ou sistemas grandes), de requisi- tos conflitantes, ou de requisitos irreais (inatingíveis). Gerenciamento – Os requisitos para sistemas baseados em computador mudam, e o de- sejo de mudar os requisitos persiste ao longo da vida de um sistema. A gestão de requisitos é um conjunto de atividades que ajuda a equipe de projeto a identificar, controlar e acompanhar as necessidades e suas mudanças à medida que o projeto prossegue. 1.2. Requisitos de softwaRe Os requisitos de software são frequentemente classificados como requisitos funcionais e requisitos não funcionais: • Requisitos Funcionais: são declarações de serviços que o sistema deve fornecer, de como o sistema deve reagir a entradas específicas, e de como o sistema deve se com- portar em determinadas situações. Em alguns casos, os requisitos funcionais também podem explicitar o que o sistema não deve fazer; • Requisitos Não Funcionais: são restrições aos serviços ou funções oferecidos pelo sis- tema. Incluem restrições de timing, restrições no processo de desenvolvimento, e res- trições impostas pelas normas. Ao contrário das características individuais ou serviços do sistema, os requisitos não funcionais, muitas vezes, aplicam–se ao sistema como um todo. Requisitos Funcionais Os requisitos funcionais especificam funções queo sistema ou componente deve ser ca- paz de realizar. São utilizados para definir o comportamento do sistema, ou seja, o processo ou transformação que componentes de software ou hardware efetuam sobre as entradas para gerar as saídas. Os requisitos funcionais capturam as funcionalidades sob o ponto de vista do usuário. O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 9 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro Os requisitos funcionais são utilizados para descrever detalhadamente os serviços e fun- cionalidades que devem ser fornecidas pelo sistema, indicando suas entradas e saídas, ex- ceções etc. Quando expressos como requisitos de usuário, os requisitos funcionais são normalmente descritos de forma abstrata, para serem compreendidos pelos usuários do sistema. No entan- to, os requisitos funcionais mais específicos descrevem em detalhes as funções do sistema, suas entradas e saídas, exceções etc. Os requisitos funcionais podem variar de requisitos gerais, que abrangem o que o sistema deve fazer, até requisitos muito específicos, que refletem os sistemas e as formas de trabalho em uma organização. A especificação dos requisitos funcionais de um sistema deve ser completa e consistente. Ou seja, deixar evidentes e definidas todas as funções requeridas pelo usuário. Além disso, não devem ter definições contraditórias. Completude significa que todos os serviços requeri- dos pelo usuário devem ser definidos. Consistência significa que os requisitos não devem ter definições contraditórias. Veja o seguinte exemplo, que trata de um conjunto de requisitos funcionais definidos para um sistema de gerenciamento de estoque e vendas: O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 10 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro Alguns outros exemplos de requisitos funcionais incluem: • Inserir dados em um formulário. • Buscar pratos específicos em um cardápio. • Consultar o status de um pedido. • Realizar compras. • Comunicar–se com um atendente. • Alterar informações de um registro. • Elaborar relatórios. Tudo o que for relacionado a uma ação a ser feita é considerado uma função. Requisitos Não Funcionais Os requisitos não funcionais, como o nome sugere, são requisitos que não estão direta- mente relacionados com os serviços específicos oferecidos pelo sistema a seus usuários. Os requisitos não funcionais podem estar relacionados às propriedades emergentes do sistema, como confiabilidade, tempo de resposta e ocupação de área. Também trata dos re- quisitos que definem as restrições sobre a implementação do sistema, como as capacida- des dos dispositivos de E/S ou as representações de dados usadas nas interfaces com ou- tros sistemas. Perceba que, tanto os requisitos funcionais, quanto os requisitos não funcionais possuem importância no desenvolvimento de um sistema de software. Entretanto, os requisitos não funcionais, também denominados de atributos de qualidade, têm um papel relevante durante o desenvolvimento de um sistema, atuando como critérios na seleção e/ou composição de uma arquitetura de software, dentre as várias alternativas de projeto. Os requisitos não funcionais são frequentemente mais críticos que requisitos funcionais individuais. Os usuários do sistema podem, geralmente, encontrar maneiras de contornar uma função do sistema que realmente não atenda a suas necessidades. No entanto, deixar de aten- der a um requisito não funcional pode significar a inutilização de todo o sistema. Por exemplo, se um sistema de aeronaves não cumprir seus requisitos de confiabilidade, não será certifica- do como um sistema seguro para operar. Se um sistema de controle embutido não atender aos requisitos de desempenho, as funções de controle não funcionarão corretamente. Os requisitos não funcionais surgem por meio das necessidades dos usuários, devido a restrições de orçamento, políticas organizacionais, necessidade de interoperabilidade com ou- tros sistemas de software ou hardware, ou a partir de fatores externos, como regulamentos de segurança ou legislações de privacidade. Enquanto os requisitos funcionais estão focados no que será feito, os requisitos não funcio- nais procuram descrever como será feito. O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 11 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro Todos os pré–requisitos do sistema, de hardware, de software e operacionais são docu- mentados separadamente. Entre as características técnicas que podem ser definidas estão: • Tipo de sistema operacional. • Hardware a ser utilizado. • Processamento. • Consumo de memória. • Conexão. • Banco de dados. • Tipos de dispositivos em que o software pode ser usado. A figura abaixo é uma classificação de requisitos não funcionais, conforme apresentado por Summerville (2011): No diagrama acima é possível ver que os requisitos não funcionais podem ser provenien- tes das características requeridas para o software (requisitos de produto), da organização que desenvolve o software (requisitos organizacionais ou requisitos de processo) ou de fontes externas (requisitos externos): • Requisitos de Produto: especificam ou restringem o comportamento do software. Exem- plos incluem os requisitos de desempenho quanto à rapidez com que o sistema deve executar e quanta memória ele requer, os requisitos de confiabilidade que estabelecem a taxa aceitável de falhas, os requisitos de proteção, e os requisitos de usabilidade. O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 12 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro • Requisitos Organizacionais ou Requisitos de Processo: requisitos gerais de sistemas derivados das políticas e procedimentos da organização do cliente e do desenvolve- dor. Ou seja, o software deve ser desenvolvido de acordo com as políticas e definições da empresa para garantir que o produto final gerado esteja em conformidade com as normas empresariais. Exemplos incluem os requisitos do processo operacional, que definem como o sistema será usado, os requisitos do processo de desenvolvimento que especificam a linguagem de programação, o ambiente de desenvolvimento ou normas de processo a serem usadas, bem como os requisitos ambientais, que especificam o ambiente operacional do sistema. • Requisitos Externos: abrange todos os requisitos que derivam de fatores externos ao sistema e seu processo de desenvolvimento. Podem incluir requisitos reguladores, que definem o que deve ser feito para que o sistema seja aprovado para uso, por um regula- dor, tal como um banco central, temostambém requisitos legais, que devem ser segui- dos para garantir que o sistema opere dentro da lei, e requisitos éticos, que asseguram que o sistema será aceitável para seus usuários e o público em geral. Requisitos de Usabilidade A usabilidade é um dos atributos de qualidade ou requisitos não funcionais de qualquer sistema interativo, ou seja, no qual ocorre interação entre o sistema e seres humanos (usu- ários). A noção de usabilidade decorre do fato de que qualquer sistema projetado para ser utilizado pelas pessoas deveria ser fácil de aprender e fácil de usar, tornando assim fácil e agradável a realização de qualquer tarefa. Os requisitos de usabilidade especificam tanto o nível de desempenho, quanto a satisfação do usuário no uso do sistema. Dessa forma, a usabilidade pode ser expressa em termos de: • Facilidade de aprender: associada ao tempo e esforço mínimo exigido para alcançar um determinado nível de desempenho no uso do sistema. • Facilidade de uso: relacionada à velocidade de execução de tarefas e à redução de erros no uso do sistema. Os requisitos de usabilidade são coletados juntamente com outros requisitos (de dados e funcionais) usando algumas das técnicas de elicitação de requisitos como entrevistas ou observação. A coleta desses dados pode ocorrer, por exemplo, verificando o log de ações do usuário quando do uso de funcionalidade do sistema. O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 13 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro Requisitos de Manutenibilidade O termo manutenção de software é geralmente empregado quando nos referimos às mo- dificações feitas após o software ser disponibilizado para uso. Na realidade, o termo manu- tenibilidade é um tanto abrangente já que ele envolve tanto a atividade de reparo (de algum defeito existente no sistema de software), quanto a atividade de alteração/evolução de carac- terísticas existentes, ou a adição de novas funcionalidades não previstas ou não capturadas no projeto inicial. O reparo de um sistema de software ocorre quando defeitos são detectados, fazendo–se necessária a correção destes. A capacidade de efetuar um reparo depende do número de componentes do sistema. Por exemplo, se o sistema é monolítico, ou seja, constituído de um único componente, então torna–se mais difícil efetuar o reparo se este sistema de software é de grande porte. No entanto, se o sistema de software é modularizado, então tende a ser mais fácil analisar e reparar o existente. Podemos dizer que a modularidade favorece a capacidade de fazer reparo, permitindo que defeitos fiquem confinados a poucos módulos, considerando– se que se tenha a funcionalidade adequadamente separada. Os sistemas de software também evoluem ao longo do tempo, seja com a adição de novas funcionalidades, ou com a modificação das existentes. Essa característica também influencia a manutenção do software. O requisito de manutenibilidade também está relacionado com a arquitetura de um sis- tema de software. A facilidade de fazer alteração no sistema existente, seja adicionando ou modificando alguma funcionalidade, depende muito da arquitetura deste. A arquitetura de sof- tware define seus os componentes e suas interconexões e, portanto, também define sob que circunstâncias componentes ou conectores podem ser alterados. Desta forma, uma arquitetu- ra ou estilo arquitetural de um sistema de software deveria efetivamente acomodar as modifi- cações que precisarem ser feitas tanto durante seu desenvolvimento, quanto após o sistema entrar em operação. Requisitos de Confiabilidade A confiabilidade de software é a probabilidade de o software não causar uma falha em um sistema durante um determinado período de tempo sob condições especificadas. A confiabilidade de software, geralmente definida em termos de comportamento estatís- tico, é a probabilidade que o software tem de operar como desejado num intervalo de tempo conhecido. A confiabilidade também é caracterizada como um atributo de qualidade de sof- tware, o qual implica que um sistema executará suas funções como esperado. Os requisitos de confiabilidade compreendem restrições sobre o comportamento do sis- tema de software em tempo de execução, e são definidos através de um conjunto de métricas de confiabilidade de software. O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 14 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro As falhas dos componentes de software costumam ser de natureza transitória, ou seja, ocorrem apenas para algumas entradas específicas, enquanto o sistema pode continuar ope- rando normalmente em outras circunstâncias. No caso de falhas de componentes de hardwa- re, essas podem ser de natureza permanente. Uma falha trata daquilo que é observado pelos usuários (externamente), enquanto os defeitos são de origem interna ao sistema e costumam ser os motivadores das falhas. Podemos utilizar várias métricas para avaliar a confiabilidade de software: • Disponibilidade: é uma medida de quão disponível o sistema estaria para efetuar um serviço solicitado por algum usuário. Por exemplo, um serviço de um sistema de softwa- re terá uma disponibilidade de 999/1000. Isto significa que dentre um conjunto de 1000 solicitações de serviço, 999 deverão ser atendidas. • Taxa de ocorrência de falha: é uma medida da frequência com que o sistema falha em prover um serviço como esperado pelo usuário. Por exemplo, se temos uma taxa de ocorrência de falha de 2/1000, isto significa que 2 falhas são prováveis de acontecerem para cada 1000 unidades de tempo. • Tempo médio entre falhas ou Mean Time Between Failures (MTBF): refere–se à quanti- dade média de tempo que um software, dispositivo ou produto funciona antes de falhar. Esta unidade de medida inclui apenas o tempo operacional entre falhas e não inclui os tempos de reparo, assumindo que, se houve falha, o item foi reparado e começou a funcionar novamente. Os valores de MTBF são frequentemente usados para projetar a probabilidade de uma única unidade falhar dentro de um certo período de tempo. • Tempo médio de reparo ou Mean Time to Repair (MTTR): é uma medida da capacidade de manutenção de um software, dispositivo ou produto, que informa o tempo médio necessário para reparo e retorno ao status normal de trabalho. A medida inclui o tempo de notificação, o diagnóstico, e o tempo gasto no reparo real, além de outras atividades necessárias para que o software, dispositivo ou produto possa ser usado novamente. • Tempo médio para a falha ou Mean Time to Failure (MTTF): é uma medida do tempo en- tre falhas observadas. Oferece um indicativo de quanto tempo o sistema permanecerá operacional antes que uma falha aconteça. Qualquer métrica que venha a ser utilizada para avaliar a confiabilidade de um sistema dependerá da forma como o sistema é usado. Note ainda que o tempo é um fator considerado nas métricas. Ele é escolhido de acordo com a aplicação. Há sistemas de software que operam de forma contínua, enquanto outros operam de maneira periódica. O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civile criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 15 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro Requisitos de Desempenho O desempenho é um atributo de qualidade importante para sistemas de software. Consi- dere, por exemplo, um sistema de uma administradora de cartões de crédito. Em tal sistema, um projetista ou engenheiro de software poderia considerar os requisitos de desempenho para obter uma resposta de tempo para autorização de compras por cartão. Os requisitos de desempenho podem afetar os requisitos de usabilidade de um sistema. Se um sistema de software é lento, ele certamente reduz a produtividade de seus usuários ao ponto de não atender suas necessidades. Além disso, se o sistema de software requer muito espaço em disco para armazenamento de informações, pode ser oneroso utilizá–lo. Se um sis- tema de software exige muita memória para ser executado, ele pode afetar outras aplicações que são executadas no mesmo ambiente. De um modo geral, os requisitos de desempenho podem ser decompostos em termos de tempo e espaço, como ilustrado na figura a seguir: Requisitos de Portabilidade A portabilidade pode ser definida como a facilidade com que o software pode ser trans- ferido de um sistema computacional ou ambiente para outro. Em outras palavras, o software é dito portável se ele pode ser executado em ambientes distintos. O termo ambiente pode se referir tanto à plataforma de hardware, quanto a um ambiente de software como, por exemplo, um sistema operacional específico. De um modo geral, a portabilidade refere–se à habilidade de executar um sistema em diferentes plataformas. Adicionalmente, podemos ter a portabilidade de componentes e a portabilidade de sis- temas. Esta última situação pode ser vista como caso especial de reusabilidade. O reuso de software ocorre quando todo o sistema de software é reutilizado, sendo implementado em diferentes sistemas computacionais. O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 16 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro Dois aspectos relevantes na portabilidade de programas são a transferência e adaptação. A transferência é o movimento de componente (código de um programa e dados associados) de um ambiente para outro. A adaptação engloba as modificações exigidas para fazer com que o programa seja executado em um novo ambiente. Uma abordagem geral que poderia ser adotada para obter um sistema portável seria sepa- rar as partes do sistema que dependem do ambiente externo em uma camada ou interface de portabilidade, conforme ilustrado na figura abaixo: A interface de portabilidade poderia ser projetada como um conjunto de tipos de dados ou objetos abstratos, onde os elementos não portáveis seriam encapsulados com o objetivo de esconder características do software da aplicação. Dessa forma, quando o software muda de hardware ou sistema operacional, apenas a interface de portabilidade precisaria ser alterada. Requisitos de Reusabilidade Componentes que já tenham sido desenvolvidos e testados podem ser reutilizados. Na en- genharia de software, uma das formas de reduzir custos de desenvolvimento e manutenção de sistemas de software, bem como os custos da obtenção de sistemas com qualidade elevada, é considerar a reusabilidade como requisito não funcional no desenvolvimento de novos sistemas. O reuso pode ser visto sob diferentes perspectivas, pode ser orientado a componentes, orientado a processos, ou orientado ao conhecimento específico de um domínio. Exemplos desse tipo de reuso são: • Aplicação: toda a aplicação poderia ser reutilizada. • Subsistemas: os principais subsistemas de uma aplicação poderiam ser reutilizados. • Objetos ou módulos: componentes de um sistema, englobando um conjunto de funções, podem ser reutilizados. • Funções: componentes de software que implementam uma única função (como uma função matemática) podem ser reutilizados. O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 17 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro Requisitos de Segurança Em um software, os requisitos de segurança costumam ser caracterizados para não per- mitir acessos não autorizados ao sistema ou software e aos seus dados, além de assegurar a integridade do sistema ou software quanto a ataques intencionais ou acidentes. Exemplos de requisitos de segurança são: • Apenas pessoas que tenham sido autenticadas por um componente de controle de acesso (identificação, autenticação e autorização) poderão visualizar informações e dados associados. • As permissões de acesso ao sistema podem ser alteradas apenas pelo administrador de sistemas. • Devem ser feitas cópias (backup) de todos os dados do sistema com uma frequência e retenção determinada, e estas cópias devem ser guardadas em um local seguro, sendo preferencialmente num local diferente de onde se encontra o sistema. • Todas as comunicações externas entre o servidor de dados do sistema e clientes devem ser criptografadas. Os requisitos não funcionais de segurança envolvem diferentes aspectos, como podemos observar na figura a seguir: • Disponibilidade: refere–se a assegurar o sistema contra qualquer interrupção de serviço. • Integridade: possui o objetivo de evitar o acesso ou atualizações não autorizadas. • Confidencialidade: a ênfase aqui é a de não permitir a revelação não autorizada de in- formações. • Segurança operacional: refere–se à fase considerada para o sistema em uso. Sempre que possível, os requisitos não funcionais devem ser escritos quantitativamente, para que possam ser objetivamente testados. A tabela a seguir mostra as métricas que você pode utilizar para especificar as propriedades não funcionais do sistema. Você pode medir essas características quando o sistema está sendo testado para verificar se ele tem cumprido ou não os seus requisitos não funcionais. O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 18 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro 1.3. documento de Requisitos de softwaRe O documento de requisitos de software ou Especificação de Requisitos de Software (SRS, do inglês Software Requirements Specification) é uma documentação formal do que é exigido dos desenvolvedores de sistema. Um documento de requisitos de software precisa ser claro, consistente e completo, pois servirá de referência aos desenvolvedores, gerente de projeto, engenheiros de software (res- ponsáveis pelos testes e manutenção do sistema), além de servir de base para definir o es- copo das funcionalidades a serem registradas num contrato. Os requisitos compreendem o cerne de qualquer produto, e as mudanças sobre eles podem ocorrer ao longo do ciclo de vida de um software. O documento deve incluir os requisitos de usuários para um sistema e uma especificação detalhada dos requisitos de sistema.Em alguns casos, os requisitos de usuário e requisitos de sistema podem ser integrados em uma única descrição. O documento de requisitos tem um conjunto diversificado de usuários, que vão desde a alta administração da organização que está pagando pelo sistema, até os engenheiros respon- sáveis pelo desenvolvimento do software. O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 19 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro A figura a seguir mostra os possíveis usuários do documento e como eles o utilizam: O documento de requisitos de software delimita o escopo do conjunto de funcionalidades que um sistema deve prover, bem como descreve os atributos de qualidade que devem ser suportados. Este documento deve ser elaborado de maneira precisa, completa, consistente e, principalmente, compreensível aos stakeholders (isto é, os principais interessados no sistema). O documento de requisitos de software será lido por várias pessoas interessadas no pro- jeto como, por exemplo, clientes, gerente de projeto, engenheiro de testes e programadores e, portanto, precisa comunicar com clareza os requisitos do sistema. O documento de requisitos de software de um projeto tem o objetivo de documentar o escopo do sistema a ser desenvolvido. Nesse sentido, o documento de requisitos deve conter: • Introdução e visão geral do documento; • Descrição de requisitos funcionais; • Descrição de requisitos não funcionais; • Escopo não contemplado (de funcionalidades). • Documentação de apoio. O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 20 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro O documento de requisitos de software serve como um termo de consenso entre a equipe técnica (desenvolvedores) e o cliente, e constitui a base para as atividades subsequentes do desenvolvimento do sistema, fornecendo um ponto de referência para qualquer validação fu- tura do software construído. Além disso, o documento de requisitos de software estabelece o escopo (o que faz parte e o que não faz parte) do sistema, abrangendo um conjunto diversificado de usuários, que vai desde a alta gerência da organização, que está pagando pelo sistema, até os engenheiros res- ponsáveis pelo desenvolvimento do software. O nível de detalhes que será incluído em um documento de requisitos de software de- pende do tipo de sistema em desenvolvimento e do processo usado. Os sistemas críticos precisam ter requisitos detalhados, porque a segurança e a proteção devem ser analisadas em detalhes. Quando o sistema está sendo desenvolvido por uma companhia separada (por exemplo, através de outsourcing), as especificações de sistema devem ser detalhadas e preci- sas. Se um processo interno de desenvolvimento iterativo é usado, o documento de requisitos pode ser muito menos detalhado, e quaisquer ambiguidades podem ser resolvidas durante o desenvolvimento do sistema. 1.4. especificação de Requisitos A especificação de requisitos é o processo de escrever os requisitos de usuário e requi- sitos de sistema em um documento de requisitos de software. Os requisitos de usuário e os requisitos de sistema devem ser claros, inequívocos, de fácil compreensão, completos e consistentes. Os requisitos de usuário para um sistema devem descrever os requisitos funcionais e não funcionais, de modo que sejam compreensíveis para os usuários do sistema que não possuem conhecimentos técnicos detalhados. Desta forma, é interessante que não sejam incluídos de- talhes da arquitetura ou projeto do sistema. Os requisitos de usuário são quase sempre escritos em linguagem natural, através do uso de tabelas simples, formas e diagramas intuitivos. Os requisitos de sistema também podem ser escritos em linguagem natural, mas também em outras notações com base em formulá- rios, modelos gráficos ou matemáticos de sistema. A tabela a seguir resume as notações que poderiam ser usadas para escrever os requisitos de sistema: O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 21 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro 1.5. pRocessos de engenhaRia de Requisitos Os processos de engenharia de requisitos podem incluir quatro atividades de alto nível. Essas atividades procuram avaliar se o sistema é útil para a empresa (estudo de viabilidade), descobrir os requisitos do sistema (elicitação e análise de requisitos), converter esses requisi- tos em algum documento formal ou em alguma forma–padrão (especificação de requisitos), e verificar se os requisitos realmente definem o sistema solicitado (validação de requisitos). A engenharia de requisitos é um processo iterativo em que as atividades são intercaladas. A figura abaixo apresenta esta intercalação entre as atividades: O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 22 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro As atividades são organizadas em torno de uma espiral, como um processo iterativo, sen- do a saída um documento de requisitos de sistema. A quantidade de tempo e esforço dedica- dos a cada atividade em cada iteração depende do estágio do processo como um todo e do tipo de sistema que está sendo desenvolvido. No início do processo, o esforço maior será a compreensão dos requisitos de negócio e não funcionais em alto nível, bem como dos requisi- tos de usuário para o sistema. Mais tarde no processo, nos anéis externos da espiral, o esforço maior será dedicado a elicitar e compreender os requisitos de sistema em detalhes. Isso significa dizer que, nesse modelo em espiral, os requisitos são desenvolvidos em di- ferentes níveis de detalhamento. Assim, no início do processo, o foco será em compreender os requisitos do negócio e requisitos não funcionais em alto nível, de uma forma abstrata, sem abordar detalhes, assim como os requisitos de usuário para o sistema. Mais tarde no proces- so, o foco será na elicitação e na compreensão dos requisitos do sistema de forma mais deta- lhada, trazendo uma abordagem de baixo nível. O número de iterações em torno da espiral pode variar, assim, a espiral pode acabar depois da definição de alguns ou de todos os requisitos de usuário. O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 23 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DESOFTWARE Sérgio Sierro A engenharia de requisitos pode ser considerada o processo de aplicação de um método de análise estruturada, como a análise orientada a objetos. Trata–se de analisar o sistema e desenvolver um conjunto de modelos gráficos de sistema, como modelos de casos de uso, que, então, servem como uma especificação do sistema. O conjunto de modelos descreve o comportamento do sistema e é anotado com informações adicionais, descrevendo, por exem- plo, o desempenho ou a confiabilidade requerida do sistema. Outro ponto que importa mencionar é que, em praticamente todos os sistemas, os requisitos podem passar por mudanças, seja para adicionar uma nova funcionalidade, ou uma nova carac- terística do sistema. As pessoas envolvidas desenvolvem uma melhor compreensão do que que- rem do software, a organização que compra o sistema também muda, modificações são feitas no hardware, no software, ou até mesmo no ambiente organizacional do sistema. O processo de gerenciamento das mudanças desses requisitos é chamado de gerenciamento de requisitos. 1.6. elicitação e análise de Requisitos Após um estudo inicial de viabilidade, o próximo estágio do processo de engenharia de re- quisitos é a elicitação e análise de requisitos. Serão obtidas informações sobre o domínio da aplicação, os serviços que o sistema deve oferecer, o desempenho do sistema, restrições de hardware e assim por diante. Pode envolver diversos tipos de pessoas em uma organização. O termo elicitar pode ser definido como “definir, tonar explícito, obter o máximo de informa- ções sobre o objeto em questão”. A elicitação de requisitos é o processo de buscar, descobrir, adquirir, e elaborar requisitos para sistemas. Um modelo do processo de elicitação e análise de requisitos é mostrado na figura a seguir: O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 24 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro Cada organização terá sua própria versão ou instância desse modelo geral, dependendo de fatores locais, como conhecimento do pessoal, o tipo de sistema a ser desenvolvido, as normas usadas etc. As atividades do processo de elicitação e análise de requisitos são: • 1 – Descoberta de requisitos: essa é a atividade de interação com os stakeholders do sistema para descobrir seus requisitos para o sistema; • 2 – Classificação e organização de requisitos: essa atividade toma a coleção de requisi- tos não estruturados, agrupa requisitos relacionados, e os organiza em grupos coerentes; • 3 – Priorização e negociação de requisitos: inevitavelmente, quando os vários stakehol- ders estão envolvidos, os requisitos entram em conflito. Essa atividade está relacionada com a priorização de requisitos e em encontrar e resolver os conflitos por meio da nego- ciação de requisitos; • 4 – Especificação de requisitos: os requisitos são documentados e inseridos no próxi- mo ciclo da espiral. Descoberta de Requisitos A descoberta de requisitos é o processo de reunir informações sobre o sistema requerido e separar dessas informações os requisitos de usuário e de sistema. Fontes de informação durante a fase de descoberta de requisitos incluem documentação, stakeholders do sistema e especificações de sistemas similares. São feitas interações com os stakeholders por meio da observação (etnografia) e de entrevistas, e cenários e protótipos podem ser usados para ajudar na compreensão do sistema. Os stakeholders variam desde os usuários finais, gerentes do sistema, podendo ser stake- holders externos, ou reguladores que certificam o sistema. Por exemplo, os stakeholders de um sistema de informação da saúde mental de pacientes podem incluir: • Os pacientes que possuem informações registradas no sistema; • Os médicos responsáveis pela avaliação e tratamento dos pacientes; • Os enfermeiros que, alinhados com os médicos, coordenam as consultas e administram tratamentos; • Os recepcionistas dos médicos, que gerenciam as consultas dos pacientes; • A equipe de TI que é responsável pela instalação e manutenção do sistema; • A equipe de registros médicos, responsável por garantir que as informações do sistema sejam mantidas e preservadas, e que os procedimentos de manutenção dos registros sejam devidamente implementados. O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 25 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro Durante o processo de elicitação de requisitos, os requisitos oriundos do domínio da apli- cação e de outros sistemas que interagem com o sistema específico devem ser considerados. Essas diferentes fontes de requisitos (stakeholders, domínio, sistemas) podem ser repre- sentadas como pontos de vista do sistema, com cada ponto de vista mostrando um subcon- junto dos requisitos para o sistema. Pontos de vista diferentes sobre um problema percebem o problema de maneiras diferentes. No entanto, suas perspectivas não são completamente independentes. Em geral, elas se sobrepõem e, dessa forma, apresentam requisitos comuns. Entrevistas Entrevistas formais ou informais com os stakeholders do sistema são parte da maioria dos processos de engenharia de requisitos. Nessas entrevistas, a equipe de engenharia de requisitos questiona sobre o sistema que usam no momento e sobre o sistema que será de- senvolvido. Requisitos surgem a partir das respostas a essas perguntas. As entrevistas podem ser de dois tipos: • Entrevistas fechadas: em que o stakeholder responde a um conjunto predefinido de per- guntas; • Entrevistas abertas: em que não existe uma agenda predefinida e a equipe de engenha- ria de requisitos explora uma série de questões com os stakeholders do sistema, assim, desenvolve uma melhor compreensão de suas necessidades. Na prática, as entrevistas com os stakeholders costumam ser uma mistura de ambos os tipos. Você poderá ter de obter a resposta a determinadas questões, mas é comum que estas levem a outras, discutidas de forma menos estruturada. Discussões totalmente abertas rara- mente funcionam bem. Geralmente, é necessário fazer algumas perguntas para começar e, então, manter a entrevista centrada no sistema que será desenvolvido. Entrevistas são boas para obter uma compreensão global sobre o que os stakeholders fazem, como eles podem interagir com o novo sistema, e as dificuldades que eles enfrentam com os sistemas atuais. Cenários Os cenários podem ser úteis para adicionar detalhes a uma descrição geral de requisi- tos. Cada cenário geralmente cobre um pequeno número de interações possíveis. Diferentes cenários são desenvolvidos e oferecem diversos tipos de informação em variados níveis de detalhamento sobre o sistema. Um cenário começa com um esboço da interação. Durante o processo de elicitação, são adicionados detalhes ao esboço, para criar uma descrição completa dessa interação. Em sua forma mais geral, um cenário pode incluir: • Uma descrição do que o sistema e os usuários esperam quando o cenário se iniciar; • Uma descrição do fluxo normal de eventos no cenário; O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.brhttps://www.grancursosonline.com.br 26 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro • Uma descrição do que pode dar errado e como isso é tratado; • Informações sobre outras atividades que podem acontecer ao mesmo tempo; • Uma descrição do estado do sistema quando o cenário acaba. A elicitação baseada em cenários envolve o trabalho com os stakeholders para identificar cenários e capturar detalhes que serão incluídos nesses cenários. Os cenários podem ser escritos como texto, suplementados por diagramas, telas etc. Além disso, também é possível usar uma abordagem mais estruturada, em que cenários de eventos ou casos de uso podem ser usados. Como exemplo de um cenário de texto simples, observe a figura a seguir: Casos de Uso Os casos de uso se tornaram uma característica fundamental da linguagem de modela- gem unificada (UML, do inglês Unified Modeling Language). Em sua forma mais simples, um caso de uso identifica os atores envolvidos em uma interação, e dá nome ao tipo de interação. Esta é, então, suplementada por informações adicionais que descrevem a interação com o sistema. A informação adicional pode ser uma descrição textual ou um ou mais modelos grá- ficos, como diagrama de sequência ou de estados da UML. Os casos de uso são documentados por um diagrama de casos de uso de alto nível. O conjunto de casos de uso representa todas as possíveis interações que serão descritas nos requisitos de sistema. O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 27 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro Atores, que podem ser pessoas ou outros sistemas, são representados como figuras ‘pali- to’. Cada classe de interação é representada por uma elipse. Linhas fazem a ligação entre os atores e a interação. Opcionalmente, pontas de flechas podem ser adicionadas às linhas para mostrar como a interação se inicia. Essa situação é ilustrada na figura a seguir, que mostra alguns dos casos de uso para o sistema de informações de pacientes: Os casos de uso identificam as interações individuais entre o sistema e seus usuários ou outros sistemas. Cada caso de uso deve ser documentado com uma descrição textual. Esta, por sua vez, pode ser ligada a outros modelos UML que desenvolverão o cenário com mais detalhes. Cenários e casos de uso são técnicas eficazes para elicitar requisitos dos stakeholders que vão interagir diretamente com o sistema. Cada tipo de interação pode ser representado como um caso de uso. No entanto, devido a seu foco nas interações com o sistema, eles não são tão eficazes para elicitar restrições ou requisitos de negócios e requisitos não funcionais em alto nível, ou para descobrir requisitos de domínio. Etnografia Os sistemas de software não existem isoladamente. Eles são usados em um contexto so- cial e organizacional, e requisitos de software do sistema podem ser derivados ou restringidos desse contexto. Geralmente, satisfazer a esses requisitos sociais e organizacionais é crítico para o sucesso do sistema. Uma razão pela qual muitos sistemas de software são entregues, mas nunca são usados, é que seus requisitos não levam em conta a forma como o contexto social e organizacional afeta o funcionamento prático do sistema. O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 28 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro Etnografia é uma técnica de observação que pode ser usada para compreender os proces- sos operacionais e ajudar a extrair os requisitos de apoio para esses processos. Uma imersão é realizada no ambiente de trabalho em que o sistema será usado. O trabalho do dia a dia é observado, e são feitas anotações sobre as tarefas reais em que os participantes estão envol- vidos. O valor da etnografia é que ela ajuda na identificação de requisitos implícitos do siste- ma que refletem as formas reais com que as pessoas trabalham, em vez de refletir processos formais definidos pela organização. A etnografia é particularmente eficaz para descobrir dois tipos de requisitos: • Requisitos derivados da maneira como as pessoas realmente trabalham, e não da forma como as definições dos processos dizem que deveriam trabalhar. Por exemplo, controlado- res de tráfego aéreo podem desligar um sistema de alerta de conflitos que detecta aerona- ves com rotas em colisão, embora os procedimentos de controle normal especifiquem que ele deve ser usado. Eles deliberadamente colocam a aeronave em caminhos conflitantes, por um curto período, para ajudar no gerenciamento do espaço aéreo. Sua estratégia de controle é projetada para assegurar que os aviões sejam afastados dessa rota conflitante antes que surjam problemas, e eles acham que o alarme de alerta distrai seu trabalho. • Requisitos derivados da cooperação e conhecimento das atividades de outras pessoas. Por exemplo, controladores de tráfego aéreo podem usar conhecimento do trabalho de outros controladores para prever o número de aeronaves que entrarão em seu setor de controle. Eles, então, modificam suas estratégias de controle, dependendo do volume de trabalho previsto. Portanto, um sistema ATC automatizado deve permitir que os con- troladores de um setor tenham alguma visibilidade do trabalho em setores adjacentes. A etnografia pode ser combinada com prototipação, conforme podemos observar na figu- ra a seguir: A etnografia informa o desenvolvimento do protótipo, para que menos ciclos de refinamento do protótipo sejam necessários. Além disso, a prototipação dá foco para a etnografia, ao identi- ficar problemas e questões que podem ser discutidos com o etnógrafo. Esse profissional deve procurar as respostas para essas perguntas durante a próxima fase do estudo do sistema. O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 29 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro 1.7. Validação de Requisitos A validação de requisitos é o processo em que se verifica se os requisitos definem o sis- tema que o cliente realmente quer. Ela se sobrepõe à análise, uma vez que está preocupada em encontrar problemas com os requisitos. Durante o processo de validação de requisitos, diferentes tipos de verificação devem ser efetuados com os requisitos no documento de requisitos. Essas verificações incluem: • Verificações de validade: um usuário pode pensar que é necessário um sistema para executar determinadas funções. No entanto, uma maior reflexão e uma análise mais aprofundada podem identificar funções necessárias, adicionais ou diferentes. Os sis- temas possuem diversas partes interessadas com diferentes necessidades, e qualquer conjunto de requisitos é inevitavelmente um compromisso com as partes interessadas. • Verificações de consistência: requisitos no documento não devem entrar em conflito, ou seja, não deve haver restrições contraditórias ou descrições diferentes da mesma função do sistema. • Verificaçõesde completude: o documento de requisitos deve incluir requisitos que de- finam todas as funções e as restrições pretendidas pelo usuário do sistema. • Verificações de realismo: usando o conhecimento das tecnologias existentes, os requisi- tos devem ser verificados para assegurar que realmente podem ser implementados, con- siderando as restrições de orçamento e cronograma para o desenvolvimento do sistema. • Verificabilidade: para reduzir o potencial de conflito entre o cliente e o contratante, os requisitos do sistema devem ser passíveis de verificação. Isso significa dizer que você deve ser capaz de escrever um conjunto de testes que demonstrem que o sistema en- tregue atende a cada requisito especificado. Existe uma série de técnicas de validação de requisitos que podem ser usadas individual- mente ou em conjunto: • Revisões de requisitos: os requisitos são analisados sistematicamente por uma equipe de revisores que verifica erros e inconsistências. • Prototipação: nessa abordagem para validação, um modelo executável do sistema é demonstrado para os usuários finais e clientes. Estes podem experimentar o modelo para verificar se ele atende a suas reais necessidades. • Geração de casos de teste: os requisitos devem ser testáveis. Se os testes forem con- cebidos como parte do processo de validação, isso frequentemente revela problemas de requisitos. Se é difícil ou impossível projetar um teste, isso normalmente significa que os requisitos serão difíceis de serem implementados e devem ser reconsiderados. O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 30 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro 1.8. geRenciamento de Requisitos O processo de gerenciamento de requisitos corresponde ao conjunto de atividades que auxilia a equipe do projeto a identificar, controlar e rastrear os requisitos, bem como as al- terações nos requisitos em muitos momentos do projeto. Em outras palavras, é o processo que gerencia mudanças nos requisitos de um sistema. Estas mudanças ocorrem conforme os clientes desenvolvem maior entendimento de suas reais necessidades. Os requisitos para sistemas de software de grande porte estão sempre mudando. Durante o processo de software, o entendimento das partes interessadas a respeito do problema está em constante mutação. Logo, os requisitos de sistema devem evoluir para refletir essas no- vas percepções do problema. O gerenciamento de requisitos é o processo de compreensão e controle das mudanças nos requisitos do sistema. É necessário se manter alinhado com as necessidades para conse- guir avaliar o impacto das mudanças nos requisitos. É preciso estabelecer um processo formal para fazer propostas de mudanças e relacionar essas mudanças às exigências do sistema. O processo formal de gerenciamento de requisitos deve começar assim que uma versão pre- liminar do documento de requisitos estiver disponível. No entanto, você deve começar a pla- nejar como gerenciar mudanças de requisitos durante o processo de elicitação de requisitos. Podemos definir que o gerenciamento de requisitos trata de um modelo sistemático para: • Identificar, organizar e documentar os requisitos do sistema; • Estabelecer e manter acordo entre o cliente e a equipe do projeto nos requisitos variá- veis do sistema. O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 31 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro Planejamento de Gerenciamento de Requisitos O planejamento é o primeiro estágio essencial no processo de gerenciamento de requisi- tos, e determina o nível de detalhamento requerido no gerenciamento de requisitos. Durante o estágio de gerenciamento de requisitos, você deve decidir sobre: • Identificação de requisitos: cada requisito deve ser identificado unicamente para poder ser comparado com outros requisitos e usado em avaliações de rastreabilidade. • Processo de gerenciamento de mudanças: esse é o conjunto de atividades que avaliam o impacto e o custo das mudanças. • Políticas de rastreabilidade: definem os relacionamentos entre cada requisito e entre os requisitos e o projeto de sistema que deve ser registrado. A política de rastreabilidade também deve definir como esses registros devem ser mantidos. • Ferramenta de apoio: gerenciamento de requisitos envolve o processamento de grandes quantidades de informações sobre os requisitos. Ferramentas que podem ser usadas variam desde sistemas especializados em gerenciamento de requisitos, até planilhas e sistemas de banco de dados simples. Gerenciamento de Mudança de Requisitos Após a aprovação do documento de requisitos, o gerenciamento de mudança de requi- sitos deve ser aplicado a todas as mudanças propostas aos requisitos de um sistema, como podemos observar na figura a seguir: A vantagem de se usar um processo formal de gerenciamento de mudanças é que todas as propostas de mudanças são tratadas de forma consistente, e as alterações nos documen- tos de requisitos são feitas de forma controlada. Existem três estágios principais em um processo de gerenciamento de mudanças: • Análise de problema e especificação de mudanças: o processo começa com um proble- ma de requisitos identificado ou, às vezes, com uma proposta específica de mudança. Durante esse estágio, o problema ou a proposta de mudança é analisada a fim de se verificar sua validade. Essa análise é transmitida a quem solicitou a mudança, que pode responder com uma proposta mais específica de mudança de requisitos, ou retirar a solicitação. O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 32 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro • Análise de mudanças e custos: o efeito da mudança proposta é avaliado por meio de informações de rastreabilidade e conhecimentos gerais dos requisitos do sistema. O custo de fazer a mudança é estimado em termos de modificações no documento de re- quisitos e, se apropriado, no projeto e na implementação do sistema. Uma vez que essa análise é concluída, será decidido se a mudança de requisitos será ou não incorporada. • Implementação de mudanças: o documento de requisitos e, quando necessário, o pro- jeto e implementação do sistema são modificados. Você deve organizar o documento de requisitos para poder fazer alterações sem ampla reformulação ou reorganização. Tal como acontece com os programas, a mutabilidade nos documentos é obtida minimi- zando–se as referências externas e tornando as seções do documento o mais modular possível. Assim, as seções individuais podem ser alteradas e substituídas sem afetar outras partes do documento. Se um novo requisito precisa ser implementado com urgência, há sempre a tentação de mu- dar o sistema e, em seguida, retrospectivamente modificar o documento de requisitos. Esse pro- cedimento deve ser evitado, pois quase inevitavelmente faz com que a especificação de requisi- tos e a implementação do sistema fiquem defasadas. Uma vez que mudanças no sistemaforam feitas, é fácil esquecer de incluir essas alterações no documento de requisitos, ou até mesmo acrescentar informações inconsistentes com a implementação no documento de requisitos. Processos ágeis de desenvolvimento, como o Extreme Programming, foram concebidos para lidar com requisitos mutáveis durante o processo de desenvolvimento. Nesses proces- sos, quando um usuário propõe uma mudança nos requisitos, a mudança não passa por um processo formal de gerenciamento de mudanças. Pelo contrário, o usuário precisa priorizar essa mudança e, em caso de alta prioridade, decidir quais recursos do sistema planejados para a próxima iteração devem ser abandonados. 2. diagRama de casos de uso O diagrama de caso de uso descreve a funcionalidade proposta para um novo sistema que será projetado. Trata–se de uma excelente ferramenta para o levantamento dos requisitos funcionais do sistema. Um caso de uso é um documento narrativo que descreve a sequência de eventos de um ator que usa um sistema para completar um processo. Um caso de uso representa uma unidade discreta da interação entre um ator (humano, dispositivo ou outro software) e o sistema. Um caso de uso é uma unidade de um trabalho significante. Por exemplo, o “login para o sistema”, “registrar no sistema” e “criar pedidos” são todos casos de uso. Cada caso de uso tem uma descrição da funcionalidade que será construída no sistema proposto. Um caso de uso pode “incluir” outra funcionalidade de caso de uso ou “estender” outro caso de uso com seu próprio comportamento. O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 33 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro Os casos de uso são tipicamente relacionados a “atores”. Um ator é um humano ou entida- de máquina que interage com o sistema para executar um trabalho significativo. O objetivo do diagrama de caso de uso é demonstrar as diferentes maneiras com que o usuário pode interagir com um sistema. O diagrama de caso de uso não oferece muitos detalhes. Em vez disso, oferece uma visão geral do relacionamento entre casos de uso, atores e sistemas. O diagrama de caso de uso resume os detalhes dos usuários do seu sistema (também conhecidos como atores) e as interações deles com o sistema. O caso de uso é representado por uma forma oval rotulada. Os atores no processo são representados por bonecos palito, e a participação do ator no sistema é modelada com uma linha entre o ator e o caso de uso. Para representar o limite do sistema, desenhe uma caixa em torno do próprio caso de uso. O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 34 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro Para entender o que é um diagrama de caso de uso, é necessário primeiro saber como é ele feito. Assim, vale pontuar seus componentes comuns: • Atores: os usuários que interagem com o sistema. Ator pode ser uma pessoa, organi- zação ou sistema externo que interage com seu aplicativo ou sistema. Eles devem ser objetos externos que produzam ou consumam dados. • Sistema: uma sequência específica de ações e interações entre os atores e o sistema. O sistema também pode ser chamado de cenário. • Metas: o resultado final da maioria dos casos de uso. Um diagrama criado corretamente deve descrever as atividades e variantes usadas para atingir a meta. Como podemos observar, o diagrama é composto por desenhos simples que descrevem de maneira bem objetiva o que textualmente poderia ficar extenso. Nele, é possível ver as fun- cionalidades do sistema e as interações dos usuários com elas. O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 35 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro Para melhorar um pouco mais esse diagrama, vamos ver o conceito de <>. Include e extend são relações entre os casos de uso. • Include: seria a relação de um caso de uso que, para ter sua funcionalidade executada, precisa chamar outro caso de uso. • Extend: Esta relação significa que o caso de uso estendido vai funcionar exatamente como o caso de uso base, porém alguns passos novos serão inseridos no caso de uso estendido. O diagrama de casos de uso corresponde a uma visão externa do sistema e representa graficamente os atores, os casos de uso, e os relacionamentos entre estes elementos. O dia- grama tem como objetivo ilustrar, em um nível alto de abstração, quais elementos externos interagem com que funcionalidades do sistema, ou seja, a finalidade de um diagrama de caso de uso é apresentar um tipo de diagrama de contexto que apresenta os elementos externos de um sistema e as maneiras que eles as utilizam. O conteúdo deste livro eletrônico é licenciado para Nome do Concurseiro(a) - 000.000.000-00, vedada, por quaisquer meios e a qualquer título, a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal. https://www.grancursosonline.com.br https://www.grancursosonline.com.br 36 de 64www.grancursosonline.com.br Requisitos de Software. Casos de Uso e Diagramas de Caso de Uso ENGENHARIA DE SOFTWARE Sérgio Sierro RESUMO • Engenharia de Requisitos – Na engenharia de software, a análise de requisitos, ou en- genharia de requisitos, engloba todas as tarefas que lidam com investigação, definição e escopo de novos sistemas ou alterações. A análise de requisitos é uma parte impor- tante do processo de desenvolvimento de softwares, em que o engenheiro de requisitos e o analista de negócio, juntamente com engenheiro de sistema ou desenvolvedor de software, identificam as necessidades ou requisitos de um cliente. Um requisito é a capacidade pela qual um resultado do projeto (produto ou serviço) deve obedecer. Uma vez que os requisitos do sistema tenham sido identificados, os projetistas de sistemas estarão preparados para projetar a solução. A engenharia de requisitos abrange sete tarefas distintas: concepção, levantamento, elaboração, negociação, especificação, validação e gestão. − Requisitos de Software – No âmbito da engenharia de software, um requisito consis- te na definição documentada de uma propriedade ou comportamento que um pro- duto ou serviço em particular deve atender. Esses diferentes níveis de descrição de requisitos podem ser definidos como: ◦ Requisitos de usuário são declarações, em uma linguagem natural com diagra- mas, de quais serviços o sistema deverá fornecer a seus usuários e as restrições com as quais este deve operar. ◦ Requisitos de sistema são descrições mais detalhadas das funções, serviços e restrições operacionais do sistema de software. O documento de requisitos do sistema (às vezes, chamado especificação funcional) deve definir exatamente o que deve ser implementado. − Requisitos Funcionais e Requisitos Não Funcionais – Os requisitos de software são frequentemente classificados como requisitos funcionais e requisitos não funcionais: ◦ Requisitos Funcionais: são declarações de serviços que o sistema
Compartilhar