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

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

Introdução à Engenharia de Software

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

Fundamentos de Engenharia de Software. Josino Rodrigues

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

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

Qualidade de So+ware. Exemplos de falhas em sistemas. So+ware de Qualidade Impacto Econômico e Social. So+ware de Qualidade Impacto Econômico e Social

Processos de Software

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

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

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

Engenharia de Software

Visão Geral Parte 1. O que é engenharia de software?

Engenharia de Software

3. Fase de Planejamento dos Ciclos de Construção do Software

Introdução à Engenharia de Software

ENGENHARIA DE SOFTWARE II

Processo de Software - Revisão

O Processo Unificado

Especialização em Engenharia de Software e Banco de Dados

DESENVOLVENDO O SISTEMA

Gerenciamento de Requisitos Gerenciamento de Requisitos

Modelos de Processo (métodos)

Engenharia de Software II

Uma Solução Simples e Prática para Gerenciar Requisitos, Visando a Qualidade do Software Guilherme Motta

Unidade I Conceitos BásicosB. Conceitos BásicosB

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

Processo de Desenvolvimento Unificado

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

Requisitos do usuário, do sistema e do software [Sommerville, 2004]

Engenharia de Software

Metadados. 1. Introdução. 2. O que são Metadados? 3. O Valor dos Metadados

Ernâni Teixeira Liberali Rodrigo Oliveira

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

Desenvolvimento estruturado versus orientado a objetos.

Atividades da Engenharia de Software ATIVIDADES DE APOIO. Atividades da Engenharia de Software. Atividades da Engenharia de Software

Curso: Engenharia de Software com Ênfase em Padrões de Software (UECE Universidade Estadual do Ceará) RUP

Introdução ao RUP Rational Unified Process. por Denize Terra Pimenta Outubro/2004

Prof. Vitório Bruno Mazzola INE/CTC/UFSC 1. INTRODUÇÃO

Engenharia de Software

Gestão dos Prazos e Custos do Projeto

Apresentar os conceitos básicos da metodologia de desenvolvimento Processo Unificado, utilizando como aporte o Processo Unificado Rational RUP

Engenharia de Software Processo de Desenvolvimento de Software

Anexo IX METODOLOGIA DE DESENVOLVIMENTO DE SOFTWARE. 1. FINALIDADE. O objetivo deste documento é apresentar uma visão resumida do processo RUP-BNB.

Professor: Curso: Disciplina:

Processos de gerenciamento de projetos em um projeto

Unidade II MODELAGEM DE PROCESSOS

Curso de Especialização em Tecnologia da Informação. Engenharia de Software

ITIL v3 - Operação de Serviço - Parte 1

PROJETO DE COOPERAÇÃO TÉCNICA INTERNACIONAL. Projeto 914 BRA PRODOC-MTC/UNESCO DOCUMENTO TÉCNICO Nº 03

Indústria de Software - Histórico

Figura 5 - Workflow para a Fase de Projeto

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

Engenharia de Software. Tema 1. Introdução à Engenharia de Software Profa. Susana M. Iglesias

UML e a Ferramenta Astah. Profa. Reane Franco Goulart

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO DEPARTAMENTO DE ESTATÍSTICA E INFORMÁTICA BACHARELADO EM SISTEMAS DE INFORMAÇÃO RAPID APPLICATION DEVELOPMENT

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

2 Engenharia de Software

A Disciplina Gerência de Projetos

Qualidade e Teste de Software. QTS - Norma ISO (NBR13596) 1

CSE Métodos e Processos na Área Espacial

Engenharia de Software

Metodologia de Desenvolvimento de Sistemas (Versão 2.0)

A construção de um manual sobre a utilização dos modelos também poderá alavancar o uso das representações. Este conteria a explicação detalhada da

Requisitos para Gestão de Requisitos no Desenvolvimento de Software que Utilizam Prática Ágeis

Projeto de Sistemas I

Qualidade de Software

Utilizando os Diagramas da UML (Linguagem Unificada de Modelagem) para desenvolver aplicação em JSF

EVOLUÇÃO DE SOFTWARE

Gerenciamento de Projetos Modulo VIII Riscos

Capítulo 23 Planejamento de Projeto. Aula 1 Cronograma do Projeto

Engenharia de Requisitos

MDMS-ANAC. Metodologia de Desenvolvimento e Manutenção de Sistemas da ANAC. Superintendência de Tecnologia da Informação - STI

4 Metodologia e estratégia de abordagem

Projeto de Desenvolvimento de Software

RUP Rational Unified Process

Projeto de Arquitetura

POLÍTICA DE GESTÃO DE RISCO - PGR

Qualidade de Processo de Software. Implementação de Melhoria de Processos de Software

Fase 1: Engenharia de Produto

Processos de Desenvolvimento de Software

Elicitação de requisitos e análise

