ENGENHARIA DE SOFTWARE/ SISTEMAS DE SOFTWARE



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

Universidade Paulista

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

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

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

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

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

Pós Graduação Engenharia de Software

Introdução à Engenharia de Software

Processos de Desenvolvimento de Software

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

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

Projeto de Sistemas I

Engenharia de Software II

ENGENHARIA DE SOFTWARE I

Engenharia de Software

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

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

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

AULA 1 INTRODUÇÃO - ENGENHARIA DE SOFTWARE. Prof. Msc. Hélio Esperidião

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

Sistemas de Informação I

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

Professor: Curso: Disciplina:

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

PROFESSOR: CRISTIANO MARIOTTI

Engenharia de Software Processo de Desenvolvimento de Software

Sistemas de Informação I

REPROJETO DA ORGANIZAÇÃO COM SISTEMAS DE INFORMAÇÃ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

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

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

Levantamento, Análise e Gestão Requisitos. Aula 12

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

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

Engenharia de Requisitos

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

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

ENG1000 Introdução à Engenharia

Fábrica de Software 29/04/2015

Gerenciamento de Problemas

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

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

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

Princípios da Engenharia de Software Aula 02. Prof.: Franklin M. Correia

Laudon & Laudon MIS, 7th Edition. Pg. 1.1

PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE 1. VISÃO GERAL 1.1. PROCESSOS EM GERAL

Metodologia de Desenvolvimento de Software. Prof. M.Sc. Sílvio Bacalá Jr

Glossário Apresenta a definição dos termos, siglas e abreviações utilizadas no contexto do projeto Citsmart.

Engenharia de Software-2003

ADMINISTRAÇÃO DE ATIVOS DE TI GERENCIAMENTO DE CONFIGURAÇÃO

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

Processo de Desenvolvimento Unificado

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

Modelos de processos de desenvolvimento de software

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

Gerência de Projetos

PROCEDIMENTO DA QUALIDADE

Engenharia de Software

CICLO DE VIDA DE SISTEMAS DE GESTÃO DE CONHECIMENTO

GARANTIA DA QUALIDADE DE SOFTWARE

Prof. Me. Marcos Echevarria

APOO Análise e Projeto Orientado a Objetos. Requisitos

Gerenciamento da Integração (PMBoK 5ª ed.)

Sistemas de Informações Gerenciais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

Tecnologia em Gestão Pública Desenvolvimento de Projetos - Aula 9 Prof. Rafael Roesler

MÓDULO 9 METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS

Prototipação de Software

Processo Unificado (RUP)

Hoje é inegável que a sobrevivência das organizações depende de dados precisos e atualizados.

Engenharia de Domínio baseada na Reengenharia de Sistemas Legados

Profa. Gislaine Stachissini. Unidade III GOVERNANÇA DE TI

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

MECANISMOS PARA GOVERNANÇA DE T.I. IMPLEMENTAÇÃO DA. Prof. Angelo Augusto Frozza, M.Sc.

CHECK - LIST - ISO 9001:2000

Modelo Cascata. Alunos: Bruno Nocera Zanette Pedro Taques

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

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

Requisitos de Software

rosefib.webnode.com.br

O que é software? Software e Engenharia de Software. O que é software? Tipos de Sistemas de Software. A Evolução do Software

Msc. Daniele Carvalho Oliveira Doutoranda em Ciência da Computação UFU Mestre em Ciência da Computação UFU Bacharel em Ciência da Computação UFJF

CURSO SUPERIOR DE TECNOLOGIA EM SISTEMAS PARA INTERNET MATRIZ CURRICULAR

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

Gerenciamento de Incidentes

DSI é o processo cujo objetivo é introduzir mudanças num sistema de informação, com objetivo de melhorar o seu desempenho.

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

Tecnologia e Sistemas de Informações

Projeto Pedagógico do Bacharelado em Ciência da Computação. Comissão de Curso e NDE do BCC

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

