Tecnologia da Informação para EPPGG 2013. Victor Dalton

Documentos relacionados
Processo de Desenvolvimento Unificado

Na medida em que se cria um produto, o sistema de software, que será usado e mantido, nos aproximamos da engenharia.

ARCO - Associação Recreativa dos Correios. Sistema para Gerenciamento de Associações Recreativas Plano de Desenvolvimento de Software Versão <1.

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

Projeto de Sistemas I

Desenvolvimento Ágil de Software

O modelo unificado de processo. O Rational Unified Process, RUP.

REVISÃO ENGENHARIA DO SOFTWARE. Isac Aguiar isacaguiar.com.br

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite (81 )

Engenharia de Software

ENGENHARIA DE SOFTWARE I

Engenharia de Requisitos Estudo de Caso

Requisitos de Software. Teresa Maciel DEINFO/UFRPE

Resumo do BABok 2.0 O Guia de Referência de Análise de Negócio Curso de Analista de Negócio 3.0

natureza do projeto e da aplicação métodos e ferramentas a serem usados controles e produtos que precisam ser entregues

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

Testes de Software. Testes de Software. Teste de Validação. Teste de Defeito. Modelo de Entrada e Saída. Modelo de Entrada e Saída

Sistemas de Informação I

Fundamentos em Teste de Software. Vinicius V. Pessoni

Requisitos de Software. Requisitos de Software. Requisitos de Software. Requisitos de Software. Requisitos de Software. Requisitos de Software

Sistemas de Informação e Programação II Odorico Machado Mendizabal

Objetivos. Processos de Software. Tópicos abordados. O processo de software. Modelos genéricos de modelos de processo de software.

A Disciplina Gerência de Projetos

DISCIPLINA ENGENHARIA DE SOFTWARE Aula 03 Desenvolvimento Ágil Modelos Ágeis. Profª Esp.: Maysa de Moura Gonzaga

O Rational Unified Process (RUP) é um processo de desenvolvimento de software inspirado no

Agenda. Introdução Etapas genéricas Atividades de apoio Ferramentas de apoio Modelos genéricos Modelos de mercado Modelos de melhoria

Capítulo 2. Processos de Software Pearson Prentice Hall. Todos os direitos reservados. slide 1

Engenharia de Software II

Metodologias Ágeis. Aécio Costa

Engenharia de Software. Apostila I >>> Introdução à ES - HEngholmJr

Processo Unificado (RUP)

Engenharia de Software na Prática Hélio Engholm Jr.

Engenharia de Software Questionário sobre Engenharia de Requisitos Resolvido Prof. MSc Wagner Siqueira Cavalcante

DISCIPLINA ENGENHARIA DE SOFTWARE Aula 03 Processo Unificado e Desenvolvimento Ágil. Profª Esp.: Maysa de Moura Gonzaga

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini prof.andre.luis.belini@gmail.com /

Requisitos de Software

Processos de Desenvolvimento de Software

Requisitos. Sistemas de Informações

Análise e Projeto Orientados a Objetos Aula IV Requisitos. Prof.: Bruno E. G. Gomes IFRN

Metodologia de Gerenciamento de Projetos da Justiça Federal

PDS - DATASUS. Processo de Desenvolvimento de Software do DATASUS

TI Aplicada. Aula 02 Áreas e Profissionais de TI. Prof. MSc. Edilberto Silva prof.edilberto.silva@gmail.com

Pós-Graduação em Gerenciamento de Projetos práticas do PMI

1. Desenvolver o software iterativamente. Um pouco de reflexão: Acabou aí? 31/08/2010

Processos de Software

Engenharia de Software. Parte I. Introdução. Metodologias para o Desenvolvimento de Sistemas DAS

Metodologia e Gerenciamento do Projeto na Fábrica de Software

Ciclo de Vida Clássico ou Convencional CICLOS DE VIDA DE DESENVOLVIMENTO DE SISTEMAS. Ciclo de Vida Clássico ou Convencional. Enfoque Incremental

