Palestra Eng. de Software - Presentation Transcript
ENGENHARIA DE SOFTWARE
MÉTODOS, TÉCNICAS E REALIDADE
DEI-FCTUC, 21 Outubro 2009
2
Nuno Seixas
MSE 2008 Carnegie Mellon University | Universidade de Coimbra
CMMI Authorized Instructor
Certified SCRUM Master
Process Engineer @ PT Inovação
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
Tópicos
3
Processos de Desenvolvimento de Software
Porquê usar
Como usar
Principais metodologias de desenvolvimento
Métodos Ágeis
SCRUM
XP
Métodos Prescritivos
PSP/TSP
Melhorias de Processo
Modelo CMMI
Métodos nas empresas
Perguntas & Respostas
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
4
Processos de Desenvolvimento de
Software
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
Processos de Desenvolvimento de Software
5
Process – a sequence of steps performed for a given
purpose (IEEE)
Process – the logical organization of people, materials,
energy, equipment, and procedures into work activities
designed to produce a specified end result (From Pall,
Gabriel A. Quality Process Management. Englewood
Cliffs, N.J.: Prentice Hall, 1987.)
Process – activities that can be recognized as
implementations of practices in a model (CMMI glossary)
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
Processos de Desenvolvimento de Software
6
Noção de Processo aplicado ao desenvolvimento de
software?
Qual o vosso processo?
Como foi definido?
Como é mantido?
Como é melhorado?
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
Processos - Porquê usar
9
2009 Standish CHAOS Report
(http://www1.standishgroup.com/newsroom/chaos_2009.php)
32% dos os projectos entregues no prazo, custo e
funcionalidades acordadas;
44% dos projectos tiveram problemas num dos 3
pontos;
24% dos projectos falharam completamente, sendo
mesmo cancelados;
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
Processos - Porquê usar
10
Estaremos a produzir software com qualidade?
O que é software com qualidade?
Qualidade Externa
Qualidade Interna Prazo
O que é um projecto com sucesso?
Scope Custo
E a satisfação do cliente?
Incorporação da mudança, flexibilidade
Verificação VS. Validação
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
Processos - Porquê usar
11
Premissa da qualidade baseada em processo
A qualidade de um produto é altamente influenciada
pela qualidade do processo para o seu desenvolvimento,
manutenção e suporte.
PEOPLE
TECHNOLOGY
PROCESS
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
Processos – Porquê usar
12
Processos Ad-hoc
Previsões muito complicadas e irrealistas;
Subprocessos dependentes exclusivamente das pessoas;
Se uma pessoa falta, todo o projecto sente;
Gestão baseada na reacção .
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
Processos - Como usar
13
Utilizar processos definidos
Existe uma infraestrutura de suporte aos processos
O processo está definido, documentado e é seguido
Todos sabem como fazer o seu trabalho
A melhoria contínua está presente no dia a dia
Colocando na prática:
O documentado é consistente com a prática.
Resultados não apenas dependentes nas pessoas.
Resultados e processos são medidos.
Skills são aumentados, novos colaboradores são orientados e
melhoria é constante
Uso de tecnologias e ferramentas é orientado e realista
Transição para novas tecnologias é seguida e monitorizada
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
Processos - Como usar
14
Benefícios obtidos
Não há necessidade de re-inventar a roda;
A organização não sobrevive à custa de heróis;
Tecnologia seleccionada com base nos objectivos de
negócio;
Existem guias para implementação de mudanças (i.e.,
regra 80/20);
Lições aprendidas evitam erros;
Experiência aprendida permite a evolução da
organização;
Gestão mais flexível;
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
Processos - Como usar
15
Alguns princípios:
“In god we trust, all others bring data”, Edwards Deming
Adaptar os processos às necessidades do negócio e não
ao contrário
“There is no silver bullet”, Fred Brooks
Identificação de objectivos de negócio
Confiar nas pessoas: quando existem problemas, tentar
entender o porquê – problemas no processo, na equipa, no
projecto?
Modo de actuação: medir, adaptar, medir, adaptar
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
16
Principais metodologias de
desenvolvimento
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
Principais metodologias de desenvolvimento
19
Princípios básicos:
Não existe um método óptimo para responder a todos
os tipos de projecto, em todos os domínios
Todos os métodos são baseados em abstracções e
retirada de informação
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
Métodos Ágeis
25
Agile Processes
From Agile Alliance
XP RUP
Scrum Dynamic Systems
Crystal Develop Method
Feature Driven Adaptive Software
Open Source Software Develop
Develop Synch and stabilize
Agile Modeling
Pragmatic Programming
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
Métodos Ágeis - SCRUM
26
SCRUM (Formação espontânea em rugby)
Metodologia de GESTÃO de PROJECTOS
Product Backlog como base de todas as funcionalidades a
implementar (story)
Compreende várias iterações (sprints)
Cada Sprint contém:
Sprint Backlog
Planeamento
Desenvolvimento
Release
Papéis:
Product Owner
Scrum Master
Team Member
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
Métodos Ágeis - SCRUM
27
Imagem retirada de: http://scrum.dk/about_scrum
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
Métodos Ágeis - SCRUM
28
Pressupostos
Equipa muito coesa e pequena;
Equipa capaz de se auto organizar;
Cliente muito próximo e participativo;
Dificuldades
Papel crítico da comunicação;
Exigências de documentação formal;
Necessidade de alto nível de disciplina da equipa;
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
Métodos Ágeis – eXtreme Programming
30
eXtreme Programming (XP)
Metodologia de desenvolvimento ágil;
Metodologia focada em práticas de engenharia;
Ciclos de desenvolvimento muito curtos (timeboxing);
Releases muito frequentes;
Incorporação da mudança e não gestão da mudança;
Pair Programming;
Testes unitários a todo o código;
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
Métodos Ágeis – eXtreme Programming
32
4 Actividades de Base
Codificar
Código como principal artefacto
Testar
Testes unitários
Testes de aceitação
Escutar
Escutar o que o cliente realmente precisa
Escutar a própria equipa
Desenhar
Definição da estrutura do sistema
Refactoring em qualquer altura
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
Métodos Prescritivos
34
Métodos de desenvolvimento de software
Papéis bem definidos
Actividades definidas e prescritivas
Exemplos:
TSP
RUP
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
Métodos Prescritivos - PSP/TSP
35
TSP = Team Software Process
PSP = Personal Software Process
Defined framework - Scripted
Cyclic, iterative
Standard measures for quality and performance
Precise data collection- on almost everything
Established Roles
Discipline and guidance
Post Mortem each cycle – find the problems
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
Métodos Prescritivos - PSP/TSP
36
Ciclo de TSP
1- Strategy
2- Plan
3- Requirements
4- Design
5- Implementation
6- Test
7- Postmortem
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
Métodos Prescritivos - PSP/TSP
37
Pontos favoráveis
Muito bem estruturado
Scripted
Bem definido
Útil para novas equipas, ou não estruturadas
O Software Engineering Institute (SEI) tem dados de mais de
20 projects
Pontos problemáticos
Não tolerante à mudança
Falta de flexibilidade
Não lida bem com alteração a requisitos
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
38 Melhorias de Processo
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
Melhorias de Processo
39
Várias Frameworks de melhoria
CMMI
SPICE (ISO/IEC 15504)
Vantagens
Permite diagnóstico inicial (onde estamos)
Permite definir objectivos (onde queremos chegar)
Permite definir que caminho tomar (por onde vamos)
A ter atenção:
Necessário evitar que se procure uma “certificação” pelo
autocolante
Uso desapropriado pode ser problemático para o negócio
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
Modelo CMMI
40
Capability Maturity Model Integration
Modelo, composto por um conjunto de boas práticas
retiradas da indústria, proposto pelo Software
Engineering Institute (SEI)
Actualmente na v1.2 (Agosto 2006);
Preparação da v1.3 (Final de 2010);
Baseada em várias iniciativas anteriores de melhoria
de processo (CMM);
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
Modelo CMMI
41
Composto por 22 Process Areas
Causal Analysis and Resolution (CAR)
Configuration Management (CM)
Decision Analysis and Resolution (DAR)
Integrated Project Management +IPPD (IPM+IPPD)
Measurement and Analysis (MA)
Organizational Innovation and Deployment (OID)
Organizational Process Definition +IPPD (OPD+IPPD)
Organizational Process Focus (OPF)
Organizational Process Performance (OPP)
Organizational Training (OT)
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
Modelo CMMI
42
Composto por 22 Process Areas
Product Integration (PI)
Project Monitoring and Control (PMC)
Project Planning (PP)
Process and Product Quality Assurance (PPQA)
Quantitative Project Management (QPM)
Requirements Development (RD)
Requirements Management (REQM)
Risk Management (RSKM)
Supplier Agreement Management (SAM)
Technical Solution (TS)
Validation (VAL)
Verification (VER)
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
Modelo CMMI
49
Foco na Institucionalização
“The way things are done in here”
“O real processo das equipas”
“O processo utilizado nas alturas de crise, quando não
há espaço para desperdício”
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
50 Métodos nas Empresas
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
Métodos nas empresas
51
Relembrando
“There’s no silver bullet”
Métodos devem estar ligados aos objectivos de
negócio
Métodos devem ser adoptados e ajustados pelas
equipas
Imposição de métodos baseada apenas em hierarquia
não resulta
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
Métodos nas empresas
52
Organizações necessitam de visão conjunta
Project Management Office (PMO)
Software Engineering Process Group (SEPG)
Enterprise Agile (Scrum of Scrums)
Enterprise Lean
Necessária adaptação
Ajuste à realidade
Ajuste aos objectivos de negócio
Ajustes baseadas em medidas
Engenharia de Software | Nuno Seixas | nseixas@gmail.com
0 comments
Post a comment