• Nenhum resultado encontrado

aula 1

N/A
N/A
Protected

Academic year: 2021

Share "aula 1"

Copied!
31
0
0

Texto

(1)

Introdução

Engenharia de Software

(2)

Engenharia de Software

Introdução

Engenharia de Software é a criação e a utilização de sólidos princípios de engenharia a fim de obter software de maneira econômica, que seja confiável e que trabalhe em máquinas reais.

(3)

Engenharia de Software

O termo Engenharia de Software surgiu ao final da década de 60, em meio a uma crise no desenvolvimento de software.

Nesta época, o interesse por métodos padronizados a serem usados no local de trabalho com o intuito de criar aplicações de qualidade, já haviam se tornado um interesse importante para muitas organizações.

(4)

Engenharia de Software

Então, ainda nos anos 60, ocorreram duas importantes conferências - onde originou-se o termo Engenharia de Software - realizadas em reconhecimento à esta crise que estava ocorrendo.

Foi uma reação a fracassos de projeto; perdas econômicas;

atrasos na entrega; mercados competitivos; e uma

exigência crescente para funcionalidade, qualidade, e confiabilidade com menor custo possível (DEEK et al, 2005).

(5)

Engenharia de Software

Mas por que usaram o termo Engenharia de

Software?

O termo Engenharia foi usado

justamente para associar o "conceito" Engenharia

ao desenvolvimento de software, em outras palavras é ter uma abordagem sistemática,

disciplinada e quantificada ao

desenvolvimento, operação e manutenção de software

(6)

O que é Engenharia?

Segundo ASEE (2000), a engenharia é aplicação de princípios matemáticos e científicos, experiência, julgamento e bom senso para trazer coisas que beneficiam as pessoas.

A Engenharia de Software segue este mesmo raciocínio, tendo como objetivo definir e exercitar processos, métodos, ferramentas e ambientes para construção de software que satisfaça necessidades de cliente e usuário dentro de prazos e custos previsíveis.

(7)

Engenharia de Software

A Engenharia de Software propõe estratégias de desenvolvimento, chamadas modelos de ciclo de vida de desenvolvimento de software ou modelos de processo.

Estes modelos de ciclo de vida, como o nome diz, ajudam o desenvolvimento do início ao fim do projeto.

(8)

Engenharia de Software - Objetivos

• A engenharia de software tem por objetivos a aplicação de teoria, modelos, formalismos e técnicas e ferramentas da ciência da

computação e áreas afins para o desenvolvimento sistemático de software.

• Associado ao desenvolvimento, é preciso também aplicar

métodos, técnicas e ferramentas para o gerenciamento do processo de desenvolvimento.

• Finalmente, a engenharia de software visa a produção da

documentação formal do software, do processo de desenvolvimento

e do gerenciamento destinada a comunicação entre os membros da equipe de desenvolvimento bem como aos usuários finais.

(9)

Software

O mundo precisa de software. - Steve Jobs

Programas de computador e

documentação associada, tais como requisitos, modelos de projetos e

manuais de usuário. - Ian Sommerville

Programas de computador que, quando executados, produzem a função e o desempenho desejados.

(10)

Panorama sobre Software

O que é? Software de computador é o produto que os profissionais de software constroem, e depois, mantêm ao longo do tempo. Abrange

programas que executam em computadores de qualquer tamanho e

arquitetura, conteúdo que é apresentado ao programa a ser executado e documentos tanto em forma impressa quanto virtual, que combinam

todas as formas de mídia eletrônica;

Quem faz? Engenheiros de software constroem e mantêm, e

praticamente, todas as pessoas do mundo industrializado usam direta ou indiretamente;

Por que é importante? Porque afeta praticamente todos os aspectos de nossas vidas e tornou-se difundido no nosso comércio, na nossa cultura e nas nossas atividades do dia-a-dia;

(11)

Panorama sobre Software

Quais são os passos? Você constrói software de computadores

como constrói qualquer produto bem-sucedido, aplicando um processo ágil e adaptável que leva a um resultado de alta

qualidade e que satisfaz às necessidades das pessoas que vão usar o produto. Você aplica uma abordagem de engenharia de software;

Qual é o produto do trabalho? Do ponto de vista do engenheiro

de software, o produto do trabalho são os programas, o conteúdo (os dados) e documentos que compõe um software de

computador. Mas, do ponto de vista do usuário, o produto do trabalho é a informação resultante que, de algum modo, torna melhor o mundo do usuário.

(12)

Produto de Software

O produto de software é o produto que os engenheiros de software projetam e constroem.

Ele engloba os programas que são executados dentro de um computador de qualquer tamanho e arquitetura, os documentos, que englobam formulários virtuais e material impresso produzido por computador, e dados, que combinam números e texto, mas também incluem representações de informações em áudio, vídeo e pictóricas.

(13)

Produto de Software

O produto de software é composto de (Pressman, 2002):

