Aula 1 – Práticas Recomendadas na Engenharia de Software FEEC-UNICAMP Ricardo Gudwin Ivan Ricarte Mário Jino.

Slides:



Advertisements
Apresentações semelhantes
Engenharia de Software
Advertisements

Rational Unified Process
O Processo Praxis 3.0 Processos de Software 25/03/2017
(Unified Modeling Language)
Processos de Software Introdução
Rational Unified Process(RUP)
Valéria Maria Lauande Março/2010
UML Material retirado da apostila do Professor Cesar Augusto Tacla
Engenharia de Software Professor Sandro de Paiva Carvalho.
FACULDADE DOS GUARARAPES
RUP - Rational Unified Process
Projeto de Sistemas de Software
Metodologia de Desenvolvimento de Software
RUP Rational Unified Process (Processo Unificado de Desenvolvimento da Rational) 1.
Adélia Barros Requisitos Adélia Barros
Processos de Desenvolvimento de Software
Processo Desenvolvimento de Software Tradicional
Análise e Projeto de Sistemas
Aspectos Avançados em Engenharia de Software Aula 3 Fernanda Campos
Análise e Gerenciamento de Requisitos com Casos de Uso
Classes e objetos Modelagem
Engenharia de Software Respostas do Questionário 01
Rational Unified Process
RUP - Cap. 2 – Os 4 P’s (Pessoas, Projeto, Produto e Processo)
Aula 1 Minicurso: Astah Ministrantes: André Martins; Camila Brondani;
Unibratec Análise e Gerencia de Projetos Profº Henrique Vila Nova
Visão Geral PRO.NET.
Visão Geral do RUP.
Fundamentos de Engenharia de SW
Problemas e Práticas Recomendadas no Desenvolvimento de Software
Processos de Desenvolvimento de Software – Parte 2
Fase de Elaboração: Fluxo de Requisitos
Análise e Projeto de Sistemas
Engenharia de Software
Introdução e Fundamentos Engenharia de Requisitos
Desenvolvimento Rápido de Aplicação (RAD)
Processo de Desenvolvimento de Software
Gerência de Configuração - GC
Análise e Desenvolvimento de Software
PSBD II Projeto de Sistemas de Banco de Dados II
O Processo de desenvolvimento de software
Análise e Projeto Orientados a Objetos
Teste de Software Conceitos iniciais.
Bruno Silva Desenvolvido a partir de
O Processo Unificado (UP)
Engenharia de Software
O que é? É o processo de investigação técnica com intuito de identificar a qualidade, a segurança e a exatidão do software desenvolvido. A validação do.
RUP - Cap. 4 – Processo Centrado na Arquitetura
RUP - Cap. 3 – Processo Dirigido por Caso de Uso
Processos de Software.
Conceitos Básicos Introdução.
Técnicas e Projeto de Sistemas
Engenharia de Software
Processo Centrado na Arquitetura
Gestão de projetos de Software GTI-16
UML e a Ferramenta Astah
CIn-UFPE1 © 2003, Alexandre Vasconcelos Visão Geral do RUP.
Engenharia de Software
© Nabor C. Mendonça Processo / Metodologia de Desenvolvimento de Software.
Análise e Projeto de Sistemas Unified Modeling Language Renata Araujo Ricardo Storino Núcleo de Computação Eletrônica Curso de Programação de Computadores.
Engenharia de Software
Análise e Projeto de Sistemas I Profa. Ana Karina Barbosa Fevereiro/2007.
UML (Unified Modeling Language) Linguagem Unificada de Modelagem
UML (Unified Modeling Language) Linguagem Unificada de Modelagem
APSI II Análise e Projeto de Sistemas de Banco de Dados II.
RUP – Rational Unified Process Márcia Seabra Cabral Prof. Augusto Sampaio Centro de Informática - UFPE.
ISO9001:2000 para Software Professor: Alexandre Vasconcelos Equipe: Amanda Pimentel Börje Karlsson Danielly Karine Erika Pessoa Jorge Cavalcanti Jose Edson.
Apresentação Leonardo Brussolo de Paula
Processos de Software Ludimila Monjardim Casagrande 1º Semestre Desenvolvimento e Qualidade.
O Processo Unificado (PU). 2 O que é o Processo Unificado (PU)? É um modelo de processo de software baseado no modelo incremental, visando a construção.
Transcrição da apresentação:

Aula 1 – Práticas Recomendadas na Engenharia de Software FEEC-UNICAMP Ricardo Gudwin Ivan Ricarte Mário Jino