Engenharia de Software I: Análise e Projeto de Software Usando UML

Introdução a Computação

Engenharia de Software

REPROJETO DA ORGANIZAÇÃO COM SISTEMAS DE INFORMAÇÃO

Metodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

Gerência de Projetos

Roteiro SENAC. Análise de Riscos. Planejamento do Gerenciamento de Riscos. Planejamento do Gerenciamento de Riscos

Prova de Conhecimento para Consultores de Implementação MPS.BR INSTRUÇÕES

DESENVOLVENDO O SISTEMA

Políticas de Qualidade em TI

PROFESSOR: CRISTIANO MARIOTTI

PEN - Processo de Entendimento das Necessidades de Negócio Versão 1.4.0

O Processo Unificado

Introdução à Engenharia de. Software. Introdução à Engenharia de. Software. O que é a Engenharia de Software? Software

Engenharia de Software: conceitos e aplicações. Prof. Tiago Eugenio de Melo, MSc tiagodemelo@gmail.com

Engenharia de Software II

Dicionário da EAP - Software FarmaInfor

Engenharia de Software Processo de Desenvolvimento de Software

Professor: Curso: Disciplina:

Plano de Gerenciamento do Projeto

Engenharia de Requisitos

Engenharia de Requisitos

Engenharia de Software III

Pós Graduação Engenharia de Software

Teste de Software. Profa. Cátia dos Reis Machado

Gerenciamento de Projetos Modulo VIII Riscos

Tipos de teste de software

Qualidade de Software. Profa. Cátia dos Reis Machado

LEVANTAMENTO DE REQUISITOS. Lílian Simão Oliveira

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 10 PROFª BRUNO CALEGARO

Metodologia de Desenvolvimento de Sistemas (Versão 2.0)

Scrum. Introdução UFRPE-DEINFO BSI-FÁBRICA DE SOFTWARE

UNIDADE 4. Introdução à Metodologia de Desenvolvimento de Sistemas

REPROJETO DA ORGANIZAÇÃO COM SISTEMAS DE INFORMAÇÃO

Fundamentos de Engenharia de Software Professor Rafael Escalfoni

Referências internas são os artefatos usados para ajudar na elaboração do PT tais como:

ATO Nº 91/2015/GP/TRT 19ª, DE 1º DE JUNHO DE 2015

Módulo 4: Gerenciamento de Dados

Introdução à Engenharia de Software

Fase 1: Engenharia de Produto

Ciência da Computação ENGENHARIA DE SOFTWARE. Análise dos Requisitos de Software

SCRUM: UM MÉTODO ÁGIL. Cleviton Monteiro

Engenharia de Software

Gerência de Projetos Prof. Dr. Sandro Ronaldo Bezerra Oliveira

Transcrição:

Tecnologia da Informação para EPPGG 2013 Victor Dalton

Edital TECNOLOGIA DA INFORMAÇÃO: 1. Noções sobre processo de desenvolvimento de software: modelos organizacionais, stakeholders, modelagem de negócio, engenharia de requisitos, análise e projeto, implementação, teste, implantação. 2. Papéis e responsabilidades em projetos de software: patrocinador, área de negócio, analista de requisitos, gerente de projetos, equipe de desenvolvimento, equipe de sustentação.

Roteiro Considerações Iniciais Modelos de processos de software Stakeholders Modelagem de Negócio Engenharia de Requisitos Casos de Uso Análise Projeto

Roteiro Implementação Testes Implantação Papéis e Responsabilidades em Projetos de Software Metodologias Ágeis

Bibliografia Principal Engenharia de Software: Uma abordagem profissional Pressman (7ª ed) Engenharia de Software Sommerville (8ª ed) Complementar Princípios de Análise de Projeto de Sistemas com UML Eduardo Bezerra (2ª ed) Introdução ao RUP: Rational Unified Process Philippe Kruchten

O que é software? Programa + documentação Caracterísiticas, funções e desempenho desejados (ou esperados) Instalado em máquina ou web Software = Sistema?

