Engenharia de Software-2003



Documentos relacionados
Engenharia de Software: Introdução. Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes

Análise e Projeto de Sistemas. Engenharia de Software. Análise e Projeto de Sistemas. Contextualização. Perspectiva Histórica. A Evolução do Software

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

PROCESSO DE DESENVOLVIMENTO DE SOFTWARE. Modelos de Processo de Desenvolvimento de Software

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

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

Introdução à Computação

Engenharia de Requisitos

Projeto de Sistemas I

Processos de Desenvolvimento de Software

O que é software? Software e Engenharia de Software. O que é software? Tipos de Sistemas de Software. A Evolução do Software

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

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

Engenharia de Requisitos

Requisitos. Sistemas de Informações

Introdução à Engenharia de Software

! Software e Engenharia de Software! Engenharia de Software e Programação! Histórico. " Crise do Software

ENGENHARIA DE SOFTWARE/ SISTEMAS DE SOFTWARE

REPROJETO DA ORGANIZAÇÃO COM SISTEMAS DE INFORMAÇÃO

Roteiro para a escrita do documento de Especificação de Requisitos de Software (ERS)

Professor: Curso: Disciplina:

! Software e Engenharia de Software! Engenharia de Software e Programação! Histórico. " Crise do Software

Gerência de Projetos

Engenharia de Software

REVISÃO ENGENHARIA DO SOFTWARE. Isac Aguiar isacaguiar.com.br

PROFESSOR: CRISTIANO MARIOTTI

Tópicos. Engenharia de Software: Uma Visão Geral

Faculdade Pitágoras. Engenharia de Software. Prof.: Julio Cesar da Silva.

Engenharia de Software Introdução. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 1

REPROJETO DA ORGANIZAÇÃO COM SISTEMAS DE INFORMAÇÃO

Laudon & Laudon MIS, 7th Edition. Pg. 1.1

ENGENHARIA DE SOFTWARE I

Processo de Desenvolvimento de Software. Engenharia de Software.

Felipe Denis M. de Oliveira. Fonte: Alice e Carlos Rodrigo (Internet)

Uma Introdução à Engenharia de Software

ENG1000 Introdução à Engenharia

Modelo Cascata. Alunos: Bruno Nocera Zanette Pedro Taques

Engenharia de Software

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

Gerenciamento de Projeto

Qualidade de Software. Prof.: Ivon Rodrigues Canedo. PUC Goiás

TRABALHO DE DIPLOMAÇÃO Regime Modular ORIENTAÇÕES SOBRE O ROTEIRO DO PROJETO FINAL DE SISTEMAS DE INFORMAÇÕES

AULA 1 INTRODUÇÃO - ENGENHARIA DE SOFTWARE. Prof. Msc. Hélio Esperidião

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

desenvolvimento de SI

Engenharia de Software Introdução. Ricardo Argenton Ramos UNIVASF Engenharia de Software I - Aula 1

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

PROCESSOS DE DESENVOLVIMENTO DE SOFTWARE 1. VISÃO GERAL 1.1. PROCESSOS EM GERAL

Gerenciamento de Níveis de Serviço

Projeto de Arquitetura

Engenharia de Software. Análise de Requisitos de Sistema e de Software. Análise de requisitos

ENGENHARIA DE SOFTWARE

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

Unidade I Conceitos BásicosB. Conceitos BásicosB

Engenharia de Software

AUTOR: DAVID DE MIRANDA RODRIGUES CONTATO: CURSO FIC DE PROGRAMADOR WEB VERSÃO: 1.0

Engenharia de Software

Engenharia Reversa e Reengenharia

Características do Software

Ciência da Computação ENGENHARIA DE SOFTWARE. Análise dos Requisitos de Software

Engenharia de Software

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

Gerenciamento de Requisitos Gerenciamento de Requisitos

Gerenciamento de Problemas

Concepção e Elaboração

Sistemas de Informação I

APOO Análise e Projeto Orientado a Objetos. Requisitos

MASTER IN PROJECT MANAGEMENT

O Processo de Desenvolvimento de Software

Metodologias de Desenvolvimento de Sistemas. Analise de Sistemas I UNIPAC Rodrigo Videschi

Fundamentos em Teste de Software. Vinicius V. Pessoni

Metodologia de Desenvolvimento de Sistemas

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

Princípios da Engenharia de Software Aula 02. Prof.: Franklin M. Correia

REQUISITOS. Prof. Msc. Hélio Esperidião

Processo Unificado (RUP)

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

Tecnologia e Sistemas de Informações

O Processo de Engenharia de Requisitos

