Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Teoria de Engenharia de Software Aula 3 Processo de Desenvolvimento de Software e UML Prof. Rafael Targino rtargino@unicarioca.edu.br 2 O conteúdo desta aula foi parcialmente baseado nos slides disponíveis para o livro: Engenharia de Software Engenharia de Software – Conceitos e Práticas Raul Sidnei Wazlawick, Elsevier, 1a edição, 2013 2 3 Resumo da Última Aula • A Importância do Software – O Software Pervasivo – A Evolução do Software – Características do Software • A Crise do Software – Casos de Insucesso – Mitos do Software – Causas • Engenharia de Software – Elementos da Engenharia de Software – Processos, Métodos e Ferramentas – Processo de Desenvolvimento de Software Engenharia de Software 4 Conteúdo da Aula • O que é um Processo? • Processo de Desenvolvimento de Software – Cascata – Modelo V – Modelo Evolucionário – Prototipação – Iterativo e Incremental – Espiral – RUP – Metodologias Ágeis • UML • Ferramentas Engenharia de Software 3 5 O que é um Processo? • Processo é um conjunto de atividades que são executadas de forma sequencial para atingir algum objetivo – Atividades Interdependentes – Com responsáveis – Com entradas e saídas definidas Engenharia de Software 6 Exemplo Receita de Bolo 1. Bata as claras em neve e reserve 2. Bata bem as gemas com a margarina e o açúcar 3. Adicione o leite e farinha aos poucos sem parar de bater 4. Por último agregue as claras em neve e o fermento 5. Unte uma forma grande de furo central com manteiga e farinha 6. Coloque a massa na forma 7. Asse em forno médio, pré - aquecido, por aproximadamente 40 minutos Engenharia de Software 4 7 Representação Receita de Bolo em Diagrama Engenharia de Software Bater as Claras Bater as Gemas Adicionar o Leite e Farinha Adicionar as Claras Untar Forma Colocar no Forno 8 Qual a Vantagem de se ter uma Receita de Bolo? • Ensinar como se faz o bolo • Diminuir o risco de dar alguma coisa errada • O produto final sempre ser o mesmo (ou muito parecido) • Se o bolo ficar muito bom, a receita pode ser compartilhada com outras pessoas Engenharia de Software 5 9 Qual a vantagem de um Processo de Desenvolvimento de Software? • Ensinar como se faz o software • Diminuir o risco de dar alguma coisa errada • O produto final sempre ser o mesmo – no caso, sempre ser um produto de qualidade de acordo com as especificações do usuário • Se o software for desenvolvido no tempo e custo esperado, o processo pode ser seguido em outros projetos Engenharia de Software 10 O que é um Processo ? • Um processo na Engenharia de Software é formado por um conjunto de passos (atividades) parcialmente ordenados, relacionados com artefatos, pessoas, recursos, estruturas organizacionais e restrições, tendo como objetivo produzir e manter os produtos de software finais requeridos. Engenharia de Software • Um processo na Engenharia de Software é formado por um conjunto de passos (atividades) parcialmente ordenados, relacionados com artefatos, pessoas, recursos, estruturas organizacionais e restrições, tendo como objetivo produzir e manter os produtos de software finais requeridos. 6 11 Artefatos • Qualquer subproduto produzido durante o desenvolvimento do software • Pode ser um documento, uma lista, um diagrama, um desenho, um código fonte, um relatório de teste, etc. Engenharia de Software Artefatos de Entrada Artefatos de Saída 12 Atividades - Um Conjunto de Passos parcialmente ordenados • Uma descrição, que deve dizer em palavras simples e diretas o que deve ser feito para que a atividade seja realizada • Normalmente produz um artefato de saída a partir dos artefatos de entrada Engenharia de Software Atividade Artefatos de Entrada Artefatos de Saída 7 13 Pessoas • Cada uma das atividades são executadas por uma ou mais pessoas desempenhando um Papel específico • Uma pessoa pode assumir vários Papéis Engenharia de Software Atividade Artefatos de Entrada Artefatos de Saída Pessoas 14 Recursos • O que será utilizado na execução de uma atividade – Consumíveis – Não Consumíveis Engenharia de Software Atividade Artefatos de Entrada Artefatos de Saída Recursos Pessoas 8 15 Restrições • Restrições sobre como as atividades podem ser executadas • Estabelecem limites Engenharia de Software Atividade Artefatos de Entrada Artefatos de Saída Recursos Restrições Pessoas 16 Representar e Descrever Processos • A melhor maneira para representar um processo é através da utilização de modelos e diagramas • A melhor maneira para descrever um processo mais detalhado é através de um documento estruturado Engenharia de Software 9 17 Exemplo: Representando um Processo com Diagramas Engenharia de Software 18 Exemplo: Descrevendo um Processo com Documentos Estruturados Engenharia de Software 10 19 Exemplo: Descrevendo um Processo com Documentos Estruturados Engenharia de Software 20 Exercícios • No contexto dos usuários finais de um sistema de gestão acadêmica universitária, informe uma pessoa que pode assumir dois papéis diferentes na utilização do sistema • Considerando o professor na atividade de “Ministrar Aula” defina exemplos de: – Artefatos de Entrada – Responsável pela Atividade (pessoa) – Participante da Atividade (pessoa) – Recursos – Restrições – Artefatos de Saída Engenharia de Software 11 21 Conteúdo da Aula • O que é um Processo? • Processo de Desenvolvimento de Software – Cascata – Modelo V – Modelo Evolucionário – Prototipação – Iterativo e Incremental – Espiral – RUP – Metodologias Ágeis • UML • Ferramentas Engenharia de Software 22 Processo de Desenvolvimento de Software • Um Processo de desenvolvimento define: – O que – Quando – Como • Também chamado de Metodologia Engenharia de Software 12 Padrões Genéricos de Processos Engenharia de Software Fluxo de Processo Linear Fluxo de Processo Iterativo Fluxo de Processo Evolucionário Fluxo de Processo Paralelo 24 Questões que determinam a escolha de um processo • Quão bem os analistas e o cliente podem conhecer os requisitos do sistema? • Quão bem é compreendida a arquitetura do sistema? • Qual o grau de confiabilidade necessário em relação ao cronograma? • Quanto planejamento é efetivamente necessário? • Qual o grau de risco que este projeto apresenta? • Será necessário entregar partes do sistema funcionando antes de terminar o projeto todo? • Será desenvolvido um único sistema ou uma família de sistemas semelhantes? • Qual o tamanho do projeto? Engenharia de Software 13 25 Papéis e Atividades no Desenvolvimento de Software Usuários Problema Entendimento do problema Verificação &Validação Projeto da Solução Testes Time de Desenvolvimento Programadores Testadores Designers Gerente de Projetos Analistas de Sistemas Arquitetos de Software Implantação Levantamento de Requisitos Análise de Requisitos Projeto Implementação Testes Implantação Desenvolvimento do Sistema 26 Modelo de Ciclo de Vida em Cascata • Método sistemáticoe sequencial • O resultado de uma fase se constitui na entrada da outra • Também conhecido como Modelo Clássico 14 27 Problemas Modelo de Ciclo de Vida em Cascata • Rigidez do processo • Projetos reais raramente seguem um fluxo seqüencial • Assume que é possível declarar detalhadamente todos os requisitos antes do início das demais fases do desenvolvimento. – propagação de erros pelas as fases do processo. • Uma versão de produção do sistema não estará pronta até que o ciclo do projeto de desenvolvimento chegue ao final. 28 Modelo V Engenharia de Software 15 29 Modelo V • Permite, em caso de anomalia, delimitar um retorno às etapas precedentes • Enfatiza a importância de considerar as atividades de testes durante o processo, ao invés de um teste posterior após o término do processo • Pode-se obter a retroalimentação mais rapidamente • Ajuda a desenvolver novos requisitos • Melhora a qualidade do produto resultante. Engenharia de Software 30 Modelo Evolucionário • Tem com base a ideia de desenvolver uma implementação inicial, expor o resultado ao comentário do usuário e fazer seu aprimoramento por meio de muitas versões, até que tenha sido desenvolvido; Engenharia de Software 16 31 Modelo Evolucionário • A especificação, desenvolvimento e validação são executados concorrentemente Engenharia de Software 32 Modelo Evolucionário • Pode ser: – Exploratório: tem como objetivo trabalhar com o cliente a fim de explorar seus requisitos e entregar um sistema final. São feitas partes inicias e acrescentadas novas de acordo com o desenvolvimento. – Protótipos descartáveis: tenta compreender os melhor os requisitos a partir de protótipos e então desenvolver uma especificação de requisitos completa. Engenharia de Software 17 33 Modelo Evolucionário • Problemas: – O processo não é visível: como o sistema é desenvolvido rapidamente, não há tempo de documentar as versões; – Os sistemas são mal-estruturados: mudanças constantes podem corromper a estrutura do software; – Requer ferramentas e técnicas especiais: que nem sempre são disponíveis ou são aplicáveis ao caso. Engenharia de Software 34 Prototipação 18 35 Prototipação • Tem como objetivo de assegurar que os requisitos do sistema foram bem entendidos. • Técnica frequentemente aplicada quando: – há dificuldades no entendimento dos requisitos do sistema – há requisitos que precisam ser mais bem entendidos – O próprio usuário não tem compreensão completa do problema Engenharia de Software 36 Prototipação Engenharia de Software 19 37 Novo Modelo de Ciclo de Vida Vamos assumir nossa incompetência em planejamento a longo prazo e vamos dividir o planejamento em pequenos pedaços chamados de iteração! Ciclo de Vida Incrementa e Iterativo 38 Vários Mini-Cascatas • Cada cascata é uma iteração... I t e r a ç ã o 1 I t e r a ç ã o 2 I t e r a ç ã o 3 20 39 Modelo Iterativo e Incremental • Dividir para conquistar • O desenvolvimento ocorre em várias iterações, cada uma delas resultando em extensão de funcionamento e/ou maior conhecimento do sistema • As funcionalidades mais críticas devem ser tratadas nas primeiras iterações Engenharia de Software Modelo Iterativo e Incremental Incremental Iterativo 21 41 Modelo Iterativo e Incremental • Vantagens – Antecipa possíveis problemas no desenvolvimento de software através de versões preliminares – Entrega acelerado dos serviços ao cliente – Engajamento do usuário do sistema com o processo de desenvolvimento – Redução do risco de lançar o projeto no mercado fora da data planejada. Identificando os riscos numa fase inicial o esforço despendido para gerenciá-los ocorre cedo, quando as pessoas estão sob menos pressão do que numa fase final de projeto. 42 Modelo Iterativo e Incremental • Desvantagens –Passa a ter uma camada a mais de gerenciamento, que é o controle e a ordem de cada iteração –Problemas Contratuais pois o software desenvolvido pode caminhar para um produto muito diferente do que foi contratado Engenharia de Software 22 43 Processo em Espiral – preocupação explícita com os riscos do projeto de desenvolvimento Processo em Espiral – uma volta da espiral representa uma única fase de desenvolvimento de software 23 45 Processo em Espiral • O processo é representado por uma espiral ao invés de ser representado como uma sequencia de atividades • Cada volta da espiral (loop) representa uma única fase de desenvolvimento de software • Capacita o desenvolvedor e o cliente a entender e a reagir aos riscos em cada etapa evolutiva • Engloba as melhores características do ciclo de vida Clássico como o da Prototipação adicionando um novo elemento: a Análise de Riscos Engenharia de Software 46 Processo em Espiral: Setores da Espiral 1. Planejamento – O projeto é revisado e a próxima fase da espiral é planejada 2. Análise de Risco – Os riscos são avaliados e são adotadas as atividades para reduzir os ricos principais 3. Engenharia ou Desenvolvimento – É escolhido um modelo de desenvolvimento para o sistema, que pode ser qualquer um dos modelos genéricos 4. Análise do Cliente / Definição dos Objetivos – Identificam-se os objetivos específicos da próxima fase Engenharia de Software 24 47 RUP 48 Métodos Ágeis 25 49 Conclusão • A maneira de construir software evoluiu bastantes nas últimas décadas – Definição cada vez mais detalhada dos Processos – Inclusão de técnicas adicionais para garantir o sucesso de cada uma das fases – Utilização de iterações cada vez menores 50 Questões de Concursos Dentro da Engenharia de Software, encontramos uma gama de conceitos. Embasado nisso, analise as assertivas e assinale a alternativa que aponta a(s) correta(s) sobre Processos de Software. I. Podemos definir um processo de software como um conjunto de atividades relacionadas que levam à produção de um produto de software. II. A definição das funcionalidades do software e as restrições a seu funcionamento devem ser definidas na produção de um software. Essa atividade está incluída no processo de software. 26 51 Questões de Concursos III. A validação de software também é uma atividade presente no processo de software. IV. Os processos de software são complexos e, como todos os processos intelectuais e criativos, dependem de pessoas para tomar decisões e fazer julgamentos. Não existe um processo ideal, a maioria das organizações desenvolve seus próprios processos de desenvolvimento de software. a) Apenas I. b) Apenas I e III. c) Apenas I e IV. d) Apenas II, III e IV. e) I, II, III e IV. 52 Questões de Concursos Um modelo de processo de software é uma representação abstrata de um processo de software. Nesse contexto, analise os dois métodos abaixo, amplamente utilizados na prática atual da engenharia de software. I- Abordagem que considera as atividades fundamentais do processo, compreendendo especificação,desenvolvimento, validação e evolução, e as representa como fases de processo separadas, tais como especificação de requisitos, projeto de software, implementação, teste, e assim por diante. II- Abordagem que intercala as atividades de especificação, desenvolvimento e validação, sendo um sistema desenvolvido rapidamentebaseado em especificações abstratas, quando, então, é refinado com as entradas do cliente para produzir um sistema que satisfaça as suas necessidades. Engenharia de Software 27 53 Questões de Concursos • Essas definições caracterizam duas abordagens, respectivamente denominadas Métodos de Processos: a) em blocos e baseado em componentes b) em interações e baseado em módulos estruturados c) em protótipos e baseado em validações sucessivas d) em espiral e baseado na implementação incremental e) em cascata e baseado no desenvolvimento evolucionário Engenharia de Software 54 Conteúdo da Aula • O que é um Processo? • Processo de Desenvolvimento de Software – Cascata – Modelo V – Modelo Evolucionário – Prototipação – Iterativo e Incremental – Espiral – RUP – Metodologias Ágeis • UML • Ferramentas Engenharia de Software 28 55 Paradigma • Um paradigma é uma forma de abordar um problema. • No contexto da modelagem de um sistema de software, um paradigma tem a ver com a forma pela qual esse sistema é entendido e construído. • A primeira abordagem usada para modelagem de sistemas de software foi o paradigma estruturado. – Uso da técnica de decomposição funcional – “divida sucessivamente um problema completo em subproblemas” • Hoje em dia, praticamente suplantou o paradigma anterior, o paradigma da orientação a objetos... Engenharia de Software 56 Fundamentos da Orientação a Objetos • Através de sua analogia biológica, Alan Kay definiu os fundamentos da orientação a objetos. 1. Qualquer coisa é um objeto. 2. Objetos realizam tarefas através da requisição de serviços a outros objetos. 3. Cada objeto pertence a uma determinada classe. Uma classe agrupa objetos similares. 4. A classe é um repositório para comportamento associado ao objeto. 5. Classes são organizadas em hierarquias. Engenharia de Software 29 57 Propostas para Modelagem Orientada a Objetos • Na primeira metade da década de 90 surgiram várias propostas de técnicas para modelagem de sistemas segundo o paradigma orientado a objetos. • Houve uma grande proliferação de propostas para modelagem orientada a objetos. – diferentes notações gráficas para modelar uma mesma perspectiva de um sistema. – cada técnica tinha seus pontos fortes e fracos. Engenharia de Software 58 UML (Linguagem de Modelagem Unificada) • “A UML é a linguagem padrão para visualizar, especificar, construir e documentar os artefatos de software de um sistema.” • Unificação de diversas notações anteriores. • Mentores: Booch, Rumbaugh e Jacobson – “Três Amigos” – IBM Rational (www.rational.com) Engenharia de Software 30 59 UML (Linguagem de Modelagem Unificada) • UML é... – uma linguagem visual. – independente de linguagem de programação. – independente de processo de desenvolvimento. • UML não é... – uma linguagem programação (mas possui versões!). – uma técnica de modelagem. 60 UML (Linguagem de Modelagem Unificada) • Um processo de desenvolvimento que utilize a UML como linguagem de modelagem envolve a criação de diversos documentos. – Estes documentos, denominados artefatos de software, podem ser textuais ou gráficos. • Os artefatos gráficos produzidos de um sistema OO são definidos através dos diagramas da UML. 31 61 Elementos Essenciais - Estruturais Engenharia de Software Cliente <<entity>> -razaoSocial: String -cpf: String +getRazaoSocial() +setRazaoSocial(razaoSocial: String) Classe Cliente Objeto Interface Web Server Nó ocv.dll Componente Relacionamentos IImprimivel 62 Elementos Essenciais - Comportamentais Engenharia de Software Operador Programar produçãoConectando Caso de uso Ator Estados Mensagens 32 63 Elementos Essenciais - Agrupamento Engenharia de Software Banco de Dados Regras de negócio Interface Pacotes 64 Diagramas da UML • Um diagrama na UML é uma apresentação de uma coleção de elementos gráficos que possuem um significado predefinido. – No contexto de desenvolvimento de software, correspondem a desenhos gráficos que seguem algum padrão lógico. 33 65 Diagramas da UML 2.0 66 Diagramas da UML 2.0 – Mais Usados na Fase de Análise de Sistemas 34 67 • Diagrama de Casos de Uso de um sistema de uma biblioteca Exemplo de Diagrama de Casos de Uso Engenharia de Software 68 • Diagrama de Estados de um Livro em um sistema de uma biblioteca Diagrama de Estados Engenharia de Software 35 69 Exemplo de Diagrama de Casos de Uso Engenharia de Software • Diagrama de Classes de uma loja de CDs e Livros 70 Diagramas da UML 2.0 – Mais Usados na Fase de Projeto de Sistemas 36 71 Exemplo de Diagrama de Sequência Engenharia de Software 72 Conteúdo da Aula • O que é um Processo? • Processo de Desenvolvimento de Software – Cascata – Modelo V – Modelo Evolucionário – Prototipação – Iterativo e Incremental – Espiral – RUP – Metodologias Ágeis • UML • Ferramentas Engenharia de Software 37 73 Ferramentas de Suporte • O desenvolvimento de um software pode ser facilitado através do uso de ferramentas que auxiliam: – na construção de modelos, – na integração do trabalho de cada membro da equipe, – no gerenciamento do andamento do desenvolvimento, etc. Engenharia de Software 74 Ferramentas CASE • Utilizadas para efetuar a modelagem dos sistemas • As mais utilizadas hoje em dia são as que suportam os diagramas da UML – Comercial e “Edições da Comunidade” • MagicDraw • Poseidon • Enterprise Architect • Rational Rose • Jude • Omondo Eclipse UML – Open source • Umbrello • ArgoUML • Dia Engenharia de Software 38 75 Exemplo Engenharia de Software 76 Exemplo Engenharia de Software
Compartilhar