introdução à engenharia de software - facombacala/mds2011/mds1.pdf · 2011. 5. 3. · engenharia...

40
Metodologia de Metodologia de Desenvolvimento de Desenvolvimento de Software Software Prof. M.Sc. Sílvio Bacalá Jr Prof. M.Sc. Sílvio Bacalá Jr

Upload: others

Post on 17-Aug-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

Metodologia de Metodologia de Desenvolvimento de Desenvolvimento de

SoftwareSoftware

Prof. M.Sc. Sílvio Bacalá JrProf. M.Sc. Sílvio Bacalá Jr

Page 2: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

2/35

ObjetivosObjetivos� Discutir aspectos de Engenharia de

Software� Aplicar um método de

desenvolvimento para especificação e projeto de software

Page 3: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

3/35

O que é a Engenharia de O que é a Engenharia de Software?Software?

� Estudo ou aplicação de abordagens sistemáticas, econômicas e quantificáveis para o desenvolvimento, operação e manutenção de software de qualidade.

Page 4: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

4/35

O que é a Engenharia de O que é a Engenharia de Software?Software?

� Engenheiros de software devem adotar uma abordagem sistemática e organizada para seu trabalho e usar ferramentas e técnicas/métodos apropriados dependendo do problema a ser solucionado, das restrições de desenvolvimento e dos recursos disponíveis

Page 5: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

5/35

O que é software?O que é software?� Programas de computador e documentação

associada� Produtos de software podem ser desenvolvidos

para um cliente particular ou podem ser desenvolvidos para um mercado geral

Page 6: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

6/35

MotivaçãoMotivação

Page 7: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

7/35

Objetivos da Engenharia de Objetivos da Engenharia de SoftwareSoftware� Controle sobre o desenvolvimento de software

dentro de custos, prazos e níveis de qualidade desejados

� Produtividade no desenvolvimento, operação e manutenção de software

� Qualidade versus Produtividade� Permitir que profissionais tenham controle

sobre o desenvolvimento de software dentro de custos, prazos e níveis de qualidade desejados

Page 8: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

8/35

Características da Características da Engenharia de SoftwareEngenharia de Software� A Engenharia de Software se refere a software

(sistemas) desenvolvidos por grupos ao invés de indivíduos

� usa princípios de engenharia ao invés de arte, e

� inclui tanto aspectos técnicos quanto não técnicos

Page 9: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

9/35

O que é um software de O que é um software de qualidade?qualidade?� O software que satisfaz os requisitos solicitados pelo usuário. Deve ser fácil de manter, ter boa performance, ser confiável e fácil de usar

� Alguns atributos de qualidade� Manutenibilidade

� O software deve evoluir para atender os requisitos que mudam

� Eficiência� O software não deve desperdiçar os recursos do

sistema� Usabilidade

� O software deve ser fácil de usar pelos usuários para os quais ele foi projetado

Page 10: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

10/35

Qualidade de Software Qualidade de Software (um exemplo para o (um exemplo para o Varejo)Varejo)� Correto

� A loja não pode deixar de cobrar por produtos comprados pelo consumidor

� Robusto e altamente disponível� A loja não pode parar de vender

� Eficiente� O consumidor não pode esperar� A empresa quer investir pouco em recursos

computacionais (CPU, memória, rede)

Page 11: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

11/35

Qualidade de Software Qualidade de Software (um exemplo para o (um exemplo para o Varejo)Varejo)� Amigável e fácil de usar

� A empresa quer investir pouco em treinamento� Altamente extensível e adaptável

� A empresa tem sempre novos requisitos (para ontem!)� A empresa quer o software customizado do seu jeito

(interface, teclado, idioma, moeda, etc.)� Reusável

� Várias empresas precisam usar partes de um mesmo sistema

Page 12: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

12/35

Qualidade de Software Qualidade de Software (um exemplo para o (um exemplo para o Varejo)Varejo)� Aberto, compatível, de fácil integração com outros

