******************************************** ********** ENG - Exercícios Extra ********** ******************************************** Data : 01/04/2004 Versão : 04/07/2007 Professor: Fabrício Jailson Barth Autor : Leandro Salvador ( leandrosalvador.com.br ) * Exercícios --------------------------------------------------------------------------- 1) A figura sobre as camadas da engenharia de software coloca 3 camadas (processos, métodos e ferramentas) sobre uma camada de qualidade. Isso implica um programa de organização da qualidade tal como de gestão de qualidade total. Pesquise e faça um esboço dos pontos-chave de um programa de gestão de qualidade total. - a estratégia básica na gestão da qualidade foi a utilização da estatística para a tomada de decisão, dando ênfase ao uso de dados numéricos - sete ferramentas para o controle estatístico de qualidade - Folha de Verificação - Estratificação - Diagrama de Pareto - Histograma - Diagrama de Ishikawa - Diagrama de Dispersão - Gráfico de Controle de Processos ou de Shewhart --------------------------------------------------------------------------- 2) Refletir sobre a importância de desenvolver software com método, levando em consideração, principalmente, os aspectos de: tamanho do software, manutenção do software e custo do desenvolvimento. - é necessário que se defina as necessidades do cliente e, a partir disso, projete-se o software para que atinja as expectativas - um software muito complexo, que exigirá manutenção futura constante para aperfeiçoá-lo, deve contar com uma documentação bem feita a fim de permitir que as equipes de desenvolvimento futuras tenham mais facilidade - um software pode ter prioridades que superam outras, como o custo de desenvolvimento, por exemplo; no caso em que o custo não é um limitador, é possível desenvolver-se com mais qualidade em maior ou menor tempo, a depender das necessidades e exigências do cliente - um software muito grande pode acabar sendo de difícil manutenção e o custo da mesma pode aumentar na mesma proporção, portanto, é importante que haja facilidade de interpretação do código quando um outro profissional precisar desenvolver sobre um código já existente, seja para implementar novas funções, seja para efetuar correções --------------------------------------------------------------------------- 3) O que é mais importante, o produto ou o processo? - produto e processo são partes fundamentais e igualmente importantes, cada uma com suas características - o processo é o meio, o produto é o fim - um processo com qualidade aumenta as chances de que um produto tenha qualidade (evidentemente não é uma implicação e a recíproca não é necessariamente verdadeira) --------------------------------------------------------------------------- 4) Quais dos ciclos de vida apresentados nesta aula você considera o mais efetivo? - os três ciclos de vida apresentados são - ciclo de vida clássico (ou linear ou em cascata) - ciclo de vida com prototipação - modelo espiral - o ciclo de vida clássico exige do cliente paciência e a declaração explícita de todas as exigências - o ciclo de vida com prototipação oferece maior garantia de sucesso técnico e psicológico, porém exige elevada capacitação gerencial por parte da equipe do projeto e, além disso, o cliente e o desenvolvedor podem achar que o protótipo já é o produto final - o modelo espiral é utilizado quando o cliente não sabe o que quer e o problema a ser resolvido não está totalmente entendido - considero o modelo espiral o mais efetivo porque permite que a realidade mude enquanto o sistema está sendo desenvolvido, ou seja, o sistema vai incorporando novas funcionalidades à medida que é compreendido e pode amadurecer ao longo do tempo, sem que o projeto sofra grandes impactos estruturais, uma vez que conceitualmente o modelo espiral não exige alto conhecimento do sistema por parte do cliente ou mesmo da equipe; esse conhecimento pode ser adquirido e incorporado ao sistema à medida que for absorvido --------------------------------------------------------------------------- 5) Além da contagem de erros, há outras características relevantes do software que implicam qualidade? Quais são elas? Podem ser medidas diretamente? - existem outras características relevantes do software que implicam qualidade, entre elas, podemos considerar - medidas diretas do processo - custo e esforço aplicado - medidas diretas do produto - linhas de códigos produzidas - velocidade de execução - tamanho da memória - defeitos registrados - medidas indiretas do produto - funcionalidade - qualidade - complexidade - manutenabilidade - métricas orientadas ao tamanho - projeto - esforço - custo - KLOC (1000 Lines Of Code) - páginas de documentação - erros - métricas orientadas à função - funcionalidade - algumas dessas características podem ser medidas diretamente - medidas diretas do processo - medidas diretas do produto - métricas orientadas ao tamanho - outras características são indiretas - medidas indiretas do produto - métricas orientadas à função --------------------------------------------------------------------------- ----------//----------