Baixe o app para aproveitar ainda mais
Prévia do material em texto
w w w .i n a te l. b r Introdução à Engenharia de Software Cap. 4 – Engenharia de Software Adaptado do material dos professores Guilherme A. B. Marcondes e Valeska P. P. Marcondes Baseado no livro: Engenharia de Software – Roger S. Pressman – Sexta Edição Prof. Afonso Celso Soares EC205 – Engenharia de Software I w w w .i n a te l. b r Introdução à Engenharia de Software Onde está o software? w w w .i n a te l. b r Introdução à Engenharia de Software Onde está o software? w w w .i n a te l. b r Introdução à Engenharia de Software A importância do software e seus desafios 1950, 1960, 1970 1980 Desafio Desenvolver hardware com baixo custo de processamento e armazenamento de dados Desafio Melhorar a qualidade e custo de soluções desenvolvidas com software. O software tornou-se um fator que direciona as decisões de mercado. w w w .i n a te l. b r Introdução à Engenharia de Software O papel evolutivo do software 1950 1960 1970 2000 1980 1990 Os primeiros anos: - Orientação batch - Distribuição limitada - Software customizado w w w .i n a te l. b r Introdução à Engenharia de Software O papel evolutivo do software 1950 1960 1970 2000 1980 1990 Os primeiros anos: - Sistemas batch - Distribuição limitada - Software customizado A segunda era: - Multiusuário - On-line - Tempo real - Banco de dados - Manutenção de sw w w w .i n a te l. b r Introdução à Engenharia de Software O papel evolutivo do software 1950 1960 1970 2000 1980 1990 Os primeiros anos: - Orientação batch - Distribuição limitada - Software customizado A segunda era: - Multiusuário - Tempo real - Banco de dados - Manutenção de sw A terceira era: - Sistemas distribuídos - “Inteligência” embutida - Hardware de baixo custo - Impacto de consumo w w w .i n a te l. b r Introdução à Engenharia de Software O papel evolutivo do software 1950 1960 1970 2000 1980 1990 A terceira era: - Sistemas distribuídos - “Inteligência” embutida - Hardware de baixo custo - Impacto de consumo A quarta era: - Sistemas poderosos para microcomputador - Tecnologias orientadas a objetos - Redes neurais artificiais Os primeiros anos: - Orientação batch - Distribuição limitada - Software customizado A segunda era: - Multiusuário - Tempo real - Banco de dados - Manutenção de sw w w w .i n a te l. b r Introdução à Engenharia de Software O papel evolutivo do software 1950 1960 1970 2000 1980 1990 Os primeiros anos: - Orientação batch - Distribuição limitada - Software customizado Sem administração Alto custo de manutenção A segunda era: - Multiusuário - On-line - Tempo real - Banco de dados - Manutenção de sw A terceira era: - Sistemas distribuídos - “Inteligência” embutida - Hardware de baixo custo - Impacto de consumo A quarta era: - Sistemas poderosos para microcomputador - Tecnologias orientadas a objetos - Redes neurais artificiais w w w .i n a te l. b r Introdução à Engenharia de Software Os problemas continuaram... • Por que demora tanto tempo para que os sistemas sejam concluídos? • Por que os custos são tão elevados ? • Por que não entregamos sistemas sem erros aos nossos clientes ? • Por que temos dificuldade em medir o progresso enquanto o software está sendo construído ? Práticas de Engenharia de Software w w w .i n a te l. b r Introdução à Engenharia de Software Enfim, o que é? Software é: “1 - Instruções (programas de computador) que quando executadas, produzem a função e o desempenho desejados.” “2 - Estruturas de dados que possibilitam que os programas manipulem adequadamente a informação.” “3 - Documentos que descrevem a operação e o uso dos programas.” w w w .i n a te l. b r Introdução à Engenharia de Software Características do software • O software é desenvolvido ou projetado por engenharia e não manufaturado no sentido clássico. • Os custos de software estão concentrados no trabalho de engenharia. • Software não se desgasta, se deteriora. • A maioria é feita sob medida em vez de ser montada a partir de componentes existentes. w w w .i n a te l. b r Introdução à Engenharia de Software T a x a d e f a lh a s Tempo Mortalidade Infantil desgaste Características do software Curva de Falhas do Hardware F o n te : E n g e n h a ri a d e S o ft w a re – R o g e r S . P re s s m a n – 6 a E d iç ã o Mortalidade Infantil Desgaste w w w .i n a te l. b r Introdução à Engenharia de Software Tempo Continua na mesma taxa até a obsolescência Características do software Curva de Falhas do Software (Idealizada) F o n te : E n g e n h a ri a d e S o ft w a re – R o g e r S . P re s s m a n – 6 a E d iç ã o T a x a d e f a lh a s w w w .i n a te l. b r Introdução à Engenharia de Software Tempo Continua na mesma taxa até a obsolescência Mudança Características do software F o n te : E n g e n h a ri a d e S o ft w a re – R o g e r S . P re s s m a n – 6 a E d iç ã o Curva de Falhas do Software (Real) T a x a d e f a lh a s w w w .i n a te l. b r Introdução à Engenharia de Software Software - Categorias • Software de Sistemas (Básico): Apoio a outros programas (compiladores, componentes do sistema operacional, drivers, etc.). • Software de Aplicação: Programas isolados que resolvem uma necessidade específica do negócio (processamento de transações no ponto de venda, controle de processo de fabricação, etc.). • Software Científico e de Engenharia: Algoritmos de processamento de números. • Software Embarcado: Dentro de um produto ou sistema e é usado para controlar características e funções. Agrega valor ao hardware. (automóveis, eletrodomésticos, equipamentos eletrônicos, etc.) w w w .i n a te l. b r Introdução à Engenharia de Software Software - Categorias • Software para Linhas de Produtos: Projetado para fornecer uma capacidade específica a ser usada por muitos clientes diferentes. (controle de estoque, folha de pagamento, editor de texto, planilhas, etc.). • Aplicações Web: Acesso via Web. Fornecem não apenas características isoladas, funções de computação e conteúdo aos usuários, mas também estão integradas ao banco de dados da empresa e às aplicações do negócio (sistema de gestão corporativa). • Software para Inteligência Artificial: Faz uso de algoritmos não numéricos para resolver problemas complexos (robótica, reconhecimento de imagens e de voz, etc.). w w w .i n a te l. b rIntrodução à Engenharia de Software Problemas do desenvolvimento de software • Estimativas de prazo e de custo imprecisas. • Produtividade das pessoas envolvidas. • Qualidade de software inadequada. • Custos excessivos. • Os prazos se arrastam por meses ou anos. • Pouca coisa tem sido feita para melhorar a produtividade dos profissionais da área de software. • Os índices de erros nos novos programas causam insatisfação ao cliente e a falta de confiança. w w w .i n a te l. b r Introdução à Engenharia de Software Sintomas ... • Entendimento impreciso das necessidades dos usuários finais • Dificuldades em tratar as mudanças de requisitos • Módulos que não se integram com eficiência. • Software de difícil manutenção e extensão. • Descoberta tardia de sérias falhas de projeto. • Inaceitável desempenho de software. • Falta de gerência dos requisitos; • Comunicação ambígua e imprecisa; • Arquitetura frágil; • Testes insuficientes; • Falha ao atacar os riscos; • Inconsistências não detectadas nos requisitos, modelagens e implementações. ... e causas de problemas w w w .i n a te l. b r Introdução à Engenharia de Software Mito X Realidade Meu pessoal tem ferramentas de desenvolvimento de software de última geração; afinal nós compramos os mais novos computadores! • Isto não garante a qualidade no desenvolvimento. • As ferramentas de engenharia de software são importantes para aumentar a produtividade e qualidade, porém elas são corretamente utilizadas? • Os profissionais as utilizam e conhecem todos os seus recursos? w w w .i n a te l. b r Introdução à Engenharia de Software Mito X Realidade Já temos um manual repleto de padrões e procedimentos para a construção do software. Isso não é suficiente? • O manual pode existir, mas ele é utilizado? • Os profissionais de software têm conhecimento de sua existência? • Ele é completo? • Ele está atualizado? w w w .i n a te l. b r Introdução à Engenharia de Software Mito X Realidade Se nós estamos atrasados nos prazos, podemos adicionar mais programadores e tirar o atraso! • Nem todas as tarefas podem ser divididas. • Pessoas precisam ser treinadas. • A quantidade de comunicação necessária aumenta. 1,0 2,1 3,3 4,6 5,10 Canais de Comunicação = n.(n-1)/2 w w w .i n a te l. b r Introdução à Engenharia de Software Mito X Realidade Uma declaração geral dos objetivos é suficiente para se começar a escrever programas; podemos preencher os detalhes mais tarde. • Uma definição inicial ruim com a falta de identificação adequada dos objetivos é a principal causa do fracasso dos projetos. • Uma descrição formal e detalhada do domínio da informação, função, desempenho, interfaces, restrições do projeto e critérios de validação é FUNDAMENTAL! • Necessita de cuidadosa comunicação entre cliente e desenvolvedor. w w w .i n a te l. b r Introdução à Engenharia de Software Mito X Realidade Os requisitos do projeto modificam-se continuamente, mas as mudanças podem ser facilmente acomodadas, porque o software é flexível. • Os requisitos do projeto modificam-se, mas o IMPACTO da mudança VARIA de acordo com o TEMPO em ela é introduzida. Definição Desenv. Manutenção C u s to d a M u d a n ç a w w w .i n a te l. b r Introdução à Engenharia de Software Mito X Realidade Assim que escrevermos o programa e o colocarmos em funcionamento nosso trabalho estará completo. • “Quanto mais cedo se começa a “escrever o código”, mais tempo demora para que se consiga terminá-lo.” • Dados da indústria indicam que entre 50 e 70% de todo o esforço gasto num programa serão despendidos depois que ele for entregue pela primeira vez ao cliente. w w w .i n a te l. b r Introdução à Engenharia de Software Mito X Realidade A única coisa a ser entregue em um projeto bem sucedido é o programa funcionando. • O programa funcionando é uma boa parte, mas não é tudo! • A documentação é a base de um projeto bem sucedido e um guia para a manutenção do software. w w w .i n a te l. b r Introdução à Engenharia de Software O papel do Engenheiro de Software Ajudar a solucionar problemas Entender a natureza do problema w w w .i n a te l. b r Introdução à Engenharia de Software Engenharia de Software: uma definição 1. A aplicação de uma sistemática, disciplinada e com abordagem quantitativa, para o desenvolvimento, operação e manutenção de software. Trata-se da aplicação da engenharia de software. 2. O estudo de abordagens para a (1). IEEE[IEE93] w w w .i n a te l. b r Introdução à Engenharia de Software Engenharia de Software: uma tecnologia em camadas Compromisso maior: entregar o resultado com qualidade. Qualidade w w w .i n a te l. b r Introdução à Engenharia de Software Engenharia de Software: uma tecnologia em camadas Qualidade Processo - Une a tecnologia com o desenvolvimento racional e oportuno. - Base para controle gerencial dos projetos. - Produtos de trabalho produzidos. - Marcos. - Garantia da qualidade. - Controle das modificações. w w w .i n a te l. b r Introdução à Engenharia de Software Engenharia de Software: uma tecnologia em camadas Qualidade Processo Métodos Como fazer para construir um software: - Análise - Modelagem - Construção - Testes - Manutenção w w w .i n a te l. b r Introdução à Engenharia de Software Engenharia de Software: uma tecnologia em camadas Qualidade Processo Métodos Ferramentas Apoio ao processo e aos métodos. w w w .i n a te l. b r Introdução à Engenharia de Software Engenharia de Software: uma tecnologia em camadas Qualidade Processo Métodos Ferramentas Engenharia de Software w w w .i n a te l. b r Introdução à Engenharia de Software Uma visão geral da Engenharia de Software Definição : o que fazer? • Qual informação será processada? • Quais funcionalidades (requisitos) e desempenho são esperados? • Qual o comportamento que se espera do sistema? • Quais interfaces serão estabelecidas? • Existe alguma restrição no projeto? • Quais serão os critérios de validação do sistema que definirão o seu sucesso? w w w .i n a te l. b r Introdução à Engenharia de Software Uma visão geral da Engenharia de Software Definição : o que fazer? Desenvolvi- mento : como fazer? • Como os dados serão estruturados? • Como as funções serão implementadas dentro da arquitetura do software? • Como serão as interfaces? • Qual linguagem de programação será adotada? • Como serão os testes do sistema? w w w .i n a te l. b r Introdução à Engenharia de Software Uma visão geral da Engenharia de Software Definição : o que fazer? Manutenção: as mudanças • Corrigir: devido a erros encontrados no sistema. • Adaptar: devido a mudanças no ambiente. • Melhorar: devido a identificação de outras funcionalidades desejadas. Reaplicar os passos anteriores, porém considerando o novo contexto: EXISTE um software ou parte dele já desenvolvido. Desenvolvi- mento : como fazer? w w w.i n a te l. b r Introdução à Engenharia de Software Cap. 2 – Introdução à Engenharia de Software Prof. Afonso Celso Soares EC205 – Engenharia de Software I Adaptado do material dos professores Guilherme A. B. Marcondes e Valeska P. P. Marcondes Baseado no livro: Engenharia de Software – Roger S. Pressman – Sexta Edição
Compartilhar