Engenharia Software. Ení Berbert Camilo Contaiffer

Documentos relacionados
2. Processos em Engenharia de Software

Processos de Desenvolvimento de Software. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 2

CAPÍTULO 1 CONCEITOS BÁSICOS SOBRE ANÁLISE DE SISTEMAS Ciclo de vida de um software

CICLO DE VIDA DO SOFTWARE. Nas empresas também é difícil adotar apenas um ciclo de vida, na maioria das vezes possui mais de um.

Paradigmas da Engenharia de Software AULA PROF. ABRAHAO LOPES

Engenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS. Nome:

Ainda que muitos modelos sejam semelhantes entre os modelos de ciclo de vida, existem alguns aspectos que os diferenciam:

15/03/2018. Professor Ariel da Silva Dias Modelos de Processo de Software

Processos de Software by Pearson Education Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1

Aula 2 Processo de Software

Modelos de Processo de Software. SSC Engenharia de Software 1 Profa. Dra. Elisa Yumi Nakagawa 2 o semestre de 2012

INSTITUTO FEDERAL DE SÃO PAULO CAMPUS PRESIDENTE EPITÁCIO MODELO DOS PROCESSOS DE SOFTWARE

Prof. Ms. Ronaldo Martins da Costa

Análise e Projeto de Sistemas

Engenharia de Software I Processos de desenvolvimento de SW. profa. Denise Neves

Modelos de Processo de Software

Engenharia de Software II

Processos de software

Modelos de Processo de Software

Engenharia de Software Processo de Desenvolvimento. Ciclo de Vida - Modelo Cascata

Engenharia de Software Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS

Definições e ciclo de vida

Ciência da Computação ENGENHARIA DE SOFTWARE. Capítulo 1 Introdução

Análise e Projeto. Prof. Erinaldo Sanches Nascimento

PDS. Aula 1.4 Modelos de Processo. Prof. Dr. Bruno Moreno

Processos de Software

Ciclo de Vida de Sistemas de Informação

Modelos de Ciclo de Vida (Parte 1)

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA ENGENHARIA DE SOFTWARE

Engenharia de Software Processo de Desenvolvimento de Software

MODELAGEM DE SISTEMAS Unidade 1 Conceitos Básicos de Modelagem. Luiz Leão

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

PROCESSO DE SOFTWARE

Engenharia de Software

Bibliografia. Quais são os problemas? capacidade de construção. acompanha a demanda por novos programas. ameaçada por projetos ruins.

Análise de Sistemas CONTEXTUALIZAÇÃO

Engenharia de Software

INTRODUÇÃO A ENGENHARIA DE SOFTWARE

CICLO DE VIDA DE SOFTWARE

Informática I. Aula Aula 21-29/11/06 1

Processos de Software

Engenharia de Software. Processos. Desenvolvimento de Software Tradicionais 2014/2. Prof. Luís Fernando Garcia

RUP RATIONAL UNIFIED PROCESS CONCEITOS CHAVES. Prof. Fabiano Papaiz IFRN

Engenharia de Software I - Aula 04

Analista de Sistemas S. J. Rio Preto

Engenharia de Software I

Engenharia de Software: Uma Visão Geral. SSC Engenharia de Software I Profa. Dra. Elisa Yumi Nakagawa 2 o semestre de 2012

5 Processo de Reificação e de Desenvolvimento com ACCA

PDS. Aula 1.5 Modelos de Processo. Prof. Dr. Bruno Moreno

PDS. Aula 1.6 Modelos de Processo. Prof. Dr. Bruno Moreno

Departamento de Sistemas de Computação Universidade de São Paulo Análise e Projeto Orientados a Objetos Aula 2 O Processo Unificado (PU)

RUP RATIONAL UNIFIED PROCESS

Engenharia de Software: Uma Visão Geral. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1 o semestre de 2015

Engenharia de Software: Uma Visão Geral. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1 o semestre de 2017

Processo de Desenvolvimento. Edjandir Corrêa Costa

Modelos de Ciclo de Vida

SSC Engenharia de Software. Prof. Paulo C. Masiero

Engenharia de Software I

Desenvolvimento de Projetos

O Processo Unificado (PU) SSC 121 Engenharia de Software I Profa. Dra. Elisa Yumi Nakagawa 2 o semestre de 2012

ENGENHARIA DE SOFTWARE

Perguntas da Aula 2. Respostas da Pergunta 2. Respostas da Pergunta 1. Respostas da Pergunta 4. Respostas da Pergunta 3. Processos de Software

