Escolar Documentos
Profissional Documentos
Cultura Documentos
Documentao
Prof Srgio Murilo Schtz,Msc. 1 Semestre/2012
Introduo
Necessidade ou preciosismo? A Qualidade de software, uma dificuldade e o desejo de qualquer desenvolvedor, extremamente necessria e auxilia na reduo de horas preciosas na correo de problemas e na satisfao do cliente. Neste primeiro momento, vamos ver o que a Qualidade de um sistema, suas elementos principais e tambm as ferramentas que auxiliam desenvolvedores a fazer desta uma tarefa primordial e produtiva.
Introduo
Para atingir uma boa qualidade, fundamental a criao de documentao tcnica, sendo uma parte aterrorizante para se enfrentar em todo o processo de criao de um software, seja pela necessidade de escrever vrias e vrias pginas de texto, grficos e desenhos ou ainda pela necessidade de largar aquilo que se aprendeu (programar) para fazer aquilo que no sabe bem (redigir),mas que compromete diretamente a qualidade final do software. .
Introduo
Entretanto a documentao parte integrante de qualquer sistema ou programa criado. Arrisco a dizer inclusive que a documentao to importante (ou mais) que as questes de segurana pois sem a devida documentao, bug's e pontos vulnerveis no sistema demoram a ser encontrados e corrigidos, permitindo assim que os ataques continuem levando falncia mltipla do sistema e, conseqentemente, de seu usurio.
Introduo
Normalmente, em grandes corporaes existem pessoas e/ou equipes voltadas nica e exclusivamente para a criao de documentao, sendo que o desenvolvedor fica restrito codificao e comentrios de seu cdigo. J no mundo "real", esta atividade realizada pelo prprio desenvolvedor e demanda um bom conjunto de horas para planejar e criar cada uma de suas partes a fim de atender minimamente as necessidades do produto desenvolvido.
Introduo
Ento, como no possvel evitar a criao da documentao tcnica, para que possamos ter qualidade em um software, ento a forma de amenizar um pouco sua horrvel aparncia usando ferramentas que auxiliam na tarefa de domar o monstro. Mas o que documentao de um sistema/software?
Documentao, o que ?
A documentao de um software composta por vrias partes diferentes que abrangem todo o sistema e pode ser dividida em dois grandes grupos: documentao tcnica e documentao de uso. A primeira voltada ao desenvolvedor ou pessoa de TI e compreende principalmente dicionrios e modelos de dados, fluxogramas de processos e regras de negcios, dicionrios de funes e comentrios de cdigo.
Documentao, o que ?
J a documentao de uso voltada tanto para o usurio final quanto para o administrador do sistema e, comumente, formada por apostilas ou manuais que apresentam como o software deve ser usado, o que esperar dele e como receber as informaes que se deseja.
Documentao, o que ?
A primeira parte (tcnica) , para o desenvolvedor, a mais simples pois, literalmente, descreve seu trabalho e tambm utilizada pelo mesmo como ferramenta para o desenvolvimento de um bom cdigo. J a segunda costuma ser um martrio pois a redao de manuais, insero de screenshots, desenhos e outros elementos grficos no aquilo que podemos considerar como skill deste profissional (so raros os que possuem).
Documentao, o que ?
Ambas podem ser criadas em vrios formatos de visualizao tais como pginas HTML, documentos PDF, apresentaes, vdeos ou ainda arquivos texto. A forma de apresentao no importa. O importante saber que para cada tarefa existe uma ferramenta certa, inclusive para a documentao de sistemas em qualquer nvel de complexidade ou necessidade e que precisa ser feita, de uma forma ou de outra.
As ferramentas para documentao Aproveitando a diviso da documentao em duas grandes reas, vamos conhecer suas partes e algumas ferramentas que ajudam e/ou facilitam aqueles que tem pela frente a tarefa de gerar documentao de sistemas.
Modelos de dados Modelos de dados so aquelas folhas com vrias caixinhas das tabelas de um banco de dados interligadas e que muitas vezes somente so utilizadas para decorao de escritrios. Mas longe de ser um quadro ou pster, o modelo de dados reflete de uma forma grfica (e lgica) a base de dados de um sistema, seus relacionamentos, entidades, chaves e tudo aquilo que referente aos dados em si.
Modelos de dados Este modelo, junto com o dicionrio de dados, pea fundamental para o desenvolvimento de um sistema, sendo inclusive pensado e criado ANTES do incio do desenvolvimento. Um bom modelo de dados bem pensado e bem estruturado no impacta somente em um bom cdigo, mas tambm na performace da aplicao com um todo e na reduo de horas de desenvolvimento equivocado.
Modelos de dados Para cri-lo so utilizadas ferramentas de modelagem de dados, as quais geram de forma grfica as tabelas, ndices, relacionamentos e tudo aquilo que tem a ver com a base de dados em si, podendo ser criados por meio de engenharia reversa ou ainda baseando-se nas necessidades do aplicativo que est sendo desenvolvido.
Modelos de dados As ferramentas mais conhecidas para modelagem de dados dentro do mundo livre so o DBDesigner (http://www.fabforce.net), MySQL Workbench (http://www.mysql.com) e tambm o PGDesigner (http://pgdesigner.sourceforge.net), as quais possuem funcionalidades diferentes e dispem de verses tanto para Linux quanto para Windows. .
Dicionrio de dados Como o prprio nome sugere, o dicionrio de dados nada mais que um arquivo ou documento que define a organizao bsica dos dados do banco. Nele so informadas as tabelas, os campos, suas definies, tipos e descries (para que serve este campo?). Um exemplo simples de um dicionrio de dados pode ser visto a seguir:
Dicionrio de dados
Com um arquivo destes, mesmo simplrio, em conjunto com o modelo de dados, a possibilidade de erro na hora do desenvolvimento fica extremanente reduzida, quando falamos de acesso dados na base, alm de economizar neurnios que muitas vezes esto sendo usados para armazenar a informao que o campo varCodSysFil01 o cdigo de uma filial.
Fluxogramas
To antigos quanto a computao, os fluxogramas apresentam graficamente a sequncia lgica das informaes de um processo ou sistema, utilizando para isso vrios elementos de geometrias diferentes que indicam cada uma das partes do processo. Sua importncia, mesmo deixada de lado, grande pois a partir dele (e conjuntamente com o modelo e dicionrio de dados), inicia-se o projeto de um sistema eficiente e bem desenvolvido.
Fluxogramas
Da mesma forma que o modelo de dados, fluxogramas so muitas vezes (mas no deveriam) utilizados como psters de escritrio. Eles so mais que isso: visualmente conseguem passar a lgica de todo um sistema desde os nveis mais altos de processamento at pequenas partes, permitindo assim uma viso geral do que realmente precisa ser feito dentro do sistema. Um exemplo de um fluxograma pode ser visto a seguir:
Fluxogramas
Para criar fluxogramas, as mais conhecidas ferramentas so: DIA (http://www.gnome.org/projects/dia) e o OpenModeling (http://www.openmodeling.info), ambas disponveis em vrias plataformas e livres. http://s2i.das.ufsc.br/docs/s2idoc/index.html
Exerccio Construir um fluxograma apresentando as etapas de desenvolvimento de Software desde a anlise de requisitos at a documentao e implantao, especificando com mais detalhes a Documentao.
Documentao de cdigo
Para muitos, a parte mais chata. Para outros, a mais importante. A documentao de cdigo feita basicamente de duas formas: comentrios dentro do prprio cdigo e gerao de documentao online (ou fsica). No primeiro caso normalmente o desenvolvedor acredita que sua memria nunca ir falhar e que somente ele ir colocar a mo no sistema, deixando de document-lo e gerando problemas gigantescos para si e para outros profissionais. Um conjunto de comentrios bem feito to importante quanto uma lgica bem estudada.
Documentao de cdigo
Funes, constantes, incluso de arquivos, campos de tabelas e outros elementos sempre proliferam de forma exponencial dentro do sistema, o que leva na maioria das vezes o desenvolvedor a simplesmente criar novos "remendos" com constantes "adicionais" ou variveis novas, pois no se recorda onde est aquela funo que formata determinado campo (quem no passou por isso?). Um pequeno exemplo de um cdigo bem comentado pode ser visto a seguir:
Documentao de cdigo
$database->setQuery( $query ); $rows = $database->loadObjectList(); // establish the hierarchy of the menu $children = array(); // first pass - collect children if ($rows) foreach ($rows as $v ) { $pt = $v->parent; $list = @$children[$pt] ? $children[$pt] : array(); array_push( $list, $v ); $children[$pt] = $list; } // second pass - get an indent list of the items $list = mosTreeRecurse( 0, '', array(), $children, max( 0, $levellimit-1 ) ); // eventually only pick out the searched items. if ($search) {
Documentao de cdigo Observe que no so necessrias dezenas de linhas de comentrios para compreender o que determinada rea do sistema executa. Mas se estas simples linhas forem deixandas de lado, alm de gerar um gasto desnecessrio de horas procura de erros, aumenta-se o nvel de estresse de todos que iro mexer no cdigo e principalmente de quem paga por ele.
Documentao de cdigo
Para a criao de documentao de cdigo online so utilizadas ferramentas que, baseadas nos comentrios existentes dentro do cdigo, permitem a gerao de documentos que efetivamente explanam o sistema de forma macro, relacionando arquivos que so includos em outros, funes, seus parmetros e retornos, constantes e uma infinidade de informaes que auxiliam qualquer desenvolvedor a compreender o que aquele "monstro" nascido de suas mos.
Qualidade
luxo, classe e elegncia. Produtos caros e complexos tm melhor nvel de qualidade. Confiabilidade e o nmero de reparos efetuados no so considerados.
Definies
Qualidade :
A totalidade das caractersticas de uma entidade que lhe confere a capacidade de satisfazer as necessidades explcitas e implcitas. sabor aparncia temperatura rapidez no servio preo higiene valor nutricional
Ex: Qualidade de um prato de comida est relacionado com a satisfao das necessidades:
Para a emisso de certificado, preciso a realizao de todo um processo de avaliao e julgamento de acordo com uma determinada norma. INMETRO - orgo do governo responsvel pelo credenciamento das instituies que realizam a certificao.
1900 - Inspeo ps-produo - avalia o produto final. 1940 - Controle estatstico da produo. 1950 - Avaliao do procedimento de produo. 1960 - Educao das pessoas. 1970 - Otimizao dos processos. 1980 - Projeto robusto - avaliao do processo. 1990 - Engenharia Simultnea - avalia a prpria concepo do produto.
Qualidade de Software
Perspectiva Histrica da Engenharia de Software: anos 60 - Era Funcional anos 70 - Era do Mtodo anos 80 - Era do Custo anos 90 e depois - Era da Qualidade Qualidade no um fator de vantagem no mercado, mas
uma necessidade para a garantia da competitividade.
Planejamento de qualidade Melhoria no processo e controle de qualidade Gerenciamento de qualidade no processo Anlise de dados sobre a satisfao do cliente
Conformidade aos requisitos de desempenho e de funcionalidade que foram explicitamente definidos, aos padres de desenvolvimento explicitamente documentados e s caractersticas implcitas que so esperadas por todo software desenvolvido por profissionais.
Mesmo diante de divergncias, o fato que o processo influi nas caractersticas finais do software.
N R1 5 6 B 39 IS 1 5 8 O 49 IS 1 1 9 O 21 IS 1 2 7 O 20
S IC P E IS 1 5 4 O 50
IS O
O que qualidade de software? Que padres utilizar? Parece difcil ... Muito se tem pensado sobre isso:
ISO/IEC 9126 - publicada em 1991. NBR 13596 - publicada em agosto de 1996
Listam um conjunto de caractersticas que devem ser verificadas em um software para que ele seja considerado um software de qualidade
U b ae sa ilid d (f d u r? cil e sa )
E fici cia n (R p o e e xu ) id n to
T mo e p R cu s e rso
Como aplicar a norma ISO 9126/ NBR 13560? Para avaliar um software segundo a norma deve-se tentar atribuir valores (notas ou conceitos) a cada uma das subcaractersticas. Fato: difcil aplicar a norma sem se estar familiarizado com o processo de avaliao de software. Guias para a avaliao da qualidade - descrevem, detalhadamente todos os passos para se avaliar um software.
Processo de Software = conjunto de ferramentas, mtodos e prticas usadas para produzir um software.
Para melhorar a qualidade no desenvolvimento precisa-se de modelos de processos para a descrio precisa e formal das atividades do ciclo de vida do software. Modelo de Processo representado por um conjunto seqencial de atividades, objetivos, transformaes e eventos que encapsulam estratgias para o cumprimento da evoluo do software
Para a evoluo do processo de software necessrio ter uma maneira para med-lo.
Modelo Capability Maturity Model (CMM) ISO 9000-3 Projeto SPICE Modelo PSP (Personal Software Process) Projeto SQUID, etc
ISO 9000-3
Guia para a aplicao da ISO 9001 para o desenvolvimento, fornecimento e manuteno de software, criado em 1993. Especifica requisitos mnimos para assegurar a qualidade de produtos e servios, no definindo modelos ou impondo sistemas de qualidade.
SPICE - Introduo
Motivao
Mortalidade dos trabalhos de padronizao
SPICE - O que ?
SPICE - Aplicao
Aplicado para organizaes envolvidas com qualquer atividade relacionada s atividades de computao A Avaliao examina o processo e determina a efetividade deste Resultados podem usados para
Auto-Avaliao Melhoria do processo
Documentos do SPICE
O SPICE composto por 9 partes:
parte 1: Conceitos e Guia Introdutrio parte 2: Modelo de Gerenciamento de Processo parte 3: Avaliao do Processo parte 4: Guia para Conduo de uma Avaliao parte 5: Construo, Seleo e Uso das Ferramentas de Avaliao parte 6: Qualificao e Treinamento dos Avaliadores parte 7: Guia para o Processo de Melhoria parte 8: Guia para Orientao da Determinao da Capacidade do Processo parte 9: Dicionrios
Quadro Comparativo
A p c o I O9 0 s e t s S 0 03 C M S I M ( E)
e if a e A o d g m V r ic od br ae c no m a e o f r id d d p o e s sa e r c so p d s ar e d c mn a o . ou e t d s C s if a d so g n a s la s ic o a r a iz e e n e d mt r a e m v is e a u id d c e c ne r set .
SI E PC
A a od s v lia o p o e s sc m r c so o o o j t od be iv e d t r in r a eem a c p c a d a a it o a og n a e r a iz o p o o mlh r . r p r e o ia D t r in r a eem a c p c a d a a it o a og n a e r a iz o a o r s ae o o p ia u v lu d a od c m s e cro o o oj t o d be iv s a og n a . r a iz o Og n a se r a iz e m g r l. ea
Mt / ea Oj t o be iv
C r if a a e t ic r og n a d r a iz o e a od c m s cro o o p d s ar e e t b le id s sa e c o .
E pe a mr s s A o lv
Og n a s r a iz e Og n a sd g a d p r e r a iz e e r n e o t q en c s it m q en c s it m eu a u ees a u ees a d m d u a e m c r if a . e t ic o c r if a . e t ic o
Quadro Comparativo
Ap co s et s I O9 0 S 0 03 C M M ( E) SI
E t b le e sa e c 1 po e s s 8 r cso og n a o r a iz d s e 5n e . m v is
SI E PC
E t b le e sa e c 3 5 po e s s r cso og n a o r a iz d s e 5 m ctgr s a e o ia .
N oe t b le e sa e c D fin s e i e r c so, d Po e s s po e s s e r c so
N oa m e d it aato d pa .
Aat vl d p e as o o je iv s d b t o a og n a r a iz o . Qet nr . F r ee u s io io o n c o ie t e r na s p r m na aa o t r q et nr u s io io .
A e s sp cto
In ira o sp e In cia flu n
IS 9 0 -3 O 00
N rm s m re o a ilita s a e n s, m rica a ca a e se n d n s, siste a d ms e q a a ed u lid d o R in U id . e o n o D s e te sa ifu o x n ; R co h cim n e n e e to d v lo d o a r a ce rtifica o . R isco d se e co ca a lo r C rtifica o e co o o je o m b tiv p cip l. rin a A s cia d u n e a o m lh ria p io e o co tn a F co n u. o e clu o n x siv o p ce . ro sso
C M(S I) M E
S IC P E
B n fcio ee s
P cp s d rin io e T MP C , Q , DA S e a Dm g C M h w rt, e in , M , Ju n C sb . ra , ro y T IL IU , R L M M lco a lm B ld e a rig , Bo o tstra . p E b le e to E p n o e sta e cim n x a s d u ro iro p ra fle ib e m te a x iliza o a m lh ria e o d s m d lo o oe s co tn a n u. cita o d s. Pu o ca co sid ra o n e d e iv rsid d d s ae a o a iza e rg n s. D ificu a e d ld d e a lica o e p m pqea euns o a iza e rg n s. F co e clu o n o x siv o p ce . ro sso D ificu a e d ld d e a lica o p d v o e id g ne ra d q a tid d d un ae e in rm s. fo a e F co e clu o o x siv n p ce . o ro sso
L ita e im s
Concluses
Dos mtodos de avaliao de processo apresentados, alguns esto estabelecidos no mercado (CMM), e outros apresentam projetos ambiciosos a nvel mundial (SPICE). Dentre estes, existem modelos que alm de avaliar o processo de desenvolvimento propem algum mecanismo para melhoria do processo.
Concluses
No existe um modelo ideal de avaliao de qualidade que seja aplicvel indistintamente s organizaes, abrangendo os diversos objetivos que elas tem em relao a qualidade. A qualidade de software no garantida somente pela qualidade de processo, mas tambm pela garantia de qualidade do produto final. A maior preocupao deve ser sempre a satisfao do usurio final.
Alguns endereos na Web: http://www.sei.cmu.edu/cmm/cmm.html http://www.ISO_online.com Outras normativas qualidade CMMI - MPSBR