1. as instruções (os programas de computador) que quando executados fornecem a função e desempenho desejados; 2. as estruturas de dados que permitem aos programas

manipular as informações de forma adequada;

3. os documentos que descrevem a operação e uso dos programas.

(14)

Produto de Software

O produto de software é o componente lógico de um sistema informatizado, e não físico. São produzidos pelo processo e pelas suas atividades e servem de matéria-prima para os mesmos. Por exemplo: documento de requisitos, programa executável.

O produto de software distribui o que muitos acreditam ser o mais importante produto de século XXI - a informação (Pressman, 2002).

(15)

Evolução do Software

(16)

Evolução do Software

Os primeiros anos (1950 - 1965) • Distribuição limitada; • Software personalizado; • Sem documentação; • Sistemas Batch;

• Na época muito se sabia sobre a implementação de

sistemas baseados em computador, mas sabia-se pouco sobre engenharia de sistemas de computador.

(17)

Evolução do Software

Segunda Era (1960 - 1976)

• Multi usuários;

• Sistemas Interativos;

• Software Houses (o software era desenvolvido para ampla

distribuição no mercado);

• Manutenção;

• Banco de dados; • Tempo real;

(18)

Evolução do Software

Terceira Era (1975- 1985)

• Comunicações digitais de largura de banda; • Redes globais e locais;

• Inteligência embutida; • Sistemas distribuídos;

• Hardware de baixo custo; • Impacto de consumo;

• Crescente demanda de acesso instantâneo;

• Deslocamento de custo do hardware para software; • Ferramentas CASE;

(19)

Evolução do Software

Quarta Era (1985 - 2000)

• Redes Neurais Artificiais; • Computação Paralela;

• Sistemas de desktop poderosos; • Tecnologia Orientada a Objeto; • Sistemas Especialistas;

• Sistemas Hipermídia;

(20)

Evolução do Software

Quinta Era (2000 - …) • Robotização pesada; • Realidade virtual; • Computação móvel; • "Explosão" da internet;

• Arquiteturas de computação radicalmente diferentes, e seu software correlato exercem um profundo impacto sobre o equilíbrio do poder político e industrial em todo mundo;

• Sociedade da Informação. • Software livre;

(21)

Categorias de Software

Software Básico (Software de Sistema)

• Esse software pode ser caracterizado como vários programas reunidos

para dar assistência a outros programas, tanto nos que processam as informações complexas e determinadas, como os que processam

informações amplamente indeterminadas;

• A área do software básico é caracterizada por forte interação com o

hardware de computador, intenso uso por múltiplos usuários,

compartilhamento de recursos e sofisticada administração do processo, estruturas de dados complexas e múltiplas interfaces externas;

• Alguns exemplos: Sistemas operacionais, compiladores, gerenciadores

(22)

Categorias de Software

Software Comercial

• É a maior área de aplicação de software;

• Consiste de programas isolados que resolvem uma necessidade

específica do negócio;

• Nesse sistema, a aplicação do software irá atuar no processo de

informações comerciais. Atua nas áreas tanto administrativas

quanto de produção de uma empresa, dando acesso a um ou mais bancos de dados contendo informações comerciais;

• Alguns exemplos: folha de pagamento, controle de estoque,

(23)

Categorias de Software

Software Científico e de Engenharia

• Tem sido caracterizado por algoritmos de processamento de números. Atua em

diversos campos de pesquisa dentro da área científica e de engenharia. As novas aplicações estão se afastando dos algoritmos numéricos convencionais. Auxiliado por um computador, ele simula vários sistemas e outros tipos de aplicações.

Software Embutido

• Reside na memória só de leitura de alguns equipamentos e é usado para controlar

produtos e sistemas para os mercados industriais e de consumo. Pode executar

funções muito limitadas e particulares ou oferecer recursos funcionais de controle significativos;

• Alguns exemplos: Teclado para forno de microondas, computador de bordo de um

(24)

Categorias de Software

Software para linhas de produto

• Desenvolvido para fornecer uma capacidade específica a ser utilizada pelos mais variados clientes.

Exemplos: editores de texto, planilha eletrônica, calculadora.

Aplicações da Web

• As aplicações de comércio eletrônico e B2B estão crescendo em importância, o que destaca a

relevância das aplicações Web, que estão evoluindo para ambientes computacionais cada vez mais sofisticados e interativos.

Software de Inteligência Artificial

• Faz uso de algoritmos não-numéricos para resolver problemas complexos que não sejam favoráveis à

computação ou à análise direta. A área mais ativa é a dos sistemas especialistas. Outras áreas de aplicação para software de AI são: o reconhecimento de padrão, jogos, demonstração de teoremas.

Um simulador de estrutura dos processos cerebrais, chamado redes neurais artificiais também está se destacando.

(25)

Software Legado

Um software legado é um software mais velho, porém que permanece vital para o bom andamento das atividades de uma empresa.

