Buscar

introdução a Engenharia de Software

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 35 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 35 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 35 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

MATA62
Engenharia de Software I
Rita Suzana Pitangueira Maciel (Professor)
Rausth (Estágio Docente)
Bibliografia
 Engenharia de Software.
 Ian Sommerville. 8 Edição. Addison Wesley.
 Engenharia de Software.
 Roger S. Presman. 6 Edição. Makron Books.
 ABRAN, A. et al., Eds., Guide to the Software 
Engineering Body of Knowledge.
 RAJLICH, V.T. , BENNETT, K.H. A staged model for the 
software life cycle. 
 FEBBRARO,Neal, RAJLICH, V.T. The Role of Incremental 
Change in Agile Software Processes . 
 RAJLICH,V.T. GOSAVI, Prashant Incremental Change in 
Object-Oriented Programming. 
AVALIAÇÃO
 Teóricas
 28 de novembro
 28 de janeiro
 Trabalhos
 Projeto e Desenvolvimento de Software.
 Gerência de Mudanças e Manutenção
 Datas serão definidas ao longo do semestre
Engenharia de Software
Introdução
Rita Suzana 
Agenda
• Conceitos de Engenharia de Software
• Processo de desenvolvimento de software
Engenharia de software 
Conceitos
CENÁRIO INICIAL
• Desenvolvimento informal e não suficiente
• Software tinham anos de atraso no desenvolvimento
• Custo geralmente acima do previsto
• Desempenho insatisfatório
7
Crise do software (1968)
 Final do anos 60
 Muitos projetos de software começaram a 
falhar.
 Preço do hardware caia
 Preço do software subia…
 A causa deste fenômeno foi o contínuo 
aumento do tamanho e complexidade 
requeridos do software
 Ausencia de metodologias e tecnologia 
adequadas para lidar com projetos de software 
de grande porte.
 Surge entao “A engenharia de software”
 objetivo resolver a crise de software.
Engenharia de software
“Disciplina da engenharia relacionada com todos os
aspectos da produção de software desde estágios
iniciais de especificação até a manutenção”
 Disciplina de engenharia:
• aplicação de teoria, métodos e ferramentas;
• descoberta de soluções;
• trabalha com restrições organizacionais e financeiras
 Todos os aspectos da produção de software:
• técnicos;
• gerenciais;
• desenvolvimento de métodos, teorias e ferramentas de apoio.
9
ENGENHARIA DE SOFTWARE
 Análise versus síntese de um problema
ENGENHARIA DE SOFTWARE
 Análise versus síntese de um problema
O processo de síntese
Por que a engenharia de software?
 Método ou técnica: procedimento para a 
produção de um resultado.
 Ferramenta: instrumento ou sistema 
automatizado para realizar alguma coisa.
 Procedimento: receita de combinação de 
ferramentas e técnicas.
 Paradigma: estilo de fazer algo, 
representa uma abordagem ou filosofia 
para a construção de software
Ex.: um chefe de cozinha prepara um molho 
combinando ingredientes em uma ordem e 
momentos específicos.
Ex.: máquina de escrever, tesoura.
Ex.: plano de testes.
Ex.: cozinha francesa, chinesa, orientado a objetos, procedural.
Engenharia de software
“Desenvolvimento de software com
alta qualidade dentro de custos
adequados” 13
O QUE É UM SOFTWARE?
Todos os artefatos utilizados na 
produção e execução
Programa, 
Dados,
Documentos, 
Configuração,
Sites, ou seja, todos os elementos necessários 
para que o software funcione. 
 Genérico ou por encomenda
O QUE É UM SOFTWARE?
 Detalhando os Elementos
 Especificação de Requisitos e do Projeto
 Especificação da Arquitetura
Geral
Elementos espeçificos
 Código fonte e código objeto
 Interface homem-máquina
 Documentação e manuais
 Planos de alterações
 Versões (projeto, fonte, e objeto)
 Plano de Testes Relatórios de erros
 Documentação de mudanças e manutenção
 Ferramentas envolvidas
CARACTERÍSTICAS DO SOFTWARE 
 Software é intangível e abstrato
 Não é limitado por materiais, controlado por leis da
física ou processos de manufatura
 Não existe limitação física ou potencial para software.
 Difcil de Visualizar
 especialmente ao nível de código fonte
 A existência de senso comum é altamente dependente do
domínio.
1
6
CARACTERÍSTICAS DO SOFTWARE 
(2)
 Software é desenvolvimento
 Produção?
 Fábricas de software desejam mudar este
paradigma
 Atividade massivamente humana
 Tecnologias
 Métodos
 Forte influência da cultura
 Muita variação.
 Pode facilmente se tornar extremamente
complexo e difícil de ser compreendido.
Software
 Termo criado em 1967
 Ciência relativamente nova
 Muito ainda a ser feito
 Como melhorar os modelos
 Compreender os limites das tecnologias
 Realizar e controlar os experimentos