Segurança de Aplicações Aula 6

Transcrição:

ENGENHARIA DE SOFTWARE/ SISTEMAS DE SOFTWARE CMP1280/CMP1250 Prof. Me. Fábio Assunção Introdução à Engenharia de Software

SOFTWARE Programa de computador acompanhado dos dados de documentação e configuração associados. Documentação do sistema (modelos e projetos). Documentação do usuário (manuais de ajuda). Via de atualização (ex.: site). Código fonte. Arquivos de configuração. Regras de negócio.

PRODUTO DE SOFTWARE Software vendido ao a um cliente. Produtos genéricos: desenvolvido por uma organização e vendido a qualquer cliente que queira/possa adquiri-lo. Produtos sob encomenda: desenvolvido sob demanda de encomenda para um cliente específico.

ENGENHARIA DE SOFTWARE - ES Disciplina de engenharia relacionada com todos os aspectos da produção de um software, desde os estágios iniciais de especificação do sistema até a sua manutenção, depois que o mesmo entra em operação.

CIÊNCIA DA COMPUTAÇÃO X ENGENHARIA DE SOFTWARE Ciência da Computação: teorias e métodos que constituem a base de computadores e sistemas de software (modelos matemáticos, algoritmos, formalização lógica, etc.). Engenharia de Software: problemas práticos da produção de software (produção de software com maior desempenho e produtividade). Engenharia da Computação: desenvolvimento de equipamentos e dispositivos computacionais, mais focada em hardware (aplicações industriais, redes, sistemas embarcados, etc).

SISTEMAS DE SOFTWARE Um sistema é o conjunto intencional de componentes inter-relacionados que funcionam juntos para atingir certo objetivo. Sistema de software: sistema computacional (envolve hardware e software).

SISTEMAS DE SOFTWARE Técnicos Incluem componentes de hardware e software, mas não incluem operadores e processos operacionais. São usados para algum propósito, mas o conhecimento deste propósito não é parte do sistema. Ex.: MS Word. Sociotécnicos Incluem um (ou mais) sistemas técnicos, mas, decisivamente, incluem operadores (pessoas) e processos operacionais definidos. São instalados dentro de uma organização, projetados para ajudá-la a atingir um objetivo maior.

SISTEMAS SOCIOTÉCNICOS Fatores humanos e políticas organizacionais têm um efeito significativo sobre a operação de sistemas sociotécnicos. Caracterizado por: Propriedades emergentes. Não é determinístico. Objetivos organizacionais.

SISTEMAS LEGADOS Sistemas sociotécnicos desenvolvidos no passado, frequentemente utilizando tecnologia obsoleta, porém, ainda fornecem serviços essenciais. Processos operacionais legados : mudanças envolvem alterações em diversos componentes; criticidade e custo de modernização. São sistemas críticos de negócios. Mantidos por que é arriscado substituí-los. Ex.: Sistemas bancários, sistemas de controle aéreo, etc.

DIFICULDADES ESSENCIAIS E ACIDENTAIS DA ENGENHARIA DE SOFTWARE No Silver Bullet Essense and Accidents of Software Engineering (Frederick P. Brooks, 1987). Analogia de softwares com a lobisomens. Ente querido = lobisomem. Projeto de software = monstro criado pela tortura de prazos perdidos, orçamentos estourados, produto final imperfeito. Para os lobisomens há uma bala de prata de capaz de matar todos. Para os softwares não há uma solução para todos os problemas.

DIFICULDADES ESSENCIAIS E ACIDENTAIS DA ENGENHARIA DE SOFTWARE Dificuldades em se construir um software: Essenciais: pertinentes à natureza do software, ao modelo conceitual para o sistema (conjunto de dados, relação entre esses itens de dados e a chamadas de funções). Acidentais: dificuldades que se tem na produção do software, mas que não são inerentes às regras de negócio implementadas pelo software (linguagem, tecnologias, etc). Conquistas passadas resolveram as dificuldades acidentais, não essenciais.