Análise da Situação Atual no Desenvolvimento de Software zEconomia Mundial ycrescentemente dependente de software zMercado de Software ydemanda mais produtividade e qualidade em menos tempo zAplicações de Software yexpandindo em tamanho, complexidade e disseminação zMão de Obra Qualificada ycada vez mais difícil de encontrar zGerenciamento de Equipes de Desenvolvimento yequipes numerosas yindivíduos especializados, distribuídos geograficamente yrápida mudança nas tecnologias disponíveis

Sintomas de Problemas no Desenvolvimento de Software zNecessidades dos usuários não atendidas zMudanças nos requisitos não implementadas zMódulos que não conseguem interagir adequadamente zProgramas de difícil manutenção zDescoberta tardia de erros sérios no projeto zBaixa qualidade do software zDesempenho inaceitával do software zEquipes de desenvolvimento sem compromissos com o projeto yincapazes de rastrear os passos do desenvolvimento zProcessos de desenvolvimento não confiáveis ybuild and release

Causas dos Problemas no Desenvolvimento de Software zGerenciamento de Requisitos inadequado zComunicações imprecisas e/ou ambíguas zArquiteturas Inflexíveis (inadequadas a mudanças) zComplexidade incontrolável e avassaladora zInconsistências não detectadas durante a especificação de requisitos, análise, design ou implementação zTestes insuficientes zFalta de referência na estimativa do estado do projeto zGerenciamento de Risco comprometido devido a um desenvolvimento do tipo cascata (waterfall) zPropagação de mudanças sem o controle adequado zFalta de automação no processo de desenvolvimento

Sumário dos Problemas zPor que isso acontece ? yMetodologia de Desenvolvimento (Processo) inadequado yGerenciamento do Processo de Desenvolvimento inadequado zPor que inadequados ? yO perfil do software mudou zO que fazer para resolver ? yAdotar (criar, desenvolver) novas metodologias e novas formas de gerenciamento zComo desenvolver essas novas metodologias yObservar os projetos de software que deram certo yTentar capturar os princípios que fizeram com que eles dessem certo yTentar reproduzir as decisões que se mostraram promissoras

Práticas Consagradas da Engenharia de Software zPráticas “que deram certo” em projetos de software yDesenvolvimento Iterativo yGerenciamento dos Requisitos yArquiteturas baseadas em Componentes yModelagem Visual do Software yControle de Qualidade do Software yGerenciamento de Mudanças zResultados ymais projetos concluídos com sucesso ygerenciamento adequado de grandes equipes de software yqualidade do software melhorada ydiminuição dos custos de desenvolvimento

Desenvolvimento de Software Iterativo zPor quê ? yO primeiro design muito provavelmente será deficiente com respeito aos requisitos principais do projeto xnem 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 xrequisitos podem mudar ou ficar obsoletos clientes podem mudar de opinião mercado competitivo pode exigir mudanças yA descoberta tardia de defeitos no design resultarão em aumentos de custos ou cancelamento do projeto yO tempo e o dinheiro gastos na correção de um design defeituoso não são recuperáveis !

Desenvolvimento do Tipo Cascata e Redução de Risco Especificação de Requisitos Análise Design Implementação Teste Tempo Risco

Desenvolvimento Iterativo zAplicação da Cascata Iterativamente ao Sistema zPrimeiras iterações carregam os maiores riscos zCada iteração gera uma versão executável com algum incremento ao sistema zCada iteração inclui integração e testes R A D I T tempo R A D I T R A D I T R A D I T I1 I2I3I4

Redução de Risco no Desenvolvimento Iterativo Tempo Risco Cascata Iterativo Iteração Iteração Iteração Iteração

Gerenciamento de Requisitos zRequisitos são dinâmicos ydevemos esperar que eles mudem durante o desenvolvimento de um software zObjetivo yelicitar, organizar e documentar as funcionalidades e restrições necessárias zMudanças nos Requisitos ynão podem ser impedidas, mas devem ser gerenciadas yavaliação das mudanças necessárias e determinação de seu impacto no projeto - relação custo/benefício yacompanhar e documentar as mudanças, as decisões tomadas e suas consequências

Documentação dos Requisitos zEspecificação dos Requisitos ydocumentada de forma clara e explícita zPor que ? yNem sempre poderemos ter um acesso direto ao cliente a todas as horas yClientes podem mudar de idéia e se não há nada registrado a respeito dos requisitos … yLigado a vários outros elementos do projeto xdesign e implementação, teste e qualidade, gerência do projeto zRequisitos ycapturados em uma forma que seja inteligível tanto ao cliente como à equipe de desenvolvimento xmeta para a equipe de desenvolvimento xcritério de aceitação e validação por parte do cliente

