ENGENHARIA DE SOFTWARE I



Documentos relacionados
Introdução à ES - Continuação

Introdução a Engenharia de Software

Uma Introdução à Engenharia de Software

Engenharia de Software

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

ENGENHARIA DE SOFTWARE

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

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

PROFESSOR: CRISTIANO MARIOTTI

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

Processos de Desenvolvimento de Software

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

ENGENHARIA DE SOFTWARE I

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

Projeto de Sistemas I

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

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

Distribuidor de Mobilidade GUIA OUTSOURCING

Introdução à Engenharia de Software

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

Universidade Paulista

MÉTRICAS DE SOFTWARE

! 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

Fundamentos de Engenharia de Software. Josino Rodrigues

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

Metodologia de Desenvolvimento de Sistemas

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

ESTUDO DE VIABILIDADE. Santander, Victor - Unioeste Aula de Luiz Eduardo Guarino de Vasconcelos

QUALIDADE DE SOFTWARE. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 27 Slide 1

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

Jonas de Souza H2W SYSTEMS

Tópicos. Engenharia de Software: Uma Visão Geral

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

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

Tecnologia e Sistemas de Informações

Engenharia de Software Processo de Desenvolvimento de Software

Introdução ao Aplicativo de Programação LEGO MINDSTORMS Education EV3

Requisitos. Sistemas de Informações

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

Extração de Requisitos

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

Análise Estruturada de Sistemas

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

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

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

Introdução à Computação

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

Engenharia de Requisitos

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

Introdução a Engenharia de Software. Alterações na aula do Prof. Reinaldo Bianchi Alterado por: Antonio Carlos Souza ADS - IFBA

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

GARANTIA DA QUALIDADE DE SOFTWARE

COMO FAZER A TRANSIÇÃO

Engenharia de Software

Gerenciamento de Problemas

Modelo Cascata. Alunos: Bruno Nocera Zanette Pedro Taques

Requisitos. Professor Gabriel Baptista ( gabriel.baptista@uninove.br ) ( )

Modelagem de Software

Gestão da Qualidade Políticas. Elementos chaves da Qualidade 19/04/2009

Processo de Desenvolvimento de Software

ENGENHARIA DE SOFTWARE II

Introdução a Computação

Requisitos de Software. Teresa Maciel DEINFO/UFRPE

Qualidade de Software

Projeto de Desenvolvimento de Software. Apresentação (Ementa) e Introdução

IntroduçãoaoGuia SWEBOK. Ernani Lopes Isensee 2014

Implantação de um Processo de Medições de Software

Rational Requirements Composer Treinamento aos Analistas de Qualidade e Gestor das Áreas de Projeto

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

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

Exame de Fundamentos da ITIL

Fábrica de Software 29/04/2015

Sistemas de Informação I

Sistemas de Informação I

Manutenção de Ambientes de Saúde

ISO 9001:2008. Alterações e Adições da nova versão

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

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

Melhores práticas no planejamento de recursos humanos

Processo de Desenvolvimento Unificado

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Prof. Me. Marcos Echevarria

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

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 II

Conversa Inicial. Olá! Seja bem-vindo à quarta aula de Fundamentos de Sistemas de Informação.

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

ISO/IEC 12207: Gerência de Configuração

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

Transcrição:

UNIVERSIDADE FEDERAL DO MATO GROSSO ENGENHARIA DE SOFTWARE I Introdução à Engenharia de Software: Motivação, Histórico, Conceitos, Elementos de ES e Mitos do Software AULA 1 Profª MSc. MICHELLE DE OLIVEIRA PARREIRA parreira.michelle@gmail.com

Roteiro Software X Hardware Manutenção de software Elementos da ES Mitos do software Princípios de Hooker Modelos de ciclo de vida 2

Escopo do Curso Atividades de Desenvolvimento 3

Por que preciso de Engenharia de Software? Já sei programar! Programação é apenas uma parte do processo de Engenharia de Software (ES). Precisamos também saber: O que programar Como programar Se o que foi programado é o que o cliente realmente quer... 4

Programas das empresas Se o desenvolvedor de software errar, o que pode acontecer? 5

Programas das empresas Fatores críticos: Custo Prazo Qualidade 6