sistemas� A empresa já tem controle de estoque, fidelização, etc.

� Portável e independente de plataforma (hw e sw)� A empresa opta por uma determinada plataforma

� Baixo custo de instalação e atualização� A empresa tem um grande número de PDVs

Page 13: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

13/35

ProdutividadeProdutividade� Custo de desenvolvimento reduzido

� A empresa consumidora quer investir pouco em software

� A empresa produtora tem que oferecer “software barato”

� Tempo de desenvolvimento reduzido � Suporte rápido às necessidades do mercado

Page 14: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

14/35

““Software Barato”Software Barato” Nem tanto resultado de baixos custos de

desenvolvimento, mas principalmente da distribuição dos custos entre vários clientes.

Reuso, extensibilidade e adaptabilidade são essenciais para viabilizar tal distribuição.

Page 15: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

15/35

Importância da Engenharia Importância da Engenharia de Softwarede Software� Qualidade de software e produtividade

garantem:� Disponibilidade de serviços essenciais � Segurança de pessoas� Competitividade das empresas

� Produtores� Consumidores

Page 16: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

16/35

Mas, na realidade, temos a Mas, na realidade, temos a Crise de Software...Crise de Software...� 25% dos projetos são cancelados� o tempo de desenvolvimento é bem maior do

que o estimado� 75% dos sistemas não funcionam como

planejado� a manutenção e reutilização são difíceis e

custosas� os problemas são proporcionais a

complexidade dos sistemas

Page 17: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

17/35

Causas da Crise de Causas da Crise de SoftwareSoftware� Essências

� Complexidade dos sistemas � Dificuldade de formalização

� Acidentes� Má qualidade dos métodos, linguagens,

ferramentas, processos, e modelos de ciclo de vida

� Falta de qualificação técnica

Page 18: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

18/35

Elementos e Atividades da Elementos e Atividades da Engenharia de SoftwareEngenharia de Software� Elementos

� Modelos do ciclo de vida do software

� Linguagens� Métodos� Ferramentas� Processos

� Atividades� Modelagem do negócio� Elicitação de requisitos� Análise e Projeto� Implementação� Testes� Distribuição� Planejamento � Gerenciamento� Gerência de Configuração

e Mudanças� Manutenção

Page 19: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

19/35

O que é um modelo de ciclo O que é um modelo de ciclo de vida de processo de de vida de processo de software?software?

� Uma representação abstrata e simplificada do processo de desenvolvimento software, tipicamente mostrando as principais atividades e dados usados na produção e manutenção de software

Page 20: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

20/35

Modelos do Ciclo de Vida Modelos do Ciclo de Vida de Softwarede Software� Cascata� Prototipação� Iterativos

� Incremental (ex: do RUP, do XP)� Espiral

Page 21: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

21/35

Modelo CascataModelo Cascata

Page 22: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

22/35

Modelo Cascata na PráticaModelo Cascata na Prática

Page 23: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

23/35

CascataCascata

Page 24: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

24/35

CascataCascata� Clássico: Mais antigo;� Sequencial;� Gerenciamento Simples;� Incompatível com Realidade Atual;� Problema: Requisitos (uma única etapa);� Retornos ???;� Testes (final do processo);� Erros Sutis – atraso no cronogram

Page 25: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

25/35

PrototipaçãoPrototipação

Page 26: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

26/35

PrototipaçãoPrototipação� Velocidade de desenvolvimento:

� Visão mais real� “enxergar” telas, tabelas e relatórios

� Envolvimento direto do usuário:� Co-autor� Acompanhamento da Evolução

� Problemas: � usuário/entusiasmo (prevenção),� evolução/protótipo, � concessões/ implementação e� urgência/implantação.

Page 27: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

27/35

Modelos IterativosModelos Iterativos� Requisitos de sistema SEMPRE evoluem

durante curso de um projeto. Assim a iteração do processo sempre faz parte do desenvolvimento de grandes sistemas

