Baixe o app para aproveitar ainda mais
Prévia do material em texto
Disciplina: Engenharia de Software Live final de revisão Facilitadora: Sheila Katherine Venero Ferro Modelos de processo de software ❏Receitas e/ou descrições de como o desenvolvimento de software deveria ser ❏Modelos mais comuns: ❏ Cascata ❏ Incremental ❏ Orientado a reuso Requisitos Produto Atividades fundamentais da ES ❏ Especificação de software: a funcionalidade do software e as restrições a seu funcionamento devem ser definidas; ❏ Projeto e implementação de software: produzir para atender às especificações; ❏ Validação de software: o software deve ser validado para garantir que atenda às demandas do cliente; e ❏ Evolução do software: o software deve evoluir para atender às necessidades de mudança dos clientes. Métodos Ágeis Pretende-se valorizar mais indivíduos e interações do que processos e ferramentas, software em funcionamento do que documentação abrangente, colaboração do cliente do que negociação de contrato, respostas a mudanças do que seguir um plano. ● XP ● Scrum Engenharia de requisitos Requisitos ❏Un requisito é uma característica do sistema ou descrição de algo que o sistema é capaz de realizar, para atingir seus objetivos. ❏Descrições das restrições sobre o funcionamento do que o sistema. ❏Refletem as necessidades dos clientes que servem a uma finalidade determinada. Níveis de requisitos ❏ Requisito de usuário: ❏ Linguagem natural (podendo ser apoiado por diagramas) ❏ Quais serviços o sistema deverá fornecer a seus usuários ❏ Quais restrições com as quais o sistema deverá operar ❏ Requisitos de sistema: ❏ Costuma ser chamado de “especificação de requisitos” ❏ Deve definir exatamente o que deve ser implementado ❏ Pode ser parte do contrato entre comprador/desenvolvedores Tipos de requisitos ❏ Requisitos funcionais ❏ Declarações de serviços que o sistema deve fornecer e como reagir a entradas específicas ❏ Declarações de como o sistema deve se comportar em determinadas situações. ❏ Declarações do que o sistema não deve fazer. ❏ Requisitos não funcionais ❏ Restrições aos serviços ou funções oferecidos pelo sistema. ❏ Incluem restrições de tempo, restrições no processo de desenvolvimento e restrições impostas por normas. ❏ Geralmente, aplicam-se ao sistema como um todo. Sommerville (2011) Processo de Engenharia de Requisitos Sommerville (2011) Descoberta requisitos ❏ Fontes de informação: documentação, clientes/usuários do sistema e especificações de sistemas similares. ❏ Ferramentas/técnicas: observação / etnografia (imersão), entrevistas, cenários, protótipos. Modelagem de Software Modelagem de sistemas é o processo de desenvolvimento de modelos abstratos de um sistema, representando diferentes visões ou perspectivas do sistema. A UML (linguagem unificada de modelagem) é a notação gráfica preferida atualmente. Diagramas ❏ Diagrama de classes: representa as estruturas estáticas de um sistema e/ou contexto. ❏ Diagrama de casos de uso: mostra as funcionalidades do sistema que estarão disponíveis para os diversos atores (tipos de usuários) ❏ Diagrama de atividades: mostra as atividades envolvidas em um processo, para representar a lógica interna de uma classe ou método, definindo os algoritmos que serão utilizados em uma implementação; ❏ Diagramas de sequência: mostram as interações (trocas de mensagens) entre os atores e os componentes do sistema (objetos das classes); ❏ Diagrama de estados: utilizada para descrever como o sistema reage a ocorrência de eventos externos. Projeto de Arquitetura O projeto de arquitetura define como o sistema está organizado e qual é a sua estrutura geral. O estilo e a estrutura da arquitetura escolhida para um sistema devem depender dos requisitos não funcionais. RNF a ser considerados na Arquitetura ● Desempenho: a arquitetura deve ser projetada para localizar as operações críticas. ● Proteção: deve-se usar uma estrutura em camadas para a arquitetura, com os ativos mais críticos protegidos nas camadas mais internas e com alto nível de validação de proteção aplicado a essas camadas. ● Segurança: a arquitetura deve ser concebida de modo que as operações relacionadas com a segurança estejam localizadas em um único componente ou em um pequeno número de componentes. Isso reduz os custos e os problemas de validação de segurança e torna possível fornecer sistemas de proteção relacionados que podem desligar o sistema de maneira segura em caso de falha. RNF a ser considerados na Arquitetura ● Disponibilidade: a arquitetura deve ser projetada para incluir componentes redundantes, de modo que seja possível substituir e atualizar componentes sem parar o sistema. ● Manutenção: a arquitetura do sistema deve ser projetada a partir de componentes autocontidos de baixa granularidade que podem ser rapidamente alterados. Os produtores de dados devem ser separados dos consumidores e as estruturas de dados compartilhadas devem ser evitadas Visões da arquitetura ●Modelo de visão 4+1 (Modelo de Kruchten) ● a visão lógica, que mostra as abstrações fundamentais do sistema como objetos ou classes de objetos (em que deveria ser possível relacionar os requisitos de sistema às entidades); ● a visão de processo, que mostra como, em tempo de execução, o sistema é composto por processos interativos (útil para fazer julgamentos sobre as características não funcionais do sistema); ● a visão de desenvolvimento, que mostra como o software é decomposto para o desenvolvimento, ou seja, apresenta a distribuição do software em componentes que são implementados por um único desenvolvedor ou por uma equipe de desenvolvimento (útil para gerentes de software e programadores); e ● a visão física, que mostra o hardware do sistema e como os componentes de software são distribuídos entre os processadores (útil para a implantação do sistema) Sommerville (2011) Padrão MVC Sommerville (2011) Sommerville (2011) Arquitetura em Camadas Sommerville (2011) Sommerville (2011) Padrão Repositorio Sommerville (2011) Sommerville (2011) Padrão Cliente-Servidor Sommerville (2011) Arquitetura SOA As arquiteturas orientadas a serviços são uma forma de desenvolvimento de sistemas distribuídos em que os componentes de sistema são serviços autônomos, executando em computadores geograficamente distribuídos. Protocolos padrões baseados em XML, SOAP e WSDL foram projetados para oferecer suporte à comunicação de serviços e à troca de informações. Assim, os serviços são plataforma e implementação independentes de linguagem. Padrões SOA para Web ❏ SOAP: padrão de troca de mensagens que oferece suporte à comunicação entre serviços. Define os componentes essenciais e opcionais das mensagens passadas entre os serviços. ❏ WSDL: linguagem de definição de web services (web service definition language) é um padrão para a definição de serviço. Estabelece como as operações de serviço (nomes de operação, parâmetros e seus tipos) e associações de serviço devem ser definidas. ❏ WS-BPEL: padrão para linguagem de workflow, usada para definir programas de processos que envolvem vários serviços diferentes. ❏ UDDI: padrão de descoberta de serviços que não foi amplamente adotado (universal description, discovery and integration), define os componentes de uma especificação de serviço e pode ser utilizado para descobrir a existência do serviço. Acabou sendo substituído por mecanismos de busca padrão. Teste de Software O processo de teste tem dois objetivos distintos: ❏ Demonstrar ao desenvolvedor e ao cliente que o software atende a seus requisitos; e ❏ Descobrir situações em que o software se comporte de maneira incorreta, indesejável ou de forma diferente da especificação. Nomenclatura usual Erro Defeito Falha Engano BugDefect Error Failure Mistake Fault ❏ Teste de desenvolvimento, em que o sistema é testado durante o desenvolvimento para descobrir bugs e defeitos. Projetistas e programadorespodem estar envolvidos no processo de teste. ❏ Teste de release, em que uma equipe de teste independente testa uma versão completa do sistema antes que ele seja liberado para o usuário. O objetivo dos testes de release é verificar se o sistema atende aos requisitos dos stakeholders. ❏ Testes de usuário, em que os usuários ou potenciais usuários de um sistema testam o sistema em seu próprio ambiente Fases de Teste Sommerville (2011) Etapas de teste Níveis de Granularidade ❏ teste unitário, em que as unidades individuais do programa são testadas individualmente; ❏ teste de componentes, em que várias unidades individuais são integradas para criar componentes compostos (testes de componentes devem centrar-se em testar as interfaces dos componentes); e ❏ teste de sistema, em que alguns ou todos os componentes de um sistema estão integrados e o sistema é testado como um todo. Níveis de teste X Fases de desenvolvimento Modelo em V (Imagem de Herman Bruyninckx) REÚSO E ENGENHARIA DE SOFTWARE BASEADA EM COMPONENTES o reúso de software serve para diminuir custo, aumentar qualidade e fazer entregas mais rápidas Níveis de Reuso ❏ Nível de abstração: não se reusa o software diretamente, mas sim o conhecimento das abstrações de sucesso no projeto de software. Os padrões de projeto e de arquitetura são formas de representar o conhecimento abstrato para reúso. ❏ Nível de objeto: reusam-se objetos diretamente de uma biblioteca, ao invés de se escrever o código. ❏ Nível de componente: são coleções de objetos e classes de objetos que funcionam em conjunto para fornecer funções e serviços relacionados. ❏ Nível de sistema: em que se reusa um sistema de aplicação inteiro com algum tipo de configuração desses sistemas. Bibliografia base ●I. Sommerville, Engenharia de software, 9a ed., Pearson, 2011. ●S. L. Pfleeger, Engenharia de software: teoria e prática, 2a ed., Pearson, 2004. ●E. Medeiros, Desenvolvendo software com UML 2.0: definitivo, Pearson, 2004. Obrigada Estes slides são uma adaptação dos slides fornecidos pela UNIVESP da disciplina de Engenharia de Software Dúvidas? sheila.ferro@cursos.univesp.br
Compartilhar