! Software e Engenharia de Software! Engenharia de Software e Programação! Histórico. " Crise do Software

Documentos relacionados
! Software e Engenharia de Software! Engenharia de Software e Programação! Histórico. " Crise do Software

Análise e Projeto de Sistemas. Engenharia de Software. Análise e Projeto de Sistemas. Contextualização. Perspectiva Histórica. A Evolução do Software

UNIVASF - Universidade Federal do Vale do São Francisco Manutenção de Software

Manutenção desoftware. SCE 186- Engenharia de Software Profs. José Carlos Maldonado e Elisa Yumi Nakagawa 2 o semestrede2002

Engenharia de Software

EVOLUÇÃO DE SOFTWARE

Engenharia de Requisitos

Engenharia de Software

Metodologia de Desenvolvimento de Sistemas

Análise e Projeto de Sistemas de Informação. Andrêza Leite andreza.lba@gmail.com

Engenharia de Software Processo de Desenvolvimento de Software

Introdução à Engenharia de Software

Introdução Fatores de Qualidade Garantia de Qualidade Rivisões de Software Conclusão. Qualidade. Plácido A. S. Neto 1

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

ENGENHARIA DE SOFTWARE I

Introdução à ES - Continuação

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos

Engenharia de Software II

REQUISITOS. Prof. Msc. Hélio Esperidião

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

Processos de Desenvolvimento de Software

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

PROFESSOR: CRISTIANO MARIOTTI

Engenharia de Software Unidade I Visão Geral

Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS)

Projeto de Sistemas I

Introdução à Computação

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

Fundamentos de Engenharia de Software. Josino Rodrigues

Sistemas de Informação I

Modernização e Evolução do Acervo de Software. Gustavo Robichez de Carvalho guga@les.inf.puc-rio.br

Introdução. Aulas. ltodi.est.ips.pt/es. Detalhes administrativos Definição de engenharia de software Contexto Relação com outras áreas e disciplinas

Desenvolvimento de Soluções de e-business. Objetivos do Capítulo

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

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

Visão Geral Parte 1. O que é engenharia de software?

Universidade Paulista

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

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

Engenharia de Software 01 - Introdução. Márcio Daniel Puntel marciopuntel@ulbra.edu.br

Análise de Sistemas. Visão Geral: Orientação a Objetos. Prof. José Honorato Ferreira Nunes honorato.nunes@bonfim.ifbaiano.edu.br

Engenharia de Software-2003

ENGENHARIA DE SOFTWARE/ SISTEMAS DE SOFTWARE

Engenharia de Software

Engenharia de Software. Tema 1. Introdução à Engenharia de Software Profa. Susana M. Iglesias

Engenharia de Software Introdução. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 1

! Introdução. " Motivação para Processos de Software. ! Processo Unificado (USDP) " Definições " RUP x USDP " Características do Processo Unificado

ENGENHARIA DE SOFTWARE

Atividade da gerência da qualidade

Wilson Moraes Góes. Novatec

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

GOVERNO DO ESTADO DO PARÁ MINISTÉRIO PÚBLICO DE CONTAS DOS MUNICÍPIOS DO ESTADO DO PARÁ MPCM CONCURSO PÚBLICO N.º 01/2015

Aula 2 Revisão 1. Ciclo de Vida. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW

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

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

Engenharia de Software Introdução. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 1

Análise de Sistemas. Conceito de análise de sistemas

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

Engenharia de Software: Introdução. Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes

Introdução a Informática. Prof.: Roberto Franciscatto

MODELAGEM DE SISTEMAS DE INFORMAÇÃO

Fundamentos em Teste de Software. Vinicius V. Pessoni

HABILITAÇÃO COMPONENTE TITULAÇÃO

Engenharia de Software 1

Gestão de Modificações. Fabrício de Sousa

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

Padrões de Qualidade e Métricas de Software. Aécio Costa

Aprenda as melhores práticas para construir um completo sistema de teste automatizado

Qualidade de Software. Prof.: Ivon Rodrigues Canedo. PUC Goiás

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

Faculdade Pitágoras. Engenharia de Software. Prof.: Julio Cesar da Silva.

Introdução à. Engenharia de Software. Givanaldo Rocha de Souza

Gerenciamento de projetos.

CHECK - LIST - ISO 9001:2000

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

O uso do gestor de conteúdos plone no suporte a processos de software

Engenharia de Software

Processo de Desenvolvimento de Software. Engenharia de Software.

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

Requisitos de Software. Teresa Maciel DEINFO/UFRPE

INSTRUÇÃO DE SERVIÇO PARA ELABORAÇÃO DE PLANOS GERAIS DE PROJETOS DE SISTEMAS OU APLICATIVOS

Análise Estruturada de Sistemas

Engenharia Reversa e Reengenharia

UNIP Ciência da Computação / Sistemas de Informação TED I - Orientações Gerais para Elaboração dos Documentos

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

UML - Unified Modeling Language

