Processo e Processo de Software

Post on 12-Apr-2017

34 views 2 download

Transcript of Processo e Processo de Software

Processo de Produção de Software

Bacharelado em Engenharia de Software – Aula 05

Prof.ª M.ª Elaine Cecília Gatto

MÉTODO EMPÍRICO X MÉTODO CIENTÍFICO

EMPÍRICO

• Baseado na experiência comum e naobservação.

•Um fato que se apoia somente emexperiências vividas, na observação de coisas,e não em não em teorias.

MÉTODO EMPÍRICO

• Feito por meio de tentativas e erros,caracterizado pelo senso comum, e cada umcompreende à sua maneira.

• Conhecimento empírico é muitas vezessuperficial, sensitivo e subjetivo.

PESQUISA EMPÍRICA

• Busca de dados relevantes e convenientesobtidos através da experiência, da vivência dopesquisador.

• Tem como objetivo chegar a novas conclusõesa partir da maturidade experimental dosoutros.

Empirismo no Software

• Produto fora de padrões

•Dificuldade no controle e avaliação daqualidade

•Alta carga de Manutenção

•O método empírico não é indicado para oprocesso de produção de software

Método Científico

• É o conjunto das normas básicas que devemser seguidas para a produção deconhecimentos que têm o rigor da ciência, ouseja, é um método usado para a pesquisa ecomprovação de um determinado conteúdo.

Ciência no Software

• Se aplica totalmente

• Estuda trabalhos correlatos

• Produto dentro de normas, padrões eespecificações

• Planejamento é essencial

•Qualidade pode ser medida e avaliada

ATIVIDADE

•Atividade Pratica Presencial (AP_05_1)

ENGENHARIA DE SOFTWARE

Camadas da Engenharia de Software

Qualidade

Processo

Métodos

Ferramentas

Processo contínuo de aperfeiçoamento

Camadas da Engenharia de Software

Qualidade

Processo

Métodos

FerramentasControle gerencial de projetos de software

Aplicação dos métodos

Modelos, documentos, dados, relatórios, formulários, etc.

Camadas da Engenharia de Software

Qualidade

Processo

Métodos

FerramentasComo fazer?

Comunicação, análise de requisitos, modelagem de projeto, construção de programas, testes, manutenção, etc.

Camadas da Engenharia de Software

Qualidade

Processo

Métodos

FerramentasApoio automatizado ou semi-automatizado para processos e métodos.

PROCESSO E PROCESSO DE SOFTWARE

Processo

• Processo é uma palavra com origem no latim, quesignifica método, sistema, maneira de agir ouconjunto de medidas tomadas para atingir algumobjetivo.

• Define quem está fazendo o quê, quando e comopara alcançar um certo objetivo. (Jacobson)

Processo

• Processo civil, Processo penal, Processoadministrativo, Processo trabalhista, ProcessoIndustrial, Processo Organizacional, ProcessoEvolutivo, Processo Produtivo, Processo deNegócio, Processo de Software, etc.

Processo

• É uma sequencia de passos executados comum determinado objetivo. (IEEE)

• É uma receita que é seguida por um projeto.(Pádua, 2011)

Processo X Produto

• PROCESSO:

• Ingredientes e oModo de preparode um RISOTO decamarão

• PRODUTO:

Elementos de um Processo

•O que é feito? – Produto

•Quando é feito? – Etapas

• Por quem é feito? – Papéis

•Quais coisas usa? – Insumos

•Quais coisas são produzidas? – Resultados

Processo de Software

• É uma série de passos previsíveis que ajuda acriar a tempo um resultado de alta qualidade.(Pressman, 2006)

• É um conjunto coerente de atividades para aprodução de software. (Sommerville, 2011)

Processo de Software

• Fornece:

• Estabilidade

• Controle

•Organização

•Dinamismo

Processo de software

•Desenvolver um sistema de software do zero

•Desenvolver um sistema de software a partirde um existente: extensão, integração,configuração, modificação, componentes.

Processo de Software

• Intelectual e criativo

• Pessoas tomam decisões e julgam

• Tirar melhor proveito das capacidades das pessoasda organização

• Tirar melhor proveito das característicasespecíficas do sistema

• Não existe modelo ideal

Categorias de Processos

• Processo dirigido a plano

• Todas as atividades são planejadas comantecedência

• Progresso é avaliado por comparação como planejamento inicial

Categorias de Processos

• Processo Ágil

• Planejamento é gradativo

• Facilidade de alteração