LISTA DE VERIFICAÇAO DO SISTEMA DE GESTAO DA QUALIDADE

Eduardo Bezerra. Editora Campus/Elsevier. Princípios de Análise e Projeto de Sistemas com UML - 2ª edição

SOFTWARE PROCESSES. Ian Sommerville, 8º edição Capítulo 4 Aula de Luiz Eduardo Guarino de Vasconcelos

QUALIDADE DE SOFTWARE

MINISTÉRIO DO PLANEJAMENTO, ORÇAMENTO E GESTÃO DIRETORIA DE ADMINISTRAÇÃO COORDENAÇÃO-GERAL DE AQUISIÇÕES

EMENTAS DAS DISCIPLINAS

Cinco restrições de desenvolvimento/teste que afetam a velocidade, o custo e a qualidade dos seus aplicativos

3 Qualidade de Software

Engenharia de Software

17/02/2015 PROJETO DE PRODUTOS E SERVIÇOS

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO

Transcrição:

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

Objetivos Discutir aspectos de Engenharia de Software Aplicar um método de desenvolvimento para especificação e projeto de software 2/35

O que é a Engenharia de Software? Estudo ou aplicação de abordagens sistemáticas, econômicas e quantificáveis para o desenvolvimento, operação e manutenção de software de qualidade. 3/35

O que é a Engenharia de Software? Engenheiros de software devem adotar uma abordagem sistemática e organizada para seu trabalho e usar ferramentas e técnicas/métodos apropriados dependendo do problema a ser solucionado, das restrições de desenvolvimento e dos recursos disponíveis 4/35

O que é software? Programas de computador e documentação associada Produtos de software podem ser desenvolvidos para um cliente particular ou podem ser desenvolvidos para um mercado geral 5/35

Motivação 6/35

Objetivos da Engenharia de Software Controle sobre o desenvolvimento de software dentro de custos, prazos e níveis de qualidade desejados Produtividade no desenvolvimento, operação e manutenção de software Qualidade versus Produtividade Permitir que profissionais tenham controle sobre o desenvolvimento de software dentro de custos, prazos e níveis de qualidade desejados 7/35

Características da Engenharia de Software A Engenharia de Software se refere a software (sistemas) desenvolvidos por grupos ao invés de indivíduos usa princípios de engenharia ao invés de arte, e inclui tanto aspectos técnicos quanto não técnicos 8/35

O que é um software de qualidade? O software que satisfaz os requisitos solicitados pelo usuário. Deve ser fácil de manter, ter boa performance, ser confiável e fácil de usar Alguns atributos de qualidade Manutenibilidade O software deve evoluir para atender os requisitos que mudam Eficiência O software não deve desperdiçar os recursos do sistema Usabilidade O software deve ser fácil de usar pelos usuários para os quais ele foi projetado 9/35

Qualidade de Software (um exemplo para o Varejo) Correto A loja não pode deixar de cobrar por produtos comprados pelo consumidor Robusto e altamente disponível A loja não pode parar de vender Eficiente O consumidor não pode esperar A empresa quer investir pouco em recursos computacionais (CPU, memória, rede) 10/35

Qualidade de Software (um exemplo para o Varejo) Amigável e fácil de usar A empresa quer investir pouco em treinamento Altamente extensível e adaptável A empresa tem sempre novos requisitos (para ontem!) A empresa quer o software customizado do seu jeito (interface, teclado, idioma, moeda, etc.) Reusável Várias empresas precisam usar partes de um mesmo sistema 11/35

Qualidade de Software (um exemplo para o Varejo) Aberto, compatível, de fácil integração com outros sistemas A empresa já tem controle de estoque, fidelização, etc. Portável e independente de plataforma (hw e sw) A empresa opta por uma determinada plataforma Baixo custo de instalação e atualização A empresa tem um grande número de PDVs 12/35

Produtividade Custo de desenvolvimento reduzido A empresa consumidora quer investir pouco em software A empresa produtora tem que oferecer software barato Tempo de desenvolvimento reduzido Suporte rápido às necessidades do mercado 13/35

Software Barato Nem tanto resultado de baixos custos de desenvolvimento, mas principalmente da distribuição dos custos entre vários clientes. Reuso, extensibilidade e adaptabilidade são essenciais para viabilizar tal distribuição. 14/35

Importância da Engenharia de Software Qualidade de software e produtividade garantem: Disponibilidade de serviços essenciais Segurança de pessoas Competitividade das empresas Produtores Consumidores 15/35

Mas, na realidade, temos a Crise de Software... 25% dos projetos são cancelados o tempo de desenvolvimento é bem maior do que o estimado 75% dos sistemas não funcionam como planejado a manutenção e reutilização são difíceis e custosas os problemas são proporcionais a complexidade dos sistemas 16/35

