• Nenhum resultado encontrado

II8 - Engenharia de Software

N/A
N/A
Protected

Academic year: 2021

Share "II8 - Engenharia de Software"

Copied!
53
0
0

Texto

(1)
(2)

O que é um Software?

Programas de computador

Entidade abstrata.

Ferramentas (mecanismos) pelas quais:

 exploramos os recursos do hardware.  executamos determinadas tarefas

 resolvemos problemas.

 interagimos com a máquina.

(3)

Características do Software

O software é composto de:

 Instruções que executam uma ação/função desejada

nos dados.

 Estrutura de dados para manipular informação.

O software não se desgasta com o uso; mas torna-se

(4)

Características do Software

Dificuldades para desenvolver o software:

 Saber o que o software deve fazer: quais os requisitos

 Saber quais ferramentas e qual a linguagem ideal para o

desenvolvimento do software

 Calcular o tempo de desenvolvimento e

conseqüentemente os custos.

 Prever falhas (antes de entregar).  Tratar manutenção e versões.

(5)

Crise de Software

Problemas:

 Software inadequado.

 Cronogramas e custos imprecisos – dificuldades em

prever o progresso durante o desenvolvimento.

 Inexistência de dados históricos sobre o processo de

desenvolvimento.

 Comunicação deficiente - insatisfação de usuários.  Carência de conceitos quantitativos sobre

confiabilidade, qualidade, reusabilidade.

(6)
(7)

Crise de Software

Solução:

 Combinar métodos para as fases de desenvolvimento.  Ferramentas para automatizar esses métodos.

 Técnicas para assegurar qualidade.  Daí surge a Engenharia de Software.

(8)

Engenharia de Software

Abordagem sistemática para o desenvolvimento,

implantação/operação e descarte do software.

Aplicação prática de conhecimento científico ao

projeto e construção de software.

Disciplina que utiliza princípios de engenharia

para produzir e manter softwares dentro de prazos

e custos estimados.

(9)

Engenharia de Software

Objetivos:

 Melhorar a qualidade do software e aumentar a

produtividade e satisfação profissional de engenheiros de software.

Definição:

 Disciplina que utiliza um conjunto de métodos, técnicas

e ferramentas para analisar, projetar e gerenciar desenvolvimento e manutenção de software.

(10)

Engenharia de Software

Princípios da Engenharia de Software:

 Formalidade: produtos mais confiáveis, controlar seu

custo e mais confiança no seu desempenho.

 Abstração: identificar os aspectos importantes,

ignorando os detalhes.

 Decomposição: subdividir o processo em atividades

específicas, atribuídas a diferentes especialistas.

 Generalização: sendo mais geral, é bem possível que a

solução possa ser reutilizada.

(11)

Engenharia de Software

 Métodos e Técnicas: o que fazer  Metodologias: como aplicar

 Ferramentas: Automatizam os

métodos, dão apoio à utilização dos mesmos.

 CASE  (Computer-Aided Software

Engineering): Ferramentas integradas para desenvolver software.

(12)
(13)

Engenharia de Software

O que são ferramentas CASE?

 São programas de computador que têm o objetivo

fornecer um suporte automatizado para as atividades de processo de software.

Operam em dois níveis:

 Alto nível: ferramentas que suportam as atividades

iniciais de requisitos e projetos.

 Baixo nível: ferramentas que suportam as atividades de

(14)

Engenharia de Software

O que são os métodos/técnicas da Engenharia de

Software?

 São abordagens estruturadas para o desenvolvimento de

software que incluem as regras e maneiras de desenvolvimento.

O que são metodologias de Engenharia de Software?

 São modelos de processos que indicam como os métodos

devem ser aplicados para o desenvolvimento do software

 Modelo de processos é uma representação simplificada de um

processo de software, apresentada sobre uma perspectiva específica.

(15)

Engenharia de Software

Objetivos dos modelos:

 Auxiliar no processo de produção  produtos de alta

qualidade, produzidos mais rapidamente e a um custo cada vez menor.

 Gerenciar: complexidade, visibilidade, aceitabilidade,

