Este documento apresenta uma aula introdutória sobre engenharia de software. Apresenta brevemente o que é engenharia de software, para que serve e discute alguns modelos de ciclo de vida de desenvolvimento de software como cascata e ágil. Também menciona brevemente métodos como SCRUM e desenvolvimento open source.
2. Roteiro
• O que é?
• Pra que serve?
• Sobre o curso…
PARFOR / UFRPE
3. PARFOR / UFRPE
Terreno
Localização
Fluxo de
Pessoas
Tipo de
Pessoas
Tempo de
Construção
Clima
Quantidade de
Recursos
Qualidade do
Material
Arquitetura
Planta-baixa
Tendência de
Mercado
5. Engenharia…
Engineering is the discipline, art and profession of acquiring and applying technical, scientific, and
mathematical knowledge to design and implement materials, structures, machines, devices,
systems, and processes that safely realize a desired objective or invention.
[AECPD - American Engineers' Council for Professional Development]
PARFOR / UFRPE
6. Engenharia de Software:
• SOFTWARE (+) ENGINEERING
Software engineering is the application of a systematic, disciplined, quantifiable approach to the
development, operation, and maintenance of software, and the study of these approaches; that
is, the application of engineering to software [SWEBOK]
PARFOR / UFRPE
19. Objetivos de Engenharia de Software
• Obter software de qualidade
• Com produtividade no seu desenvolvimento, operação e manutenção
• Empregando profissionais que desenvolvam o software dentro de
custos, prazos e níveis de qualidade controlados
• E, além disso, que obtenham o melhor custo-benefício possível
PARFOR / UFRPE
20. A Equação da Engenharia
Potencial Produtivo = Qualidade x Escopo
Custo x Tempo
PARFOR / UFRPE
21. Revolução industrial
• Conjunto de mudanças tecnológicas
• Impacto no processo produtivo em nível econômico e
social.
• A máquina substitui o trabalho humano
• Karl Marx
Força de Trabalho x Propriedade x Capital
• Henry Ford
Produção em grande quantidade com baixo custo de
Fabricação
• Frederic k Taylor
Planejamento, Acompanhamento, Controle
PARFOR / UFRPE
35. Levantamento de Requisitos
• Análise de requisitos engloba todas as tarefas que lidam com investigação, definição e escopo de novos sistemas ou
alterações. Análise de requisitos é uma parte importante do processo de projeto de sistemas, na qual o engenheiro de
requisitos e o analista de negócio, juntamente com engenheiro de sistema ou desenvolvedor de software, identificam as
necessidades ou requisitos de um cliente. Uma vez que os requisitos do sistema tenha sido identificados, os projetistas de
sistemas estarão preparados para projetar a solução.
• Entrevistas com Stakeholder
• Workshops
• Lista de requisitos: estilo contrato formal
• Objetivos Mensuráveis
• Protótipos
PARFOR / UFRPE
36. Análise de Requisitos
• Análise de Requisitos é o estudo das características que o sistema deverá ter para atender às
necessidades e expectativas do cliente.
• É o Entendimento do Problema
• Cada funcionalidade demandada pelo cliente deve ser analisada para verificar os possíveis
impactos no desenvolvimento das demais funcionalidades do sistema, e verificado em conjunto
com a equipe de desenvolvimento se as necessidades tecnológicas para a sua implementação
estão disponíveis
PARFOR / UFRPE
37. Projeto
• É a parte da engenharia de software que se encarrega de transformar os resultados da Análise de
Requerimentos em um documento ou conjunto de documentos capazes de serem interpretados
diretamente pelo programador.
• Arquitetura de Software
• Design Patterns (Padrões de Projeto)
• Refatoração
PARFOR / UFRPE
38. Implementação
• Corresponde à codificação, ou tradução dos requisitos para uma linguagem
legível pelas máquinas.
• Se o projeto for executado detalhadamente, a codificação pode ser feita
mecanicamente, e até mesmo automatizada.
PARFOR / UFRPE
39. Testes
• O objetivo, por paradoxal que pareça, é encontrar defeitos nos produtos, para que estes possam
ser corrigidos pela equipe de programadores, antes da entrega final.
Processo Simplificado
• Descobrir a existência do bug
• Isolar o código que causa o bug
• Identificar a causa do bug
• Determinar uma correção para o bug
• Aplicar a correção e testar a correção
PARFOR / UFRPE
40. Implantação
• Passagem do software para a produção.
• Liberação
• Instalação
• Ativação/Desativação
• Risco: Integração com Sistemas Legados!!!
PARFOR / UFRPE
51. Comparativo
• Requer menor esforço de
desenvolvimento e testes
• Requer menor esforço de requisitos
• Programadores mais produtivos
• Produtos com maior qualidade
• Estimativas mais eficazes
Mitchel, S. 2009 PARFOR / UFRPE
55. Ciclo de Vida
Planejamento
Modelagem do
Negócio
Requisitos
Análise e
Design
Implementação
Teste
LiberaçãoAvaliação
Planejamento Inicial
Gerenciamento
do Projeto
Gerenciamento
do Ambiente
Gerenciamento
da Configuração
Implantação
66. Iteração
As fases são compostas de iterações.
As iterações são janelas de tempo; as iterações possuem prazo definido enquanto
as fases são objetivas.
Concepção
(Iniciação)
Elaboração Construção Transição
It 01 ...It 02 It 03 It 04 It 05
PARFOR / UFRPE
67. Marco
• Objetivos finais de cada fase
Concepção
(Iniciação)
Elaboração Construção Transição
Documento
de Visão
Documento
de Arquitetura
Sistema
Inicial
Funcionando
Software em
Produção
PARFOR / UFRPE
73. Conceitos-Chave
• Artefato
Um artefato é um produto de trabalho do processo, que pode ser insumo ou produto de tarefas.
Ex. Código Fonte
Codificação Código
Fonte
PARFOR / UFRPE
75. Conceitos-Chave
• Ferramenta
São as ferramentas que suportam o desenvolvimento do software.
Ex. IDE
Codificação Código
Fonte
IDE
PARFOR / UFRPE
76. Conceitos-Chave
• Papel
Representa uma responsabilidade que deve ser assumida por alguma pessoa. Cada papel é responsável por um conjunto
de atividades e artefatos.
Codificador Codificação Código
Fonte
IDE
PARFOR / UFRPE
78. Características Gerais
• Processo dirigido por funcionalidades (Casos de Uso)
• Processo centrado na arquitetura
• Processo Iterativo Incremental
RUP Detalhado
www.wthreex.com/rup
(Português)
PARFOR / UFRPE
85. Tipos de Processos
Tradicional
• Grandes projetos
• Grandes equipes
• Rígido
• Planejado em longo prazo
• Orientado a contratos
• Alta Documentação
Métodos Ágeis
• Pequenos projetos
• Pequenas equipes
• Maleável
• Planejado em curto prazo
• Orientado ao produto
• Baixa Documentação
PARFOR / UFRPE
86. Comparativo
Ambiente ideal para o desenvolvimento ágil:
• Baixa criticidade
• Desenvolvedores senior
• Mudanças freqüente de requerimentos
• Pequeno número de desenvolvedores
• Cultura que tem sucesso no caos.
Ambiente ideal para o desenvolvimento
tradicional:
• Alta criticidade
• Desenvolvedores Junior
• Baixa mudança nos requerimentos
• Grande número de desenvolvedores
• Cultura que procura a ordem.
PARFOR / UFRPE