Definições e ciclo de vida

Documentos relacionados
Paradigmas da Engenharia de Software AULA PROF. ABRAHAO LOPES

Modelos de Processo de Software

Engenharia de Software

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

Modelos de Processo de Software

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

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

Modelos de Ciclo de Vida (Parte 1)

Engenharia de Software

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

Engenharia de Software I

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

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

Princípios da Engenharia de Software aula 03

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

Engenharia Software. Ení Berbert Camilo Contaiffer

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

Engenharia de Software I

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

Processo de Desenvolvimento. Edjandir Corrêa Costa

Engenharia de Software: Visão Geral

Paradigmas de Software

CICLO DE VIDA DE SOFTWARE

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 Simulado para a 1ª Avaliação Bimestral Professor: Danilo Giacobo - RESPOSTAS. Nome:

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.

Desenvolvimento de Projetos

Processos de software

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

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

Engenharia de Software

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

Ciclo de Vida de Sistemas de Informação

Engenharia de Software Processo de Desenvolvimento de Software

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

Engenharia de Software

Processos de Software

Conceitos de Engenharia de Software. Prof.ª: Érika A. Barrado

Análise e Projeto de Sistemas

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

INTRODUÇÃO A ENGENHARIA DE SOFTWARE

Modelos de Ciclo de Vida

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

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

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

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

Engenharia de Software

PROCESSO DE SOFTWARE

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

Processos de Software

Processo de Desenvolvimento de Software

ANÁLISE E PROJETO DE SISTEMAS

Engenharia de Software

MODELOS DE PROCESSOS (PARTE 2)

FUNDAMENTOS DE ENGENHARIA DE SOFTWARE. Professor: Paulo Vencio

ENGENHARIA DE SOFTWARE

Aula 3.1 Introdução e Visão Geral do Processo Unificado

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

Análise e Projeto. Prof. Erinaldo Sanches Nascimento

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

Modelos de Processo de Software. Profª Jocelma Rios

Rational Unified Process (RUP)

Gerência e Planejamento de Projeto. Engenharia de Software I Profa. Elisa Yumi Nakagawa 1 o semestre de 2015

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

Problemas e Práticas Recomendadas no Desenvolvimento de Software

Gerência e Planejamento de Projeto. Engenharia de Software Profa. Elisa Yumi Nakagawa 1 o semestre de 2016

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

Aula 2 Processo de Software

Transcrição:

Definições e ciclo de vida

A aplicação de uma abordagem sistemática, disciplinada e quantificável para o desenvolvimento, operação e manutenção do software. É a aplicação sistemática de conhecimentos científicos na criação e construção de soluções com um bom custo benefício para resolução de problemas práticos da sociedade.

Abrange um conjunto de três elementos fundamentais: Métodos, Ferramentas e Procedimentos Métodos: proporcionam os detalhes de como fazer para construir o software.

Planejamento e estimativa de projeto Análise de requisitos de software e de sistemas Projeto da estrutura de dados Codificação Teste Manutenção

Ferramentas: dão suporte automatizado aos métodos. existem atualmente ferramentas para sustentar cada um dos métodos quando as ferramentas são integradas é estabelecido um sistema de suporte ao desenvolvimento de software chamado CASE - Computer Aided Software Engineering

Procedimentos: constituem o elo de ligação entre os métodos e as ferramentas; sequência em que os métodos serão aplicados produtos que se exige que sejam entregues controles que ajudam assegurar a qualidade e coordenar as alterações marcos de referência que possibilitam administrar o progresso do software.

O processo de desenvolvimento de software contém 3 fases genéricas, independentes do modelo de engenharia de software escolhido: 1. DEFINIÇÃO, 2. DESENVOLVIMENTO e 3. MANUTENÇÃO.

Software é: (1) Instruções (programas) de computador que, quando executadas, produzem a função e o desempenho desejados; + (2) estruturas de dados que possibilitam que os programas manipulem adequadamente a informação; + (3) documentos que descrevem a operação e o uso dos programas. Roger Pressman

Um conjunto de instruções que quando executadas produzem a função e o desempenho desejados, estruturas de dados que permitam que as informações relativas aos problema a resolver sejam manipulados adequadamente e a documentação necessária para uma melhor operação e entendimento. Não consiste apenas em um programa de computador, mas também todos os dados de documentação e configuração selecionados Conjunto de programas Arquivos de configuração Documentação do sistema Documentação para o usuário Site contendo informações e atualizações do sistema

O Software é desenvolvido ou projetado por engenharia, não manufaturado no sentido clássico: Custos são concentrados no trabalho de engenharia. Projetos não podem ser geridos como projetos de manufatura. Fábrica de Software!