Engenharia de Software. Engenharia de Software

ICET CURSO: Ciência da Computação e Sistemas de Informação (Engenharia de Software) Campus: Data: / / Nome:

ENGENHARIA DE SOFTWARE. Aula 03 Processos de Software

Unidade II MODELAGEM DE PROCESSOS. Profa. Gislaine Stachissini

QUESTÕES TESTES. Questão 1. O modelo de ciclo de vida em cascata:

Engenharia de Software

Escolhendo um Modelo de Ciclo de Vida

Processos de Software

Instituto Federal Sul-rio-grandense. Placa universal para controle de máquinas de lavar roupa Plano de Projeto - versão 1.0

INF014 Análise e Projeto de Sistemas Processos Unificado -RUP

2 Fluxos no Ciclo de Vida do Processo Unificado. O Processo Unificado consiste da repetição de uma série de ciclos durante a vida de um sistema.

ENGENHARIA DE SOFTWARE

Cadeira: Análise de Sistemas

Metodologia de Gestão de Desenvolvimento de Sistemas da UFVJM

Processos de software Leitura: Cap3 Sommerville / Cap1: Pressman - Ariadne

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

Ciclo de vida do software

Prof. Dr. Thiago Jabur Bittar

CAPÍTULO 1 O AMBIENTE DE DESENVOLVIMENTO DE SISTEMAS. Tereza Gonçalves Kirner

Engenharia de Software

Introdução à Engenharia de Software

05/09/2013. Ciclo de vida de um Sistema de Informação

Engenharia de Software II

INF014 Análise e Projeto de Sistemas Ciclos de vida e Processos de Software

Modelos de Software. Tema 2. Processo de Software. Modelos Profa. Susana M. Iglesias

RECURSO - QUESTÃO DISSERTATIVA. Protocolo: Identificador:

Aula 2 - Modelos de Processo - cascata, iterativo e incremental e ágil

Rational Unified Process (RUP)

Profa. Reane Franco Goulart

Paradigmas de Software

Disciplina que reúne metodologias, métodos e ferramentas a serem utilizados, desde a percepção do problema até o momento em que o sistema

UML. Rodrigo Leite Durães.

Visão Geral do Processo de Desenvolvimento de Software Introdução aos Sistemas de Informação

Manutenção de Software. Engenharia de Software Profa. Dra. Elisa Yumi Nakagawa 1º semestre de 2015

Transcrição:

Engenharia Software Ení Berbert Camilo Contaiffer

Características do Software Software não é um elemento físico, é um elemento lógico; Software é desenvolvido ou projetado por engenharia, não manufaturado no sentido clássico; Software não se "desgasta ; A maioria dos software é feita sob medida em vez de ser montada a partir de componentes existentes

Tipos de Software Software de Sistema ( Básico) Software Comercial Software Científico e de engenharia Software Embutido Software Inteligência Artificial

Paradigmas da Engenharia de Software Combinação de Métodos Estruturas de Dados Plano Especificação de Requisitos Projeto Listagem Programa Funcionando Plano de Testes

Paradigmas Estratégia de desenvolvimento incorporada pela equipe de engenheiros de software para a solução de um problema. Deve englobar As camadas de processos, métodos e ferramentas Fases genéricas (definição, desenvolvimentos e manutenção)

Paradigmas Construir e Consertar

Paradigmas Cada modelo representa um processo a partir de uma perspectiva particular: Natureza do Projeto e Aplicação Escolha de Métodos e Ferramentas Controles e produtos a serem entregues

Processos de Software

O que é Processo? Processo é um conjunto de passos parcialmente ordenados, constituídos por atividades, métodos, práticas e transformações, utilizados para se atingir uma meta. Uma meta está associada a resultados, que são os produtos resultantes da execução do processo.

O que é Processo de Software? É um guia de como um produto de software deve ser construído, do início ao fim.

Como atingir esse Processo? Através do Ciclo de Vida Como todo produto, o software também possui um ciclo de vida, que pode ser definido como o conjunto de todas as etapas relacionadas à sua existência, desde a sua concepção, até o seu desaparecimento.

Etapas... Concepção Desenvolvimento Operação Retirada onde o produto é idealizado, a partir da percepção de uma necessidade; a partir da identificação dos requisitos e sua transformação em itens a serem entregues ao cliente; quando o produto é instalado para ser utilizado em algum processo de negócio, sujeito a manutenção, sempre que necessário; quando o produto tem sua vida útil finalizada.