Histórico (Era pré ES) 1968: Crise do software Os projetos de software dos anos iniciais tinham os seguintes problemas: Altos investimentos Excesso de bugs Requisitos mal compreendidos Não conseguiam se manter funcionando 7

ES hoje Economia de todas as nações desenvolvidas são dependentes de software Cada vez mais os sistemas são controlados por software ES dedica-se às teorias, métodos e ferramentas para desenvolvimento de software profissional Sistemas não triviais Baseado em um conjunto de requisitos 8

O que é software? São programas de computador e artefatos associados Um programa é um conjunto de soluções algorítmicas, codificadas numa linguagem de programação, executado numa máquina real. Software é um produto conceitual e lógico Produtos de software podem ser: Genéricos Personalizados 9

O que é software? Um software novo pode ser criado através de: Desenvolvimento de novos programas Configuração de sistemas de software genéricos Reutilização de um software existente Tipos de sistemas de software Sistemas legados Sistemas de tempo real Sistemas embarcados Sistemas para web 10

O que é ES? É uma disciplina relacionada com todos os aspectos da produção de software Propõe ferramentas, técnicas e processos para: Entender com precisão qual é o problema as necessidades associadas ao sistema que deve ser construído/modificado Produzir uma solução adequada para esse problema um sistema pronto para usar, levando-se em consideração as necessidades das partes interessadas Levar em conta restrições de desenvolvimento e recursos disponíveis 11

Qual a diferença entre ES e Ciência da Computação? A Ciência da Computação está relacionada com teorias e fundamentos A Engenharia de Software está relacionada com a prática e o desenvolvimento de SW 12

O que é um processo de software? Um conjunto estruturado de atividades que leva à produção de um sistema de software (Fonte: Sommerville) Especificação Desenvolvimento Validação Evolução 13

O que é um modelo de processo de software? Uma representação simplificada de um processo de software, apresentado sob uma perspectiva específica: Incluindo algumas atividades e sua organização de alto nível Modelos gerais de processo Cascata Desenvolvimento Iterativo Baseado em componentes Dois modelos não são necessariamente mutuamente excludentes 14

Quais são os custos da ES? 15

O que é CASE (Computer Aided Software Engineering)? Sistemas de software que se destinam a fornecer apoio automatizado para as atividades de desenvolvimento de software Sistemas CASE são usados frequentemente para apoiar um método específico UpperCase ferramentas para apoiar as atividades iniciais de processo de requisitos e de projetos LowerCase ferramentas para apoiar as atividades finais, tais como programação, debugging e testes 16

Quais são os atributos de um bom software? O software deve fornecer a funcionalidade e o desempenho requeridos para o usuário e deve apresentar as seguintes características: Facilidade de manutenção deve ser fácil e barato fazer com que o sistema, depois de implantado, evolua para atender às necessidades dos clientes 17

Quais são os atributos de um bom software? Confiabilidade o software deve funcionar de maneira que o usuário possa depender dele. No caso de falha, não acarreta danos físicos ou econômicos Eficiência o software deve usar o mínimo de recursos e prover máxima funcionalidade Usabilidade o software deve ser compreensível e fácil de usar 18

Quais são os desafios chave enfrentados pela ES? Heterogeneidade sistemas de software devem ser capaz de lidar com diferentes plataformas de hardware e ambientes em execução Entrega o sistema deve ser entregue ao cliente no menor tempo possível, com o menor custo possível Confiança o usuário deve poder justificadamente depositar sua confiança no sistema Escala o sistema deve funcionar adequadamente mesmo quando um grande número de usuários o está usando 19

Responsabilidade profissional e ética A ES envolve responsabilidades mais amplas do que simplesmente a aplicação de habilidades técnicas Os engenheiros de software devem se comportar de modo honesto e eticamente responsável para serem respeitados como profissionais O comportamento ético é mais do que simplesmente a sustentação de leis 20

Software Instruções: quando executadas, produzem a função com desempenho desejados Estruturas de dados: possibilitam que os programas manipulem a informação de maneira adequada e segura Documentos: descrevem a operação e o uso do programa 21

