Beruflich Dokumente
Kultur Dokumente
Engenharia de Software
Prticas de
Engenharia de Software
Givanaldo Rocha de Souza
givanaldo.rocha@ifrn.edu.br
http://docente.ifrn.edu.br/givanaldorocha
Prticas de Comunicao
Antes de tudo, os requisitos so coletados por
meio de uma atividade de comunicao
chamada levantamento de requisitos.
Comunicao: princpios
Princpio 1: Escute
Concentre-se nas respostas do interlocutor;
Pea esclarecimentos quando algo estiver obscuro;
Evite interrupes constantes;
Evite sacudir a cabea, virar os olhos;
Evite influenciar a resposta do interlocutor.
Princpio 2: Prepare-se antes de se comunicar
Gaste tempo para entender o problema;
Se necessrio, pesquise para entender o jargo do negcio.
Princpio 3: Algum deve facilitar a atividade
Toda reunio deve ter um facilitador para:
Conduzir a conversa para que seja sempre produtiva;
Mediar possveis conflitos;
Garantir que os outros princpios sejam seguidos.
Comunicao: princpios
Princpio 4: Comunicao face a face melhor
Mas a apresentao de uma outra forma de comunicao
sempre bem-vinda. Por exemplo, um documento ou um
desenho.
Princpio 5: Faa anotaes e documente as decises
Algum que participe da comunicao deve anotar todos
os pontos e decises importantes.
Princpio 6: Busque colaborao
Procure fazer com que os membros da equipe faam
colaboraes, mesmo que pequenas, pois elas aumentam
a confiana entre os membros.
Princpio 7: Conserve-se enfocado, modularize sua discusso
O facilitador deve manter a conversa modular,
abandonando um tpico apenas depois que tiver sido
resolvido.
Comunicao: princpios
Princpio 8: Se algo no est claro, desenhe uma figura
Quando as palavras no conseguem deixar algo bem
esclarecido, normalmente, um desenho o faz.
Princpio 9: Quando concordar com algo, prossiga; quando
no concordar, prossiga; se algo no est claro e no pode ser
esclarecido no momento, prossiga
Prosseguir, s vezes, a melhor forma de conseguir
agilidade na comunicao.
Princpio 10: Negociao no um concurso ou um jogo.
Funciona melhor quando ambas as partes ganham
Muitas vezes, engenheiros de software e clientes precisam
negociar e a negociao exige compromisso de todos.
Prticas de Planejamento
Permitem equipe de software definir
um roteiro durante a execuo da
meta estratgica e dos objetivos
tticos;
A falta de planejamento algo que
pode levar um projeto ao caos;
Todos os membros da equipe de software devem participar do
planejamento.
Planejamento: princpios
Princpio 1: Entenda o escopo do projeto
O escopo fornece equipe de software um roteiro a seguir.
Princpio 2: Envolva o cliente na atividade de planejamento
O engenheiro de software precisa negociar com o cliente
ordem de entrega, prazos e outros itens do projeto.
Princpio 3: Reconhea que o planejamento iterativo
Quando o trabalho se inicia, provavelmente, haver
modificaes;
Modelos de processos iterativos e incrementais
determinam replanejamento, baseado em feedbacks.
Princpio 4: Estime com base no que se sabe
Estimar fornece uma base para se calcular o esforo, o
custo e a durao das tarefas.
Planejamento: princpios
Princpio 5: Considere riscos medida que se define o plano
O plano do projeto deve ser ajustado para acomodar a
probabilidade de um risco vir a ocorrer
Princpio 6: Seja realista
Omisses, ambiguidades e modificaes so comuns;
Existem falhas na comunicao entre as pessoas;
As pessoas no trabalham durante todo o dia.
Princpio 7: Ajuste a granularidade medida que o plano
definido
Granularidade fina fornece detalhes significativos de
tarefas incrementadas em um curto espao de tempo;
Granularidade grossa fornece detalhes significativos de
tarefas incrementadas em um longo espao de tempo.
Planejamento: princpios
Princpio 8: Defina como a qualidade ser garantida
Se revises tcnicas formais vierem a ser usadas, elas
devem ser definidas no cronograma;
Se a programao em pares vier a ser usada, isso deve ser
definido dentro do plano.
Prticas de Modelagem
Os modelos precisam representar os requisitos
em diferentes nveis de abstrao (do usurio
e do tcnico);
Na Engenharia de Software, existem duas
classes de modelos:
Modelo de anlise e;
Modelo de projeto.
O Modelo de Anlise representa os requisitos do cliente sob
trs domnios: domnio da informao, domnio funcional e
domnio comportamental;
O Modelo de Projeto representa caractersticas do software
que ajudam os profissionais a construir: arquitetura, interface
do usurio e componentes.
Princpios de Anlise
Princpio 1: O domnio de informao de um problema precisa
ser representado e entendido
O domnio da informao abrange os dados de
entrada/sada do sistema e os depsitos de dados.
Princpio 2: As funes a serem desenvolvidas pelo software
devem ser definidas
A descrio das funes pode ser de forma genrica ou
detalhada.
Princpios de Anlise
Princpio 4: Os modelos que mostram informao, funo e
comportamento devem ser particionados de um modo que
revele detalhes em forma de camadas
Dividir um problema complexo em subproblemas de modo
a torn-los mais fceis de se compreender.
Princpio 5: A tarefa de anlise deve ir da informao
essencial at os detalhes de implementao
Um problema descrito sem considerar como a soluo
ser implementada;
J os detalhes da implementao indicam como a soluo
ser implementada.
Princpios de Projeto
Princpio 1: O projeto deve estar relacionado ao modelo de
anlise
O modelo de projeto produz uma arquitetura com vrios
subsistemas e projetos em nvel de componentes.
Princpio 2: Sempre considere a arquitetura do sistema a ser
construdo
A arquitetura o esqueleto do sistema que ser construdo
e afeta:
Interfaces;
Estruturas de dados;
Fluxo de controle;
Forma como o software poder ser testado e;
Outros
Princpio 3: O projeto de dados to importante quanto o
projeto de funes de processamento
Um projeto de dados bem estruturado simplifica o fluxo do
programa, facilita a implementao de componentes e
otimiza o processamento global.
Princpios de Projeto
Princpio 4: As interfaces (internas e externas) precisam ser
projetadas cuidadosamente
Interfaces bem projetadas tornam a integrao mais fcil e
ajuda o testador durante a validao.
Princpio 5: O projeto de interface do usurio deve estar
sintonizado com as necessidades do usurio final. Mas, em
cada caso, ele deve enfatizar a facilidade de uso
Mesmo que uma arquitetura esteja bem projetada, se o
projeto de interface for pobre, geralmente, o usurio tem a
percepo de que o sistema ruim.
Princpio 6: O projeto em nvel de componente deve ser
funcionalmente independente
Um componente deve focar apenas uma funo ou
subfuno.
Princpios de Projeto
Princpio 7: Os componentes devem ser fracamente
acoplados uns aos outros e ao ambiente externo
medida que o acoplamento aumenta, a probabilidade de
propagao de erros tambm aumenta.
Princpio 8: Representaes de projeto (modelos) devem ser
facilmente compreensveis
Se o projeto for difcil de entender, ele no serve como um
meio de comunicao.
Princpio 9: O projeto deve ser desenvolvido iterativamente. A
cada iterao o projetista deve focar sempre a simplicidade
As primeiras iteraes refinam o projeto e corrigem erros;
Mas, as ltimas iteraes devem procurar tornar o projeto
o mais simples possvel.
Prticas de Construo
Contemplam um conjunto de tarefas de
codificao e de teste no software que
ser entregue ao usurio;
A codificao pode ser:
criao direta de cdigo-fonte;
gerao automtica de cdigo executvel.
O foco inicial do teste nos componentes, tambm chamado
de teste unitrio.
Outros tipos de teste so:
teste de integrao realizado enquanto o sistema est
sendo construdo;
teste de validao avalia se o sistema completo atende
os requisitos do cliente;
teste de aceitao conduzido pelo cliente a fim de
utilizar todas as funes necessrias.
Princpios de Codificao
Princpios de preparao: Antes de escrever
uma linha de cdigo certifique-se de:
entender o problema que est tentando
resolver;
entender os princpios e conceitos bsicos
do projeto;
escolher uma linguagem de programao que satisfaa s
necessidades do software a ser construdo e do ambiente
em que ele vai operar;
selecionar um ambiente de programao que fornea
ferramentas para facilitar o trabalho;
criar um conjunto de testes unitrios que sero aplicados.
Princpios de Codificao
Princpios de codificao: Quando comear a
escrever o cdigo, certificar-se de:
usar programao estruturada nos algoritmos;
escolher estruturas de dados que atendam
s necessidades do projeto;
entender a arquitetura do software e criar interfaces
consistentes com ela;
Princpios de Codificao
Princpios de validao: Depois de completar o
primeiro passo de codificao, certificar-se de:
inspecionar o cdigo adequado;
Princpios de Teste
O livro The Art of Software Testing (1979)
comenta sobre testes:
Teste um processo de execuo de um
programa com a finalidade de encontrar
erros;
Um bom caso de teste aquele que tem
alta probabilidade de encontrar um erro ainda no
descoberto;
Um teste bem sucedido aquele que descobre um erro
ainda no descoberto.
Princpio 1: Todos os testes devem estar relacionados aos
requisitos do cliente
Do ponto de vista do cliente, um erro severo aquele no
qual o programa no atende aos seus requisitos.
Princpios de Teste
Princpio 2: Os testes devem ser planejados
muito antes de serem iniciados
O planejamento de testes pode comear
assim que o modelo de anlise for concludo.
Princpio 3: O princpio de Pareto se
aplica ao teste de software
80% de todos os erros descobertos durante o teste
estaro, provavelmente, relacionados a 20% de todos os
componentes do programa.
Princpios de Teste
Princpio 4: O teste deve comear no
varejo e progredir at o atacado
Deve-se procurar identificar erros no
apenas em um componente, mas em
um conjunto deles.
Princpio 5: Testes exaustivos no so possveis
Dependendo da complexidade de um software,
impossvel realizar todas as combinaes de teste. Mas,
possvel, planejar os testes de modo a atender todos os
componentes do software.
Prticas de Implantao
Os modelos modernos de processo de
software so evolutivos e, assim, a
implantao ocorre mais de uma vez;
Cada ciclo de feedback, depois que o
software entregue, fornece equipe
diretrizes importantes que resultam em
modificaes no software;
A entrega de um incremento representa um marco importante
para qualquer projeto de software.
Implantao: princpios
Princpio 1: As expectativas do cliente quanto ao software
devem ser geridas
Frequentemente, o cliente espera mais do que a equipe
prometeu entregar e a frustrao imediata.
Princpio 2: Um pacote completo de entrega deve ser
montado e testado
Um CD, DVD ou outra mdia deve ser entregue ao cliente e
rigorosamente testado.
Princpio 3: Um regime de suporte deve ser estabelecido
antes de o software ser entregue
Planejamento do suporte;
Preparao de material.
Implantao: princpios
Princpio 4: Materiais institucionais adequados devem ser
fornecidos aos usurios finais
Treinamento adequado;
Descrever as diferenas do incremento de software em
relao verso anterior.
Princpio 5: Software defeituoso deve ser corrigido primeiro e,
depois, entregue
Os clientes esquecero que voc entregou um produto de
Referncias
PRESSMAN, Roger S. Engenharia de Software. Mc Graw Hill, 6
ed, Porto Alegre, 2010.
SOMMERVILLE, Ian. Engenharia de Software. Pearson, 9 ed,
So Paulo, 2011.