Engenharia de Software e Sistemas

Slides:



Advertisements
Apresentações semelhantes
Análise e Projeto de Sistemas I
Advertisements

Introdução a Algoritmos
Os projetos.
Engenharia de Software
Engenharia de Software
Engenharia de Software
Prototipação de Software
Gerenciamento de Projetos
Engenharia de Software
Prototipação de Software
Rational Unified Process(RUP)
Engenharia de Software
Valéria Maria Lauande Março/2010
Engenharia de Software Professor Sandro de Paiva Carvalho.
INTRODUÇÃO A INFORMÁTICA
FACULDADE DOS GUARARAPES
Metodologia de Desenvolvimento de Software
Processo Desenvolvimento de Software Tradicional
Modelos de Processos de Software
Alunos: Artulanez Souza Iony Melo
RUP Prof.ª Elaine B. Figueiredo.
Processos de Software II
Rational Unified Process
Processo de Software Prof. Dr. rer. nat. Daniel D. Abdala
José Roberto Blaschek Gerência do Escopo José Roberto Blaschek.
RUPinho Qualidade de Software
Gestão de Projetos.
Desafios do desenvolvimento de software
Visão Geral PRO.NET.
Visão Geral do RUP.
Fundamentos de Engenharia de SW
Cap 2 – Processo de Software
Processos de Desenvolvimento de Software – Parte 2
Processo Praxis – Fase de Concepção
Gerenciamento do Escopo: principais conceitos
Engenharia de Software
Análise e Projeto de Sistemas
Engenharia de Software
Modelos de Processo de Software
ANÁLISE E DESENVOLVIMENTO
PSBD II Projeto de Sistemas de Banco de Dados II
O Processo de desenvolvimento de software
Bruno Silva Desenvolvido a partir de
Análise e Projeto de Sistemas UNIVERSIDADE DE CRUZ ALTA Ciência da Computação 2010/1.
Processo de Desenvolvimento 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.
1/34 Engenharia de Software e Sistemas Alexandre Vasconcelos
Processos de Software.
Processos de Software.
Técnicas e Projeto de Sistemas
Visão Geral sobre Ciclo de Vida de Software, Processos e RUP
1/37 Engenharia de Software e Sistemas Alexandre Monteiro.
Engenharia de Software
Gestão de projetos de Software GTI-16
Integração.
CIn-UFPE1 © 2003, Alexandre Vasconcelos Visão Geral do RUP.
Métodos Ágeis e Programação Extrema (XP)
Engenharia de Software
© Nabor C. Mendonça Processo / Metodologia de Desenvolvimento de Software.
Engenharia de Software
Professora: Kelly de Paula Cunha
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
Desenvolvimento de Software I
Ciclo de Vida de Sistemas de Informação
1 Projeto Piloto Conclusão em Agenda Projeto Piloto –Descrição –Execução da aplicação –Implementação de requisitos funcionais e não- funcionais.
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:

Engenharia de Software e Sistemas Workshop Engenharia de Software e Sistemas

Engenharia de Software (Def.) Disciplina gerencial e tecnológica que lida com a produção e manutenção sistemática de produtos de software desenvolvidos dentro de estimativas de custo e tempo Deve-se entender por engenharia a ciência relacionada com o uso prático de conhecimentos científicos

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

Objetivos de Engenharia de Software Obter software de qualidade Com produtividade no seu desenvolvimento, operação e manutenção Empregando profissionais que desenvolvam o software dentro de custos, prazos e níveis de qualidade controlados E, além disso, que obtenham o melhor custo-benefício possível entre Qualidade  Produtividade

Motivação Desenvolver sistemas de acordo com a intenção do cliente/usuário Estabelecer noção sobre tempo e custo de desenvolvimento Elaborar artefatos além do código Analisar artefatos para estabelecer a qualidade do produto

Ciclo de Vida e Processo de Desenvolvimento de Software

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

Principais Modelos do Ciclo de Vida de Software Cascata Modelo de Desenvolvimento Evolucionário Programação Exploratória Prototipagem descartável Modelos Iterativos Espiral Incremental

Modelo Cascata (ou clássico) Derivado de modelos existentes em outras engenharias Sua estrutura é composta por várias etapas que são executadas de forma sistemática e seqüencial Na prática, existe uma interação entre as etapas e cada etapa pode levar a modificações nas etapas anteriores

Modelo Cascata Definição de Requisitos Projeto do Sistema e do Software Implementação e Testes Unitários Integração e Teste do Sistema Operação e Manutenção

Modelo Cascata na Prática Definição de Requisitos Projeto do Sistema e do Software Implementação e Testes Unitários Integração e Teste do Sistema Operação e Manutenção    