confiabilidade, manutenibilidade, segurança etc.

Possibilitam:

 Ao gerente: controlar o processo de desenvolvimento de

sistemas de software.

 Ao desenvolvedor: obter a base para produzir, de maneira

eficiente, software que satisfaça os requisitos pré-estabelecidos.

(16)

Engenharia de Software

Modelos de Processo:

 Especificam as atividades e a ordem em que, de acordo com

o modelo, devem ser executadas.

 Produtos de software podem ser construídos utilizando-se

de diferentes modelos de processo.

 Alguns modelos são mais adequados que outros para

determinados tipos de aplicação.

 A opção por um determinado modelo deve ser feita

(17)

Engenharia de Software

O que é um processo de software?

 Um conjunto de atividades que objetivam o

desenvolvimento e a evolução de software.

 Conjunto de atividades para especificar, projetar,

(18)

Engenharia de Software

As principais atividades de um processo de

desenvolvimento de software são:

 Especificação: define o que o sistema deverá fazer,

considerando as suas restrições.

 Desenvolvimento: projetar e implementação do

software.

 Validação: checagem se o software faz o que o usuário

deseja.

 Evolução: mudanças no software para atender às novas

(19)

Engenharia de Software

Os principais modelos são:

 Modelo Clássico.  Modelo Evolutivo.

(20)

Modelo Clássico

Método sistemático e seqüencial.

 O resultado de uma fase constitui na entrada de outra.

Também é conhecido como Modelo Cascata.

Cada fase é estruturada como um conjunto de

atividades que podem ser executadas por pessoas

diferentes, simultaneamente.

(21)

Ciclo de vida clássico

Fases:

 Análise e definição de requisitos.  Projeto de software.  Implementação e teste unitário.  Integração e teste de sistema.  Operação e manutenção. Requisitos Projeto Implementação Verificação Manutenção

(22)

Ciclo de vida clássico

Problemas/Características:

 Utiliza modelo sistemático e seqüencial, em que a

entrada de uma fase é o resultado da anterior.

 Na prática os projetos não seguem esse fluxo.

 Gerenciar as incertezas no início do projeto é difícil.  Versão funcional dos programas disponível após os

últimos estágios do projeto

 Dificuldade em atender às mudanças exigidas

posteriormente pelo cliente.

 Modelo mais adequado quando os requisitos estão

(23)

Modelo Evolutivo

O software deve ser desenvolvido de forma a

evoluir a partir de protótipos iniciais

 O objetivo é desenvolver o sistema com o contínuo

acompanhamento dos clientes.

 Os requisitos precisam ser bem entendidos.

Os Protótipos podem ser:

 Exploratórios (Descartáveis): usado para esclarecer os

requisitos

 Evolutiva: o protótipo é evoluído até chegar ao produto

(24)

Modelo Evolutivo

(25)
(26)

Modelo Evolutivo

Características:

 Localiza “aspectos visíveis” para o usuário (E/S).

 A iteração pode adequar o protótipo às necessidades do

usuário.

 O protótipo pode ser descartado ou fazer parte do

produto final.

 Normalmente o modelo é aplicado quando:

 Sistemas de pequeno e médio porte.  Como parte de um sistema grande.  Sistema de curta duração.

(27)

Modelo Evolutivo

Problemas:

 Ausência de visibilidade do processo.

 Cliente insiste que o protótipo seja, com ligeiras

modificações, a versão final do produto  Soluções improvisados tornam-se parte do produto final.

(28)

Modelo Iterativo e Incremental

Os passos fundamentais do processo estão em

iniciar o desenvolvimento com um subconjunto

simples de Requisitos de Software e iterativamente

alcançar evoluções subseqüentes das versões até o

sistema todo estar implementado.

A cada iteração, as modificações de projeto são

feitas e novas funcionalidades são adicionadas.

(29)
(30)

Modelo Iterativo e Incremental

Abordagem intermediária: Combina vantagens dos

paradigmas ciclo de vida clássico e evolutivo.