� Iterações podem ser aplicadas a quaisquer dos modelos de ciclo de vida

� Duas abordagens (relacionadas)� Desenvolvimento espiral � Desenvolvimento incremental

Page 28: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

28/35

Desenvolvimento EspiralDesenvolvimento Espiral� Acrescenta aspectos gerenciais ao processo de

desenvolvimento de software. � análise de riscos em intervalos regulares do processo de

desenvolvimento de software� planejamento� controle� tomada de decisão

� O processo é representado como uma espiral em vez de uma sequência de atividades

� Cada volta na espiral representa uma fase no processo� Não há fases fixas como especificação ou projeto - voltas na

espiral são escolhidas dependendo do que é requerido� Riscos são avaliados explicitamente e resolvidos ao longo

do processo

Page 29: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

29/35

Desenvolvimento EspiralDesenvolvimento Espiral

Page 30: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

30/35

Desenvolvimento Desenvolvimento IncrementalIncremental

� Em vez de entregar o sistema como um todo, o desenvolvimento e a entrega são divididos em incrementos, com cada incremento entregando parte da funcionalidade requerida

� Requisitos dos usuários são priorizados e os requisitos de mais alta prioridade são incluídos nas iterações iniciais

� Uma vez que o desenvolvimento de um incremento é iniciado, os requisitos são "congelados". Embora os requisitos possam continuar a evoluir para incrementos posteriores

Page 31: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

31/35

Modelo IncrementalModelo Incremental

Page 32: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

32/35

Desenvolvimento Iterativo Desenvolvimento Iterativo e Incremental (do RUP)e Incremental (do RUP)

Page 33: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

33/35

LinguagemLinguagem� Notação com sintaxe e semântica bem

definidas� com representação gráfica ou textual

� Usada para descrever os artefatos gerados durante o desenvolvimento de software

� Exemplos: UML, Java

Page 34: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

34/35

MétodoMétodo� Descrição sistemática de como deve-se

realizar uma determinada atividade ou tarefa� A descrição é normalmente feita através de

padrões e guias� Exemplos: Método para descoberta das

classes de análise no RUP.

Page 35: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

35/35

Ferramenta CASEFerramenta CASE� Provê suporte computacional a um

determinado método ou linguagem� Ambiente de desenvolvimento: conjunto de

ferramentas integradas (CASE)� Exemplos: Rational Rose, Jbuilder, EA

Page 36: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

36/35

ProcessoProcesso� Conjunto de atividades

� bem definidas � com responsáveis� com artefatos de entrada e saída� com dependências entre as mesmas e ordem

de execução� com modelo de ciclo de vida

Page 37: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

37/35

Processo de softwareProcesso de software� Um conjunto de atividades cujo objetivo é o

desenvolvimento ou a evolução do software� Conjunto coerente de atividades para

especificação, projeto, implementação e teste de sistemas de software

Page 38: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

38/35

MetodologiaMetodologia� Conjunto de métodos + processo

Page 39: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

39/35

Pontos principaisPontos principais� Engenharia de software é uma disciplina de engenharia

que está envolvida com todos os aspectos da produção de software

� Produtos de software consistem de programas desenvolvidos e documentação associada. Alguns atributos de qualidade do produto são manutenibilidade, eficiência e usabilidade

� O processo de software consiste nas atividades que são envolvidas no desenvolvimento de produtos de software

Page 40: Introdução à Engenharia de Software - FACOMbacala/MDS2011/MDS1.pdf · 2011. 5. 3. · Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos

40/35

Pontos principaisPontos principais� Métodos são formas organizadas de produzir software.

Eles incluem sugestões para o processo a ser seguido, as notações a serem usadas, regras que governam as descrições do sistema que são produzidas e diretrizes de projeto

� Ferramentas CASE são sistemas de software que são projetados para suportar as atividades rotineiras no processo de software, como edição de diagramas de projeto e verificação de consistência dos diagramas