Modelo de Desenvolvimento Evolucionário Programação Exploratória Prototipagem Descartável Atividades Concorrentes Especificação Desenvolvimento Validação Esboço de Descrição Versão Inicial Versões Intermediárias Versão Final

Programação Exploratória Idéia geral: Desenvolvimento da primeira versão do sistema o mais rápido possível Modificações sucessivas até que o sistema seja considerado adequado Após o desenvolvimento de cada uma das versões do sistema ele é mostrado aos usuários para comentários Adequado para o desenvolvimento de sistemas onde é difícil ou impossível se fazer uma especificação detalhada do sistema Principal diferença para os outros modelos é a ausência da noção de programa correto

Prototipagem Descartável Como na programação exploratória, a primeira fase prevê o desenvolvimento de um programa para o usuário experimentar No entanto, o objetivo aqui é estabelecer os requisitos do sistema O software deve ser reimplementado na fase seguinte A construção de protótipos com os quais os usuários possam brincar é uma idéia bastante atrativa: Para sistemas grandes e complicados Quando não existe um sistema anterior ou um sistema manual que ajude a especificar os requisitos

Prototipagem Descartável Os objetivos do protótipo devem estar bem claros antes do início da codificação. Possíveis objetivos: Entender os requisitos dos usuários Definir a interface com os usuários Demonstrar a viabilidade do sistemas para os gerentes. Uma decisão importante a ser tomada é escolher o que será e o que não será parte do protótipo Não é economicamente viável implementar todo o sistema! Os objetivos do protótipo são o ponto de partida

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

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 seqüê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

Desenvolvimento Espiral Determinação dos objetivos, alternativas e restrições Análise de Riscos   Análise das alternativas e identificação e/ou resolução de riscos Desenvolvimento e validação da versão corrente do produto Simulações, modelos e benchmarks Planejamento

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 Em certos aspectos é similar à programação exploratória. No entanto, o escopo do sistema deve ser claramente entendido antes de se iniciar o desenvolvimento

Desenvolvimento Incremental

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

Processo é uma ação regular e contínua (ou sucessão de ações) realizada de forma bem definida, levando a um resultado é um conjunto parcialmente ordenado de atividades (ou passos) para se atingir um objetivo define quem está fazendo o que, quando e como para atingir um certo objetivo

Modelo de Processo é uma representação de um processo, usualmente envolvendo atividades a serem realizadas agentes que realizam as atividades artefatos (produtos) gerados recursos necessários (consumidos)

Exemplos de processos Processos tradicionais (pesados) RUP, OPEN, Catalysis Processos ágeis (leves) XP, Agile modeling, Crystal, pragmatic programming, Internet Speed, Scrum, ...

Exemplos de processos Consenso em torno de Iteratividade Participação de usuários Flexibilidade de configuração para projetos específicos Comunicação entre membros da equipe

Exemplos de processos Divergências em torno de Detalhamento de atividades a serem seguidas Critério de conclusão da execução das atividades Arquitetura robusta (RUP) Arquitetura para o contexto da iteração atual (agile modeling) Rigor na atribuição de tarefas a responsáveis workers (RUP) alocação sob demanda e interesse (XP) Artefatos (documentação) gerados

Ciclo de Vida O ciclo de vida de um sistema consiste de quatro fases: tempo concepção elaboração construção transição Concepção (define o escopo do projeto) Elaboração (detalha os requisitos e a arquitetura) Construção (desenvolve o sistema) Transição (implanta o sistema)

Cada fase é dividida em iterações: Inception Elaboration Construction Transition iteration Preliminary Architect. Devel.. Minor Milestones: Releases

Cada iteração é planejada realiza uma seqüência de atividades (de elicitação de requisitos, análise e projeto, implementação, etc.) distintas geralmente resulta em uma versão executável do sistema é avaliada segundo critérios de sucesso previamente definidos

Planejamento/Gerenciamento

Conteúdo Erros clássicos de planejamento e gerenciamento O que é projeto? Ciclo de vida de projetos Elementos essenciais Objetivos gerais do planejamento e gerenciamento do projeto de software

Erros Clássicos Desenvolvimento de Software é uma atividade complicada, então evite erros tais como ...

Pessoas Motivação incoerente Pessoal problemático Heroísmo Esforço do pessoal e chefe de férias … Pessoal problemático Uma pessoa pode desconcentrar uma equipe … Heroísmo Posso fazer tudo, não preciso da equipe …

Pessoas Mais pessoas no final do projeto Em pequeno incêndio, jogue gasolina … Atrito entre desenvolvedores e clientes Se você não adicionar isso, não quero mais … Falha de contratos Com o módulo M, a ser criado pela empresa E, vamos melhorar nosso cronograma …

