! 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

Metodologia de Desenvolvimento de Sistemas

EVOLUÇÃO DE SOFTWARE

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

Introdução à Engenharia de Software

Engenharia de Requisitos

ENGENHARIA DE SOFTWARE I

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

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

Engenharia de Software

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

Engenharia de Software Processo de Desenvolvimento de Software

Engenharia de Software II

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

Introdução à ES - Continuação

Introdução à Computação

Fundamentos de Engenharia de Software. Josino Rodrigues

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

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

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

Engenharia de Software Unidade I Visão Geral

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

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

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

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

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

Processos de Desenvolvimento de Software

PROFESSOR: CRISTIANO MARIOTTI

Universidade Paulista

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

Projeto de Sistemas I

Atividade da gerência da qualidade

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

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

Engenharia de Software

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

Sistemas de Informação I

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

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

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

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

ENGENHARIA DE SOFTWARE/ SISTEMAS DE SOFTWARE

Engenharia de Software-2003

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

Engenharia de Software II

ENGENHARIA DE SOFTWARE

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

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

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

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

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

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

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

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

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

A Disciplina Gerência de Projetos

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

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

Wilson Moraes Góes. Novatec

Introdução. Hardware X Software. Corpo Humano Parte Física. Capacidade de utilizar o corpo em atividades especificas explorando seus componentes

Requisitos de Software

CHECK - LIST - ISO 9001:2000

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

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

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

Gerenciamento de configuração. Gerenciamento de Configuração. Gerenciamento de configuração. Gerenciamento de configuração. Famílias de sistemas

Fundamentos em Teste de Software. Vinicius V. Pessoni

MODELAGEM DE SISTEMAS DE INFORMAÇÃO

Processo de Desenvolvimento de Software. Engenharia de Software.

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

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

HABILITAÇÃO COMPONENTE TITULAÇÃO

Engenharia de Software 1

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

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

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

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

Gerenciamento de projetos.

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

UML - Unified Modeling Language

ADMINISTRAÇÃO DE SISTEMAS DE INFORMAÇÃO (AULA 03)

Autores/Grupo: TULIO, LUIS, FRANCISCO e JULIANO. Curso: Gestão da Tecnologia da Informação. Professor: ITAIR PEREIRA DA SILVA GESTÃO DE PESSOAS

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

Professor: Curso: Disciplina:

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

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

Tecnologia e Sistemas de Informações

UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIÊNCIAS DA COMPUTAÇÃO (Bacharelado)

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

Requisitos de Software. Teresa Maciel DEINFO/UFRPE

Engenharia de Software

GARANTIA DA QUALIDADE DE SOFTWARE

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

Transcrição:

Agenda Introdução a Engenharia de Cleidson de Souza cdesouza@ufpa.br http://www.ufpa.br/cdesouza! e! 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 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 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 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 usando visando dar um sentido sistemático e 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. 13 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; 14! 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); Exercício! Artigo " http://www.virtualschool.edu/mon/engineering /BrooksNoSilverBullet.html! Atualização do artigo de Brooks " Outras tecnologias que você conhece: Orientação a Aspectos;! Formato: SBC " Tamanho da fonte, margem, etc. " 2 páginas; " http://www.sbc.org.br, selecionar o link Eventos. Depois, canto inferior esquerdo. 15 16

Fases Genéricas do Processo de Desenvolvimento de! 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! 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; identificados 17 18! 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;! 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 19 20

Fases Genéricas do Processo de Desenvolvimento de A inclui! 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;! 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; 21 22! Estrutura:! Princípios: [Guezzi-1994]!Modularidade!Consistência!Completude!Confiabilidade!Corretude Ferramentas Metodologias Métodos Princípios!Manutenibilidade!Reusabilidade!Eficiência!Abstração!Formalismo! 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; 23 24

Métodos de Engenharia de! Formalismo utilizado para representar o software em vários níveis de abstração; Estrutural (dados) Comportamental (estados e eventos)! Precisão " Ausência de ambigüidade! Apresentação: " Textos " Diagramas! Representação de algum aspecto de software: Visões para um problema Arquitetural (operações) [FOWLER96] " Estrutural, Comportamental, Arquitetural, etc. 25 26 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; Repositório 27