Complexidade de um Software
 Software de grande porte
 Envolve várias pessoas e diferentes papéis 
 Torna-se uma entidade complexa que não pode 
ser facilmente entendida por um único 
indivíduo.
 O produto de software é normalmente 
descrito e desenvolvido de forma 
hierárquica. 
 Sistemas são decompostos em subsistemas
 Subsistemas em novos subsistemas
 Etc.
 Engenheiro de software 
 Alto poder de abstração e capacidade de 
navegação nesta hierarquia. 
 Capaz de rapidamente navegar 
Atributos de um bom software
• Facilidade de manutenção
• permitir evoluções (as empresas são dinâmicas).
• Confiança: confiabilidade, proteção e segurança
• Não deve causar danos físicos ou econômicos no caso
de falha do sistemas.
• Eficiência:
• não deve desperdiçar recursos do sistema.
• Eficiência inclui tempo de resposta, tempo de
processamento e utilização de memória.
• Usabilidade:
• usável, sem esforço excessivo. Apresentar boa
interface com o usuário e documentação adequada.
2
0
Complexidade do Sofwtare
 Como Lidar?
 Conceitos importantes para lidar com as 
complexidades de sistemas de software:
 Programação estruturada
 simplicidade no fluxo de controle
 Modularidade
 Acoplamento (deve ser baixo)
 Coesão (deve ser alta)
 Encapsulamento (esconder detalhes internos)
 Componentização e reuso: uso de bibliotecas e 
ligadores
 Polimorfismo (tipos abstratos de dados)
 Herança (programação orientada a objetos)
2
2
Software é dividido em componentes
Os componentes são nomeados e chamados de módulos
Integra-se estes componentes para satisfazer os requisitos do 
sistema.
Dividir para conquistar
Cuidado: Dividir demais pode ser prejudicial
Aumenta o número de módulos => aumenta o esforço de integração
Modularidade (1)
2
3
Como saber se um módulo está no tamanho adequado?
•Decompor o módulo de maneira que ele diminua a complexidade do 
problema.
•Permitir que módulos possam ser integrados para serem reaproveitados.
•Ser uma unidade autônoma.
•Permitir a continuidade e reduzir efeitos colaterais. 
• É possível fazer evoluções localizadas.
•Oferecer proteção. 
• Problemas devem ser contidos no módulo.
Modularidade (2)
2
4Realizar uma única tarefa
sem muito relacionamento com o mundo externo.
Modularidade : Coesão
2
5
• Medida de interconexão entre os módulos.
• Depende da complexidade de interação entre os módulos.
Modularidade : acoplamento
2
6
Independência modular 
alta coesão e 
baixo acoplamento
SITUAÇÃO IDEAL
2
7
Como saber se definimos os módulos corretos?
•Definir módulos cuja função seja previsível: 
• caixas pretas.
•Minimizar estrutura de alta convergência.
•Não deixe que um módulo tenha muita influencia sobre outro.
•Avaliar as interfaces para reduzir a complexidade.
Modularidade (3)
Ciclo de vida de um Software
Um software possui um ciclo de vida.
Começa desde os primeiros estágios de
especificação, passa pela sua construção,
manutenção e termina quando este édesativado.
2
8
Membros de uma equipe de 
desenvolvimento
Os papéis da equipe de desenvolvimento
Custos da Engenharia de Software
 60 % no desenvolvimento
 40% nos testes
 Custos de evolução (software de encomenda) excedem o
custo do software 3
0
MÉTODO DE ENGENHARIA DE SOFTWARE
Abordagem estruturação para o desenvolvimento de software.
Incluem:
• modelos de sistemas;
• notações;
• regras;
• recomendações de projeto;
• guias.
3
1
Engenharia de Software
 Ciência 
 desenvolvimento de software em escala 
industrial e de forma profissional 
 Objetivo
desenvolver software em um tempo 
planejado
 com a qualidade, desempenhos e 
funcionalidades requeridas pelo CLIENTE
Software em escala industrial
 Grande ou médio porte
 Envolvendo várias pessoas
 esforço de uma equipe e não de um só indivíduo
 Investimento financeiro do cliente
 Tempo de vida medido em anos
 Muitas linhas de código
 Milhares(???)
 Exige modificação e manutenção para 
atender as mudanças do dominio 
Desafios da Engenharia de Software
• Heterogeneidade:
• inclui execução em plataformas distintas, redes
heterogêneas, sistemas legados.
•Desenvolver técnicas para construção de software que seja
flexível para adaptar-se a heterogeneidade
• Entrega:
•técnicas demandam tempo e são necessárias para obter
qualidade
• Confiança:
• sistemas críticos, sistemas web, etc.
3
4
Disciplina de engenharia de software
 Noções fundamentais que formam a base de uma 
disciplina de engenharia de software efetiva 
(algumas)
 Abstração
 Métodos e notações de análise e projeto 
 Protótipo da interface com o usuário
 Arquitetura de software
 Processo de software
 Reuso
 Medição
 Ferramentas e ambientes integrados

Outros materiais