Processo x Ciclo de Vida O guia do Processo de Software depende do modelo de ciclo de vida utilizado. Existem vários modelos e dependendo dele, as atividades a serem executadas podem variar. Essa é a ligação.

Qual modelo utilizar? O ponto inicial para seleção de um processo, e posterior iniciação de um projeto, é entender qual modelo de ciclo de vida ele utiliza. Um modelo de ciclo de vida pode ser apropriado para um projeto mas não ser apropriado para outro. É necessário entender bem os conceitos relacionados para que as escolhas feitas sejam baseadas em conhecimento e não no acaso.

Modelos de Ciclo de Vida Ciclo de vida pode ser resumido como sendo todas as atividades relacionadas a um software, desde a concepção de suas idéias até a descontinuidade do produto. Existem diversos modelos de ciclo de vida, com características diferentes.

Antes de apresentar os modelos de ciclo de vida, vamos entender melhor os subprocessos: Requisitos: obtenção do enunciado, completo, claro e preciso dos desejos, necessidades, expectativas e restrições dos clientes em relação ao produto a ser desenvolvido. Análise: modelagem dos conceitos relevantes do domínio do problema, com o intuito de verificar a qualidade dos requisitos obtidos e detalhar tais requisitos em um nível adequado aos desenvolvedores. Desenho (ou projeto): definição de uma estrutura implementável para um produto, que atenda aos requisitos especificados.

Implementação: codificação das partes que compõe o software, definidas no desenho, utilizando as tecnologias selecionadas. Teste: verificação dinâmica das partes que constituem o software, utilizando um conjunto finito de casos de teste, selecionados dentro de um domínio potencialmente infinito, contra seu comportamento esperado.

Modelos... Codifica-Remenda Parte de uma especificação incompleta, ou mesmo ausente, iniciase a codificação do software, que por sua vez tende a gerar algo. Esse algo gerado, na grande maioria das vezes não é o que o cliente deseja, mas vai sendo alterado e consertado até que o produto atinja um estágio que permita seu uso. Nenhum processo é seguido nessa iteração.

A grande utilização desse modelo se dá em virtude de boa parte dos profissionais responsáveis pelo desenvolvimento de software não terem qualquer conhecimento sobre a Engenharia de Software. Esse modelo ainda é o mais comum, pela falta de profissionais habilitados para o desenvolvimento de software. De forma similar, existem muito mais obras sendo tocadas por profissionais sem qualquer formação técnica, do que obras tocadas por engenheiros. O resultado disso é que dificilmente uma obra sem um engenheiro possuirá custo e prazo conhecido! É possível que o uso desse modelo de ciclo de vida gere resultados aceitáveis para produtos pequenos e com equipes formadas por poucas pessoas, normalmente por um único desenvolvedor, mas certamente ele só gerará problemas em qualquer projeto envolvendo produtos que requeiram equipes maiores.

O aspecto positivo desse modelo é que não exige nenhum conhecimento técnico ou gerencial. Basta iniciar, sem muito preparo sobre o tema a ser abordado, e trabalhar para gerar algo como resultado. Por outro lado, é um modelo de alto risco, praticamente impossível de se gerenciar, tornando-se impossível estabelecer qualquer estimativa de custo e prazo.

Modelos... Cascata O modelo em cascata, também conhecido como modelo seqüencial linear, sugere que os principais subprocessos relacionados ao desenvolvimento de software sejam executadas em seqüência Engenharia de Sistemas Análise de Requisitos Projeto Codificação Teste e Integração Operação e Manutenção

Esse modelo de ciclo de vida foi muito utilizado no passado. No entanto, devido a falhas durante sua execução, ele vem sendo preterido por outros modelos. Pontos Negativos: Projetos reais raramente seguem o fluxo seqüencial É difícil para os clientes identificarem todos os requisitos explicitamente. Esse modelo exige isso e tem dificuldade em acomodar a incerteza natural que existem em grande parte dos projetos O cliente precisa ter paciência, uma vez que a primeira versão executável do produto somente estará disponível no fim do projeto. Erros grosseiros podem ser desastrosos e causar perda de praticamente todo o trabalho. Esse é talvez o maior problema: a baixa visibilidade por parte do cliente

Modelos... Espiral A idéia básica é desenvolver um produto a partir de pequenas versões incrementais, que podem iniciar com um modelo em papel e evoluir até versões do sistema completamente funcionais. A idéia por trás do modelo em espiral é: dividir para conquistar! Ao invés de querer resolver todos os problemas de uma vez, é interessante resolver parte dele e então partir para o restante. Ponto Negativo : sua dificuldade de gerir, para que tenhamos estimativas em um projeto que sejam previsíveis e confiáveis.