MODELO DE PROCESSO DE SOFTWARE

Modelo de Processo de Software

• É uma representação simplificada de umprocesso de software. (SOMMERVILLE, 2011)

•Modelos genéricos: abstrações usadas paraexplicar diferentes abordagens

• Exemplos: Cascata, incremental, reuso, etc.

Arcabouço de Processo

• Estabelece o alicerce para um processo desoftware completo

• Identifica um número de atividades aplicáveisa todos os projetos

• Independente de tamanho e complexidade

Atividades Genéricas do Arcabouço de Processo

• Levantamento derequisitos

• Comunicação com ocliente

• Colaboração com ocliente

Implantação

Construção

Modelagem

Planejamento

Comunicação

Atividades Genéricas do Arcabouço de Processo

• Plano

• Tarefas técnicas

• Riscos

• Recursos

• Cronograma

Implantação

Construção

Modelagem

Planejamento

Comunicação

Atividades Genéricas do Arcabouço de Processo

• Criação de modelospara melhorentendimento dosrequisitos.

•Ações: análise eprojeto

Implantação

Construção

Modelagem

Planejamento

Comunicação

Atividades Genéricas do Arcabouço de Processo

•Geração de código

• Testes

• ErrosImplantação

Construção

Modelagem

Planejamento

Comunicação

Atividades Genéricas do Arcabouço de Processo

• Entrega

•Avaliação

• FeedbackImplantação

Construção

Modelagem

Planejamento

Comunicação

Conjunto de Tarefas

• Define o trabalho real a ser feito para atingir osobjetivos de uma ação de engenharia de software.

• Diferentes projetos necessitam de diferentesconjuntos de tarefas.

• O conjunto de tarefas é escolhido com base noproblema e características do projeto.

ATIVIDADE

•Atividade Pratica Presencial (AP_05_2)

ATIVIDADES FUNDAMENTAIS DA

ENGENHARIA DE SOFTWARE

Atividades Fundamentais

• Especificação de software: funcionalidades erestrições

• Projeto e implementação de software:atender especificações

•Validação de software: garantia das demandasdo cliente

• Evolução de software: mudanças

Atividades Fundamentais

•As 4 atividades são ORGANIZADAS de acordocom o processo de desenvolvimento adotado

•Dependem do tipo de software, das pessoas eda estrutura organizacional

Especificação de Software

• É o processo de compreensão e definição dosserviços requisitados do sistema eidentificação de restrições relativas aoperação e ao desenvolvimento do sistema desoftware.

• Produz um documento de requisitos

Especificação de Software

Especificação de Software• Estimativa• Satisfazer necessidades do usuário• Rentabilidade do sistema• Restrições orçamentais• Estudo barato e rápido• Resultado: tomada de decisão (fazer ou não

o sistema?)

Especificação de Software

• Derivação dos requisitos• Observação de sistemas

existentes• Discussões com

potenciais usuários• Análise de tarefas• Desenvolvimento de

protótipos

Especificação de Software

• Produção de um documento

• Requisitos do usuário (visão cliente)

• Requisitos de sistema (funcionalidades)

Especificação de Software

• Verificação dos requisitos• Realismo• Consistência• Completude• Descoberta de erros• Modificação da

especificação

Projeto e Implementação de Software

• Um projeto de software é uma descrição:

• Da estrutura do software a ser implementado

• Dos modelos e estruturas de dados usados pelosistema

• Das interfaces entre os componentes dosistema

• Dos algoritmos usados

Projeto e Implementação de SoftwareEntradas de projeto

Informação da Plataforma

Especificação de Requisitos

Descrição de Dados

Atividades de Projeto

Projeto de Arquitetura

Projeto de Interface

Projeto de Componentes

Projeto de Banco de Dados

Saídas de Projeto

Arquitetura de Sistema

Especificação de Banco de Dados

Especificação de Interfaces

Especificação de Componentes

Modelo Abstrato de Processo de Projeto

As atividades são intercaladas e não sequenciais

ENTRADAS DE PROJETO INFORMAÇÕES DA PLATAFORMA

• Plataforma de Software:

• Ambiente em que o software será executado

• Componentes da Plataforma de software:

• Sistema operacional

• Banco de dados

• Middleware

• Etc.

Interação entre os componentes

Integração entre a plataforma e o ambiente

ENTRADAS DE PROJETO ESPECIFICAÇÃO DE REQUISITOS

• Especificação de requisitos

• Descrição da funcionalidade do software