Ciência da Computação ENGENHARIA DE SOFTWARE. Planejamento e Gerenciamento

Processo de Desenvolvimento de Software

Notas de Aula 02: Processos de Desenvolvimento de Software

A Disciplina Gerência de Projetos

Requisitos de Software

Engenharia de Software II

Engenharia de Software

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

BRAlarmExpert. Software para Gerenciamento de Alarmes. BENEFÍCIOS obtidos com a utilização do BRAlarmExpert:

Engenharia de Software III

Professor: Curso: Disciplina:

Transcrição:

Agenda Introdução a Engenharia de Cleidson de Souza cdesouza@ufpa.br http://www.ufpa.br/cdesouza! e Engenharia de! Engenharia de e Programação! Histórico " Crise do! No Silver Bullet! Fases Genéricas do Processo de Desenvolvimento de! Princípios, Métodos, Metodologias e Ferramentas de Engenharia de 2! Definição " Programas (instruções) que executam uma determinada tarefa; " Estruturas de dados que permitem o armazenamento de informações; " Documentos que descrevem o uso do produto assim como o processo que levou a construção do mesmo.! Características " Lógico (não se deteriora); " É construído de forma diferente do hardware. 3 Engenharia de - Definições! Engenharia de software é a disciplina que lida com a construção de sistemas de software flexíveis, modulares, robustos, confiáveis, usáveis e adequados ao contexto sóciotécnico onde estes sistemas estão inseridos.! Uma disciplina que lida com a construção de sistemas de software que são tão grandes que são construídos por um ou vários times de engenheiros. [Ghezzi, Jazayeri, Mandrioli]! Uma disciplina cujo objetivo é a produção de software sem falhas, entregue dentro de prazo e orçamento e satisfazendo as necessidades dos usuários. Além disso, o software precisa ser facilmente modificável quando as necessidades do usuário mudam.[schach] 4

Engenharia e Programação! Aplicação prática de conhecimento científico no projeto e construção de programas e da documentação requerida para desenvolver, operar e manter esses programas. [Boehm]! O estabelecimento e uso de sólidos princípios de engenharia para que se possa obter economicamente software que seja confiável e que funcione eficientemente em máquinas reais. [Fritz Bauer-1969]! Uma área do conhecimento voltada para a especificação, desenvolvimento e manutenção de sistemas de software aplicando tecnologias e práticas de ciência da computação, gerência de projetos e outras disciplinas, objetivando organização, produtividade e qualidade. [wikipedia]! Construção de um software com várias versões por várias pessoas (Multi-person construction of multi-version software).[parnas]! Programação " Projeto pequeno " Você " Construir o que você mesmo quer " Um produto " Poucas modificações, feitas em seqüência " Tempo de vida curto " Barato " Pouco impacto! Engenharia " Projeto Grande " Times " Construir o que os clientes querem " Família de produtos " Várias modificações, feitas em paralelo " Tempo de vida longo " Caro " Grande Impacto 5 6 Windows Vista (Longhorn)! Em resumo, engenharia de software inclui: "A organização de times para a construção colaborativa de sistemas de software "A determinação do que precisa ser construído; "Arquiteturas de software; "Análise e Testes; "Ciclos de vida e Processos de software; "Etc. 7! 5000 desenvolvedores (sem incluir pessoal não-técnico);! 40 milhões de linhas de código;! 16 milhões de linhas de código somente nos últimos 3 anos;! Versões compiláveis todos os dias;! Testes de regressão;! Intervalo de 3 dias para um mudança submetida aparecer no executável;! ~1.7 pessoas testando para cada programador;! Precisa ter compatibilidade com versões anteriores;! Precisa ser instalado em milhares de configurações diferentes; 8

Windows Vista (Longhorn)! Como organizar as atividades tal que 5000 pessoas possam trabalhar juntas ao mesmo tempo; " Processo de software; " Ferramentas de Gerência de Configuração;! Como testar tanto código? Para tantas plataformas diferentes? " Testes de regresão?! Como projetar um sistema com 40 milhões de linhas de código? Como garantir a integridade deste projeto? " Arquitetura / Projeto de software; WSSP! ~36 estudantes de graduação;! ~1 semestre;! Sistema para a Polícia Militar - PA " Cliente real: entrevistas, visitas, revisão de documentos; " 190 e despacho de unidades integrado com sistemas de informação geográfica (SIGs); " Requisitos, Arquitetura flexível, Implementação, Testes, Manual, CVS,Rational ClearCase, etc. 9 10 (Mais formalmente,) A Engenharia de inclui! Princípios, métodos e metodologias; " Modularidade; " Diagramas de fluxo de dados;! Planejamento, estimativas, e gerência de projetos;! Projeto de programas " Algoritmos; " Estruturas de dados;! Ferramentas; " Compiladores; " Geração de Testes; " Colaboração: email, CVS, Powerpoint; Histórico! Termo cunhado durante uma conferência da OTAN em 1969 em Garmisch, Alemanha;! O termo engenharia foi usado visando dar um sentido sistemático, rigoroso, formal, controlado para o desenvolvimento de software.! Em resposta a chamada crise do software " Termo usado para indicar o estado da prática em desenvolvimento de software na epóca; 11 12

