ENGENHARIA DE
SOFTWARE
Profª: Janaide Nogueira Curso: Sistemas de Informação
E
NGENHARIA DE
S
OFTWARE
APRESENTAÇÃO
Formação Técnica:
Informática(IFCE-Campus Tianguá-CE) Secretária Escolar(FDR)
Graduação:
Bacharelado em Sistemas de Informação(Ieducare) Pós-Graduação:
Especialização em Engenharia de Software (WPÓS) Especialização em Engenharia de Software (WPÓS) MBA em Sistemas de Informação (ESAB)
Atividades Profissionais: Profª. Faculdade Ieducare.
EMENTA
Conceitos e princípios fundamentais.
Ciclo de vida de software e estágios de desenvolvimento:
requisitos de software, projeto, implementação, gerenciamento e qualidade de software.
Ferramentas e ambientes de desenvolvimento integrado.
CARGA HORÁRIA : 60 HORAS/AULA = 15 ENCONTROS
REFERÊNCIAS
PAULA FILHO, W. P. Engenharia de Software –Fundamentos, Métodos e Padrões. 2. ed. Rio de Janeiro: LTC, 2003.
PFLEEGER, S. L. Engenharia de Software –Teoria e Prática. 2. ed. São Paulo: Pearson PrenticeHall, 2004.
PRESSMAN, R.S.Engenharia de Software.6. ed. São Paulo: McGraw-Hill, 2006.
SOMMERVILLE, I. Engenharia de Software. 8. ed. São Paulo: Pearson, 2007.
METODOLOGIA DE
AVALIAÇÃO
(Nota1+Nota2+Nota3)\3= Média final;
Nota1 = (1*Exercícios + 2*Artigo)/3;
Nota2= (1*Exercícios + 2*Prova escrita)/3;
Nota2= (1*Exercícios + 2*Prova escrita)/3;
Nota3= Trabalho;
FALTAS E ATRASOS
O aluno deve evitar ao máximo ter faltas,
pois dificulta o aprendizado.
pois dificulta o aprendizado.
As aulas iniciam às 19:00 horas, o intervalo
inicia às 20:15 horas, com 15 minutos de
duração, terminando o encontro pontualmente
as 22:00 horas.
E
NGENHARIA DE
S
OFTWARE
O QUE É ENGENHARIA DE
SOFTWARE?
" É uma disciplina da engenharia que se preocupa com todos os aspectos da produção de software, desde os estágios iniciais de especificação do sistema até a manutenção desse sistema, depois que ele entrou em manutenção desse sistema, depois que ele entrou em operação".(SOMMERVILLE,2007)
Com isso o engenheiro de software deve adotar um perfil sistemático e organizado para seus trabalhos e utilizar ferramentas e técnicas apropriadas, dependendo do
problema a ser resolvido e dos
OBJETIVOS DA ENGENHARIA DE
SOFTWARE
Controlar o desenvolvimento de software dentro de custos, prazos e níveis de qualidade desejados;
QUAL A DIFERENÇA ENTRE
ENGENHARIA DE SOFTWARE E DE
SISTEMAS?
A Engenharia de Software é mais especifica, a de Sistemas é mais genérica. Enquanto a Engenharia de Sistemas está mais envolvida com o sistema como um todo Sistemas está mais envolvida com o sistema como um todo e seus detalhes, a Engenharia de Software é mais especifica, em especial ao hardware e software.
TIPOS DE SOFTWARE
Produtos genéricos;
O QUE É CASE?
• Compute raided software engineering (engenharia de software como auxílio de computador). Se refere a uma ampla gama de diferentes tipos de programas utilizados para apoiar as atividades de processo de utilizados para apoiar as atividades de processo de software, como a análise de requisitos, modelagem de sistema, a depuração e os testes.
• •Upper-CASE: Apoio as atividades iniciais (requisitos e projeto);
• •Lower-CASE: Apoio as atividades finais (programação, depuração e teste).
O QUE É DEPURAÇÃO DE
SOFTWARE?
É o processo de encontrar e reduzir defeitos em um software.
ATRIBUTOS DE UM BOM
SOFTWARE
O software deve oferecer aos usuários as funcionalidades e o desempenho por ele desejado, deve possuir fácil manutenção, ser eficiente...
Características Descrição
Facilidade de Manutenção Esse é um atributo crucial, porque as
15
Facilidade de Manutenção Esse é um atributo crucial, porque as modificações em um software são uma consequência inevitável de um
ambiente de negócios em constante mutação. Nível de Confiança Neste nível incluem-se as características de
confiabilidade, proteção e segurança
Eficiência O Software não deve desperdiçar os recursos do sistema, como por exemplo os ciclos do processador Facilidade de Uso O software deve ser utilizável, usuários leigos não
PROCESSO DE DESENVOLVIMENTO
DE SOFTWARE
O Conjunto de atividades associadas geram um produto de software. Há quatro atividades de processos fundamentais comuns a todos os processos de software que são:
Especificação do software; Desenvolvimento do software; 16 Desenvolvimento do software; Validação do software; Evolução do software.
CICLO DE VIDA DE
DESENVOLVIMENTO DE
SOFTWARE
O CVDS descreve como o software deve ser desenvolvido, ou seja, define a ordem global das atividades e propõe uma estratégia de desenvolvimento.
17
estratégia de desenvolvimento.
Simplificando: Todo desenvolvimento de um software é
caracterizado por fases que quando colocadas em sequência obtêm-se um Ciclo de Vida do Sistema.
MODELO BALBÚRDIA
No início da computação, poucos programadores
seguiam algum tipo de metodologia baseando-se, em
sua maioria, na própria experiência. Era o que
chamamos hoje de Modelo Balbúrdia,
que são
sistemas desenvolvidos na informalidade sem nenhum
tipo de projeto ou documentação.
18
tipo de projeto ou documentação.
Nesse modelo, o software tende a entrar num ciclo
de somente duas fases: o de implementação e de
implantação. E os ajustes ao software para atender
aos novos requisitos, sempre são em clima de
urgência e de stress, motivados por vários fatores, e
principalmente por pressão política.
MODELO CASCATA
MODELO CASCATA
O modelo em Cascata a fase seguinte não deve se iniciar até que a fase precedente tenha sido concluída;
Na prática os estágios se sobrepõem e trocam informações entre si;
20
entre si;
A principal desvantagem do modelo em cascata é a dificuldade de acomodação das mudanças depois que o processo está em andamento. Uma fase tem de estar completa antes de passar para a próxima;
DESVANTAGENS DO MODELO
CASCATA
Particionamento inflexível do projeto em estágios
distintos, dificulta a respota aos requisitos de mudança do cliente;
Este modelo é apropriado somente quando os requisitos são bem compreendidos, e quando as mudanças forem
21
são bem compreendidos, e quando as mudanças forem bastante limitadas durante o desenvolvimento do sistema; Poucos sistemas de negócio têm requisitos estáveis;
DESVANTAGENS DO MODELO
CASCATA
Pode não permitir a visão real do processo em andamento. Dois universos:
Universo que se refere ao processo em andamento; Universo que se refere às mudanças que deveriam ser aplicadas, mas não são pelo fato do modelo não
22
aplicadas, mas não são pelo fato do modelo não incorporar em sua dinâmica.
FASES DO MODELO CASCATA
Análise e definição de requisitos; Projeto de sistema e software;
Implementação e teste de unidade; Integração e teste de sistema;
Operação e manutenção;
23
MODELO EVOLUCIONÁRIO
Tem como base a idéia de desenvolver uma
implementação inicial, expôr o resultado ao comentário do usuário e fazer seu aprimoramento por meio de muitas
versões, até que um sistema adequado tenha sido desenvolvido.
24
TIPOS DE MODELO
EVOLUCIONÁRIO
DESENVOLVIMENTO EXPLORATÓRIO;
MODELO EVOLUCIONÁRIO:
DESENVOLVIMENTO
EXPLORATÓRIO
O desenvolvimento se inicia com as partes do sistema que estão bem compreendidas adicionar novas características à medida que forem propostas pelo
26
características à medida que forem propostas pelo cliente.
TIPOS DE MODELO
EVOLUCIONÁRIO
PROTOTIPAÇÃO DESCARTÁVEL;
MODELO EVOLUCIONÁRIO:
PROTOTIPAÇÃO DESCARTÁVEL
O objetivo é compreender os requisitos de sistema. Deve iniciar com requisitos mal compreendidos para
esclarecer o que é realmente necessário.
DESVANTAGENS DA
PROTOTIPAÇÃO DESCARTÁVEL
Falta de visibilidade do processo;
Os sistemas são frequentemente mal estruturados;
DESENVOLVIMENTO ORIENTADO A
REUSO
Baseado em reuso sistemático onde sistemas são integrados a partir de componentes existentes.
Estágios do processo:
•Análise de componentes;
30
•Análise de componentes; •Modificação de requisitos;
•Projeto de sistema com reuso; •Desenvolvimento e integração.
DESENVOLVIMENTO ORIENTADO A
REUSO
Vantagens do Desenvolvimento Orientado a Reuso
-Reduzir a quantidade de software a ser desenvolvida; -Reduzir custos;
31
-Reduzir custos; -Reduzir riscos.
Problema do Desenvolvimento Orientado a Reuso
ITERAÇÃO DE PROCESSO
-Requisitos de sistema SEMPRE evoluem no curso de um projeto e, sendo assim, a iteração de processo, onde estágios iniciais são retrabalhados, é sempre parte do processo dos sistemas de
grande porte.
32
grande porte.
-A iteração pode ser aplicada a qualquer um dos modelos genéricos do processo.
Duas abordagens (relacionadas) -Entrega incremental;
ENTREGA INCREMENTAL
Ao invés de entregar o sistema como uma única entrega, o desenvolvimento e a entrega são separados em incrementos, sendo que cada incremento fornece parte da funcionalidade solicitada.
Os requisitos de usuário são priorizados e os
requisitos de prioridade mais alta são incluídos nos incrementos
33
requisitos de prioridade mais alta são incluídos nos incrementos iniciais.
VANTAGENS DA ENTREGA
INCREMENTAL
O valor pode ser entregue para o cliente com cada
incremento e, desse modo, a funcionalidade de sistema é disponibilizada mais cedo.
O incremento inicial age como um protótipo para auxiliar a elicitar os requisitos para incrementos posteriores do sistema.
34
elicitar os requisitos para incrementos posteriores do sistema. Riscos menores de falha geral do projeto.
Os serviços de sistema de mais alta prioridade tendem a receber mais testes.
EXTREME PROGRAMMING
Uma abordagem baseada no desenvolvimento e na entrega de incrementos de funcionalidade muito pequenos.
Baseia-se no aprimoramento constante de código, no
envolvimento do usuário na equipe e no desenvolvimento e programação em pares.
35
DESENVOLVIMENTO EM ESPIRAL
O processo é representado como uma espiral ao invés de uma sequência de atividades como realimentação.
Cada loop na espiral representa uma fase no processo. Sem fases definidas, tais como especificação ou projeto;
Os riscos são explicitamente avaliados e resolvidos ao longo do
36
Os riscos são explicitamente avaliados e resolvidos ao longo do processo.
DESENVOLVIMENTO EM ESPIRAL
DESENVOLVIMENTO EM ESPIRAL
Setores do Desenvolvimento em Espiral -Definição de objetivos:
-Objetivos específicos para a fase são identificados. -Avaliação e redução de riscos:
-Riscos são avaliados e atividades são realizadas para reduzir os
38
-Riscos são avaliados e atividades são realizadas para reduzir os riscos-chave.
-Desenvolvimento e validação
Um modelo de desenvolvimento para o sistema, que pode ser qualquer um dos modelos genéricos, é escolhido.
-Planejamento
DESENVOLVIMENTO EM ESPIRAL
Atividades de Processo - Especificação de software;
- Projeto e implementação de software; - Validação de software;
- Evolução de software.
39
DESENVOLVIMENTO EM ESPIRAL
Atividades de Processo - Especificação de software;
- Projeto e implementação de software; - Validação de software;
- Evolução de software.
40
PROCESSO DE SOFTWARE
-Como definir o modelo de processo do software? -Como definir a iteração do projeto?
PROCESSO DE SOFTWARE
“Uma empresa de produção de calçados deseja automatizar o setor de estoque e contrata um serviço terceiriza do para
desenvolver um software que atenda as necessidades. A princípio, existem muitos riscos no projeto, pois o setor de
estoque apresentar e quisito pouco definido. O cliente pretende
42
estoque apresentar e quisito pouco definido. O cliente pretende esclarecer o quanto antes os requisitos que ainda não estão
PROCESSO DE SOFTWARE
“Uma rede de hotéis deseja renovar o sistema de controle de
hospedagem e contrata um serviço terceirizado para desenvolver um software que atenda as necessidades. A princípio, os
requisitos estão muito bem definidos, pois a empresa possui um sistema anterior que facilita o entendimento. O cliente pretende
43
sistema anterior que facilita o entendimento. O cliente pretende ter um acompanhamento modular do desenvolvimento do