Software X Hardware Software é desenvolvido Alto custo de criação Baixo custo de reprodução Não enguiça, mas deteriora Defeitos no produto usualmente são consequências de problemas no processo de desenvolvimento Hardware é manufaturado Alto custo de reprodução Pode enguiçar Defeitos podem vir tanto na concepção quanto na produção Pode ser substituído na totalidade ou em partes 22

Software X Hardware Curva de falha de hardware 23

Software X Hardware Curva ideal de falha de software 24

Software X Hardware Curva real de falha de software 25

Por que fazer bem feito? Porque é mais barato! Historicamente, 60% a 80% do esforço total ocorre na manutenção Porque é mais rápido! Não ter tempo para fazer bem feito agora significa ter tempo para refazer depois Porque é mais fácil! Desenvolvimento ocorre uma única vez Manutenção é para sempre 26

O que é manutenção? O processo de modificar um sistema de software ou componente, depois da entrega, para corrigir falhas, melhorar desempenho ou outros atributos, ou adaptar a mudanças no ambiente. IEEE Std 620.12 1990 27

Quando inicia a manutenção? 28

Quais são os tipos de manutenção? 29

Quais são os tipos de manutenção? Manutenção corretiva Reativa Corrige problemas reportados Faz o software voltar a atender aos requisitos Manutenção emergencial Não programada Mantém temporariamente o sistema funcionando Necessita uma manutenção corretiva posterior 30

Quais são os tipos de manutenção? Manutenção preventiva Pró-ativa Corrige problemas latentes Manutenção adaptativa Mantém o software usável após mudanças no ambiente Manutenção perfectiva Provê melhorias para o usuário Melhora atributos de qualidade do software 31

Processo de Manutenção 32

Exercício 1) Quais são os quatro principais atributos que todos os produtos de software devem ter? Sugira dois outros atributos que também considera importantes em um produto de software. 2) Os métodos de engenharia de software tornaram-se amplamente usados somente quando a tecnologia CASE tornouse disponível para apoiá-los. Sugira três tipos de apoio a métodos que podem ser fornecidos pelas ferramentas CASE. 3) Para ajudar a conter o terrorismo, vários países estão planejando o desenvolvimento de sistemas de computador que monitorem 24 horas populações em grandes centros urbanos. Essa medida tem, obviamente, implicações quanto à privacidade. Discuta as questões éticas envolvidas no desenvolvimento desse tipo de sistema. 33

Elementos da ES Engenharia de Software 34

Elementos da ES Processo Define os passos gerais para o desenvolvimento e manutenção do software Serve como uma estrutura de encadeamento de métodos e ferramentas Métodos São os how to's de como fazer um passo específico do processo Ferramentas Automatizam o processo e os métodos 35

Elementos da ES Cuidado com o desenvolvimento guiado por ferramentas É importante usar a ferramenta certa para o problema O problema não deve ser adaptado para a ferramenta disponível Para quem tem um martelo, tudo parece prego 36

Elementos da ES 1) Coloque em uma panela funda o leite condensado, a margarina e o chocolate em pó 2) Cozinhe [no fogão] em fogo médio e mexa sem parar com uma colher de pau 3) Cozinhe até que o brigadeiro comece a desgrudar da panela 4) Deixe esfriar bem, então unte as mãos com margarina, faça as bolinhas e envolva-as em chocolate granulado O que é processo, método ou ferramenta???? 37

Elementos da ES 1) Coloque em uma panela funda o leite condensado, a margarina e o chocolate em pó 2) Cozinhe [no fogão] em fogo médio e mexa sem parar com uma colher de pau 3) Cozinhe até que o brigadeiro comece a desgrudar da panela 4) Deixe esfriar bem, então unte as mãos com margarina, faça as bolinhas e envolva-as em chocolate granulado Método Ferramenta Processo 38

O supermercado de ES ES fornece um conjunto de métodos para produzir software de qualidade Pense como em um supermercado: em função do problema, se escolhe o processo, os métodos e as ferramentas Cuidado Menos do que o necessário pode levar à desordem Mais do que o necessário pode emperrar o projeto 39

Engenharia de Software Um dos objetivos básicos da Engenharia de Software é transformar a criação de sistemas de software, realizada de maneira artística, indisciplinada e pouco entendível para uma forma devidamente controlada, quantificada e previsível 40

