2. Coordenação Geral
Coordenador: Silvio Cesar Bogsan
Disciplina: Engenharia de Software
Professor: Prof. Ms. Ernesto Bedrikow
E-mail: ernesto@sumare.edu.br
Telefone: 3067-7999
3. Ernesto de Carvalho Bedrikow
Formado em Ciências da Computação pela UFSC
Pós Graduação em Engenharia de Software –POLI-USP
Mestrado em Computação pelo Mackenzie – CMMI
Doutorado – Informática Médica – H.C. – Projeto Inst. Adolfo Lutz
Coordenador de Projetos implementação do ERP – Santa Casa
Gestor de Sistemas especialistas na Sadia
Participação em consultorias nos processos de Introdução, Implantação,
Avaliação de CMMI e MPS-Br.
Integrante do Grupo Coordenador do SPIN-SP - www.spinsp.org.br
Consultor de Projeto (Anatomia Patológica) – APC – www.apclab.com.br
Desenvolvimento e Implantação de Projetos -www.sistemaclinica.com.br
Apresentações Pessoais
5. Introdução a engenharia de software; Aprender os
Modelos de processos de desenvolvimento de
software;
Aprender Técnicas de gerenciamento e
planejamento de software;
Requisitos e especificação de software; Métodos
de análise e projeto de software.;
Garantia de qualidade de software; Teste e
revisão de software; Manutenção de software;
6. Reengenharia e engenharia reversa ;
Ferramentas e ambientes de software ;
Padrões de desenvolvimento e documentação de
software ;
Gerenciamento de configuração, Conhecer a
gestão de projetos de software: conceitos,
métricas, estimativas, cronogramação, gestão de
risco, gestão de qualidade e gestão de
modificações.
7. EMENTA
Visão geral e princípios de engenharia de
software.
Conhecimentos do ciclo de vida do software,
projeto de software, implementação de
software, gerenciamento de software,
qualidade de software.
Contextualização da Engenharia de Software
avançada, Princípios da Engenharia de
Software avançada, Conceituação de Produto e
Processo de Software.
8. EMENTA
Comparação entre os Paradigmas de
Desenvolvimento Software.
Caracterização do Projeto de Software.
Aprofundamento a Gerenciamento de Projetos.
Aprofundamento de Qualidade de Software.
9. Conteúdo
1. Introdução a Engenharia de Software
2. Conhecimento do ciclo de vida do software
3. Projeto de Software
4. Implementação, gerenciamento e qualidade
de software
5. Contextualização e princípios dos softwares
avançados
6. Reengenharia e Engenharia reversa
10. Dinâmica das aulas
Sem monólogo, por favor!
• Tragam seus questionamentos, idéias e
experiências!
• A colaboração ajuda na construção do
conhecimento.
Material em constante mudança
14. Project Model Canvas
GP PITCH
JUSTIFICATIVAS
Passado
OBJ SMART REQUISITOS
CUSTOS
EQUIPE
PRODUTO
RESTRIÇÕES
BENEFÍCIOS
Futuro
GRUPOS DE
ENTREGAS
LINHA DO TEMPO
STAKEHOLDERS
Externos &
Fatores Externos
RISCOSPREMISSAS
04
18. Não faltam teorias de Engenharia de
Software
Boehm
Parnas
Conway
Dijkstra
Meyer
Wirth
Constantine
Sommerville Pressman
19. Software Engineering doesn’t lack theories
Não faltam teorias em Engenharia
Core Theory – The Essence
SEMAT quer fornecer o núcleo da teoria em que as
teorias mais especializadas podem estar
22. Reunião do SPIN São Paulo
Os modelos de qualidade
CMMI – Engenharia - Serviço -
Desenvolvimento”
MPS Br –Guia Geral
MPS de Gestão de Pessoas
Mais informações e inscrições no site
www.spinsp.org.br
Grupo de Melhoria de Processos de Software
25. Em grupos de até 5 alunos, discutam
sobre...
Escolham um tema de projeto e elaborem um
EAP !!!!!
Caso de Uso !!!!
CANVAS !!!!
Pontos de Função !!!! Tamanho do software
Custo do Projeto !!!! COCOMO
26. Documentem as conclusões do grupo
Somente alunos presentes na sala de aula
Durante a atividade, passarei pelos grupos
para conhecê-los
27. Engenharia de Software
1. Processos de Software
2. Métodos Ágeis de Eng de Software
3. Engenharia de Requisitos
4. Gestão de Projetos de Software
5. Gestão de Configuração e Mudanças
6. Análise e Modelagem de Negócios
7. Arquitetura de Software
8. Qualidade de Processo de Software
9. Modelagem de Banco de Dados
28. Engenharia de Software
10. Qualidade de Produto de Software
11. Padrões de Software
12. Métricas de Software
13. Projeto de Interface Humano-Computador
29. Apresentar os conceitos que fundamentam a
Engenharia de Software.
Conscientizar sobre a importância do tema Engenharia
de Software.
Quebrar o paradigma de desenvolvimento no que se
refere a métodos e técnicas.
Conhecer de forma abrangente os Modelos de
Maturidade existentes no mercado.
Conhecer o Processo Unificado.
Processos de Software
30. Apresentar o Manifesto Ágil do Desenvolvimento de Software
e explicar o que são metodologias ágeis.
Explicar a Extreme Programming (XP), metodologia ágil de
desenvolvimento de software: ciclo de vida, levantamento de
requisitos e estimativas do sistema.
Práticas de levantamento desenvolvimento e validação dos
requisitos, práticas de codificação para o desenvolvimento
com Ruby, conceitos e aplicação do pair programming,
desenvolvimento baseado em TDD (Test Driven
Development), codificação e refactoring.
Métodos Ágeis de Engenharia de Software
31. As bases do XP
Extreme Programming
O XP tem como base quatro valores:
comunicação, simplicidade, feedback e
coragem.
Comunicação: A má comunicação é
motivo de insucesso em quase todo tipo
de projeto, inclusive nos projetos de
software. Logo, este é um dos valores
mais importantes do XP, bem como das
metodologias ágeis como um todo. Esta
comunicação deve fluir constantemente
32. Comunicação: A má comunicação é
motivo de insucesso em quase todo tipo
de projeto, inclusive nos projetos de
software.
Logo, este é um dos valores mais
importantes do XP, bem como das
metodologias ágeis como um todo.
Esta comunicação deve fluir
constantemente através das técnicas a
serem aplicadas no processo de
desenvolvimento;
33. Simplicidade: Manter a simplicidade é
difícil e é um dos princípios do XP
advindos do JIT.
Assim, faça a coisa mais simples que
pode funcionar, mesmo assim, é um dos
princípios mais difíceis de se alcançar,
pois somos tentados a fazer algo
complexo pensando no futuro, mas é
importante lembrar que uma das filosofias
do JIT é a eliminação de desperdício,
assim, simplicidade é uma obrigação.
34. O JIT é a base para a melhoria da posição
competitiva de uma empresa, em particular
no que se refere aos fatores velocidade,
qualidade e o preço dos produtos. Segundo
Slack, Chambers e Johnston, Just in time
(JIT) “significa produzir bens e serviços
exatamente no momento em que são
necessários – não antes para que não
formem estoques e não depois para que seus
clientes não tenham de esperar” (2009, p
482). Desta forma, o JIT visa atender à
demanda instantaneamente, com qualidade e
sem desperdício.
35. Feedback: Muito se fala em feedback na
atualidade e aqui ele não é só necessário,
como um dos princípios que fazem com
que o XP tenha sucesso.
Para isso, o uso do TDD passa a ser tão
importante, além disso, é importante o
feedback do cliente, por isso os ciclos
curtos, a integração contínua etc.
36. Coragem: Este é o ultimo valor do XP, mas
não menos importante, pois é necessário
ter coragem de jogar um código fora e
iniciar do zero, coragem para mudanças.
A comunicação nos dá coragem para a
mudança, pois temos a noção das reais
necessidades do cliente.
37. Com base nestes valores, temos os princípios do XP.
Os quatro valores geram os princípios básicos do XP:
Feedback rápido através de ciclos curtos (iteração de uma a duas
semanas) e comunicação continua (com todos os envolvidos no
processo);
Simplicidade presumida, onde deve-se tratar os problemas de
forma simples, ou seja, evitar tratar o problema com
complexidade, utilizando recursos que nunca serão utilizados,
fazendo apenas o necessário;
As mudanças devem ser feitas de forma incremental. Grandes
modificações normalmente trazem grandes problemas, então
tratar a mudança com ciclos de mudanças curtos é mais eficiente
e atende as bases sistêmicas do paradigma.
Alta qualidade: ninguém gosta de pessoas desleixadas, então a
qualidade deve ser sentida não só pelo cliente, mas pela equipe.
O teste não é uma opção, é uma obrigação.
38. Capacitar o aluno a alcançar consenso do cliente sobre o problema a
ser solucionado, bem como as características da solução e gerenciar
características.
Especificar, detalhar e rastrear requisitos de soluções sistêmicas que
atendam verdadeiramente às necessidades do cliente de solucionar o
problema.
Avaliar artefatos de software para garantir a qualidade do produto.
Discernir as melhores técnicas a serem aplicadas frente às
especificidades apresentadas em cada projeto de software.
Engenharia de Requisitos
39. Apresentar a importância do gerenciamento de projetos
nas organizações bem como suas aplicações.
Possibilitar uma visão geral dos conceitos de
gerenciamento de projetos.
Áreas de conhecimento conforme o PMBOK de maior
impacto nos projetos de software.
Analisar a adaptação do PMBOK para projetos ágeis.
Gestão de Projetos de Software
40. Motivar a utilização da gestão de configuração e
mudanças.
Estabelecer uma relação entre a engenharia de software e
a gestão de configuração e mudança.
Mostrar a relação existente entre a gestão de configuração
e a gestão de mudanças.
Modelar baselines, aplicar labels, recuperar artefatos na
gestão de configuração de modo a facilitar o gestão de
mudanças.
Mostrar as ferramentas de apoio usadas na gestão de
configuração e mudanças.
Projetar soluções corporativas utilizando a gestão de
configuração e mudanças.
Gestão de Configuração e Mudanças
41. Realizar a Modelagem de Negócio com o objetivo de
entender o contexto dos requisitos de sistemas de software.
Definição dos Cenários Operacionais, Nós Operacionais,
Capacidades e Processos.
Partição de processos de negócio pela identificação dos
eventos de negócio.
Coerência entre Evento, Processo, Dados e Estados.
Derivação os requisitos de sistemas a partir dos artefatos de
negócio.
Análise e Modelagem de Negócios
42. Construir e criticar arquiteturas de software para sistemas
corporativos, a partir de requisitos não-funcionais do sistema.
Entender como a concepção de arquitetura influencia no
processo de desenvolvimento de software e como usar
frameworks arquiteturais: Requisitos não funcionais, atributos de
qualidades e táticas para alcançar.
Criando a arquitetura utilizando ADD (Attribute-Driven Design).
Documentando arquiteturas utilizando visões arquiteturais.
Avaliação da arquitetura utilizando PoC (Proof of Concept),
Conceitos de Execução, ATAM (Architecture Trade-Off Analysis
Method), CBAM (Cost Benefit Analysis Method ) e QFD (Quality
Function Deployment).
Arquiteturas em linhas de produção. Modelos comuns de
arquitetura.
Arquitetura de Software
43. Motivar a utilização da gestão de configuração e mudanças.
Princípios de Qualidade de Processo de Software.
Aspectos de Qualidade de Software.
Visão Geral da maturidade de um processo de software: Modelos
existentes (CMMI, MPS.BR, ISO 9001 e ISO 9000-3).
Entender os principais aspectos de medição de maturidade de
processo do modelo CMMI por Áreas Chaves de Processo
(KPA´s).
Entender os principais aspectos de medição de maturidade de
processo do modelo MPS.BR.
Entender as principais diretrizes e requisitos de qualidade das
normas ISO 9001 e ISO 90003.
Como implementar Modelos de Maturidade.
Qualidade de Processo de Software
44. Introduzir a arquitetura de Sistemas Gerenciadores de Banco de Dados
e suas principais características (segurança, controle de concorrência,
integridade da informação).
Apresentar o Modelo Entidade-Relacionamento como ferramenta de
modelagem conceitual de bancos de dados e o mapeamento dessa
representação para o Modelo Relacional.
Discutir a implicação do uso de SGBD-s relacionais no
desenvolvimento de sistemas atuais, abordando em particular o uso da
UML para modelagem e o mapeamento objeto-relacional.
Modelagem de Banco de Dados
45. - Introduzir a visão multidimensional ao invés da visão tabular
derivada dos sistemas de processamento de transação,
permitindo que as informações sejam dispostas em diferentes
perspectivas, tornando a decisão mais natural, fácil e intuitiva,
auxiliando o tomador de decisão já que se pode verificar
tendências nos dados, ora utilizando de dados resumidos, ora
dados mais detalhados obtendo insight preciosos. Aprender
como desenvolver cubos OLAP através de uma ferramenta
atual e de grande demanda pelo mercado, baseando-se em
especificações de projeto.
Análise e Projeto Orientado a Objeto
46. -Apresentar os conceitos básicos de qualidadedo produto de
software.
- Analisar as diferenças entre garantia daqualidade do processo
de software X qualidade do produto de software.
- Apresentar as fases típicas de um processo estruturado de
qualidade do produto de software.
- Realizar um processode testes de software completo,
abrangendo desde a elaboração da estratégiade testes,
preparação dos casos de testes até o reporte dos defeitos
encontrados.
- Entender modelos de organização de testes(ex: fábrica de
teste) e os papéis e responsabilidades tipicamente
encontradosnestas estruturas.
Qualidade de Produto de Software
47. A partir de um modelo de análise orientado a objetos, resolver
problemas na concepção de projetos orientados a objetos
usando padrões e frameworks, entendendo os princípios que
os fundamentam: Introdução a Padrões de Projeto. Padrões de
Projeto clássicos (GoF).
Padrões Arquiteturais (Martin Fowler).
Frameworks de persistência e de teste unitário e outros
catálogos de padrões.
Padrões de Software
48. Apresentar técnicas de medição para referência da
qualidade e produtividade, através da utilização de
Análise de Pontos de Função (APF), Pontos por Caso
de Uso e o modelo paramétrico COCOMOII.
Métricas de Software
49. Introduzir o conceito de usabilidade e sua importância
para a qualidade de sistemas interativos.
Projetar interfaces humano-computador com boa
usabilidade, bem como a estruturar o processo de
desenvolvimento de forma a atingir esse objetivo.
Projeto de Interface Humano-Computador