O que é Engenharia de Software? Métodos, princípios e ferramentas que norteiam o desenvolvimento de software.

Processo de Desenvolvimento de Software Conjunto de atividades organizadas que leva à produção de software. Exemplo: moradia x sistema

Importância da engenharia de software Pesquisa em mais de 350 empresas sobre os seus mais de 8.000 Projetos de software 30 % dos projetos foram cancelados. Dos concluídos, 9% entregues dentro do prazo e do valor estimado(standish Group 1994). Fatores principais relatados como causas das falhas: 1. Requisitos incompletos (13.1%) 2. Falta de envolvimento por parte do usuário (12.4%) 3. Falta de recursos (10.6%) 4. Expectativas não realistas (9.9%) 5. Modificações nos requisitos e nas especificações (8.7%) 6. O sistema não era mais necessário (7.5%)

Modelos de Processo de Software Metodologia genérica Cinco atividades metodológicas: Comunicação Planejamento Modelagem Construção Emprego

Modelos de Processo de Software Fluxo como essas atividades são organizadas em relação à sequência e ao tempo Fluxo linear

Modelos de Processo de Software Fluxo iterativo

Modelos de Processo de Software Fluxo evolucionário

Modelos Sequenciais Modelo em cascata

Modelos Sequenciais Modelo em cascata

Modelos Sequenciais Etapas do modelo cascata Levantamento de requisitos Análise de requisitos Projeto Implementação (e teste de unidade) Teste Implantação

Modelos Sequenciais Modelo V

Modelos Sequenciais Útil somente para adaptar ou aperfeiçoar um projeto já existente Projetos reais dificilmente seguem esse fluxo Cliente dificilmente define todas as suas necessidades no inicio do desenvolvimento do software Cliente precisa esperar o software até o final do projeto

Modelos Incrementais

Modelos Incrementais Variação: Rapid Application Development

Modelos Incrementais Útil quando o produto suporta esse tipo de entrega Gerenciamento inadequado prejudica o modelo

Modelos Evolutivos Desenvolvimento em ciclos Incremento de novas funcionalidades ao sistema Reconhecimento do dinamismo do negócio

Modelos Evolutivos Prototipação

Modelos Evolutivos Prototipação

Modelos Evolutivos Espiral

Modelos Evolutivos Espiral

Modelos Evolutivos Não precisa se encerrar na entrega do software Reconhecimento explícito dos riscos Pode ser difícil convencer o cliente a aceitar esse modelo Com quem você faria? Empresa Cascata ou Empresa Evolucionária? Órgãos públicos

Outros modelos RUP Rational Unified Process Elementos de todos os modelos Desenvolver o software iterativamente Gerenciar Requisitos Usar arquiteturas baseadas em componentes (reuso) Modelar o software visualmente Verificar a qualidade do software Controlar as mudanças do software

Outros modelos RUP Rational Unified Process 4 fases Concepção Elaboração Construção Transição

Outros modelos Desenvolvimento baseado em componentes Reusar componentes já existentes Modelo de métodos formais Especificações matemáticas formais (aviônica, medicina)

RESUMO COMPARATIVO ENTRE OS TRÊS PRINCIPAIS MODELOS SEQUENCIAL INCREMENTAL EVOLUCIONÁRIO Como funciona Atividades em sequência Misto de atividades sequenciais e em paralelo Desenvolvimento em ciclos Vantagem Útil apenas quando a atividade é muito bem limitada e definida Útil quando o produto permite entregas seccionadas Reconhece os riscos explicitamente; reconhece o dinamismo do software Desvantagem Dificilmente um projeto real segue essa abordagem Nem todo software acomoda esse tipo de entrega Pode ser difícil convencer o cliente aceitar esse tipo de entrega

