engenharia de software (if570)bacala/es/01-esof.pdf · 4/34 objetivos de engenharia de software...

74
Engenharia de Software Prof. Bacalá [email protected]

Upload: others

Post on 14-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

Engenharia deSoftware

Prof. Bacalá[email protected]

Page 2: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

2/34

Engenharia de Software(Def.) Disciplina gerencial e tecnológica que lida com a produção e manutenção sistemática de produtos de software desenvolvidos dentro de estimativas de custo e tempo

Deve-se entender por engenharia a ciência relacionada com o uso prático de conhecimentos científicos

Page 3: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

3/34

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 4: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

4/34

Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento,

operação e manutenção Empregando profissionais que desenvolvam

o software dentro de custos, prazos e níveis de qualidade controlados

E, além disso, que obtenham o melhor custo-benefício possível entre Qualidade Produtividade

Page 5: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

5/34

Motivação Desenvolver sistemas de acordo com a

intenção do cliente/usuário Estabelecer noção sobre tempo e

custo de desenvolvimento Elaborar artefatos além do código Analisar artefatos para estabelecer a

qualidade do produto

Page 6: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

6/34

Características da Engenharia 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 7: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

Engenharia de Software Engenharia: aplicar conhecimentos científicos e

empíricos para criação de estruturas, dispositivos e processos.

Engenheiros de Software: Criam e dão suporte ao software de computador.

Engenheiros/Analistas de Requisitos: Analisam e modelam requisitos do sistema de software.

O software é desenvolvido ou passa por um processo de engenharia; ele não é “fabricado” no sentido clássico. Software não “se desgasta”.

Page 8: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e
Page 9: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

Qual a diferença entre Engenharia de Software e Ciência da Computação? Ciência da Computação

foca a teoria e os fundamentos, Eng. de Software

preocupa-se com o desenvolvimento prático do software, sua manutenção e evolução.

Page 10: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

O que é um software de 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 11: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

