Engenharia de Software



Documentos relacionados
Qualidades. Atributos de Qualidade. Atributos de Qualidade. Categorias de Qualidades. Arquitecturas de Software

Gestão do Risco e da Qualidade no Desenvolvimento de Software

c. Técnica de Estrutura de Controle Teste do Caminho Básico

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

Análise de Sistemas. Conceito de análise de sistemas

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

Unidade I Conceitos BásicosB. Conceitos BásicosB

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

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

Introdução Ciclo de vida tradicional de desenvolvimento Prototipagem Pacotes de software Desenvolvimento de 4ª geração Terceirização

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

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

Engenharia de Software II

BREVE INTRODUÇÃO AO SISTEMA DA GESTÃO DE DOCUMENTOS DA CÂMARA MUNICIPAL DE MACAU PROVISÓRIA

Capítulo 2 Objetivos e benefícios de um Sistema de Informação

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

Engenharia de Software Unidade I Visão Geral

SEMINÁRIOS AVANÇADOS GESTÃO DE PROJECTOS

Introdução a Banco de Dados Aula 03. Prof. Silvestri

Curso Superior de Tecnologia em Banco de Dados e Sistemas para Internet Disciplina: Projeto Integrador III Prof.: Fernando Hadad Zaidan

Marketing Pessoal. aumentem de valor.

Curso de Especialização Tecnológica em Aplicações Informáticas de Gestão (CET-AIG)

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

18º Congresso de Iniciação Científica IMPLEMENTAÇÃO DE UM MODELO DE TESTE DE APLICAÇÕES WEB

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

MODELAGEM DE SISTEMA Apresentação

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

Especificação Operacional.

Norma Interpretativa 2 Uso de Técnicas de Valor Presente para mensurar o Valor de Uso

De Arte a Ciência: Regras para o Desenho de Software

Resumo de: THE FOUR STEPS TO THE EPIPHANY de Steve Blank de Diogo Miguel Jesus, Engenharia Informática, Instituto Superior Técnico, Lisboa, 2011

QUALIDADE DE SOFTWARE

AULA 6 Esquemas Elétricos Básicos das Subestações Elétricas

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

Tencologia em Análise e Desenvolvimento de Sistemas Disciplina: WEB I Conteúdo: Arquitetura de Software Aula 03

Empresas Responsáveis Questionário de Sensibilização

Biblioteca Virtual. BIBLIOTECA VIRTUAL DA UNIVERSIDADE DO PORTO (BVUP) Plano de Actividades 2007

Qualidade de Software

ESTATÍSTICAS, O ABECEDÁRIO DO FUTURO

PARLAMENTO EUROPEU. Comissão dos Assuntos Jurídicos PE v01-00

Qualidade de Software

3 Qualidade de Software

Soluções de Retrofit Modernize, aumentando confiabilidade e eficiência do seu equipamento

UNEMAT SISTEMA DE INFORMAÇÃO (SI) Professora: Priscila Pelegrini

Documento SGS. PLANO DE TRANSIÇÃO da SGS ICS ISO 9001:2008. PTD v Pág 1 de 6

Inovação em sistemas de informação aplicada ao apoio do cliente de retalho

TÉCNICAS DE PROGRAMAÇÃO

No capítulo 3 estão concentrados todos os assuntos relacionados à metodologia utilizada nesse trabalho de pesquisa. Ou seja, tipo de pesquisa, método

Tu ganhas. Todos ganham. Aceita o desafio. O mais importante concurso mundial de tecnologia, a nível académico.

1 Introdução. 2 Exemplo de aplicação

11. NOÇÕES SOBRE CONFIABILIDADE:

ADMINISTRAÇÃO E SERVIÇOS DE REDE

1. O Contexto do SBTVD

Engenharia de Software

Classificação de Sistemas: Sistemas Empresariais

Engenharia de Software III

Elicitação de requisitos e análise

INSPECÇÃO-GERAL DA EDUCAÇÃO PROGRAMA AFERIÇÃO

Processos de Software

SEGURANÇA DE MÁQUINAS

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

GARANTIA LIMITADA DO FABRICANTE NOKIA PARA NOKIA COM WINDOWS PHONE

Posição da SPEA sobre a Energia Eólica em Portugal. Sociedade Portuguesa para o Estudo das Aves