Modelos... Incremental O modelo incremental, também denominado de prototipagem evolutiva, é baseado no modelo em espiral. No entanto, a grande diferença para o modelo anterior é que as versões parciais do produto são efetivamente entregues aos clientes, para que sejam verificadas, validadas e utilizadas no ambiente operacional. É importante ressaltar essa diferença: o modelo incremental não é utilizado apenas para construir o produto por completo, mas uma série de versões provisórias, denominadas protótipos, que cobrem cada vez mais requisitos e que são efetivamente entregues aos clientes.

No modelo incremental um projeto é dividido em várias iterações, que são as divisões do produto que serão consideradas durante a construção. Escolhe-se uma dessas iterações para iniciar o desenvolvimento, começando pelo planejamento da iteração, levantamento de requisitos, análise, desenho, implementação, testes e avaliação da iteração, geralmente realizada com a participação do cliente

Vantagens e Problemas Facilidade para determinar requisitos iniciais Garantia de atingir as necessidades do cliente Mas... A implementação rápida do protótipo pode ser comprometido Pode determinar um fim do desenvolvimento Tendência de utilizar o protótipo para um produto final

Modelos... Entrega Evolutiva É uma combinação dos modelos de Cascata e Prototipagem evolutiva. Nesse modelo, o levantamento de requisitos é feito como um todo, para que seja possível entender todo as questões que envolvem o produto a ser construído, porém, em pontos bem definidos os usuários podem avaliar as partes do produto já desenvolvidas, fornecendo realimentação quanto às decisões tomadas, de forma bem similar ao que acontece na Prototipagem Evolutiva. Isso facilita o acompanhamento dos projetos, tanto por parte dos gerentes, quanto por parte dos clientes, que podem acompanhar o que está sendo realizado.

O modelo incremental sofre dos mesmos problemas do modelo em espiral, no entanto, apresenta como grande vantagem o fato dos requisitos serem definidos progressivamente, sua alta flexibilidade e visibilidade para os clientes. Ponto Negativo: requer gerência sofisticada e uma arquitetura forte, para que o produto inicialmente concebido não esbarre em problemas que impeçam sua continuidade a partir dos direcionamentos (decisões arquiteturais) inicialmente concebidos.

A principal dificuldade associada ao modelo de entrega evolutiva é o levantamento de requisitos, que deve ser bem feito, para que a partir disso seja possível a definição da arquitetura do produto, que deve ser robusta, mantendo-se íntegra ao longo dos ciclos de liberações parciais.

Fases do Software

Por onde iniciar? Desenvolvimento de Software a partir de 3 fases: Fase de Definição Fase de Desenvolvimento Fase de Manutenção

Fases de Definição Concentra-se no quê? Que informações devem ser processadas? Que funções devem ser desempenhadas? Quais são as exigências fundamentais do software? Quais são as restrições do projeto?

Fase de Definição Análise do Sistema: Planejamento do Projeto de Software: Análise de Requisitos

Fase de Desenvolvimento Concentra-se no como. Como projetar as estruturas de dados e a arquitetura do software? Como implementar os detalhes procedimentais? Como traduzir o projeto para uma linguagem de programação? Como realizar os testes?

Fase de Desenvolvimento Projeto de Software: Codificação: Realização de Testes de Software:

Fase de Manutenção Concentra-se nas mudanças sofridas pelo software. Tipos de Mudanças: Correção Adaptação Melhoramento Funcional

Exercício 1. Quais são as principais fases do ciclo de vida de um produto de software? 2. Qual a ligação entre Ciclo de Vida e Processo de Software? 3. Qual a definição para Processo de Software? 4. Quais são os principais subprocessos (também conhecidos como fluxos ou disciplinas) ligados ao desenvolvimento de software? 5. Descreve o modelo de ciclo de vida denominado Codifica-Remenda. 6. Quais são os problemas relacionados ao modelo de ciclo de vida em cascata? 7. Como podemos relacionar o modelo em cascata e o modelo em espiral? 8. Qual a grande diferença entre o model em espiral e o modelo incremental? 9 - Como funciona o modelo de entrega evolutiva? 10. Os dois modelos de ciclo de vida recomendados para uso e mais utilizados atualmente são o modelo incremental e o modelo de entrega evolutiva. Quando um é mais apropriado que outro?