processo e processo de software
TRANSCRIPT
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