Exercício 1 (ESAF CGU - Analista de Finanças e Controle Desenvolvimento de Sistemas da Informação - 2012) A escolha de um modelo é fortemente dependente das características do projeto. Os principais modelos de ciclo de vida podem ser agrupados em três categorias principais: a) sequenciais, cascata e evolutivos. b) sequenciais, incrementais e ágeis. c) sequenciais, incrementais e evolutivos. d) sequenciais, ágeis e cascata. e) cascata, ágeis e evolutivos.

Exercício 2 (ESAF MPOG - Analista de Planejamento e Orçamento Tecnologia da Informação - 2010) As atividades do modelo espiral de Engenharia de Software são: a) Planejamento, Análise dos Componentes, Análise de Hierarquia e Avaliação feita pelo cliente. b) Planejamento, Análise dos Riscos, Engenharia e Avaliação feita pelo cliente. c) Projeto, Análise dos Benefícios, Engenharia e Avaliação feita pelo gestor. d) Planejamento, Eliminação dos Riscos, Análise de Contingência e Avaliação feita pelo cliente. e) Planejamento, Projeto, Análise dos Riscos e Engenharia.

Engenharia de requisitos

Requisitos Requisitos são uma especificação do que deve ser implementado. Eles constituem descrições de como o sistema deve ser comportar, ou uma propriedade ou atributo do sistema. Podem caracterizar uma restrição no processo de desenvolvimento do sistema. Sommerville

Classificação dos requisitos Quanto à natureza Requisitos funcionais Requisitos não funcionais Requisitos de domínio

Requisitos funcionais Declarações do que o sistema deve fazer, como se comportar O sistema deve permitir o cadastro de alunos Os alunos devem poder obter informações a respeito de faltas e notas O boletim e o histórico do aluno podem ser consultados pelos gestores Os professores não podem modificar a nota após o lançamento O sistema não deve revelar dados pessoais dos alunos aos professores

Requisitos não funcionais Restrições sobre os serviços ou funções oferecidas pelo sistema. Relaciona-se a desempenho, usabilidade, confiabilidade, segurança, disponibilidade, manutenibilidade e tecnologias envolvidas. O sistema deve ser fácil de usar O sistema deve ser baseado em tecnologias web O sistema deverá ser usado em Windows e Linux

Requisitos de domínio Provenientes do domínio da aplicação do sistema, refletem as características e restrições do domínio, podendo ser funcionais ou não funcionais. O sistema deve exportar cópia da nota fiscal para a Receita Federal via WebServices, utilizando XML Todas as operações disponibilizadas no sistema devem contemplar a legislação vigente

Classificação dos requisitos Quanto à visibilidade Requisitos de usuário Requisitos de sistema Requisitos de desenho (ou especificação de projetos de software)

Classificação dos requisitos Quanto à visibilidade Requisitos de usuário Requisitos de sistema Requisitos de desenho (ou especificação de projetos de software)

Classificação dos requisitos

Classificação dos requisitos

Classificação dos requisitos Quanto à qualidade Requisitos normais Requisitos esperados Requisitos fascinantes

Stakeholders Aqueles que se beneficiarão de forma direta ou indireta do sistema que está sendo desenvolvido Patrocinador do projeto, usuários finais do software, todos na organização que possam ser afetados por sua instalação Visões diferentes do sistema Cada parte pode contribuir para a engenharia de requisitos

Modelagem de negócio Entender a estrutura dinâmica da organização na qual um sistema será distribuído; Entender os problemas atuais na organização alvo e identificar potenciais melhorias; Assegurar que clientes, usuários finais e desenvolvedores tenham um entendimento comum da organização alvo;e Derivar os requisitos de sistema necessários para o suporte da organização alvo. A inserção da TI pode modificar a atividade de negócio! (passagens aéreas)

Modelagem de negócio Modelagem necessária: melhorar um negócio existente, ou novo negócio Outros casos (atividades pontuais, funcionalidades específicas) apenas se faz a análise de domínio Exemplo: LICIT

Modelagem de negócio

Engenharia de Requisitos Engenharia de requisitos é um conjunto de tarefas e técnicas que pretende mapear os requisitos de um sistema da melhor forma possível. Seu objetivo é criar e manter um documento de requisitos de sistema.