Pessoas Expectativas irreais Falta de interação com o usuário Vamos terminar o projeto em 6 meses … Falta de interação com o usuário Isso é ambíguo …, então vamos decidir sozinhos. Crença cega Essa parte do sistema é muito simples, em 1 ou 2 dias removemos todos os erros …

Processo Planejamento insuficiente Abandono de plano sob pressão Esse sistema é simples, não há o que planejar … Abandono de plano sob pressão Devido ao cronograma apertado, vamos codificar logo depois da especificação de requisitos e não vamos testar …

Processo Garantia de qualidade prejudicada Só precisamos fazer os testes a partir da GUI Controle de gerenciamento insuficiente O que já fizemos? Não sei, mas sem problema … Sem estimativas para tarefas necessárias Não precisamos registrar o tempo para tarefa T

Processo Planejamento para controlar depois Fizemos em 3 meses, o que planejamos fazer em 2, mas depois nós ganhamos tempo … Programação sem padronização Vou codificar de qualquer jeito; ganho tempo …

Produto Requisitos demais Desenvolvedor exagerado Sei que o usuário não pediu, mas vamos melhorar a performance do sistema … Desenvolvedor exagerado Sei que o sistema não precisa e que não domino a tecnologia, mas vou usar o recurso R … Desenvolvimento orientado a pesquisa Sei que vou desenvolver funcionalidade F, que é estado-da-arte, mas minha estimativa é razoável …

Tecnologia Síndrome da bala de prata Vou usar o gerador de GUIs e não terei problemas quanto ao desenvolvimento das GUIs … Estimativa otimista com novas ferramentas ou métodos Vou usar ferramenta F, no lugar de G, daí vou ganhar tempo …

Tecnologia Troca de ferramentas no meio do projeto Vou usar a nova versão de F, pois tem mais recursos … Falta de controle sobre o código-fonte Vamos trabalhar em paralelo no módulo M (único arquivo) para ganharmos tempo …

Projeto: Definição PMI Um empreendimento temporário realizado para criar um produto ou serviço único

Por que Gerenciar? Para atingir objetivos e produzir resultados Concentrar responsabilidade e autoridade para atingir objetivos Coordenar e integrar todas as atividades para chegar aos resultados

Objetivos do Gerenciamento Custo Objetivo: Limite de orçamento Prazo de entrega Desempenho Almejado Tempo Desempenho

Qualidades de Gerente Liderança Comunicação Resolver problemas Negociação Influenciar a organização Mentor Especialista técnico e em processo

Gerenciamento das Tarefas Milestones Ponto final de uma atividade do processo de software (um marco no cronograma) Deliverables Resultado do projeto a ser entregue ao cliente. Usualmente entregue ao final de uma fase.

Por que Planejar? Criar propostas que sejam Econômicamente viáveis e Realizadas com recursos financeiros pré-estabelecidos E que estejam de acordo com as necessidades requisitadas Representar precisamente o que se pode fazer

Planejamento e Estimativa Registre suas estimativas para comparar com os resultados reais no final do projeto Planejamento continua durante desenvolvimento e manutenção Planejamento inicial não é suficiente Planejamento detalhado só ocorre após a especificação de requisitos

Planejamento e o Processo de Software

O que é um plano? Documento que define o trabalho que e como deve ser feito Com uma estimativa de tempo e recursos exigidos, e um contexto para gerenciamento de controle e revisão, para cada marco Servir de benchmark para comparar com projetos anteriores, quando documentado apropriadamente Melhorando erros em estimativas e sua precisão

Estrutura Básica de um Plano Introdução Organização do Projeto Requisitos com Recursos (Pessoas, SW, HW) Detalhamento das Tarefas Análise de Riscos Cronograma do Projeto Milestones/Deliverables Atribuição de tarefas a pessoas Estimativa de tempo Custo do Projeto

Introdução Do que se trata o documento? Tópicos do documento Visão geral do sistema

Organização do Projeto Estrutura Organizacional Membros / Cargos Papéis e Responsabilidades Membros / Lista de Atividades

Recursos do Projeto Pessoas Hardware Software

Detalhamento das tarefas Descrição sucinta de cada tarefa a ser realizada. Resultado esperado após a tarefa

Análise de Riscos Lista de Riscos Descrição Classificação (Alta/Média/Baixa) Plano de Mitigação Plano de Contigência

Cronograma Atribuição de tarefas a pessoas Estimativa de tempo

Custo Custo dos funcionários Despesas Adicionais Salário (semanal / mensal) Vale Transporte / Alimentação Despesas Adicionais Aluguel Luz Água Energia Internet

Exercício Desenvolver o Plano de Projeto a ser desenvolvido pela empresa.

Referência http://www.cin.ufpe.br/~if682/