Identificação das funções do sistema, estabelecimento

de incrementos e prioridades

 Cada incremento pode utilizar um paradigma de

desenvolvimento diferente

 Dificuldade para dividir e gerenciar versões

Os dois processos mais conhecidos de sistemas

iterativos e incremental de desenvolvimento são o RUP

(Processo Unificado da Rational) e o Desenvolvimento

ágil de software

(31)

Modelo Iterativo e Incremental

(32)
(33)

Problemas

Estimativa:

 Não dedicamos tempo para coletar dados sobre o

software e seu processo de desenvolvimento.

 Com poucos dados históricos como guia, as estimativas

têm sido “a olho”, com resultados previsivelmente ruins.

Produtividade:

 Sem nenhum indicador sólido de produtividade, não

poderemos avaliar com precisão a eficácia de novas ferramentas, métodos, padrões ou processos.

(34)

Problemas

Qualidade:

 O processo é feito não pelos benefícios que traz, mas

para mostrar atender as exigências do cliente  gerando artefatos sem valor.

 A comunicação entre o cliente e o desenvolvedor de

software freqüentemente é muito fraca.

 Só recentemente começamos a entender a importância

dos testes de software sistemáticos e tecnicamente completos.

 A insatisfação do cliente com o sistema “concluído”

(35)

Problemas

Manutenção:

 O software existente pode ser muito difícil de manter.

 Projeto mal feito  Sistema legado

 A tarefa de manutenção de software devora a maioria do

dinheiro destinado a software.

 A capacidade de manutenção de software não foi

enfatizada como um critério importante para a aceitação do software.

(36)
(37)

Mitos do Software

Mitos Administrativos. Advém de gerentes sobre

pressão de orçamento e tempo.

Mitos do Cliente. Advém de falsas expectativas e

insatisfação com o desenvolvedor

Mitos do Profissional de Desenvolvimento. Advém

de se considerar o software como uma forma de

arte. Será que o software é uma arte ou uma

engenharia?

(38)
(39)

Mito do Manual de Práticas

Mito:

 Já temos um manual repleto de padrões e procedimentos

para a construção de software. Isso não oferecerá ao meu pessoal tudo o que eles precisam saber?

Realidade:

 O manual de padrões pode muito bem existir, mas será

que ele é usado? Os profissionais de software têm

conhecimento de sua existência? Ele reflete a moderna prática de desenvolvimento de software? É completo? Em muitos casos, a resposta a todas estas perguntas é “não”.

(40)

Mito do Computador Moderno

Mito:

 Meu pessoal tem ferramentas de desenvolvimento de software

de última geração; afinal de contas lhes compramos os mais novos computadores.

Realidade:

 É preciso muito mais do que o último modelo de computador

para se fazer um desenvolvimento de software de alta qualidade.

 As ferramentas de engenharia de software auxiliadas por

computador (CASE) são mais importantes do que o hardware para se conseguir boa qualidade e produtividade; contudo, a

(41)

Mito das Hordas de Mongóis

Mito:

 Se nós estamos atrasados nos prazos, podemos adicionar

mais programadores e tirar o atraso.

Realidade:

 O desenvolvimento de software não é um processo

mecânico igual à manufatura. Acrescentar pessoas em um projeto de software atrasado torna-o ainda mais atrasado.

 Gasta-se tempo formando os recém-chegados, o que

reduz o tempo de desenvolvimento produtivo. Pessoas podem ser acrescentadas, mas somente de uma forma planejada e bem coordenada.

(42)
(43)

Mitos da Especificação

Mito:

 Uma declaração geral dos objetivos é suficiente para se

começar a escrever programas – podemos preencher os detalhes mais tarde.

Realidade:

 Uma definição inicial ruim é a principal causa de fracasso dos

esforços de desenvolvimento de software.

 Uma descrição formal e detalhada do domínio da informação,

função, desempenho, interfaces, restrições de projeto e critérios de validação é fundamental. Essas características podem ser determinadas somente depois de cuidadosa comunicação entre o cliente e o desenvolvedor.