Crise do! Constatações, que software(s) " Custos elevados; " Atrasos na entrega; " Baixa confiabilidade e corretude do produto; " Dificuldade de medição; " Gerência do desenvolvimento ineficaz; " Alta demanda não atendida; " existente é de difícil manutenção.! Causas " Muita ênfase na programação; " Práticas artesanais utilizadas no desenvolvimento; " Pouco treinamento formal aos desenvolvedores. No Silver Bullet! Artigo de Fred Brooks publicado em 1986;! Argumento " Nenhum ferramenta ou tecnologia irá produzir um aumento significativo (de ordens de magnitude) na produtividade do desenvolvimento de software " Porquê?! Complexidade Acidental " Erros de compilação, poder de expressividade das linguagens de programação, etc.! Complexidade Essencial " Complexidade, necessidade de modificações, Adaptabilidade, e Invisibilidade; 13 14 Fases Genéricas do Processo de Desenvolvimento de! Brooks discute porquê várias tecnologias não são a silver bullet " Ambientes de desenvolvimento integrado (IDEs); " Linguagem de programação Ada; " Orientação a Objetos; " Inteligência artificial; " Sistemas Especialistas; " Etc.! Todas elas enfocam nas complexidade acidental (o açúcar sintático para o desenvolvimento de software);! Fase de Definição ou Análise: o quê " Engenheiro de tenta identificar: que informação deve ser processada, que função e desempenho são desejados, que comportamento deve ser esperado do sistema, que interfaces devem ser estabelecidas, quais restrições de projeto, quais critérios de validação " Os requisitos-chave do sistema e do software são identificados 15 16

! Fase de Desenvolvimento (Projeto e Implementação): como " Definição de como os dados devem ser estruturados, como a função deve ser implementada dentro da arquitetura do software, como os detalhes procedimentais devem ser implementados, como as interfaces devem ser caracterizadas, como o projeto deve ser traduzido em linguagem de programação, e como o teste deve ser realizado;! Fase de Manutenção: modificações " Tipos de Modificações: Corretiva, Adaptativa, Perfectiva e Preventiva;! Corrigir erros; Adequar o sistema à uma nova realidade; e assim por diante " Reengenharia é um tipo de manutenção que normalmente implica ou deriva da reengenharia dos processos de negócios da organização usuária; 17 18 Fases Genéricas do Processo de Desenvolvimento de! Atividades guarda-chuva: transversais às demais etapas " Acompanhamento e controle do projeto de software;! Coleta de Métricas; " Garantia de qualidade de software! Revisões técnicas formais; " Gestão de configuração de software; " Preparação e produção de documentos; " Gestão de reutilização; " Gestão de Risco! Atividades Seqüenciais " Análise; " Projeto de Alto Nível; " Projeto Detalhado; " Implementação; " Testes; " Manutenção;! Atividades em Paralelo " Gerência de Processo; " Garantia de Qualidade; " Gestão de configuração; " Gestão de Reutilização; " Gestão de Riscos; 19 20

A Engenharia de inclui Engenharia de! Princípios, métodos e metodologias; " Modularidade; " Diagramas de fluxo de dados;! Planejamento, estimativas, e gerência de projetos;! Projeto de programas " Algoritmos; " Estruturas de dados;! Ferramentas; " Compiladores; " Geração de Testes; " Colaboração: email, CVS, Powerpoint;! Estrutura:! Princípios: [Guezzi-1994]!Modularidade!Consistência!Completude!Confiabilidade!Corretude Ferramentas Metodologias Métodos Princípios!Manutenibilidade!Reusabilidade!Eficiência!Abstração!Formalismo 21 22 Engenharia de! Métodos: " Modelos formais usados para:! compreender! comunicar " Exemplos: ER, DFD, DE, DD, SADT, NSD, DTE,...! Metodologia ou Ciclo de vida: " Conjunto de passos que visam a construção de software! gerenciável, completo, abstração,...! Ferramentas " Suportam uma metodologia ou um método; Métodos de Engenharia de! Formalismo utilizado para representar o software em vários níveis de abstração;! Precisão " Ausência de ambigüidade! Apresentação: " Textos " Diagramas! Representação de algum aspecto de software: " Estrutural, Comportamental, Arquitetural, etc. 23 24

Estrutural (dados) Visões para um problema Comportamental (estados e eventos) Ferramentas! Automatizam o processo de desenvolvimento de software " Editores, testadores, compiladores e gerenciadores de processo, gerência de configuração, etc. " Integração entre ferramentas; Arquitetural (operações) [FOWLER96] Repositório 25 26 Leitura opcional! No Silver Bullet, disponível em http://www.ufpa.br/cdesouza 27