DIFICULDADES ESSENCIAIS E ACIDENTAIS DA ENGENHARIA DE SOFTWARE PRINCIPAIS PROBLEMAS Complexidade: entidades de software são mais complexas pelo seu tamanho que qualquer outra construção humana, pois suas partes são desiguais. Software tem um grande número de estados, tornando sua descrição, concepção e teste muito difíceis.

DIFICULDADES ESSENCIAIS E ACIDENTAIS DA ENGENHARIA DE SOFTWARE PRINCIPAIS PROBLEMAS Conformidade: dificuldade em se manter padrões desenvolvidos por pessoas diferentes, em tempos diferentes. Em versões prévias, por exemplo, esta complexidade não pode ser simplificada redesenhando o software sozinho.

DIFICULDADES ESSENCIAIS E ACIDENTAIS DA ENGENHARIA DE SOFTWARE PRINCIPAIS PROBLEMAS Alterabilidade: mudanças constantes são promovidas no software, inclusive após ser desenvolvido (o que é mais complexo). Sistemas incorporam funcionalidades e estas são, na maioria das vezes, os pivôs das mudanças.

DIFICULDADES ESSENCIAIS E ACIDENTAIS DA ENGENHARIA DE SOFTWARE PRINCIPAIS PROBLEMAS Invisibilidade: software possui um aspecto abstrato, imaterial, não pode ser representado por uma baseado em combinações geométricas. Para se construir um software é necessário um conjunto de diagramas (que devem representar fluxo de dados, padrões de dependência, sequência temporal, etc.)

DIFICULDADES ESSENCIAIS E ACIDENTAIS DA ENGENHARIA DE SOFTWARE SOLUÇÕES PROMISSORAS Compra x Construir: concepção do software não construindo-o completamente. Refinamento de requisitos e prototipagem rápida: precisão no levantamento de dados é essencial. É necessária uma interação exaustiva entre cliente e desenvolvedor. Grandes projetistas: gerenciamento de pessoal. Qualificação de grandes projetistas.

PROCESSO Conjunto de manipulações para obter um resultado. Diretrizes utilizadas para se fazer alguma coisa.

PROCESSO DE SOFTWARE Conjunto de atividades relacionadas que levam à produção de um produto de software. Essas atividades podem envolver o desenvolvimento do software a partir do zero em uma linguagem padrão, como C ou Java.

PROCESSO DE SOFTWARE ATIVIDADES FUNDAMENTAIS Especificação de software: funcionalidade do software e as restrições a seu funcionamento devem ser definidas. Projeto e implementação do software: produção do software atendendo às especificações. Validação do software: o software deve ser validado para garantir que atenda as solicitações do cliente. Evolução do software: o software deve evoluir para atender às necessidades de mudança dos clientes.

ATIVIDADES DO PROCESSO DE SOFTWARE: ESPECIFICAÇÃO DE SOFTWARE Processo de compreensão e definição dos serviços requisitados (requisitos) e identificação das restrições relativas à operação e desenvolvimento. Estudo de viabilidade: rentabilidade. Elicitação e análise de requisitos: entendimento. Especificação de requisitos: documento. Validação de requisitos: consistência e completude.

ATIVIDADES DO PROCESSO DE SOFTWARE: PROJETO E IMPLMENTAÇÃO DE SOFTWARE Conversão de uma especificação do sistema em um sistema executável. Projeto de arquitetura: estrutura geral do sistema (componentes e suas relações). Projeto de interface: interfaces entre componentes. Projeto de componente: funcionamento. Projeto de banco de dados: estruturas de dados.