Software não desgasta! Software não é sensível aos problemas ambientais que fazem com que o hardware se desgaste. Ver curvas de falha, páginas 14 e 15 do Pressman. Toda falha indica erro de projeto ou implementação: manutenção do SW é mais complicada que a do HW.

A maioria dos softwares é feita sob medida e não montada a partir de componentes existentes.!= Hardware. Situação esta mudando: Orientação a objetos. Reusabilidade é o Santo Graal (diminui custos e melhora projetos).

Construção Definição o que Desenvolvimento 1. Análise de Sistema 2. Planejamento do Projeto 3. Análise de Requisitos como 1. Projeto de Software 2. Codificação 3. Teste SOFTWARE PRODUTO Atividades de Apoio 1. Revisões 2. Documentação 3. Controle de Mudanças Operação Manutenção mudanças 1. Entender 2. Modificar 3. Revalidar

Alguns ciclos de vida mais conhecidos são: Ciclo de Vida Clássico (Cascata) Prototipação Modelo Espiral Desenvolvimento Iterativo Evolutivo

natureza do projeto e da aplicação métodos e ferramentas a serem usados ou disponíveis controles e produtos que precisam ser entregues prazos e recursos disponíveis

modelo mais antigo e o mais amplamente usado da engenharia de software modelado em função do ciclo da engenharia convencional requer uma abordagem sistemática, sequencial ao desenvolvimento de software

Engenharia de Sistemas Análise de Requisitos Projeto Codificação Testes Manutenção

Definição: o que será desenvolvido. Análise do sistema : define o papel de cada elemento num sistema baseado em computador, atribuindo, em última análise, o papel que o software desempenhará. Planejamento do projeto de software : assim que o escopo do software é estabelecido, os riscos são analisados, os recursos são alocados, os custos são estimados e as tarefas e a programação de trabalho, definidas. 18

Definição: o que será desenvolvido. Análise de requisitos : o escopo definido para o software proporciona uma direção, mas uma definição detalhada do domínio da informação e da função do software é necessária antes que o trabalho se inicie. 19

Desenvolvimento: como será desenvolvido. Projeto de software : traduz os requisitos do software num conjunto de representações que descrevem a estrutura de dados, a arquitetura, o procedimento algorítmico e as características de interfaces. Codificação : as representações do projeto devem ser convertidas numa linguagem artificial que resulte em instruções que possam ser executadas pelo computador. A etapa de codificação realiza essa conversão. Realização de testes do software : logo que é implementado numa forma executável por máquina, o software deve ser testado para que se possa descobrir defeitos de função, lógica e implementação. 20

Manutenção: mudanças que estão associadas à: CORRECÃO DE ERROS, ADAPTAÇÕES e AMPLIAÇÕES. EVOLUTIVAS Três tipos de mudanças são encontradas durante a fase de manutenção: 21

Correção: mesmo com as melhores atividades de garantia da qualidade, é possível que o cliente descubra defeitos no software. A manutenção corretiva muda o software para corrigir defeitos. Adaptação: com o passar de tempo, o ambiente original para o qual o software foi desenvolvido provavelmente mudará. A manutenção adaptativa resulta em modificações no software a fim de acomodar mudanças em seu ambiente. Melhoramento funcional: à medida que o software é usado, o cliente/usuário reconhecerá funções adicionais que oferecerão benefícios, estendendo o software para além de suas exigências funcionais originais. 22

Atividades de proteção : complementam as fases e passos descritos na visão genérica da Engenharia de Software. Revisões : são feitas para garantir que a qualidade seja mantida à medida que cada etapa é concluída. Documentação : desenvolvida e controlada para garantir que informações completas sobre o sistema e o software estejam disponíveis para uso posterior. Controle das mudanças : é instituído de forma que elas possam ser aprovadas e acompanhadas. 23

projetos reais raramente seguem o fluxo seqüencial que o modelo propõe logo no início é difícil estabelecer explicitamente todos os requisitos. No começo dos projetos sempre existe uma incerteza natural o cliente deve ter paciência. Uma versão executável do software só fica disponível numa etapa avançada do desenvolvimento

Embora o Ciclo de Vida Clássico tenha fragilidades, ele é significativamente melhor do que uma abordagem casual ao desenvolvimento de software

processo que possibilita que o desenvolvedor crie um modelo do software que deve ser construído. idealmente, o modelo (protótipo) serve como um mecanismo para identificar os requisitos de software. apropriado para quando o cliente definiu um conjunto de objetivos gerais para o software, mas não identificou requisitos de entrada, processamento e saída com detalhes.