Qualidade de Software (um exemplo para o 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 12: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

Qualidade de Software (um exemplo para o 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 13: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

Qualidade de Software (um exemplo para o 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 14: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

Produtividade 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 15: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

“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 16: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

Importância da Engenharia de Software Qualidade de software e

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

Produtores Consumidores

Page 17: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

Mas, na realidade, temos a 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 18: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

Causas da Crise de Software 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 19: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

Elementos e Atividades da Engenharia 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 20: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

20/45

Ciclo de Vida e Processo de Desenvolvimento de

Software

Page 21: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

21/45

O que é um modelo de ciclo de vida de processo de 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 22: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

22/45

Principais Modelos do Ciclo de Vida de Software Cascata Modelo de Desenvolvimento Evolucionário

Programação Exploratória Prototipagem descartável

Modelo de Transformação Formal Modelos Iterativos

Espiral Incremental

Page 23: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

23/45

Modelo Cascata(ou clássico) Derivado de modelos existentes em outras

engenharias Sua estrutura é composta por várias etapas

que são executadas de forma sistemática e seqüencial

Na prática, existe uma interação entre as etapas e cada etapa pode levar a modificações nas etapas anteriores

Page 24: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

24/45

Modelo CascataDefinição de Requisitos

Projeto do Sistema e do

Software

Implementação e Testes Unitários

Integração e Teste do Sistema

Operação e Manutenção

Page 25: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

25/45

Modelo Cascata na PráticaDefinição de Requisitos

Projeto do Sistema e do

Software

Implementação e Testes Unitários

Integração e Teste do Sistema

Operação e Manutenção

Page 26: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

26/45

Modelo de Desenvolvimento Evolucionário Programação Exploratória Prototipagem Descartável

Atividades Concorrentes

Especificação

Desenvolvimento

Validação

Esboço de Descrição

Versão Inicial

Versões Intermediárias

Versão Final

Page 27: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

27/45

Programação Exploratória Idéia geral:

Desenvolvimento da primeira versão do sistema o mais rápido possível

Modificações sucessivas até que o sistema seja considerado adequado

Após o desenvolvimento de cada uma das versões do sistema ele é mostrado aos usuários para comentários

Adequado para o desenvolvimento de sistemas onde é difícil ou impossível se fazer uma especificação detalhada do sistema

Principal diferença para os outros modelos é a ausência da noção de programa correto

Page 28: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

28/45

Programação Exploratória Tem sido mais usada no desenvolvimento de

sistemas especialistas - geralmente sistemas que tentam emular capacidades humanas

A maioria dos sistemas desenvolvidos com sucesso usando a programação exploratória foi implementada usando pequenos grupos de profissionais altamente qualificados e motivados

Page 29: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

29/45

Prototipagem Descartável Como na programação exploratória, a primeira fase

prevê o desenvolvimento de um programa para o usuário experimentar No entanto, o objetivo aqui é estabelecer os

requisitos do sistema O software deve ser reimplementado na fase

seguinte A construção de protótipos com os quais os

usuários possam brincar é uma idéia bastante atrativa: Para sistemas grandes e complicados Quando não existe um sistema anterior ou um

sistema manual que ajude a especificar os requisitos

Page 30: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

30/45

Prototipagem Descartável Os objetivos do protótipo devem estar bem claros

antes do início da codificação. Possíveis objetivos: Entender os requisitos dos usuários Definir a interface com os usuários Demonstrar a viabilidade do sistemas para os

gerentes. Uma decisão importante a ser tomada é escolher o

que será e o que não será parte do protótipo Não é economicamente viável implementar todo

o sistema! Os objetivos do protótipo são o ponto de

partida

Page 31: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

31/45

Transformação Formal Idéia geral:

Uma especificação formal (definição matemática, não ambígua) do software é desenvolvida e posteriormente “transformada” em um programa através de regras que preservam a corretude da especificação

esp. 2esp. 1 implement.

Page 32: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

32/45

Transformação Formal A grande motivação por trás da idéia de

refinamento formal é a possibilidade de gerar automaticamente programas que são corretos por construção O próprio processo de desenvolvimento deve

grantir que o programa faz exatamente o que foi especificado

Este modelo tem sido aplicado ao desenvolvimento de sistemas críticos, especialmente naqueles onde a segurança é um fator crítico (ex: sistema de controle de tráfego aéreo)

Page 33: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

33/45

Modelo de Desenvolvimento Baseado em Reuso Baseado no reuso sistemático de componentes

existentes ou sistemas COTS (Commercial-off-the-shelf)

Etapas do processo Especificação dos requisitos Análise de componentes Modificação dos requisitos Projeto de sistema com reuso Desenvolvimento e integração Validação

Esta abordagem está se tornando mais importante, mas há ainda pouca experiência com ela

Page 34: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

34/45

Modelo de Desenvolvimento Baseado em Reuso

Especificação de Requisitos

Análise de Componentes

Modificação de Requisitos

Projeto de Sistema com Reuso

Desenvolvimento e Integração

Validação do Sistema

Page 35: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

35/45

Modelos 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 36: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

36/45

Desenvolvimento 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 seqüê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 37: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

37/45

Desenvolvimento Espiral

Determinação dos objetivos, alternativas e restrições

Análise de Riscos

Análise das alternativas e identificação e/ou resolução de riscos

Desenvolvimento e validação da versão corrente do produto

Simulações,modelos e benchmarks

Planejamento

Page 38: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

38/45

Desenvolvimento Incremental 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

Em certos aspectos é similar à programação exploratória. No entanto, o escopo do sistema deve ser claramente entendido antes de se iniciar o desenvolvimento

Page 39: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

39/45

Desenvolvimento Incremental

Definiresboço dosrequisitos

Associarrequisitos aincrementos

Projetar aarquitetura dosistema

Desenvolverumincremento

Validar oincremento

Integrar oincremento

Validar osistema

SistemaFinal

Page 40: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

40/45

Processo 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 41: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

41/45

Processo é uma ação regular e contínua (ou sucessão

de ações) realizada de forma bem definida, levando a um resultado

é um conjunto parcialmente ordenado de atividades (ou passos) para se atingir um objetivo

define quem está fazendo o que, quando e como para atingir um certo objetivo

Page 42: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

42/45

Processo versus Metodologia Alguns autores consideram que

processos incluem uma metodologia pessoas tecnologia (suporte de ferramentas)

Outros consideram que uma metodologia é a especialização de um processo com um conjunto de métodos

Page 43: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

43/45

Mé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 de atores e casos de uso no RUP.

Page 44: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

44/45

Modelo de Processo é uma representação de um processo,

usualmente envolvendo atividades a serem realizadas agentes que realizam as atividades artefatos (produtos) gerados recursos necessários (consumidos)

Page 45: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

45/45

Modelo de Processo Um modelo é usado para entendimento e

comunicação do processo, e como base para análise, execução, gerência e melhoria do processo

Idealmente a descrição deve ser formal e completa para permitir, por exemplo, automação

A descrição deve ser apresentada em diferentes níveis de abstração

Page 46: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

46/45

Modelo de Processo O formalismo utilizado para representar o

processo é o ingrediente mais importante da modelagem

Não parece haver consenso sobre um formalismo ideal Terminologias distintas

Fase, workflow, domínio, disciplina, Atividade Mas há esforço de padronização (SPEM e

BPMN – OMG)

Page 47: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

47/45

Exemplos de processos Processos tradicionais (pesados)

RUP, OPEN, Catalysis Processos ágeis (leves)

XP, Agile modeling, Crystal, pragmatic programming, Internet Speed, Scrum, ...

Page 48: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

48/45

Exemplos de processos Consenso em torno de

Iteratividade Participação de usuários Flexibilidade de configuração para

projetos específicos Comunicação entre membros da equipe

Page 49: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

49/45

Exemplos de processos Divergências em torno de

Detalhamento de atividades a serem seguidas Critério de conclusão da execução das

atividades Arquitetura robusta (RUP) Arquitetura para o contexto da iteração atual (agile

modeling) Rigor na atribuição de tarefas a responsáveis

workers (RUP) alocação sob demanda e interesse (XP)

Artefatos (documentação) gerados Nível de Automação Nível de (im)pessoalidade

Page 50: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

50/45

Polêmica Se a tendência é processos leves, afinal o

desenvolvimento de software é Arte+Sociologia+Psicologia+... ou Lógica+Modelos+Engenharia+...???

E todo o esforço de consolidação da Engenharia de Software como uma ciência exata???

Compromisso Balancing agility and discipline

Page 51: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

Na prática....

51

Page 52: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

52/34

O Início de Tudo...

“A intenção do cliente é...”

Page 53: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

53/34

O Mais Importante Aqui é...

A Idéiaé

Viável???

Page 54: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

54/34

O Que Devo Fazer Exatamente?

Ou, em outras palavras, quais são os requisitos da aplicação?

Page 55: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

55/34

Requisitos O Que devo fazer?

Funcionalidades Há restrições sobre as

funcionalidades? Limites de tempo, memória, etc.?

Há restrições mais amplas? Empresa, Governo, etc.?

Page 56: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

56/34

O que faço então?

“O documento de requisitos...”

Page 57: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

57/34

Como apresentar ao Cliente?

“O cliente não vai ler

500 páginas de

requisitos!!!”

Page 58: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

58/34

Uma Figura Vale Mais Que ...

Page 59: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

59/34

Mas Paralelamente ...

“Precisamos saber quanto tempo levaremos para fazer nosso trabalho, quanto isso custará e o que pode nos atrapalhar... Precisamos Planejar!!!”

Page 60: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

60/34

Estimando Esforço Modelo de casos de uso pode ser

usado para calcular estimativa Baseia-se em uma série de fatores

que determinam a complexidade da aplicação

Há ferramentas para realizar o cálculo

Page 61: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

61/34

Estimando Esforço

X horasF( )

Page 62: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

62/34

Estimando Esforço

Page 63: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

63/34

Iniciando a Solução...

“Temos que identificar em nossos requisitos, quais são os elementos essenciais para satisfazê-los...”

Page 64: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

64/34

Iniciando a Solução...

Page 65: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

65/34

Iniciando a Solução...

Page 66: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

66/34

Sedimentando a Solução...

“A partir dos elementos essenciais, precisamos definir estratégias para satisfazê-los incluindo suas restrições...”

Page 67: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

67/34

Sedimentando a Solução...

Page 68: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

68/34

Sedimentando a Solução...

Page 69: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

69/34

Sedimentando a Solução...

Page 70: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

71/34

Operacionalizando a Solução...

“Com a solução definida, o passo final é operacionalizá-la. Isto é, codificá-la.”

Page 71: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

72/34

Classe Account...public class Account { private int balance; ... void debit(int amount) { if(amount<=balance) balance = balance – amount; else throw new AccountException(“...”); }...}

Page 72: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

73/34

Funciona???

“Com a implementação feita, podemos então executar os testes!!!”

Page 73: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

74/34

Avaliando a qualidadepublic class AccountTest extends TestCase {

void testDebit() { Account acc = new Account(10); acc.debit(10); assertEquals(0, acc.getBalance()); }

}

Page 74: Engenharia de Software (IF570)bacala/ES/01-ESOF.pdf · 4/34 Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e

Referências Básica

Sommerville, I. Software Engineering. Extra

Kruchten, P. The Rational Unified Process: An Introduction. 2nd Ed

Booch, G. et al. The Unified Modeling Language User Guide.

Pressman, R. Software Engineering.