Crise do software Refere-se a um conjunto de problemas encontrados no desenvolvimento de software. Problemas concretos: Péssimas estimativas de prazo e custos Produtividade não tem aumentado tanto quanto a demanda Qualidade questionável dos produtos 41

Crise do software Dificuldades: Pouca coleta de dados Insatisfação do cliente Falta de garantia Manutenção caríssima 42

Causas Características próprias do software Produto lógico Falhas dos responsáveis pelo desenvolvimento de software Gerentes sem background Pouco treinamento Resistência a mudanças 43

Mitos do software Mitos do software Gerenciais do cliente do desenvolvedor 44

Mitos gerenciais Basta um bom livro de ES para fazer um bom software Um bom livro com certeza ajuda, mas precisa refletir as técnicas mais eficientes e ser lido! Meu pessoal tem ótimas ferramentas de desenvolvimento, afinal compramos equipamento sofisticado É necessário mais do que as melhores ferramentas para se fazer um desenvolvimento de software de qualidade 45

Mitos gerenciais Se estivermos com o cronograma atrasado, basta adicionar mais gente ao projeto Adicionar gente a um projeto atrasado faz o projeto atrasar mais! Se o projeto for terceirizado, todos meus problemas estão resolvidos É mais difícil gerenciar projetos terceirizados do que projetos internos 46

Mitos do cliente No início, basta dar uma ideia geral do que é necessário Requisitos ambíguos normalmente são uma receita para desastre! Comunicação contínua com o cliente é fundamental! Modificações podem ser facilmente acomodadas, porque software é flexível O impacto de modificações no software varia em função da modificação e do momento em que ela é requisitada Comunicação contínua com o cliente é fundamental! 47

Mitos do cliente 48

Mitos do desenvolvedor Assim que o código for escrito, o trabalho termina 60% a 80% do esforço será gasto depois que o código for escrito! Vale a pena esforçar para chegar a um bom código (boa documentação, bom projeto, etc.) Só é possível verificar a qualidade de um software quando um executável existir Revisões usualmente são mais eficazes que testes, e podem ser utilizadas antes do software estar executável 49

Mitos do desenvolvedor O único produto a ser entregue em um projeto é o código Além do código, documentações tanto para a manutenção quanto para o uso são fundamentais ES gera documentação desnecessária ES foca em criar qualidade, e não criar documentos Algum grau de documentação é necessário para evitar retrabalho Questione sempre que encontrar um documento desnecessário para o projeto 50

Princípios de Hooker 1) Tem que existir uma razão para se fazer software 2) KISS 3) Mantenha o estilo 4) O que é produzido por você é consumido por outros 5) Esteja pronto para o futuro 6) Planeje para reutilização 7) Pense http://www.macoratti.net/11/05/sd_prnc1.htm 51

Precisamos de ES 52

Precisamos de ES 53

Resposta à crise do software Engenharia de Software: Processo de Software 54

Modelos de ciclo de vida Existem alguns processos pré-fabricados Esses processos são conhecidos como modelos de ciclo de vida Esses processos apresentam características pré-definidas Devem ser adaptados para o contexto real de uso Características do projeto Características da equipe Características do cliente 55

Exercício 1) Problema Definir o procedimento de implantação para os dois cenários a seguir Cenário 1: urna eletrônica O software da urna eletrônica acabou de ser implementado, e precisa ser instalado em 480 mil urnas Cenário 2: padaria O software de controle de venda de pão da padaria do seu Manuel acabou de ser implementado, e precisa ser instalado 56

Exercício 2) Assuma as atividades básicas de todo processo como sendo Comunicação Planejamento Modelagem Construção Implantação Projete um processo que determina a ordem com que cada uma dessas atividades é executada Quais as características positivas ou negativas desse processo? 57

BIBLIOGRAFIA BÁSICA Engenharia de Software (Capítulo 1) Roger Pressman 6ª edição. McGrawHill 58

AGUARDEM PRÓXIMO CONTEÚDO!!! Contato: parreira.michelle@gmail.com Professora MSc. Michelle Parreira

Aprender é a única coisa de que a mente nunca se cansa, nunca tem medo e nunca se arrepende Leonardo da Vinci 60