Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo,...

53
Engenharia de Software Vítor Vargas Robaina

Transcript of Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo,...

Page 1: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Engenharia de SoftwareVítor Vargas Robaina

Page 2: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Ambiente de Desenvolvimento de Software

um processo, métodos e a automação necessária para produzir um sistema de software (Charette)

um sistema que fornece suporte a qualquer tipo de atividade executada por engenheiros de software (Saito)

um ciclo de vida, que define as etapas do processo de desenvolvimento

um conjunto de métodos usados para organizar o pensamento e o trabalho do usuário

um conjunto de ferramentas que automatizam os instrumentos.

Page 3: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Ciclo de Vida

• diferentes modelos

• não existe o melhor modelo

• escolha depende:do domínio da aplicaçãodas características do grupo desenvolvedordo grau de conhecimento sobre o problema

Page 4: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Modelo Clássico (Cascata)

• fases realizadas sequencialmente

• variações:– número das fases– nomes das fases

Page 5: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Prototipagem Evolutiva

Objetivo• ter uma versão inicial através da qual se aumente o

conhecimento sobre o produto

Procedimento• desenvolve-se uma versão parcial que atinge os requisitos

conhecidos• a partir do conhecimento sobre os requisitos, obtido com

o uso do protótipo, continua-se o desenvolvimento (evolue-se) o produto

Page 6: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Ciclo de Vida em Espiral

Objetivo• permitir definir processos de desenvolvimento, guiado

pelos riscos dos projetos

É um meta-modelo• pode acomodar qualquer processo de desenvolvimento

(por exemplo: espiral + cascata)

Page 7: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Métodos

“prescrições explícitas para a realização de uma atividade ou conjunto de atividades do modelo de ciclo de vida” (Charette)

“prescrições explícitas para a realização de uma atividade ou conjunto de atividades do modelo de ciclo de vida” (Charette)

Devem estabelecer:• que passos seguir

• como tomar as decisões envolvidas nestes passos

Page 8: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Seleção de Métodos

Nenhum método é adequado sempreA seleção de métodos deve levar em consideração:

a adequação à tecnologia de desenvolvimento a cultura da organização os conhecimentos prévios e as preferências da equipe de

desenvolvimento a facilidade de aprendizado a facilidade de integração com outros métodos a existência de ferramentas que automatizem o método

Page 9: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Métodos de Desenvolvimento de Software são efetivos apenas na medida em que auxiliam a comunicação entre pessoas.

Se a utilização de um método de Engenharia de Software produz um monumento de papel, então, alguma coisa está errada no método, na aplicação ou em ambos.

Se perdermos em visão das pessoas e comerçarmos a produzir gráficos, diagramas e pilhas de papel como um fim em si mesmo, então falhamos numa comunicação efetiva.

Engenharia de Software é uma questão relacionada a pessoas. Pessoas tem problemas e pessoas resolvem problemas. E nós só podemos resolver problemas de desenvolvimento de sistemas, interagindo uns com os outros. Logo, métodos de desenvolvimento de software viáveis devem facilitar a comunicação. (Coad-Yourdon)

Page 10: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

A Proposta de Desenvolvimento deve conter: uma descrição do sistema atual e suas deficiências uma descrição do sistema a ser desenvolvido dados que permitam avaliar a viabilidade de construção e operação do sistema proposto

Proposta de Desenvolvimento

OBJETIVOSreunir dados iniciais sobre o produto a ser construídopermitir estabelecer o contrato para desenvolvimento do

produto

Page 11: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

A Proposta de Desenvolvimento deve ser:macroscópicafidedignaimparcialrealistaviável

Page 12: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Conteúdo da Proposta de Desenvolvimento

Objetivos• servir de base para o entendimento do funcionamento do sistema

atual• proporcionar uma primeira justificativa da necessidade do novo

sistema

• indicar os problemas organizacionais existentes

• indicar a urgência com que o novo sistema deverá ser posto em operação

Descrição do Sistema Atual

Page 13: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Conteúdo da Proposta de Desenvolvimento

Objetivos• permitir o entendimento do sistema proposto • avaliar o impacto do sistema sobre a organização do usuário, os

benefícios esperados e a expectativa de vida do sistema proposto