Requisitos de Software. Requisitos de Software. Requisitos de Software. Requisitos de Software. Requisitos de Software. Requisitos de Software

Introdução à Engenharia de Software

PDS - DATASUS. Processo de Desenvolvimento de Software do DATASUS

Engenharia de Software. Apostila I >>> Introdução à ES - HEngholmJr

GOVERNO DO ESTADO DO PARÁ MINISTÉRIO PÚBLICO DE CONTAS DOS MUNICÍPIOS DO ESTADO DO PARÁ MPCM CONCURSO PÚBLICO N.º 01/2015

ARCO - Associação Recreativa dos Correios. Sistema para Gerenciamento de Associações Recreativas Plano de Desenvolvimento de Software Versão <1.

Metodologia e Gerenciamento do Projeto na Fábrica de Software

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

TI Aplicada. Aula 02 Áreas e Profissionais de TI. Prof. MSc. Edilberto Silva prof.edilberto.silva@gmail.com

Administração de Sistemas de Informação. Plano Diretor de Informática

Engenharia de Software na Prática Hélio Engholm Jr.

Engenharia de Requisitos

Desempenho da Fase Analítica. Fernando de Almeida Berlitz

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini prof.andre.luis.belini@gmail.com /

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

Engenharia de Software II

Transcrição:

Engenharia de Software-2003 Mestrado em Ciência da Computação Departamento de Informática - UEM Profa. Dra. Elisa H. M. Huzita eng. de software-2003 Elisa Huzita

Produto de Software

Conceitos Software criação intelectual compreendendo os programas, procedimentos, regras e qualquer documentação correlata à operação de um sistema de processamento de dados. ISO9000-3 Produto de Software Conjunto completo de programas de computador, procedimentos e documentação correlata, assim como dados designados para entrega a um usuário. ISO9000-3 Produto: mercado - editor ou usuário específico - negócio Outros termos: sistemas de software, aplicações, aplicativos

O Papel do Software na Sociedade LAS (London Ambulance System) é automatizar o tratamento de chamadas de emergência e a atribuição de ambulâncias a acidentes. É o maior serviço de ambulância do mundo, abrangendo uma população de aproximadamente 6.8 milhões. LAS transporta mais de 5.000 pacientes por dia, recebe entre 2.000 e 2.500 chamadas diariamente. Falhas no sistema em 26 e 27 de Outubro de 1992 causaram problemas tais como: alocação ineficiente de ambulâncias (duplicada e atrasada - múltiplas ambulâncias foram enviadas para o mesmo acidente ou o veículo mais próximo não foi enviado para o acidente mais próximo); uma crescente lista de mensagens de exceção e uma enorme lista de espera; um aumento do tempo de resposta proporcional ao aumento de mensagens e da lista de espera; um número crescente de telefonemas repetidos ( call backs ).

Como produzir software? Automatizar Mundo Real Computador

Questões comumente colocadas... Porque demora-se tanto para construir um produto de software? Porque os custos são tão altos? Porque não podemos detectar todos os erros antes de entregar um produto de software para o cliente? Porque é difícil mensurar o progresso do desenvolvimento de um produto de software?

Características de software Software é desenvolvido e não manufaturado no sentido clássico. Software não se deteriora... não existem componentes de reposição. Software é feito sob encomenda, ao invés de ser construído a partir de componentes (está mudando). A evolução tecnológica afeta diretamente as facilidades que podem ser incorporadas ao software e as técnicas de construção destes. Tempo para transferência de tecnologia.

Tipos de Sistemas de Software Software básico Software para sistema em tempo real Software comercial Software para engenharia e aplicações científicas Software embarcado Software para computadores pessoais Software baseados em inteligência artificial Software de entretenimento

Problemas relacionados a produção de software A sofisticação do hardware ultrapassa nossa habilidade de construir software que utilize todo o potencial do hardware. Nossa habilidade para construir novos produtos de software não acompanha a demanda. Nossa habilidade de manter os produtos de software existentes estão ameaçadas por projetos ineficientes e recursos inadequados (pessoal mal treinado ou mal alocado).

Sintomas e Causas dos Problemas mau entendimento das necessidades dos usuários finais falta de habilidade para tratar com modificações de requisitos; módulos que não trabalham juntos; software que é difícil de manter ou extender; descoberta, de forma tardia, das falhas de projeto; baixa qualidade de software; desempenho inaceitável; os membros da equipe não conseguem reconstruir pois não sabem quem modificou o que, quando, onde e porque; um processo irresponsável de construir- entregar