Abordagem 1 - Sommerville Estudo de Viabilidade: Utilidade para a empresa; Elicitação e Analise: Obtenção dos requisitos; Especificação: Conversão destes requisitos em um formato padrão; Validação: Alinhamento entre os requisitos e as necessidades do cliente; Gerenciamento de Requisitos: Acompanhar os requisitos ao longo do processo de desenvolvimento do software.

Abordagem 1 - Sommerville Estudo de Viabilidade É possível fazer? Podemos pagar?

Abordagem 1 - Sommerville Elicitação e análise 4 entendimentos

Abordagem 1 - Sommerville Elicitação e análise Obtenção de Requisitos (técnicas) Classificação e Organização de Requisitos Priorização e Negociação de Requisitos Documentação de Requisitos

Abordagem 1 - Sommerville Especificação de Requisitos Gerar documento compreensível pelo cliente Pode servir de base contratual

Abordagem 1 - Sommerville Validação de Requisitos Ver se é realmente o que o usuário deseja Completeza (deve envolver todas as funções); Consistência (não pode haver conflitos de requisitos); Ambiguidade (requisito não pode gerar múltiplas interpretações); Validade (todos os stakeholders concordam); Realismo (requisitos factíveis); Verificável e rastreável (é possível saber quais funcionalidades implementam quais requisitos, e mostrar testes que demonstrem a implementação da funcionalidade).

Abordagem 1 - Sommerville Gerenciamento de Requisitos Gerenciar alterações nos requisitos acordados Gerenciar relacionamentos entre requisitos Gerenciar dependências entre requisitos e outros documentos produzidos Matrizes de rastreabilidade

Abordagem 2 - Pressman Concepção: ideia inicial do software, início da comunicação Levantamento (elicitação): obtenção dos requisitos; Elaboração: Refinamento das informações obtidas, modelagem de cenários Negociação: ajustes de conflitos; Especificação: documentação formal; Validação: verificação junto ao cliente; Gestão: rastreamento ao longo do ciclo de vida.

Destaque para o levantamento/obtenção de requisitos Stakeholders não sabem o que querem Obstáculos para entendimento (linguagem) Requisitos diferentes/conflitantes Fatores políticos Dinamismo (requisitos mudam) Pressman: escopo, entendimento, volatilidade

COMPARAÇÃO ENTRE AS PRINCIPAIS ABORDAGENS DE ENGENHARIA DE REQUISITOS SOMMERVILLE PRESSMAN Estudo de Viabilidade Elicitação e Análise Obtenção Classificação e Organização Concepção Levantamento Elaboração Negociação Priorização e Negociação Documentação de Requisitos Especificação Validação Gestão Especificação Validação Gestão

Casos de Uso Técnica de elicitação de requisitos Representa interação entre um usuário e o sistema

Casos de Uso

Casos de Uso CASO DE USO 2 - VERIFICAR PEDIDO Atores - Cliente, Funcionário Fluxo de Eventos Primário (caminho básico): 1. O caso de uso começa quando o cliente seleciona "Meu pedido". 2. Usa Procurar Pedido (Caso de Uso 4) 3. O Sistema mostra os dados da situação do pedido e o caso de uso termina. Fluxo de Secundário (caminho alternativo): Se no passo 2, o pedido não foi encontrado, o sistema informa que o pedido não está cadastrado e solicita que o usuário verifique se os dados do pedido estão corretos. Pré-condição: O usuário ter feito o pedido Pós-condição: A situação do pedido não ter sido alterada.

Exercício 11 (ESAF CGU Analista de Finanças e Controle Desenvolvimento de Sistemas de Informação 2012) Assinale a opção correta. a) Gestão de requisitos preocupa-se com a documentação, atualização e controle de stakeholders envolvidos na fase de identificação da demanda. b) Engenharia de requisitos compreende: identificar, analisar, especificar e definir as necessidades de negócio que um aplicativo deve prover para solução do problema levantado. c) Engenharia de requisitos compreende: planejar, especificar e desenvolver as necessidades de negócio que um aplicativo deve prover para minimização dos problemas levantados. d) Engenharia de requisitos compreende: identificar, analisar, programar e testar os programas das necessidades de solução de problemas que um negócio deve prover para satisfazer usuários. e) Gestão de requisitos preocupa-se com a documentação, direcionamento, controle de definição e acesso aos requisitos levantados na fase de planejamento de escopo.