Arquitetura Baseada em Componentes zArquitetura de Software yabrange decisões significativas relativas à organização de um sistema de software xSeleção dos elementos estruturais que irão compor o sistema e suas interfaces xComportamento do sistema especificado como uma colaboração entre esses elementos xComposição destes elementos estruturais e comportamentais em sub-sistemas progressivamente maiores xEstilo arquitetural que dirige a organização, os elementos e suas interfaces, suas interações e colaborações, bem como sua composição yescolha da arquitetura tem um impacto crucial na capacidade do sistema de evoluir, se modificar e se integrar com outros sistemas

Arquitetura Baseada em Componentes zRequisitos Arquiteturais yuso, funcionalidade, desempenho, flexibilidade, capacidade de reutilização, compreensibilidade, aspectos econômicos e tecnológicos, aspecto estético zBoas Arquiteturas yflexíveis e baseadas em componentes zArquitetura Flexível yfacilidade de manutenção, extensão e reuso ypermite a divisão de trabalho entre elementos da equipe de desenvolvimento yencapsula detalhes do hardware e dependências do sistema zArquitetura Baseada em Componentes yReutilização e customização de componentes existentes yEscolha dentre milhares de componentes comercialmente disponíveis yPermitem a evolução incremental do software existente

Modelagem Visual do Software zCaracterísticas ycaptura a estrutura e comportamento de arquiteturas e componentes ymostra como os elementos se agregam entre si yesconde ou expõe detalhes, quando apropriado a uma tarefa ymantém a consistência entre um design e sua implementação ypromove a comunicação entre elementos da equipe sem ambiguidades yaumentam a capacidade de gerenciamento da complexidade do software zModelo ysimplificação da realidade que provê uma descrição completa do sistema a partir de uma perspectiva em particular

Modelagem Visual do Software zLinguagem de Modelagem yLinguagem Visual - Diagramas zO que é UML (Unified Modeling Language) ylinguagem visual de modelagem para especificar, visualizar, construir e documentar as partes de um sistema de software, durante todas as fases de desenvolvimento do mesmo yadotada como uma norma para modelagem de software (OMG) yindependente de plataforma ou linguagem de implementação zDiferentes tipos de diagramas yDiagramas de Casos de Uso, diagramas de Classes, diagramas de objetos, diagramas de estados, diagramas de componentes, diagramas de deployment, diagramas de colaboração, diagramas de sequência e diagramas de atividades

Modelagem Visual de Software zFerramentas CASE ypermitem a criação de modelos visuais usando o UML yrequisitos diferenciais: xsincronização com o código fonte xengenharia reversa xrevisão das mudanças efetuadas no código fonte zRevisão das Mudanças e Gerenciamento de Mudanças ydurante a sincronização do código fonte, a ferramenta pode detectar automaticamente as mudanças e solicitar que o usuário confirme se elas estão corretas ycaso as mudanças sejam efetuadas, elas devem ser registradas no modelo visual e no registro de mudanças

Verificação da Qualidade do Software zQualidade y“a característica de ter demonstrado, após a produção de um produto, produzido de acordo com um processo previamente acordado, o sucesso em atingir ou exceder os requisitos previamente acordados, de acordo com os critérios de medição previamente acordados” yAtingir ou superar os requisitos yEstabelecimento de métricas para demonstrar que os requisitos foram atingidos yImplementação de um Processo de desenvolvimento que garanta um nível de qualidade repetível e gerenciável zTeste de Software yalto custo e grandes deficiências, na maioria das organizações

Verificação da Qualidade do Software zDesenvolvimento Iterativo yPermite que o sistema seja continuamente testado e debugado yDistribui a tarefa de teste em doses mais administráveis yErros são encontrados mais cedo no ciclo de vida do software, quando os custos para sua correção são menores zAutomação dos Testes yFerramentas computacionais podem ser utilizadas para automatizar parte dos testes de um sistema yEssas ferramentas devem ser utilizadas desde as primeiras iterações yOs primeiros testes devem compreender os módulos isoladamente yPosteriormente, quando os módulos são integrados, deve ser feito um teste de integração

Dimensões da Qualidade de Software