Dado o seu grau de importância, tal sistema, mesmo sendo antigo, continua sendo amplamente utilizado, recebendo manutenções, porém sem ser trocado / migrado. E as novas aquisições de software da empresa precisam ser integradas a este software legado.

Conforme destacou Roger Pressman (2006) um “software legado é caracterizado por longevidade e criticalidade para o negócio”. O mesmo autor ainda destaca o que talvez seja o maior problema deste tipo de software: a má qualidade. “Sistemas legados, algumas vezes, têm projetos não extensíveis,

código complicado, documentação pobre ou inexistente, casos de teste e resultados que nunca foram arquivados, um histórico de modificações mal gerado...”

Porém não pode deixar de ser comentado que, se o software continuar em uso e atendendo as necessidades do cliente então ele não está danificado e não precisa ser consertado.

(26)

Custos do Software

Ian Sommerville (2007) destacou o seguinte sobre os custos do software:

• Os custos de software dominam os custos de sistemas computacionais. Em um PC, os custos de

software são frequentemente maiores que o custo do hardware;

• Manter um software custa mais que desenvolvê-lo. Para sistemas com uma longa vida, os custos

de manutenção podem ser muito maiores que os custos de desenvolvimento;

• A engenharia de software dedica-se ao desenvolvimento de software com custos adequados.

O mesmo autor prossegue, identificando os custos do software, apresentando que:

• Aproximadamente 60% dos custos são custos de desenvolvimento e 40% são custos de testes. Para

software sob encomenda, os custos de evolução normalmente excedem os de desenvolvimento;

• Os custos variam, dependendo do tipo de sistema que está sendo desenvolvido e dos requisitos de

atributos de sistema, tais como desempenho e confiabilidade;

(27)

Mitos sobre Software

Segundo PRESSMAN, esses são alguns dos mitos do desenvolvimento de software.

• O estabelecimento de objetivos gerais é suficiente para se começar a escrever

programas.

• Dê a uma pessoa técnica um bom livro de programação e você terá um

programador.

• Mudanças no software podem ser feitas facilmente porque ele é "flexível".

• Até que o programa esteja "rodando" não é possível verificarmos a sua qualidade. • Uma vez que o programa esteja escrito e funcionando, nosso trabalho está feito. • Um projeto é bem sucedido se conseguirmos um programa funcionando

(28)

Categorias de Software

Categoria Equipe Duração Linhas de Código

Trivial 1 1 - 4/semanas 500

Pequeno 1 1 - 6/meses 1000 a 2000

Médio 2 - 5 1 - 2 anos 5000 a 50 mil

Grande 5 - 20 2 - 3 anos 50 mil a 100 mil

Muito Grande 100 - 200 4 - 5 anos 1 milhão

Extremamente

(29)

Processo de Software

Conjunto de atividades e

resultados associados que geram um produto de software.

- Sommerville, 2007

Um arcabouço para as tarefas que são necessárias para construir

software de alta qualidade. - Pressman, 2006

(30)

Processo de Software

A existência de um processo de software não garante que o software será entregue no prazo, de que ele irá satisfazer as necessidades do cliente, ou exibirá os atributos arquiteturais que manterão as características de qualidade em longo prazo.

Um processo deve ser acoplado a uma sólida prática de engenharia de software e deve ser avaliado para garantir que satisfaça a um conjunto de critérios básicos de processo que demonstram ser essenciais para uma engenharia de software bem sucedida (PRESSMAN, 2006).

(31)

Processo de Software

Existem vários processos de desenvolvimento de software, porém algumas atividades fundamentais são comuns a todos eles (SOMMERVILE, 2007):

Especificação: define a funcionalidade do software e as restrições sobre sua

operação.

Projeto e implementação: o software que atenda a especificação deve ser

produzido.

Validação de software: o software deve ser validado para garantir que ela

faça o que o cliente deseja.

Evolução: o software deve evoluir para atender aos novos requisitos que

Referências

Documentos relacionados

Little reuse and agility, high costs.. Even

• “…Se puder verificar equipes incompletas no início da próxima aula seria uma mão

To control scope, we need to manage a list of tasks... To control time, we need to manage

• Scenarios should verify that desired traces can be observed by testing the application.. Create interface when little functionality

Rule of Least Surprise: In interface design, always do the least surprising thing.. Rule of Silence: When a program has nothing surprising to say, it should

A Indústria B em 2010 para cada R$ 1,00 investidos em ativos, R$ 0,68 são financiados por capital de terceiros, contudo ao comparar com 2011 e 2012 percebemos que a empresa

 Em caso de empate nos jogos finais, a partida será decidida por meio de cobrança alternada de tiros de 7 metros, com uma cobrança para cada equipe até que haja um

Na Nova Zelândia em sistemas pastoris as vacas produzem em média 17 litros de leite ao dia, enquanto nos produtores analisados neste estudo a média de