Que resultaram de... gerenciamento adhoc dos requisitos comunicação ambígua e imprecisa; arquiteturas frágeis; grande complexidade; inconsistência detectda em requisitos, projetos e implementação; testes insuficientes; avaliação subjetiva do estado do projeto; falha em atacar/avaliar riscos; propagação incontrolada de modificações; automação insuficiente.

Tamanho e complexidade... Fatores que influenciam no tamanho: Contexto (escopo); Número de interfaces com outros sistemas; Número e tipo de usuários; Número de entidades (dados) e atributos.

Tamanho e complexidade... Fatores que influenciam a complexidade: Complexidade do processo de negócio que precisa ser automatizado; Complexidade das regras de negócio; Volume de transações para o processo por unidade de tempo; Localização geográfica dos usuários; Complexidade das relações que existem entre as várias entidades que usam o sistema; Tipo e nível de maturidade que é requerido para executar o sistema.

Atributos de um bom software funcionalidades e desempenho requeridos; Confiança: confiabilidade, segurança; Manutenção; Interoperável; Fácil uso: interface e documentação adequados.

Grandes desafios (atualmente) Sistemas legados; Heterogeneidade; Redução de custo; Redução de tempo de entrega.

Engenharia de Software Uma definição: O estabelecimento e uso de um conjunto de princípios para se obter, economicamente, um software que seja confiável etrabalhe eficientemente em máquinas reais. Três elementos chaves: métodos ferramentas procedimentos (gerenciamento de projetos)

A Evolução do Software Os primeiros anos sistemas batch distribuição limitada software personalizado A segunda era sistemas multiusuários sistemas em tempo real banco de dados software produto A terceira era sistemas distribuídos incorporação de inteligência hardware de baixo custo impacto do consumidor A quarta era sistemas desktop poderosos tecnologia de orientação a objetos sistemas especialistas redes neurais computação paralela comunicação intergaláctica A quinta era Computação móvel Tecnologia de componentes 1950 1960 1970 1980 1990 2000 2005

O que foi feito? Crise de Software Aflição crônica (Pressman, 1991) Bons Exemplos: sistemas telefônicos sistemas bancários sistemas de reservas de passagens aéreas folhas de pagamento, contabilidade, etc.

O que foi feito? Programação estruturada Análise estruturada Sistemas de gerenciamento de banco de dados Linguagens de 4a. Geração Verificação, validação e teste de software Métodos formais (sequenciais, concorrentes) Análise da complexidade de algoritmos Tipos abstratos de dados Análise orientada a objetos Modelagem e automação de processos Ferramentas CASE

Processo de software Definição: Conjunto de atividades e resultados associados que geram um produto de software Envolve: Especificação; Desenvolvimento; Validação; Evolução.

Processo de Software

Modelos de Processo de Desenvolvimento de Software Modelo de ciclo de vida descrições abstratas do processo de desenvolvimento e modificação, tipicamente, mostrando os principais estágios de desenvolvimento e manutenção de um software executável. Processo de Software Desenvolvimento Manutenção Uso

O Modelo Cascata Requisitos do Sistema Requisitos do Software Análise Projeto de Programas Codificação Teste Operação

Modelo Espiral 1. Define objetivos, alternativas e restrições 2. Analisa Riscos 4. Planeja próximo ciclo 3. Desenvolve produto

Outros modelos Modelo em V Modelo incremental Desenvolvimento baseado em reuso Desenvolvimento utilizando métodos formais

Ciclo de vida canônico Estudo de Viabilidade Iniciação do projeto Especificação de requisitos Projeto da arquitetura Projeto detalhado Codificação Teste de unidade Testedeaceitação Teste operacional Encerramento do projeto Operação Desativação do produto

Seleção de Estágios Análise de requisitos Especificação do sistema Projeto da arquitetura Projeto detalhado Implementação (Manutenção e evolução) O que? Como?

Estágios... Análise de Requisitos (sistemas e software) Software é sempre parte de um sistema maior que envolve hardware, pessoas, etc.modelo de negócios Coleta de requisitos do software, especificamente técnicas Especificação do sistema Expressr os requisitos de maneira formal através de diagramas bem definidos ou especificações matemáticas Projeto da arquitetura Determinar a estrutrua do software com seus componentes e conectores

Projeto detalhado Estágios... Projetar a concretização da especificação do software, definindo base de dados, repreentações de interfaces, algoritmos, etc... Implementação Escrever o projeto do sistema em uma linguagem de programação Manutenção e evolução Corrigir eventuais erros no software e efetivar atualizações