Administração de Sistemas (ASIST)

Apostila da disciplina Introdução à Engenharia de Software Professor: Sandro Melo Faculdades São José Curso de Tecnologia de Sistemas de Informação

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

Processos de gerenciamento de riscos. Planejamento Identificação Análise Resposta Monitoramento

A Sustentabilidade e a Inovação na formação dos Engenheiros Brasileiros. Prof.Dr. Marco Antônio Dias CEETEPS

O processo envolve quatro questões básicas:

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

Sistemas de Gestão da Qualidade

Núcleo de Pós Graduação Pitágoras

Planejamento e Gestão Estratégica

Introdução. Escritório de projetos

INDICADORES EM ENGENHARIA DE CONFIABILIDADE PARA A CADEIA PRODUTIVA DE GÁS NATURAL

Automação. Industrial. Prof. Alexandre Landim

Conceitos Básicos de Rede. Um manual para empresas com até 75 computadores

Melhoria da Qualidade e Redução de Custos

Desenvolvimento Sustentável para controlo da população humana.

Análise e Projeto de Software

Porque prototipar? Prototipagem e Cenários. Dilema. Prototipação. Artefatos do Design. Veja antes, decida depois. Prototipagem & Design Iterativo

PID control. (proportional, integral, derivative)

LEAN SIX SIGMA PARA O SERVICE DESK

Eficiência e qualidade: mitos e contradições

Abordagem simples aos modos de falha com recurso a um software de organização e gestão da manutenção

OS MITOS À VOLTA DA HIPERTROFIA

Implicações da alteração da Taxa de Juro nas Provisões Matemáticas do Seguro de Vida

Escalas. Antes de representar objetos, modelos, peças, A U L A. Nossa aula. O que é escala

6. Pronunciamento Técnico CPC 23 Políticas Contábeis, Mudança de Estimativa e Retificação de Erro

CAPITAL DE GIRO: ESSÊNCIA DA VIDA EMPRESARIAL

Figura 5.1.Modelo não linear de um neurônio j da camada k+1. Fonte: HAYKIN, 2001

Gerenciamento de Projetos Modulo II Clico de Vida e Organização

Computador Digital Circuitos de um computador (Hardware)

Engenharia de aplicações web

Engenharia de Requisitos de Software

Transcrição:

Conceitos básicos sobre E.S: Ambiência Caracterização do software Fases de desenvolvimento 1 Introdução Aspectos Introdutórios Crise do Software Definição de Engenharia do Software 2

Crise do Software Nos primórdios da era computacional, os programas eram pequenos e normalmente escritos por uma pessoa e utilizados por especialistas na área. Os problemas a resolver eram de natureza técnica, lidando com dados numéricos, sendo a ênfase colocada na codificação eficiente de algoritmos bem conhecidos. Na actualidade, as aplicações são muito diferentes, em vários aspectos: São grandes; desenvolvidas por equipas muitas vezes pluridisciplinares e durante períodos longos; os programadores não são os futuros utilizadores e não são peritos na área em que se insere a aplicação; estamos em presença de aplicações OLTP, em ambientes cliente-servidor ou centrados na rede. Estas alterações ocorridas no ambiente em que se insere o software, levou a que as técnicas de programação ficassem claramente para trás, dado que agora, o software é muito mais extenso e complexo. Em resultado disso, foram inevitáveis: Imprecisões nas estimativas de custos e duração; deficiências na identificação dos requisitos, levando a que as aplicações não se comportassem como esperado; falta de produtividade das equipas; falta de qualidade e fiabilidade do software, sendo muitos erros detectados após entrega; grande dificuldade de manutenção, dado que a docum. é deficiente e difícil fazer alterações; carência de profissionais competentes no mercado mundial (e excesso de prof. de comp. insatisfatória). 3 Crise do Software Dos pontos anteriores, ressalvam-se a questão da pontualidade, qualidade e custos, dado que é destas que dependem os sistemas que desenvolvemos e que suportam m grande medida a qualidade da vida actual. Pontualidade: sem ela quaisquer tentativas de temporização de tarefas torna-se impossível, tendo como consequência lesar as duas questões seguintes; Qualidade: tem a ver com o comportamento esperado, ausência de erros, facilidade de utilização e desempenho, entre outros factores; Custos: são enormes e tiveram uma evolução como se mostra na figura abaixo. Hardware Desenvolvimento Manutenção 1955 1970 1985 4