Exercício 13 (ESAF STN - Analista de Finanças e Controle Governança e Gestão em TI - 2013) A validação de requisitos elimina: a) associações de incompatibilidades, inconsistência e falta de competitividade. b) problemas de ambiguidade, inconsistência de espaço e completeza adjacente. c) redundância de acessos, incongruência e ajuste de completeza. d) problemas de ambiguidade, inconsistência e falta de completeza. e) problemas de ambiguidade, incongruência e completeza adjacente.

Análise Fronteira turva

Análise Construção de modelos para representar o sistema Independente do ambiente tecnológico utilizado o que o sistema deve fazer Duas correntes: análise estruturada e análise orientada a objetos

Análise estruturada Dados e processos são entidades separadas Informações que fluem e sofrem transformações da entrada para a saída Diagrama de Fluxo de Dados

Análise orientada a objetos Abstração para representar coisas do mundo real Entidades externas, coisas, lugares Pessoa nome: texto (50) endereço: texto (200) telefone: número inteiro (11) CPF: número inteiro (11)

Principais diagramas da Análise Modelos baseados em cenários Histórias de usuários Casos de uso

Principais diagramas da Análise Modelos de fluxo Processos e dados que transformam os processos Diagrama de Fluxo de Dados

Principais diagramas da Análise Modelos de fluxo Diagrama de Fluxo de Dados

Principais diagramas da Análise Modelos de comportamento Foco na resposta do sistema a estímulos e eventos Diagrama de estado

Principais diagramas da Análise Modelos de comportamento Diagrama de sequência

Principais diagramas da Análise Modelos de classe Objetos e métodos

Projeto como o sistema funcionará Modelagem ainda mais detalhada Dependente da tecnologia empregada Princípios, conceitos e práticas com foco na alta qualidade

Projeto: características Implementar todos os requisitos Guia legível (pra quem codifica, testa e dá suporte) Visão completa do software

Conceitos relacionados a projeto Abstração: da linguagem do domínio para termos técnicos Arquitetura: meta é derivar um quadro da arquitetura Padrões: padrões de projeto para problemáticas similares Separação por interesses: problema complexo deve ser decomposto em trechos que possam ser tratados de maneira independente

Conceitos relacionados a projeto Modularidade: achar o ponto ótimo entre integração e manutenção Encapsulamento: módulos devem esconder características, e disponibilizar apenas o que for relevante Independência funcional: módulos com função única e que pouco interagem com outros (coesão e acoplamento) Refinamento: refinamento sucessivo Refatoração: técnica que busca simplificar o código

Projetos Projeto de dados/classes Projeto de arquitetura Projeto de interfaces Projeto de componentes

Projeto de dados/classes Desenho da estrutura de dados

Projeto de arquitetura Relacionamentos entre os principais elementos estruturais do software/ componentes físicos do sistema

Projeto de arquitetura Diagrama de implantação

Projeto de arquitetura Diagrama de componentes

Projeto de componentes Descrição procedural dos componentes do software

Projeto de interface de usuário Conjunto de desenhos detalhados que mostram ao usuário como trabalhar com o sistema Princípios Familiaridade: termos e conceitos do domínio Consistência: operações similares acionadas da mesma forma Surpresa mínima: usuários não serem surpreendidos Deixar o usuário no comando: usuário capaz de interromper o que está fazendo para fazer outra coisa, sem perder o que já foi feito Reduzir a memória do usuário: sistema capaz de guiar o usuário

Projeto de interface de usuário