Descrição do Sistema Proposto

Objetivos• permitir avaliar o esboço do Plano do Projeto• avaliar se é possível constituir uma equipe capaz de desenvolver

o sistema proposto

Viabilidade de Implementação

Page 14: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Sem o esboço do Plano do Projeto não se pode discutir a viabilidade de implementação do sistema

Se a equipe de desenvolvimento não domina• o ambiente de desenvolvimento utilizado

• o domínio da aplicação

o risco de fracasso é grande

Page 15: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Conteúdo da Proposta de Desenvolvimento

Objetivos• permitir avaliar a conveniência de desenvolver o sistema proposto

ou adaptar um sistema existente• permitir avaliar a interação do sistema proposto com outros

sistemas da organização• permitir estimar os benefícios do sistema proposto

Relação do Sistema com o Ambiente

Page 16: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Avaliação da Proposta de Desenvolvimento

deve ser realizada em conjunto por usuários e desenvolvedores

o documento final deve conter:• o texto da Proposta de Desenvolvimento• o laudo da avaliação

Page 17: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Análise de Requisitos

Page 18: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

ESPECIFICAÇÃO DE REQUISITOSproduto da faseANÁLISE DE REQUISITOS DE SOFTWARE

A fase de Análise de Requisitos começa quando: se reconhece que existe um problema que necessita de uma

solução surge uma idéia nova

e termina quando se tem uma descrição completa do comportamento do

software a ser construído

Page 19: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

O que são especificações?

representações que descrevem o software desde uma visão macroscópica (Especificação de Requisitos) até uma visão detalhada (Programas) passando por representações intermediárias (Especificações de Projeto)

Page 20: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

alguma coisa necessária, desejada Webster’s Ninth New Collegiate Dictionary

condição ou capacidade necessária por um usuário para resolver um problema ou atingir um objetivo

condição ou capacidade que precisa ser atingida por um sistema para satisfazer um contrato, norma, especificação ou algum outro documento

IEEE Standard

O que são requisitos?

Page 21: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Funções da Especificação de Requisitos

ser a base para o desenvolvimento

permitir o controle da qualidade do produto

estabelecer a comunicação entre o pessoal envolvido no projeto

auxiliar no entendimento do problema

Page 22: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Durante a fase de Análise de Requisitos são realizadas três atividades:

Especificação do Produto

Identificação do Problema

Avaliação da Especificação

Page 23: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Identificação do Problema

Realizada através de:• Brainstorm• Entrevistas• JAD

Problemas:• comunicação com o usuário• entendimento completo do problema• organização das informações

Page 24: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Especificação do Produto

Momento de:• organizar idéias• resolver visões conflitantes• eliminar inconsistências• eliminar ambiguidades

Problemas:• seleção do método adequado• seleção de ferramentas

Page 25: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Momento de:• comparar a Especificação com

os padrões de qualidade previamente estabelecidos

Problemas:• inexistência de padrões• como realizar as avaliações

Avaliação da Especificação

Page 26: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Importância da Especificação de Requisitos

São cometidos muitos erros na fase de Análise de Requisitos

Erros permanecem latentes e tardam a ser detectados Quanto mais tarde um erro é detectado maior é o custo de

sua correção

75% dos erros detectados, o são depois das fases de codificação e teste de unidades

45% destes erros são erros de especificação e projeto

9% são erros de codificação

56% de todos os erros detectados são devido a erros na fase de Análise de Requisitos

Page 27: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Erros Típicos

• 49% fatos incorretos• 31% omissões• 13% inconsistências• 5% ambiguidades• 2% localização errada do requisito

Page 28: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Impacto dos erros

o software não satisfaz as necessidades dos usuários desentendimento entre usuários e desenvolvedores perda de tempo e dinheiro problemas judiciários

Page 29: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Roteiro para a Especificação de Requisitos

varia com:o projeto

a tecnologia adotada no desenvolvimento

Page 30: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Gerência de Projetos

Page 31: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

GERÊNCIAGERÊNCIAPlanejamento

Planejamento

Acompanhamento

Acompanhamento

Page 32: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

OU ?

Page 33: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Planejamento de Projetos

Page 34: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Por que planejar?

• evitar o fracasso