Definição de Esta crise motivou conferências nos finais dos anos 60 e início dos anos 70, onde surgiu o termo, criado com conotações um tanto provocatórias, sugerindo a necessidade de desenvolver software de forma análoga à forma como a engenharia civil constrói casas ou pontes: Iniciar com uma base teórica; Utilizar técnicas de desenho sólidas e comprovadas. Definição de : É o estabelecimento e utilização de princípios sólidos de engenhariam por forma a ser criado software económico, fiável e que trabalhe em máquinas reais (Segundo conferência da NATO) É a aproximação sistemática a desenvolvimento, operação, manutenção e substituição do software (Definição dada no glossário do IEEE) Conceber, construir e manter grandes sistemas de software 5 Definição de Engenharia e Software Aspectos fundamentais a reter: A E.S. lida com a criação de grandes programas (várias pessoas por períodos superiores a 1/2 ano - a dita programação em grande ); O tema central é o domínio da complexidade, por divisão do problema, como comunicação simples entre as partes; A cooperação entre as pessoas é parte integrante da programação em grande; A inevitabilidade da evolução do software - como o software modela em parte a realidade, mudando esta, terá de mudar aquele; A eficiência com que software é desenvolvido é de importância crucial, dada a necessidade de minimizar os custo envolvidos; O software tem de suportar efectivamente os utilizadores, devendo ser desenvolvido não só de forma correcta, mas ser criado o sistema certo, tendo em mente a utilidade, facilidade de utilização, fiabilidade, tempo de resposta, manuais de utilização e treino dos utilizadores. 6

Definição de Engenharia e Software Aspectos fundamentais a reter (continuação): A E.S. permite modelar parte do mundo real em software. Esses modelos são grandes, abstractos e complexos. Dessa forma devem tornar-se visíveis em documentos, tais como concepção de sistema, manuais do utilizador, etc. A produção de documentos é tão relevante do ponto de vista da E.S. como a própria programação. A E.S. é diferente de outras disciplinas de engenharia. Não está constrangida por materiais governados por leis físicas ou por processos de manufactura. 7 Evolução na Produção de Software Agora, passados 30 anos, fizeram-se progressos enormes em E.S.: A capacidade de produzir software eficiente e de confiança melhorou marcadamente Temos uma muito melhor compreensão das actividades envolvidas na produção de software Desenvolveram-se métodos de especificação, concepção e implementação de software Novas notações e ferramentas reduzem o esforço requerido à produção de sistemas grandes e complexos. Apesar disso: Muitos projectos continuam a atrasar-se ou a ultrapassar o orçamento É distribuído e instalado software que não satisfaz as necessidades reais dos clientes Novas tecnologias que resultam da convergência dos computadores e comunicações colocam novos desafios aos engenheiros de software 8

Generalidades sobre o Software Caracterizar o software Produto Processo Propriedades Princípios 9 Tipos de Produtos de Software Produtos Genéricos (Standard) Sistemas do tipo Stand-Alone, que são produzidos por uma organização que desenvolve software e vendidos no mercado a qualquer cliente. As especificações são produzidas internamente, sendo de âmbito alargado, reflectindo o que se pensa irá vender. Produtos Específicos Sistemas que são contratados por um cliente específico e desenvolvidos especialmente pelo contratante. As características são definidas detalhadamente e as alterações são negociadas. A maioria dos gastos de software cai na categoria dos produtos genéricos, mas dado o cada vez maior acoplamento de dispositivos hardware aos computadores, há uma cada vez maior procura de controladores de software com a consequente necessidade crescente de software específico. 10

Atributos de Produtos de Software São características mostradas pelo produto depois de instalado e em uso; não são serviços proporcionados pelo produto. São elas: Facilidade de Manutenção - deve ser possível que o software evolua por forma a responder à alteração dos requisitos; Confiança - O software não deve causar estragos físicos ou económicos no caso de ocorrência de uma falha; Eficiência - O software não deve desperdiçar a utilização dos recursos; Facilidade de Utilização - O software deve ter uma interface apropriada com o utilizador e respectiva documentação. 11 Importância das Características do Produto A importância relativa destas características depende do produto e ambiente em que é utilizado. A optimização de todos os atributos é difícil dados que alguns são mutuamente exclusivos: ex. uma melhor interface reduz a eficiência do sistema. Em alguns casos, um ou outro atributo pode dominar; exemplo: Nos sistemas para aviação, os atributos eficiência e confiança são primordiais. Os custos tendem crescer exponencialmente se um nível muito alto de um qualquer atributo for necessário. custo Lei da diminuição do retorno A relação entre os custos e melhoramentos não é linear eficiência 12