ATIVIDADES DO PROCESSO DE SOFTWARE: VALIDAÇÃO DE SOFTWARE Verificação e Validação (V&V). Verificação: Estou construindo o produto certo?. Validação: Estou construindo o produto da forma correta?. Sistemas devem ser testados como uma unidade única. Teste de desenvolvimento: desenvolvedores. Teste de sistemas: integração de componentes. Teste de aceitação: dados do cliente.

ATIVIDADES DO PROCESSO DE SOFTWARE: EVOLUÇÃO DE SOFTWARE Desenvolvimento e manutenção devem ser encarados como processos contínuos. O software é constantemente modificado em função do das mudanças de requisitos. Mudanças no software são mais baratas que em projetos de hardware.

PARADIGMA Exemplo típico ou modelo de algo. É a representação de um padrão a ser seguido.

PARADIGMAS DA ENGENHARIA DE SOFTWARE Escolha de um modelo de processo para Engenharia de Software. Um modelo de processo de software é uma representação simplificada de um processo de software. Cada modelo representa uma perspectiva particular de um projeto e, portanto, fornece informações parciais sobre ele.

MODELO EM CASCATA

MODELO EM CASCATA Análise e definição de requisitos: estabelecimento de serviços, restrições e metas. Projeto de sistema e software: aloca requisitos tanto de hardware tanto de software. Implementação e teste unitário: conjunto de unidades de programas são testados. Integração e teste de sistema: integração das unidades para um teste do sistema completo. Operação e manutenção: correção de erros não descobertos e inserção de funcionalidades.

MODELO EM CASCATA Também chamado de Ciclo de Vida. O resultado de cada estágio é a aprovação de um ou mais documentos assinados. O estágio seguinte não deve ser iniciado antes da conclusão da fase anterior. Na prática, os estágios se sobrepõem e se alimentam, um ao outro, de informações. Uma versão executável só fica disponível quando o projeto é finalizado. Erros iniciais x Evolução.

MODELO (DE DESENVOLVIMENTO) INCREMENTAL

MODELO (DE DESENVOLVIMENTO) INCREMENTAL Desenvolvimento de uma implementação inicial (núcleo de produto), apresentá-la ao cliente e aplicar as correções solicitadas, resultando em uma nova versão/incremento (até que o sistema adequado seja apresentado). Sequencia linear x incrementos. Promoção de mudanças mais barata e fácil. Invisível ao gerente: rapidez de incrementação x documentação.

MODELO RAD RAPID APPLICATION DEVELOPMENT

MODELO RAD Processo incremental que enfatiza um ciclo de desenvolvimento extremamente curto. Modularidade x ciclo de desenvolvimento. Projetos grandes envolvem grandes equipes. Exige compromisso de desenvolvedores e clientes com atividades continuamente rápidas. Orientação à reuso diminui necessidades de testes.

MODELO DE PROTOTIPAGEM

MODELO DE PROTOTIPAGEM Protótipo é uma implementação concreta mas parcial do desenho do sistema. Componente de uma UI User Interface. Físico. Funcional. Auxilia na compreensão do que deve ser construído quando os requisitos estão confusos, possibilitando que seja criado um modelo executável ao invés de descrito. Geralmente o cliente deseja que o protótipo tornese o produto final. Escolhas aquém da necessidade, podem tornar-se parte integrante do sistema.

MODELO EM ESPIRAL

MODELO EM ESPIRAL Ciclo de vida clássico com prototipagem, porém, com a análise de riscos à medida que, gradativamente, o software vai sendo construído. Este modelo assume que o desenvolvimento ocorre em ciclos. Variações consideram entre 3 e 6 tarefas (setores) de avaliação na espiral: Comunicação com o cliente. Planejamento. Análise de risco. Engenharia. Construção e entrega. Avaliação do cliente.

MODELO EM ESPIRAL

MODELO EM ESPIRAL Direção radial: custo acumulado. Direção angular: progresso através da espiral. Modelo mais indicado para softwares de grande escala. Permite ao engenheiro de software e ao cliente reagir aos riscos após cada etapa evolutiva.