![Page 1: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/1.jpg)
Engenharia de Software I: Introdução
Graduação em Informática2010
Profa. Itana Gimenes
![Page 2: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/2.jpg)
Programa
1. O Processo de Engenharia de Software2. Engenharia de requisitos3. Modelagem de sistemas4. Conceitos de orientação a objetos5. Desenvolvimento de sistemas orientados a
objetos6. Projeto de interface humano-computador7. Ferramentas de apoio a análise e projeto de
software
![Page 3: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/3.jpg)
Estratégias
Desenvolvimento de projetos bimestrais em grupos de dois alunos (40%)
Provas escritas bimestrais (60%) Eventuais trabalhos que podem valer
pontos Ferramenta: Jude ->Astahhttp://jude.change-vision.com/jude-web/
product/community.html
![Page 4: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/4.jpg)
Bibliografia Básica Software Engineering: (Update) (8th Edition) (International
Computer Science Series) by Ian Sommerville (Hardcover - Jun 4, 2006)
UML 2 and the Unified Process: Practical Object-Oriented Analysis and Design (2nd Edition) (Addison-Wesley Object Technology Series) by Jim Arlow and Ila Neustadt, 2005.
The Unified Modeling Language Reference Manual (2nd Edition) (The Addison-Wesley Object Technology Series) by James Rumbaugh, Ivar Jacobson, and Grady Booch (Hardcover - Jul 29, 2004).
Unified Modeling Language User Guide, The (2nd Edition) (Addison-Wesley Object Technology Series) by Grady Booch, James Rumbaugh, and Ivar Jacobson (Hardcover - May 29, 2005).
JACOBSON, I BOOCH, G., RUMBAUGH, J., Unified Software Development Process, Addison-Wesley, Janeiro 1999.
![Page 5: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/5.jpg)
Bibliografia Complementar
Software Engineering: A Practitioner's Approach by Roger Pressman (Hardcover - Jan 20, 2009).
Análise e Projetos de Sistemas de Informaçao - Raul Sidnei Wazlawick, Editora Campus.
![Page 6: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/6.jpg)
Motivação Compreender as etapas de
desenvolvimento de software. Conhecer a diferença entre o
desenvolvimento de software de pequeno e grande porte.
Conhecer as principais técnicas de desenvolvimento de software.
Estar apto a especificar projetos de software em UML (Unified Modeling Language)
![Page 7: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/7.jpg)
Conceitos
Software “criação intelectual compreendendo os programas,
procedimentos, regras e qualquer documentação correlata à operação de um sistema de processamento de dados.” ISO9000-3
Produto de Software“Conjunto completo de programas de computador,
procedimentos e documentação correlata, assim como dados designados para entrega a um usuário.” ISO9000-3
Outros termos: sistemas de software, aplicações, aplicativos.
![Page 8: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/8.jpg)
O Papel do Software na sociedade
Software está presente na grande maioria das atividades da sociedade:
Banco Comunicação Transporte Escola Previdência Supermercado Cinema Bares Parques de diversão
![Page 9: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/9.jpg)
Exemplos de desastres causados por software
20 famous software disasters http://www.devtopics.com/20-famous-software-disasters/
Problemas vão de acidentes a financeiro devido ao grande percentual de re-trabalho necessário (US$ 60 bilhões)
![Page 10: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/10.jpg)
Desastres causados por software
World War III… Almost (1983)
Cost: Quase toda a humanidade
Desastre: O sistema de alertas precoces soviético indicou falsamente que os EUA havia lançado 5 misséis balísticos. Felizmente um oficial soviético teve um presentimento e raciocinou “se os EUA realmente está nos atacando deveria lançar mais de 5 mísseis, então reportou que a alerta deveria ser falsa …”
Causa: Um bug no software soviético que falhou em filtrar detecções de mísseis falsas devido à luz do sol refletindo no topo das nuvens.
![Page 11: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/11.jpg)
Desastres causados por software
Patriot Fails Soldiers (1991) Cost: 28 soldados mortos, 100 feridos Desastrer: Durante a primeira guerra do golfo,
um sistema de mísseis americano na Arábia Saudita falhou em interceptar um míssel vindo da esquadra iraquiana. O míssel destrui um acampamento american.
Cause: Um erro do software de arredondamento calculou incorretamente o tempo, fazendo o sistema ignorar o míssel.
![Page 12: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/12.jpg)
Desastres causados por software
Pentium Fails Long Division (1993) Custo: US $475 milhões, credibilidade da empresa Desastre: Pentium, um chip da Intel bastante divulgado
cometia erros quando dividindo números de ponto flutuante em um intervalo específico. Por exemplo, dividindo 4195835.0/3145727.0 resulat em 1.33374 instead de 1.33382, um erro de 0.006%. Apesar do erro afetar poucos usuários, se tornou um pesadelo nas relações públicsa da empresa. Com aproximadamente 5 milhões de chips defeituosos em circulação, a Intel ofereceu reposição apenas aos consumidores que provassem que precisariam de alta precisão. No final, a Intel repos o chip de todos que reclamaram.
Causa: O divisor da unidade de ponto flutuante do Pentium tinha uma tabela de divisão errada, faltando em torno de 5 de milhares de entrada que resultavam em erros de arredondamento.
![Page 13: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/13.jpg)
Como Produzir software?
Computador
Automatizar
Mundo Real
Sistema de Software
ambiente
![Page 14: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/14.jpg)
Características de Software
Software é desenvolvido e não manufaturado no sentido clássico.
Software não se deteriora ... não existem componente de reposição.
Software é feito sob encomenda, ao invés de ser construído a partir de componentes.
A evolução tecnológica afeta diretamente as facilidades que podem ser incorporadas ao software e as técnicas de construção destes.
! Tempo para transferência de tecnologia.
![Page 15: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/15.jpg)
Tipos de Sistemas de Software Software básico Software para sistema em tempo real Software comercial Software para engenharia e aplicações
científicas Software embarcado (ex. microwave) Software para computadores pessoais (shrink-
wrap) Software baseado em inteligência artificial Software de entretenimento
![Page 16: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/16.jpg)
Engenharia de Software
Uma definição: O estabelecimento e uso de um conjunto de
princípios para se obter, economicamente, um software que seja confiável e trabalhe eficientemente em máquinas reais.
Três elementos chaves: métodos ferramentas procedimentos (gerenciamento de projetos)
![Page 17: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/17.jpg)
A Evolução do SoftwareOs primeiros anos
•sistemas batch
•distribuição limitada
•software personalizado
A segunda era
•sistemas multiusuários
•sistemas em tempo real
•banco de dados
•software produto
A terceira era
•sistemas distribuídos
•incorporação de inteligência
•hardware de baixo custo
•impacto do consumidor
A quarta era
•sistemas desktop poderosos
•tecnologia de orientação a objetos
•sistemas especialistas
•redes neurais
•computação paralela
•comunicação intergaláctica
19501960 1970 1980 1990 2000
A quinta era•Netbooks•Web 2.0•Serviços Web•Computação em nuvens
2010
![Page 18: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/18.jpg)
Modelos de Processo de Desenvolvimento de Software Modelo de ciclo de vida
descrições abstratas do processo de desenvolvimento e modificação, tipicamente, mostrando os principais estágios de desenvolvimento e manutenção de um software executável.
Processo de Software Desenvolvimento Manutenção Uso
![Page 19: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/19.jpg)
A idéia do processo de software
Processo de Software
Tenho uma lista de nomes de pessoas ...Essas pessoas tem códigos de identificação ...Quero uma lista em ordem alfbética ...mas seria bom também ter um relatório por departamento
....For x:= 1 .. n do ........
MétodosFerramentas
Procedimentos
![Page 20: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/20.jpg)
O Modelo Cascata
Requisitos do S istema
Requisitos doSoftware
Análise
Pro jeto de Programas
Codificação
Teste
O peração
![Page 21: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/21.jpg)
Requisitos do Sistema
Requisitos do Software
Análise
Projeto do Programa
Codificação
Testes
Operação
Atualizações ao modelo cascasta
![Page 22: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/22.jpg)
O Modelo Transformacional
Conceitos
Transformação
Descrição
V&V
Requisitos Arquite tura Pro je to Deta lhado
Iteração
Iteração
![Page 23: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/23.jpg)
O Modelo Espiral
1. Defineobjetivos,
alternativase restrições
2. AnalisaRiscos
4. Planejapróximo ciclo
3. Desenvolveproduto
![Page 24: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/24.jpg)
Riskanalysis
Riskanalysis
Riskanalysis
Riskanalysis Proto-
type 1
Prototype 2
Prototype 3Opera-tionalprotoype
Concept ofOperation
Simulations, models, benchmarks
S/Wrequirements
Requirementvalidation
DesignV&V
Productdesign Detailed
design
Code
Unit test
IntegrationtestAcceptance
testService Develop, verifynext-level product
Evaluate alternatives,identify, resolve risks
Determine objectives,alternatives and
constraints
Plan next phase
Integrationand test plan
Developmentplan
Requirements planLife-cycle plan
REVIEW
From Sommerville
![Page 25: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/25.jpg)
Análise de Requisitos
Estratégias de Projeto
Implementação usando 4GT
Testes
Modelo 4GT
![Page 26: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/26.jpg)
Abordagem Prototipação
Validar a precisão dos requisitos ou aceitabilidade das decisões.
Validar a viabilidade de uma estratégia proposta.
Observações: protótipos só são válidos se construídos
rapidamente protótipos devem ser desprezados.
![Page 27: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/27.jpg)
Abordagem Incremental Definir e desenvolver uma pequena parte do
sistema de cada vez. Desenvolver um núcleo do sistema inicialmente
e depois adicionar funcionalidades em subprojetos.
Grande atração é que gera sistemas parciais executáveis e utilizáveis de onde se pode obter feedbacks e ganhar credibilidade do usuário.
Na prática é difícil de desenvolver uma abordagem incremental sem ter um entendimento completo dos requisitos.
![Page 28: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/28.jpg)
Generalização
Análise do SistemaDefinição
Análise de Requisitos
Planejamento do
Projeto de Software
Processo de Software
Desenvolvimento
Manutenção
Projeto do Software
Codificação Testes
Correção Adaptação Melhoramentos
O Que?
O Como?
A Obrigação ...
![Page 29: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/29.jpg)
Seleção de Estágios de Desenvolvimento
Análise de requisitos Especificação do software Projeto da arquitetura Projeto detalhado Implementação (Manutenção e evolução)
What?
How?
![Page 30: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/30.jpg)
Análise de requisitos (Sistema e Software)
Software é sempre parte de um sistema maior que envolve hardware, pessoas, etc.- Modelo de negócios
Coleta de requisitos do software especificamente.
Técnicas de comunicação
![Page 31: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/31.jpg)
Especificação do sistema
Expressar os requisitos de maneira formal através de diagramas bem definidos ou especificações matemáticas.
![Page 32: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/32.jpg)
Projeto da arquitetura
Determinar a estrutura do software com seus componentes e conectores.
![Page 33: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/33.jpg)
Projeto Detalhado
Projetar a concretização da especificação do software, definindo base de dados, representações de interfaces, algoritmos, etc.
![Page 34: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/34.jpg)
Implementação
Escrever o projeto do sistema em uma linguagem de programação.
![Page 35: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/35.jpg)
Manutenção e Evolução
Corrigir eventuais erros no software e efetivar atualizações.
![Page 36: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/36.jpg)
O Ciclo de Vida Canônico Estudo de Viabilidade Iniciação do projeto Especificação de requisitos Projeto da arquitetura Projeto detalhado Codificação Teste de unidade Teste de aceitação Teste operacional Encerramento do projeto Operação Desativação do produto
![Page 37: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/37.jpg)
Métodos de Construção de Software Abordagem sistemática para construir software
Procedimentos Notação Ferramenta Exemplo: Análise estruturada, OMT, Catalysis, Processo
Unificado Paradigma de desenvolvimento
Estruturado, orientado a objetos A escolha deve considerar:
características técnicas da aplicação características técnicas do método cobertura do ciclo de vida (Pode-se usar mais de um
método)
![Page 38: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/38.jpg)
Observações sobre o processo de desenvolvimento Sempre deve existir um processo de software
definido - padrões de qualidade. A disciplina vai abordar o processo unificado.
O modelo canônico deve ser tratado como uma referência que deve ser adaptada para cada situação.
Criar um processo baseado em fases específico para cada projeto.
O profissional deve estar apto a avaliar a aplicação a ser desenvolvida e a situação do ambiente de desenvolvimento para decidir qual o melhor processo de software a ser definido.
![Page 39: Engenharia de Software I: Introdução Graduação em Informática 2010 Profa. Itana Gimenes](https://reader036.vdocuments.com.br/reader036/viewer/2022062418/552fc143497959413d8dfb83/html5/thumbnails/39.jpg)
Outros processos
Open eXtreme programming Processos ágeis Scrum OpenUP