Software Caracterização do produto Propriedades genéricas Maleabilidade - O software pode e muitas vezes precisa de ser modificado (ao contrário de uma ponte ou avião) Produção - O software é desenhado e implementado por pessoas, ao invés de ser manufacturado como o hardware Vida - O software deteriora-se de modo diferente do hardware Mortalidade infantil Envelhe cimento Prático Teórico Hardware Software 7 13 Software Outras propriedades: Correcção - Funciona de acordo com a especificação (requisitos funcionais). Propriedade matemática Confiabilidade - Um software é confiável se o utilizador pode depender dele. Propriedade estatística Robustez - Um software é robusto se desempenha as funções esperadas mesmo em situações não antecipadas. Propriedade mal definida Desempenho - Espera-se que o software cumpra um certo nível de desempenho. O mesmo que eficiente: económico na utilização de recursos Amigável - Fácil de utilizar. Propriedade subjectiva Verificável - Um software é verificável se as suas propriedades podem ser verificadas (por análise ou teste) com facilidade. É uma propriedade importante quando a aplicação é crítica 14

Software Outras propriedades: Manutenção/Evolução - Modificável após a produção Reparável - Correcção de defeitos num limite de tempo Alterável - Alterações de requisitos funcionais Compreensibilidade - Facilidade em analisar o código. Permite atingir outras propriedades, como alterável e verificável Reutilização - Software utilizável em outros produtos Portabilidade - Software utilizável em ambientes ou plataformas diferentes Interoperabilidade - Capacidade para coexistir e cooperar com outros sistemas 15 Propriedades e Qualidade de Software As propriedades do Software, de que derivam directa ou indirectamente a qualidade do software, como já vimos, interactuam. Esta interacção pode ter um impacto positivo ou negativo. Correcção Fiabilidade Eficiência Integridade Utilização Manutenção Teste Flexibilidade Portabilidade Reutilização Interoperacionalidade C orrecção Fiabilid ade + E ficiên cia Integridade - U tilização + + - + Manutenção + + - + Teste + + - + + Flexib ilid ad e + + - - + + + Portabilidade - - + + Reutilização - - - + + + + Interoperacionalidade - - + 16

Software Caracterização do processo Propriedades: Produtividade - Medida da eficiência do processo Controlo - Capacidade para entregar o software num determinado prazo Visibilidade - Um processo é visível se todos os seus passos forem documentados Princípios: Diversidade de métodos e técnicas que devem ser seguidas de modo a atingir as propriedades desejadas quer para o produto quer para o processo 17 Princípios Rigor e formalidade - Aproximação destinada a melhorar a confiabilidade do produto, produtividade e controlo do processo Separação de preocupações - Separar os diferentes aspectos de um problema de modo a tratá-los separadamente Separação no tempo - Controlar interdependências Separação de qualidades - Por exemplo, desenhar software correcto e mais tarde aumentar a sua eficiência Separação de vistas - Por exemplo, analisar separadamente fluxos de dados e de controlo Separação em partes - Modularidade 18

Princípios Modularidade - Decompor o software em partes (lat. divide et impera). Destinada a aumentar a compreensibilidade, reutilização e portabilidade do software. Deve caracterizar-se por: Elevada coesão dos elementos de um módulo Reduzida interdependência entre módulos Abstracção - Processo destinado a identificar os aspectos importantes e ignorar os detalhes Princípio largamente utilizado em linguagens de programação, algoritmos, modelos Antecipação das alterações - Facilitar a reparação e alteração do software. Relacionado com: Desenho do software Controlo de versões 1 19 Princípios Generalidade - Tentar descobrir o problema mais genérico por detrás do problema a resolver Compromisso entre generalidade, eficiência, custo e controlo Incrementalidade - Caracteriza um processo que se desenvolve iterativamente Prototipagem 20