• Requisitos de desempenho

• Requisitos de confiança

• As atividades no processo de software podemvariar, depende do tipo de sistema que serádesenvolvido

ENTRADAS DE PROJETODESCRIÇÃO DE DADOS

• Sistema para processamento de dados existentes:

• Podem ser inclusos na especificação daplataforma

• Caso seja outro sistema:

• Deve ser uma entrada separada para oprocesso de projeto

• Definição da organização dos dados do sistema

ATIVIDADES DE PROJETO PROJETO DE ARQUITETURA

• Identificar a estrutura geral do sistema

• Identificar os componentes principais

• Identificar os relacionamentos entre oscomponentes e como eles são distribuídos

ATIVIDADES DE PROJETO PROJETO DE ARQUITETURA

•Definir interfaces entre os componentes dosistema

• Interfaces devem ser precisas

•Os componentes não precisam saber comooutros componentes são implementados

ATIVIDADES DE PROJETO PROJETO DE COMPONENTES

• Projeto do funcionamento do componente

•Declaração de funcionalidade que deve serimplementada

• Lista de alterações para um componente

•Modelo de projeto detalhado

• Etc.

ATIVIDADES DE PROJETO PROJETO DE BANCO DE DADOS

• Projeto das estruturas de dados do sistema

• Como devem ser representados em um B.D.

• Etc.

SAÍDAS DE PROJETO

• Podem variar conforme o tipo de sistema que se estáprojetando

• Saída de um sistema crítico:

• Documentos detalhados

• Saída de um modelo:

• Diagramas

• Saída de um método ágil:

• Código de programa

Métodos Estruturados

• Déc. 70 e 80

• Produção de modelosgráficos do sistema

• Geração automática decódigo fonte

• Anos 90:

• DesenvolvimentoDirigido a Modelos –Model DrivenDevelopment – MDD

• 2000:

• UML

• Projeto Orientado aObjeto

Programação

•O desenvolvimento do programa é umaconsequência do projeto

•Geração de esqueleto do programa

•Detalhes de operação de cada componente

• É uma atividade PESSOAL: não existe umprocesso geral definido

Validação de Software

• Mostra que um software:

• Se adequa às suas especificações

• Satisfaz as especificações do cliente

• Principal técnica de validação:

• Teste de programa:

• O sistema é executado com dados de testesSIMULADOS

Validação de Software

• Processos de Verificação em todos osestágios:

• Inspeções (Ação ou efeito de olhar, de examinar, de verificar)

• Revisões (Ato ou efeito de rever ou revisar; nova leitura, novo exame)

• Custos de validação:

•Durante e após a implementação

Validação de Software

Teste de Componente

Teste de Sistema

Teste de Aceitação

Um processo de testes com três estágios.

Dados do

cliente

Sistema integrado

Defeitos de componentes

Defeitos de Interfaces.Erros de Programa.

Depuração.

Repetição de estágios já realizados

Realimentação

Processo de TesteTeste de Desenvolvimento

• Cada componente é testado de formaindependente por quem o criou

• Ferramentas de automação de testes:

• Reexecutam testes quando novas versõessão criadas

• Exemplo: Junit

Processo de TesteTeste de Sistema

• Integração dos componentes

• Erros das interações componentes einterfaces

•Mostrar que o sistema satisfaz seus requisitos

• Teste de propriedades do sistema

• Subsistemas

Processo de TesteTeste de Aceitação

•Dados fornecidos pelo cliente

• Erros/omissões na definição de requisitos

•Dados reais X dados simulados

•Desempenho indesejável

•Necessidades do usuário não alcançadas

Processo de Teste

• Processo de desenvolvimento INTERCALA com oprocesso de teste

• Teste de código enquanto é desenvolvido

• Teste Beta:

• Entrega do sistema a um número de potenciaisclientes

• Teste Alfa:

• Teste de aceitação

Evolução de Software

• Custos altos

• Atividade maçante e desinteressante?

• Processos de manutenção:

• Menos desafiadores que o projeto inicial

• Desenvolvimento e manutenção são processos contínuos

• Processo evolutivo:

• O software é constantemente alterado durante o seuperíodo de vida em resposta às mudanças de requisitose às necessidades do cliente

Evolução de Software

Definir Requisitos de

Sistema

Sistemas Existentes

Propor Mudanças de Sistema

Modificar Sistemas

Avaliar Sistemas Existentes

Novo Sistema

Atividade

•Atividade Prática Presencial – AP_05_3