• prever custos, recursos, prazos e riscos

• analisar alternativas

• organizar

• preparar-se para alterações

• poder acompanhar o andamento do projeto

• planejar melhor da próxima vez

Page 35: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Quando planejar

• o planejamento começa de forma macroscópica no início do projeto

• o planejamento é revisto e detalhado ao longo do projeto

Page 36: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

O que planejar

Click to add sub-title

PROCESSODOCUMENTAÇÃO

PESSOAS

RISCOS

CUSTO

CRONOGRAMA

CONTROLE DA QUALIDADE

HARDWARE E SOFTWARE

Page 37: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Plano do Projeto

Page 38: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

1. Sumário 2. Resumo do Projeto 3. Visão Geral do Plano do Projeto 4. Plano do Processo de Desenvolvimento 5. Plano de Organização 6. Plano de Documentação 7. Plano de Controle da Qualidade 8. Plano de Recursos e Produtos 9. Plano de Treinamento10. Plano de Implantação e Operação11. Glossário

Plano do Projeto

ConteúdoConteúdo

Page 39: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Plano do Processo de DesenvolvimentoPlano do Processo de Desenvolvimento• Ciclo de Vida do Projeto• Métodos de Desenvolvimento• Ambiente de Programação• Ambiente de Hardware para Desenvolvimento

Plano do Projeto

Page 40: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

A qualidade do produto depende da qualidade e adequação do processo de desenvolvimento

Page 41: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Plano do Projeto

Plano de OrganizaçãoPlano de Organização• Equipe de Gerência• Equipe de Desenvolvimento• Equipe de Controle da Qualidade• Assessorias

Page 42: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Plano do Projeto

Plano de DocumentaçãoPlano de Documentação• Especificação de Requisitos• Especificação de Projeto• Relatório Histórico do Projeto• Formulários para Reunião de Inspeção• Documentação de Programas• Manual do Usuário• ...

Page 43: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Importância da Documentação

o software existe primeiro sob a forma de documentos

a qualidade do produto final vai depender da qualidade destes documentos

documentos são a forma de comunicação entre os diferentes grupos envolvidos com o produto

Page 44: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Planejamento da Documentação

definição da documentação adequada a um determinado projeto

depende:• do porte do projeto• de sua expectativa de vida• dos métodos e ferramentas utilizados

durante o desenvolvimento

Page 45: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Plano de Documentação

Deve definirque documentos devem ser gerados em que momento devem ser geradoso roteiro para elaboração do documento responsabilidadesdestinatários ferramentas de apoio

Page 46: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Plano do Projeto

Plano de Controle da QualidadePlano de Controle da Qualidade

• Controle da Qualidade ao longo do Desenvolvimento• Avaliação do Produto Final• Plano de Testes

Page 47: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Deve-se planejar as ações necessárias para atingir os requisitos de qualidade definidos:

que critérios devem controlar as características de qualidade de interesse

como e quando os dados necessários devem ser coletados

que métodos, técnicas e ferramentas serão utilizados

Page 48: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Plano do Projeto

Plano de Recursos e ProdutosPlano de Recursos e Produtos• Recursos Humanos• Recursos de Hardware• Recursos de Software• Recursos Financeiros• Análise de Riscos• Cronograma• Produtos

Page 49: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Estimativas

TEMPO RECURSOS PESSOAS DINHEIRO

Page 50: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Recursos Humanos

• No desenvolvimento de software o principal custo é com pessoal

estimar custo = estimar pessoas

inicialmente define-se as características desejáveis para o pessoal

após estimar-se o esforço de desenvolvimento, estima-se o número de pessoas

Page 51: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Gerência de Riscos

Page 52: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

Riscos?Blá,Blá,Blá...

Analisar e Gerenciar riscos com relação a:

pessoal

recursos

Page 53: Engenharia de Software Vítor Vargas Robaina. Ambiente de Desenvolvimento de Software èum processo, métodos e a automação necessária para produzir um sistema.

AVALIAÇÃO DA VIABILIDADE DO PROJETO

ESPECIFICAÇÃO DE REQUISITOS PLANO DO PROJETO

SOCIAL TECNOLÓGICA PESSOAL FINANCEIRA TEMPO ECONÔMICA.