(44)

O Pior Mito do Cliente

Mito:

 Os requisitos de projeto modificam-se continuamente,

mas as mudanças podem ser facilmente acomodadas, porque o software é flexível (Cuidado como o “Já que...”) .

Realidade:

 É verdade que os requisitos de software se modificam,

mas o impacto da mudança varia de acordo com o tempo em que ela é introduzida.

(45)
(46)
(47)
(48)

Mitos do “Entreguei! Finalmente

Acabou.”

Mito:

 Assim que escrevemos o programa e o colocarmos em

funcionamento, nosso trabalho estará completo.

Realidade:

 Alguém disse certa vez que “quanto mais cedo se começa

a ‘escrever o código’, mais tempo demora para que se

consiga terminá-lo”. Os 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.

(49)

Mito da Qualidade

Mito:

 Enquanto não tiver o programa “funcionando”, eu não

terei realmente nenhuma maneira de avaliar sua qualidade.

Realidade:

 Um dos mecanismos mais efetivos de garantia de

qualidade de software pode ser aplicado desde o começo de um projeto – a revisão técnica formal. As revisões de software são um “filtro da qualidade” que têm sido

consideradas mais eficientes do que a realização de testes para a descoberta de defeitos.

(50)

Mito do Executável

Mito:

 A única coisa a ser entregue em um projeto

bem-sucedido é o programa funcionando.

Realidade:

 Um programa funcionando é somente uma parte de uma

configuração de software que inclui vários outros

elementos. A documentação forma os alicerces para um desenvolvimento bem-sucedido e fornece um guia para a tarefa de manutenção do software.

(51)

Perguntas

Qual é a importância da Engenharia de Software

no desenvolvimento de sistemas?

Faça um estudo comparativo entre o modelo de

desenvolvimento de software tradicional , o

evolutivo e o iterativo e incremental.

Comente os princípios da Engenharia de Software.

Qual é a importância do software no cotidiano das

(52)

Trabalho

 Faça uma pesquisa sobre como as empresas de software

fazem para realizar as seguintes atividades:

 Requisitos  Análise de projeto  Desenvolvimento  Testes  Gerenciamento de mudanças  Acompanhamento do projeto

 Resumo de no máximo 2 páginas  Apresentação de 15 a 20 minutos  Equipes de 4 a 5 alunos.

(53)

Referências Bibliográficas

 Sommerville, Ian. Engenharia de

Software. 8a edição. Pearson Education, 2007.

 Pressman, Roger S. Engenharia de

Software. 6a edição. McGraw-Hill, 2006.

 Paulo Filho, Wilson de Pádua.

Referências

Documentos relacionados

O presente trabalho tem como objetivo geral avaliar a precisão do Modelo Digital de Terreno - MDT, gerado a partir dos dados obtidos por imagens digitais de um Veículo Aéreo

Resumo O presente artigo tem como objetivo analisar a importância do brincar para o desenvolvimento afetivo da criança de 0 a 6 anos, como também identificar as concepções

Kulčar 40 , encontrou benefícios semelhantes (Tabela 3) e, além disso, ao acompanhar os membros permanentes do grupo por um período de 10 anos, constatou uma

Em relação ao Respondente4 ele já havia usado a ferramenta em outra instituição antes de iniciar suas atividades na UTFPR Campus Pato Branco e é possível creditar sua

Neste trabalho foram analisados os dados coletados em perímetro urbano e rural no município de Serranópolis do Iguaçu com a finalidade de investigar e avaliar o

Obtivemos as respostas listadas a seguir: Sujeito 1: “Brincar na educação infantil é muito importante para o desenvolvimento da criança que nessa fase tem o lúdico como elemento

No Quadro 14, está a representação da incompatibilidade número 10 onde na modelagem BIM, conforme o projeto estrutural, a passagem da eletrocalha foi projetada a 2,97m

Neste sentido, o nosso trabalho foi realizado em dois momentos: o Campo de Observação com 20 horas semanais e Campo de Docência com 20 horas semanais, encontros significativos