Causas da Crise de Software Essências Complexidade dos sistemas Dificuldade de formalização Acidentes Má qualidade dos métodos, linguagens, ferramentas, processos, e modelos de ciclo de vida Falta de qualificação técnica 17/35

Elementos e Atividades da Engenharia de Software Elementos Modelos do ciclo de vida do software Linguagens Métodos Ferramentas Processos Atividades Modelagem do negócio Elicitação de requisitos Análise e Projeto Implementação Testes Distribuição Planejamento Gerenciamento Gerência de Configuração e Mudanças Manutenção 18/35

O que é um modelo de ciclo de vida de processo de software? Uma representação abstrata e simplificada do processo de desenvolvimento software, tipicamente mostrando as principais atividades e dados usados na produção e manutenção de software 19/35

Modelos do Ciclo de Vida de Software Cascata Prototipação Iterativos Incremental (ex: do RUP, do XP) Espiral 20/35

Modelo Cascata 21/35

Modelo Cascata na Prática 22/35

Cascata 23/35

Cascata Clássico: Mais antigo; Sequencial; Gerenciamento Simples; Incompatível com Realidade Atual; Problema: Requisitos (uma única etapa); Retornos???; Testes (final do processo); Erros Sutis atraso no cronogram 24/35

Prototipação 25/35

Prototipação Velocidade de desenvolvimento: Visão mais real enxergar telas, tabelas e relatórios Envolvimento direto do usuário: Co-autor Acompanhamento da Evolução Problemas: usuário/entusiasmo (prevenção), evolução/protótipo, concessões/ implementação e urgência/implantação. 26/35

Modelos Iterativos Requisitos de sistema SEMPRE evoluem durante curso de um projeto. Assim a iteração do processo sempre faz parte do desenvolvimento de grandes sistemas Iterações podem ser aplicadas a quaisquer dos modelos de ciclo de vida Duas abordagens (relacionadas) Desenvolvimento espiral Desenvolvimento incremental 27/35

Desenvolvimento Espiral Acrescenta aspectos gerenciais ao processo de desenvolvimento de software. análise de riscos em intervalos regulares do processo de desenvolvimento de software planejamento controle tomada de decisão O processo é representado como uma espiral em vez de uma sequência de atividades Cada volta na espiral representa uma fase no processo Não há fases fixas como especificação ou projeto - voltas na espiral são escolhidas dependendo do que é requerido Riscos são avaliados explicitamente e resolvidos ao longo do processo 28/35

Desenvolvimento Espiral 29/35

Desenvolvimento Incremental Em vez de entregar o sistema como um todo, o desenvolvimento e a entrega são divididos em incrementos, com cada incremento entregando parte da funcionalidade requerida Requisitos dos usuários são priorizados e os requisitos de mais alta prioridade são incluídos nas iterações iniciais Uma vez que o desenvolvimento de um incremento é iniciado, os requisitos são "congelados". Embora os requisitos possam continuar a evoluir para incrementos posteriores 30/35

Modelo Incremental 31/35

Desenvolvimento Iterativo e Incremental (do RUP) 32/35

Linguagem Notação com sintaxe e semântica bem definidas com representação gráfica ou textual Usada para descrever os artefatos gerados durante o desenvolvimento de software Exemplos: UML, Java 33/35

Método Descrição sistemática de como deve-se realizar uma determinada atividade ou tarefa A descrição é normalmente feita através de padrões e guias Exemplos: Método para descoberta das classes de análise no RUP. 34/35

Ferramenta CASE Provê suporte computacional a um determinado método ou linguagem Ambiente de desenvolvimento: conjunto de ferramentas integradas (CASE) Exemplos: Rational Rose, Jbuilder, EA 35/35

Processo Conjunto de atividades bem definidas com responsáveis com artefatos de entrada e saída com dependências entre as mesmas e ordem de execução com modelo de ciclo de vida 36/35

Processo de software Um conjunto de atividades cujo objetivo é o desenvolvimento ou a evolução do software Conjunto coerente de atividades para especificação, projeto, implementação e teste de sistemas de software 37/35

Metodologia Conjunto de métodos + processo 38/35

Pontos principais Engenharia de software é uma disciplina de engenharia que está envolvida com todos os aspectos da produção de software Produtos de software consistem de programas desenvolvidos e documentação associada. Alguns atributos de qualidade do produto são manutenibilidade, eficiência e usabilidade O processo de software consiste nas atividades que são envolvidas no desenvolvimento de produtos de software 39/35

Pontos principais Métodos são formas organizadas de produzir software. Eles incluem sugestões para o processo a ser seguido, as notações a serem usadas, regras que governam as descrições do sistema que são produzidas e diretrizes de projeto Ferramentas CASE são sistemas de software que são projetados para suportar as atividades rotineiras no processo de software, como edição de diagramas de projeto e verificação de consistência dos diagramas 40/35