Análise X Projeto ANÁLISE Idéia O que fazer (entender os requisitos) Diagramas Modelos de Análise Modelos baseados em cenários Modelos de fluxo Modelos de comportamento Modelos de classe PROJETO Como Fazer (busca pela alta qualidade) Projetos Projeto de banco de dados Projeto de arquitetura Projeto de componentes Projeto de interface de usuário Destaque Análise estruturada x Análise OO Abstração, Encapsulamento, Independência Funcional, Refatoração

Exercício 4 (ESAF Receita Federal Analista Informática 2012) Assinale a opção correta relativa a diagrama de fluxo de dados (DFD). a) Descreve graficamente o fluxo em depósitos de dados e as transformações dos processos que interferem nas entradas a partir de entidades externas. b) Modela os objetos relativos a fluxo de informações e as categorias de dados relevantes para as saídas. c) Descreve graficamente o fluxo de informações e as transformações que são aplicadas à medida que os dados se movimentam da entrada para a saída. d) Descreve graficamente a estrutura das informações em que se organizam os dados inerentes a processos. e) Descreve graficamente o fluxo de dados transformados segundo atributos das entidades externas.

Exercício 5 (ESAF SEFAZ/CE Analista de Tecnologia da Informação 2006 - adaptada) Analise a descrição a seguir. O paradigma do ciclo de vida clássico da engenharia de software abrange seis atividades. Na atividade de são traduzidas as exigências de uma representação do software que podem ser avaliadas quanto à qualidade antes que se inicie a codificação. Escolha a opção que preenche corretamente a lacuna acima. a) projeto b) levantamento de requisitos c) teste d) implantação e) análise

Implementação Tradução do projeto em código executável

Implementação Fazer código novo ou reusar? Etapa na qual ocorre o teste de unidade!

Testes Atividade realizada para descobrir erros no sistema Todo software tem erros, e sempre terá! Podem ser planejados antecipadamente e conduzidos de maneira sistêmica Estratégias de teste: por que testar? Técnicas de teste: como testar?

Estratégias de Testes Verificação: tarefas que verificam se o software funciona corretamente (Estamos construindo o produto corretamente?) Validação: tarefas que verificam se o software atende às expectativas do cliente (Estamos construindo o produto certo?) *Polêmica: Pressman x Sommerville Teste confirma qualidade, ele não cria qualidade

Realizadores dos testes Testes de unidade e integração: desenvolvedores do código Testes de validação e sistema: grupo independente de testes

Quatro estratégias de teste Testes de unidade: concentrado em cada unidade: encontrar erros em componente, classe ou módulo Realizado durante a implementação!

Quatro estratégias de teste Testes de integração: erros na comunicação entre os módulos (interfaces) Pode ser top-down ou bottom-up

Quatro estratégias de teste Testes de validação: testes que demonstram conformidade com os requisitos Nem sempre todos os stakeholders poderão fazer testes formais de aceitação Testes alfa e beta

Quatro estratégias de teste Testes de sistema: além dos limites do software Verificar se todos os elementos se combinam corretamente e se a função/desempenho global do sistema é conseguida Teste de recuperação Teste de segurança Teste de esforço Teste de desempenho Teste de disponibilização

Depuração Ato de analisar um código para encontrar o local exato que produz um erro Depurar não é testar, mas são processos que se relacionam

Técnicas de teste: duas grandes categorias Caixa-branca (ou teste estrutural, teste orientado à lógica) Avalia comportamento interno do sistema Ênfase na observação do código-fonte Ênfase nos períodos de testes de unidade e integração; Teste de condição, teste de fluxo de dados, teste de caminho básico, teste de ciclos, teste de caminhos lógicos, códigos nunca executados, teste de estrutura de controle;

Técnicas de teste: duas grandes categorias Caixa-preta (ou teste funcional, teste comportamental, orientado a dado, orientado a entrada e saída) Avalia comportamento externo do sistema Sem observação do código-fonte Ao longo de todo o ciclo de testes (ênfase da integração ao sistema); Particionamento de equivalência (ou classes de equivalência), Análise do Valor Limite;