fim construção produto início refinamento protótipo obtenção dos requisitos avaliação protótipo projeto rápido construção protótipo Obtenção dos Requisitos: desenvolvedor e cliente definem os objetivos gerais do software, identificam quais requisitos são conhecidos e as áreas que necessitam de definições adicionais Projeto Rápido: representação dos aspectos do software que são visíveis ao usuário (abordagens de entrada e formatos de saída)

fim construção produto início refinamento protótipo obtenção dos requisitos avaliação protótipo projeto rápido construção protótipo Construção Protótipo: implementação do projeto rápido Avaliação do Protótipo: cliente e desenvolvedor avaliam o protótipo

fim construção produto início refinamento protótipo obtenção dos requisitos avaliação protótipo projeto rápido construção protótipo Refinamento dos Requisitos: cliente e desenvolvedor refinam os requisitos do software a ser desenvolvido. Ocorre neste ponto um processo de iteração que pode conduzir a 1a. atividade até que as necessidades do cliente sejam satisfeitas e o desenvolvedor compreenda o que precisa ser feito.

fim construção produto início obtenção dos requisitos projeto rápido Construção Produto: identificados os requisitos, o protótipo deve ser descartado e a versão de produção deve ser construída considerando os critérios de qualidade. refinamento protótipo avaliação protótipo construção protótipo

cliente não sabe que o software que ele vê não considerou, durante o desenvolvimento, a qualidade global e a manutenibilidade a longo prazo. Não aceita bem a idéia que a versão final do software vai ser construída e "força" a utilização do protótipo como produto final.

desenvolvedor freqüentemente faz uma implementação comprometida (utilizando o que está disponível) com o objetivo de produzir rapidamente um protótipo. Depois de um tempo ele familiariza com essas escolhas, e esquece que elas não são apropriadas para o produto final.

Exercício de prototipação Grupo de até 4 alunos Construir um protótipo para um dos temas a seguir: Software de locação Locação de filmes por um determinado cliente Devolução dos filmes locados Efetuar pagamento dos filmes locados utilizando cartão crédito Emitir relação de filmes locados no mês, agrupadas por gênero do filmes. Indicador subtotais de locações (quantidade e valor financeiro arrecadado) por filme e por gênero. Software de controle acadêmico Emissão das disciplinas cursadas pelo aluno com suas respectivas notas, carga horária, frequências e situação (aprovado ou reprovado) Matrícula on-line do aluno

Ainda que possam ocorrer problemas, a prototipação é um ciclo de vida eficiente A chave é definir-se as regras do jogo logo no começo O cliente e o desenvolvedor devem ambos concordar que o protótipo seja construído para servir como um mecanismo a fim de definir os requisitos

Por quê? O primeiro design muito provavelmente será deficiente com respeito aos requisitos principais do projeto nem todos os requisitos são claramente identificáveis a princípio, e aqueles que são podem as vezes ser ambíguos ou simplesmente inconsistentes requisitos podem mudar ou ficar obsoletos clientes podem mudar de opinião mercado competitivo pode exigir mudanças A descoberta tardia de defeitos no design resultarão em aumentos de custos ou cancelamento do projeto O tempo e o dinheiro gastos na correção de um design defeituoso não são recuperáveis!

O modelo espiral acopla a natureza iterativa da prototipação com os aspectos controlados e sistemáticos do modelo cascata O modelo espiral é dividido em uma série de atividades de trabalho ou regiões de tarefa Existem tipicamente de 3 a 6 regiões de tarefa 36

Adiciona um novo elemento: a Análise de Risco Usa a Prototipação, em qualquer etapa da evolução do produto, como mecanismo de redução de riscos Exige considerável experiência na determinação de riscos e depende dessa experiência para ter sucesso O modelo é relativamente novo e não tem sido amplamente usado O paradigma do modelo espiral para a engenharia de software é a abordagem mais realística para o desenvolvimento de sistemas e de software de grande escala 37

Planejamento Análise de Riscos Comunicação com Cliente Engenharia Avaliação do Cliente Construção e Liberação 38

Risco Especificação de Requisitos Análise Design Implementação Teste Tempo

Aplicação da Cascata Iterativamente ao Sistema R R R R I1 I2 I3 I4 A A A A D D D D I I I I T T T T Primeiras iterações carregam os maiores riscos Cada iteração gera uma versão executável com algum incremento ao sistema Cada iteração inclui integração e testes tempo

Risco Iterativo Cascata Iteração Iteração Iteração Iteração Iteração Iteração Iteração Iteração Tempo

SOMMERVILLE, I. Engenharia de Software. 8ª ed. São Paulo: Pearson Addison-Wesley, 2007. PRESSMAN, R. S. Engenharia de Software: Uma abordagem Profissional. 7ª ed. Porto Alegre: AMGH, 2011.