Seleção de Métodos Em geral, mais de um método é utilizado para cobrir todo o ciclo de vida. A escolha deve considerar: características técnicas da aplicação características técnicas do método cobertura do ciclo de vida

Modelos Um modelo é uma visão abstrata de um sistema. Modelos de sistema complementar apresentam informações diferentes sobre o sistema Princípio da modelagem: modificação de requisitos é mais fácil e mais barato enquanto se está modelando do que em produção

Modelos Por que construir modelos? Possibilita melhor entendimento da área sob etudo; Possibilita validar os requisitos Possibilita confirmar o entendimento dos requisitos com o usuário

Tipos de modelos Modelo de contexto; Modelo de fluxo de dados; Modelo de máquina de estados; Modelo de arquitetura; Modelo semântico de dados; Modelo de objetos.

Modelagem de software Análise estrutruada Orientada a objetos Baseda em componentes Baseada em agentes Orientada a aspectos

Pontos de Vista Técnico envolve estágios compostos de atividades tecnicamente relacionadas. Ex. atividades de elicitação e validação na análise de requisitos. Gerencial envolve fases compostas de grupos de atividades, temporariamente relacionadas. Essas fases começam e terminam em um ponto bem definido e terminam com a revisão de alguns produtos.

Ponto de Vista Técnico: modelo transformacional Iteração Transformação Descrição Conceitos Requisitos Arquitetura Projeto Detalhado V&V Iteração

Ponto de Vista Técnico: modelo transformacional Baseado em uma visão abstrata das atividades desenvolvidas no processo de software como uma seqüência de transformações. Várias descrições intermediárias são produzidas durante o processo. Erros são descobertos no desenvolvimento, o que causa iteração. V&V são usadas para determinar as atividades que levam a iteração. Verificação: estamos construindo o produto corretamente? Validação: estamos construindo o produto certo? Oferece uma base para escolha de um método: notação,

Ponto de Vista Técnico: Modelo Contratual Considera algumas das especificações como contratos entre o pessoal que trabalha em estágios adjacentes. Ilustração do modelo para desenvolvimento formal: especificação: descrição validação: lado esquerdo verificação: lado direito

Modelo Contratual Fase Análise de Requisitos Cliente Necessidade do Cliente Não Válido (Comportamento Adequado) Animação Requisitos Informais Não Fornecedor Teoria do Analista Modelo Formal Analiticamente Adequado? Sim Especificação Formal Necessidade do Analista Teoria do Projetista Não Arquitetura Formal Projeto Válido (Comportamento Adequado) Prova Não Analiticamente Adequado? Seleção de Métodos Sim Proposta de Projeto Implementação Necessidade do Projetista Não Válido (Comportamento Adequado) Prova Não Teoria do Implementador Projeto Analiticamente Adequado? É implementável? Proposta de Implementação Sim

Gerenciamento de Risco Técnico Riscos técnicos: detectar requisitos incorretos, seguir um método errado; má interpretação das descrições entre equipes. Garantir que os estágios serão completados com sucesso. Abordagens Contratual Prototipação Incremental

Abordagem contratual A abordagem principal do gerenciamento de riscos é que todo esforço deve ser colocado nas atividades de V&V antes de tornar uma descrição em baseline. Existem Breakpoints bem definidos nos quais se pode avaliar o progresso do projeto.

Abordagem Prototipação Validar a precisão dos requisitos ou aceitabilidade das decisões. Validar a viabilidade de uma estratégia proposta. Observações: protótipos só são válidos se construídos rapidamente protótipos devem ser desprezados.

Abordagem incremental Definir e desenvolver uma pequena parte do sistema de cada vez. Desenvolver um núcleo do sistema inicialmente e depois adicionar funcionalidades em subprojetos. Grande atração é que gera sistemas parciais executáveis e utilizáveis de onde se pode obter feedbacks e ganhar credibilidade do usuário. Na prática é difícil de desenvolver uma abordagem incremental sem ter um entendimento completo dos requisitos.

Ponto de Vista Gerencial Objetivo Principal: controlar o processo de desenvolvimento para que o produto resultante seja entregue: no prazo com o orçamento previsto com qualidade e confiabilidade aceitáveis obedecendo às expectativas e requisitos dos usuários satisfazendo as especificações

Ponto de Vista Gerencial Questões principais: análise de riscos planejamento e controle tomada de decisão

Comentários Sempre deve existir um processo de software definido - padrões de qualidade. O modelo canônico deve ser tratado como uma referência que deve ser adaptada para cada situação. Criar um processo baseado em fases específico para o projeto.