Exercício 1 (ESAF SEFAZ/CE Analista de Tecnologia da Informação - 2006) Na engenharia de software, o objetivo do processo de Teste de Software é a) encontrar defeitos. b) corrigir apenas os defeitos de alta criticidade. c) executar apenas os testes de caixa preta. d) demonstrar o correto funcionamento do software. e) provar que o software está 100% isento de defeitos.

Exercício 12 (ESAF MPOG Analista de Planejamento e Orçamento Tecnologia da Informação - 2008) Uma estratégia de teste de software integra métodos de projeto de casos de teste em uma série planejada de passos. Em relação a estratégias de testes, é correto afirmar que: a) realizar testes para mostrar que não existem defeitos no software faz parte das estratégias de testes. b) demonstrar ao desenvolvedor e ao cliente que o software atende aos requisitos é uma meta de validação do software. c) o particionamento de equivalência é uma maneira estratégica de aplicar testes de software. d) o teste estrutural é uma estratégia que se baseia na análise da especificação de um programa para ajudar na seleção de casos de teste. e) funções ou métodos individuais de um objeto não são exemplos de estratégia da aplicação de teste de componentes.

Papéis e Responsabilidades em Projeto de Software Estudo transversal

Patrocinador Atribuir recursos e dinheiro ao projeto Ponto focal para a administração e outros stakeholders Promover e proteger o projeto Designar um gerente para o projeto Delimita o poder do gerente do projeto Responsável pelo sucesso/fracasso do projeto perante a alta administração

Gerente de projeto Gerência/coordenação das atividades necessárias à construção do sistema Orçamento/cronograma Seleção da equipe Monitoramento e controle Presta contas do projeto ao patrocinador 4Ps: Pessoas, Produto, Processo e Projeto

Gerente de projeto Pessoas: Formar/liderar equipe, estabelecer comunicação Produto: Análise detalhada dos requisitos, delimitar escopo, definir recursos e prazo Processo: Escolher o processo de software mais adequado ao projeto Projeto: Fatores críticos de sucesso, planejar, monitorar e controlar o projeto, por meio de métricas e ferramentas

Área de Negócio Colaborar com a elicitação de requisitos Participar dos testes finais do software Fornecer o feedback após a sua implantação Especialista de Domínio

Analista de Requisitos Ter conhecimento do domínio do negócio Definir os requisitos do sistema a ser desenvolvido

Equipe de desenvolvimento Desenvolver o software Projetistas Arquitetos de software Programadores

Equipe de sustentação Manutenção do sistema após a sua entrega Manutenção corretiva, adaptativa, evolutiva Analista de suporte

Metodologias ágeis Esforço para sanar fraquezas reais e perceptíveis da engenharia de software tradicional Reconhecimento do dinamismo do mercado (mudanças rápidas das necessidades dos usuários, incapacidade da definição completa dos requisitos antes do início do desenvolvimento) estruturação e as atitudes em equipe que tornam a comunicação mais fácil entrega rápida do software operacional cliente como parte da equipe de desenvolvimento reconhece que o planejamento tem limites plano de projeto tem que ser flexível

Valores da filosofia ágil Indivíduos e interações, em vez de processos e ferramentas Software funcional, em vez de documentação abrangente Colaboração do cliente, em vez de negociação de contratos Responder mudanças, em vez de seguir um plano

XP (extreme Programming) Jogo de Planejamento Small Releases Time Coeso Ritmo Sustentável Reuniões em pé Posse Coletiva do código Programação em pares Desenvolvimento Orientado a Testes Integração Contínua

Scrum Papéis Product Owner, Scrum Master, Team Sprint Caixa de Tempo, na qual um conjunto de funcionalidades será entregue Artefatos Product Backlog, Sprint Backlog, Reuniões Daily Scrum, Planejamento de Sprint, Sprint Review, Sprint Retrospective

Exercícios?

Obrigado! Victor Dalton victordalton@estrategiaconcursos.com.br