Gerenciamento de Mudanças zMudanças devem ser controladas ycomo e quando elas são introduzidas yquem as introduziu ysincronização das mudanças entre as diferentes equipes participantes do projeto zPor que ? yMúltiplas equipes trabalhando simultaneamente em múltiplos projetos, com múltiplas versões de múltiplos componentes ysem um controle disciplinado, o desenvolvimento se degrada num verdadeiro caos zProblemas yatualizações simultâneas ynotificação de atualizações inadequada ymúltiplas versões

Gerenciamento de Mudanças zPráticas recomendáveis ydecompor a arquitetura em subsistemas e atribuir a responsabilidade de cada subsistema a uma equipe yestabelecer espaços de trabalhos seguros para cada desenvolvedor xisolamento de mudanças feitas em outros espaços de trabalho xcontrole dos artefatos de software - modelos, código, documentação, etc. yEstabelecer um espaço de trabalho de integração yEstabelecer um mecanismo de controle de mudanças necessário xou seja, ninguém efetua mudanças sem passar pelo mecanismo ySaber que mudanças aparecem em que releases do software yLiberar um release testado do software a cada iteração

Processos de Desenvolvimento de Software zEngenharia de Software ydiversos processos de desenvolvimento de software ygrande similaridade entre os processos ydivergências em alguns detalhes ylinguagens de modelagem diferentes zExemplos de Processos yProcesso Cascata (Waterfall) yProcesso Schlaer-Mellor yProcesso Microsoft (Build-and-Release) yFusion ySyntropy yCatalysis yXP - Extreme Programming

O Processo Unified zProcesso Unified yunificação das idéias de Jacobson, Rumbaugh e Booch yderivado e desenvolvido a partir do Objectory de Jacobson ydesenvolvido para o UML e junto com o UML yinstanciado na forma de um produto da Rational Corporation, o RUP - Rational Unified Process zUma definição em três tempos ydirecionado por casos de uso yfocalizado na arquitetura yiterativo e incremental zBaseado em Componentes ymódulos de software interconectados por meio de interfaces bem definidas

O Processo Unified zDirecionado por Casos de Uso ypropósito de um software é servir a seus usuários ylevantamento das necessidades dos usuários é feita por meio do levantamento de casos de uso zCasos de Uso ySequências de eventos envolvendo como protagonistas o usuário (ou usuários) e o sistema yCaptura dos requisitos por casos de uso substitui a tradicional captura de funcionalidades e atributos de um sistema yA captura dos casos de uso direciona todo o processo de desenvolvimento xespecificação de casos de uso xdesign de casos de usos xcasos de usos são implementados xcasos de uso são utilizados para desenvolver os testes

O Processo Unified zFocalizado na Arquitetura yarquitetura: plano conceitual antevendo a construção de um sistema ypermite um desenvolvimento lógico antes do desenvolvimento concreto yarquitetura é concebida em função das necessidades do usuário yinfluenciada por diversos fatores xplataforma de hardware, sistema operacional, protocolos de comunicações, outros softwares com os quais deve se integrar, módulos re-utilizáveis, considerações de distribuição, desempenho e confiabilidade ydefinição de uma arquitetura se realiza na definição de sub- sistemas que devem compor o sistema, os componentes, classes e objetos que os compõem

O Processo Unified zIterativo e Incremental yprevê um crescimento gradativo ao sistema ya cada iteração, novos casos de uso são agregados ao sistema, equipando-o com novas funcionalidades ou modificando as funcionalidades existentes zCiclo de Vida yConcepção, Elaboração, Construção, Transição zCada uma dessas fases ycorresponde a várias iterações, onde cada iteração deve passar pelas fases de especificação, análise, design, implementação e testes zDependendo da fase yênfase na especificação, análise, design, implementação ou testes pode variar

O Processo Unified

Desenvolvimento de Software Ágil zProcessos Ágeis de Desenvolvimento de Software yAgile Software Development Manifesto xIndivíduos e interações antes de processos e ferramentas xUm software funcionando, antes de uma documentação compreensiva xColaboração com o cliente, antes de uma negociação de contrato xResponder à necessidade de mudar, antes de seguir um plano zPor quê ? yUm software não é uma ponte nem uma casa yCusto de modelagem pode ser muito alto yRequisitos mudam constantemente yAdaptação pode ser uma estratégia melhor do que a predição yUm código documentado pode ser um modelo melhor do que um diagrama

XP - Extreme Programming

XP – Extreme Programming zXP e o Processo Unified yProcesso Unified é um processo ágil ? zProcesso Unified é um Framework, não um processo yPode ser customizado para diferentes tipos de projetos yMínimo processo Unified ? xCasos de Usos e Diagramas de Classes zO Processo dX yRobert Martin -