You are on page 1of 15

RO OC CE ES SS SO OD DE ES SO OF FT TW WA AR RE E:: U UM MA AV VIIS S O OG GE ER RA AL L 2 P 2 PR

Inicialmente, esse captulo introduzir os conceitos sobre tecnologia de processo de software, os ambientes de desenvolvimento de software e implementao de software centrados em processo, alm da definio de processo de software.

2 2..1 1T TE EC CN NO OL LO OG GIIA AD DE EP PR RO OC CE ES SS SO OD DE ES SO OF FT TW WA AR RE E
Um processo de software formado por um conjunto de passos de processo parcialmente ordenados, relacionados com conjuntos de artefatos, pessoas, recursos, estruturas organizacionais e restries e tem como objetivo produzir e manter os produtos de software finais requeridos [Reis 98]. Os passos que executam um processo podem ser classificados como atividades ou tarefas. As do incio so as mais bem gerenciadas, no entanto, as do final so as elementares, que acertadas levam execuo de uma atividade. O objetivo das atividades gerar ou modificar um certo conjunto de artefatos. As atividades podem tambm possuir relacionamentos entre si, estando associadas com papis, ferramentas e artefatos. Elas tanto podem ser executadas por pessoas, com o suporte de ferramentas, quanto por aplicaes de maneira totalmente automatizada, sem a interveno humana. Cada artefato um produto que pode ser criado ou alterado durante um processo. Ele resulta de uma atividade e pode ser usado posteriormente
16

como base para a mesma ou para outra atividade com o intuito de gerar novos produtos. O modelo de processo de software a descrio abstrata do processo de software. As informaes de quem, quando, onde e por que os passos so realizados, devem tambm ser integrado ao modelo de processo de software [Reis 03]. Um modelo de processo pronto para a execuo um modelo de processo instanciado ou processo executvel. Portanto, segundo [Pressman 02], um projeto a instncia de um processo, com objetivos e restries especficos.

2 2. .2 2A AM MB BI IE EN NT TE ES S D DE E D DE ES SE EN NV VO OL LV VI IM ME EN NT TO O D DE E S SO OF FT TW WA AR RE E C CE EN NT TR RA AD DO OS S E EM MP PR RO OC CE ES SS SO O
A definio de Ambiente de Desenvolvimento de Software (ADS) decorreu do fato em que o reconhecimento da comunicao e da coordenao entre todas as ferramentas CASE (Computer-Aided Software Engineering Engenharia de Software Auxiliada por Computador), utilizadas no processo de desenvolvimento e manuteno de software so essenciais para a aquisio de produtos de qualidade. Saber como as ferramentas so definidas, desenvolvidas, adaptadas e integradas tem sido o ponto-chave desta rea de conhecimento. Segundo [Reis 00a], um ADS tem por principal objetivo promover um ambiente onde produtos de software que so de grande porte possam ser desenvolvidos atravs da integrao de um conjunto de ferramentas que
17

suportam mtodos de desenvolvimento, apoiados por uma estrutura que permite a comunicao e cooperao entre as ferramentas. E assim, a evoluo dos ADS prosseguiu com a utilizao de vrias tecnologias, tais como: processo de software, sistemas distribudos, inteligncia artificial, banco de dados no convencionais, suporte ao trabalho coorporativo, padres de integrao, tcnicas de gerncia de projeto, entre outras. Os ADS tiveram uma evoluo significativa com a tecnologia de processo de software. Os ADS mais recentes incorporaram a automao do processo de software o que os tornaram ADS centrados em processos (ou orientados a processo). Conhecido na literatura como PSEE ProcessCentered Software Engineering Environment. Tais ambientes formam uma nova gerao de ADS, os quais suportam alm da funo de desenvolvimento de software, tambm as funes associadas de gerncia e garantias da qualidade durante o ciclo de vida do software. Um ADS centrado em processo baseia-se em uma definio explcita do processo de desenvolvimento de software. Por isso o processo de software utilizado na organizao deve estar formalizado e ser obedecido. As aes dos ADS centrados em processos ocorrem de forma mais abrangente no desenvolvimento de software. Segundo [Reis 00a], as funes gerais que podem ser suportadas por um ADS centrado em processo so: E Enge enha ar ri a a de e P Pr ro oc ce esso os: definio e manuteno de modelos de processo de software. O ADS deve prover facilidades de definio, anlise e simulao de processos;

18

E En ng ge en nh ha ar ri ia a d de e S So of ft tw w a ar re e: desenvolvimento e manuteno de um

produto de software atravs do seguimento de um processo de software; G er r n nc ci ia ad de eP Pr ro oj je et to os s: coordenao e monitoramento das atividades da Ge engenharia de software a fim de garantir que o processo est sendo seguido.

2 2. .3 3I IM MP PL LE EM ME EN NT TA A O OD DE EP PR RO OC CE ES SS SO OD DE ES SO OF FT TW WA AR RE E
No uma tarefa trivial mudar o processo de desenvolvimento de software de uma empresa e, quase sempre, leva-se muito tempo para se observar os resultados. [Balduino 02] diz que adotar uma nova ferramenta de desenvolvimento diferente, pois basta instal-la, entender o manual do usurio e seguir as instrues de um tutorial. Ou quem sabe ainda fazer um curso sobre ela, levando horas ou talvez dias para realizar isso. Porm, modificar o processo de desenvolvimento de software de uma organizao afeta a maneira como os indivduos trabalham, vem, e do valor ao resultado de seu trabalho. No entanto, ter uma mudana no processo de uma organizao provoca um impacto muito maior sobre os indivduos que a compe do que apenas uma mudana na tecnologia. No entanto, ter uma mudana desse tipo no se faz da noite para o dia. Deve-se ter o maior cuidado para sempre se fazer um planejamento e um gerenciamento com relao s mudanas. Pode-se obter uma implementao mais adequada fazendo-se valer de uma abordagem de adoo gradual do processo de desenvolvimento e ferramentas de apoio, no qual cada passo seja planejado, executado e avaliado com critrio.

19

Os quatro passos distintos mostrados a seguir descrevem, sob o aspecto da engenharia de software, como se d a implementao de um novo processo em uma empresa de desenvolvimento de software.

F Fi ig gu ur ra a2 2-1 1:: P Pa as ss so os sp pa ar ra ai im mp plle em me en nt ta ar rp pr ro oc ce es ss so oe em mu um ma ae em mp pr re es sa a[ [O Olliiv ve ei ir ra a0 05 5] ]

2 2. .4 4D DE EF FI IN NII O OD DE EP PR RO OC CE ES SS SO OD DE ES SO OF FT TW WA AR RE E
Um processo de software segundo [Humphrey 89] o conjunto de tarefas de engenharia de software necessrias para transformar os requisitos dos usurios em software. Na definio de um processo de software devem ser consideradas as seguintes informaes: atividades a serem realizadas, recursos utilizados, artefatos consumidos e gerados, procedimentos adotados, paradigma e tecnologia adotados, e o modelo de ciclo de vida utilizado [Falbo 98]. Entender melhor as atividades executadas por todos os membros da mesma equipe permitido pelo trabalho organizado de profissionais de

20

engenharia de software que possuem em sua organizao um processo de software definido [Humphrey 89]. Definir processos que sejam genericamente aplicados ao vasto leque de aplicaes esbarra na diversidade de polticas e procedimentos organizacionais, na complexidade de projeto, nos mtodos e estratgias de aquisio, no tamanho, nos mtodos de desenvolvimento do sistema, entre outros. Fazendo com que eles sejam bem diferentes uns dos outros. Assim, na definio de um processo preciso levar em considerao desde caractersticas da equipe trabalho, da prpria organizao at as tecnologias utilizadas, o tipo de software envolvido, o domnio da aplicao e o grau de maturidade da equipe em engenharia de software ([Humphrey 89], [Rocha 01]).

2 2. .5 5C CO ON NS SI ID DE ER RA A E ES SF FI IN NA AI IS S
Aps a apresentao de uma viso geral dos conceitos e definies relativos ao Processo de Software, o captulo seguinte mostrar os conceitos de melhoria contnua e medio de processo de software, uma explanao do modelo IDEAL que adota as caractersticas da melhoria contnua dos processos organizacionais e, por fim, as iniciativas metodolgicas para melhoria de processos de software que serviram de base para o desenvolvimento deste trabalho.

21

BO OR RD DA AG GE EN NS SD DE E M ME EL LH HO OR RI IA AC CO ON NT T N NU UA AD DE E P PR RO OC CE ES SS SO OS SD DE E 3 3 A AB S SO OF FT TW WA AR RE E

Esse captulo comea descrevendo os conceitos de melhoria contnua e medio de processo de software, bem como os conceitos e o ciclo de melhoria do modelo IDEAL [Mcfeeley 96] que serviram de base para a compreenso das fases da metodologia ProImprove, um dos principais objetos de estudo deste trabalho. E, por fim, apresenta-se as iniciativas metodolgicas para melhoria de processos de software que expem as principais informaes para o desenvolvimento desse trabalho.

3 3. .1 1M ME EL LH HO OR RI IA AC CO ON NT T N NU UA AD DE EP PR RO OC CE ES SS SO OS S
Cada vez mais as tecnologias geram novos recursos para tornar nosso dia-a-dia mais fcil e gil. Muitos deles, logo aps sua criao, passam a se tornar indispensveis, principalmente no tocante ao desenvolvimento de produtos de software e sistemas que, a cada dia, impressionam pela complexidade com que vm sendo criados. Todavia, sabe-se que a complexidade gera um aumento das dificuldades no decorrer do desenvolvimento. [Humphrey 89] diz que medida que aumenta a complexidade dos sistemas menor a produtividade das equipes, e isso ocorre por causa da baixa qualidade dos sub-produtos que formam o produto final. Alm de todos os problemas que surgem quando o produto liberado para uso, na grande maioria dos projetos constata-se problemas de cronograma e oramento. Assim, sobreviver num mercado to competitivo vem sendo um desafio para as organizaes
22

desenvolvedoras de software. Observa-se que a qualidade dos produtos torna-se cada vez mais inerente sobrevivncia das empresas. Nos ltimos anos, observamos que garantir maior qualidade nos produtos e aperfeioar o desenvolvimento de softwares provocaram mudanas no enfoque em relao ao processo de software [Rocha 01]. Surge, ento, uma nova abordagem onde a prioridade est em garantir a qualidade do processo de produo, mostrando-se como fator decisivo para se obter qualidade do produto final. A partir dessa mudana de enfoque, intensificou-se as pesquisas sobre o processo de desenvolvimento e vrias normas e modelos de qualidade foram definidos para auxiliar na definio e melhoria de processos de software. Dentre os quais vale destacar a Norma ISO/IEC 12207 [ISO 97], o CMM (Capability Maturity Model) [Paulk 95], o SPICE (Software Process Improvement and Capability dEtermination) hoje a norma ISO/IEC 15504 [ISO 98], o CMMI (Capability Maturity Model Integrarion) [CMMI 02], e o MPS.Br (Melhoria do Processo de Softwre Brasileiro) [Softex 05]. Chegou-se a concluso que para se chegar a patamares cada vez mais altos de qualidade, era preciso melhorar cada etapa do ciclo de desenvolvimento. Contudo, tornar isso realidade era necessrio buscar e analisar dados quantitativos que expressassem de forma clara quo melhor o processo est sendo realizado. Assim, mensurar os produtos de software tornou-se pr-requisito indispensvel na melhoria de processo [Basili 85]. Os seguintes objetivos listados abaixo foram alcanados a partir de muitas propostas e aplicaes prticas [Park 96]:

23

Melhorar o entendimento sobre o processo, produto, recursos e ambiente de desenvolvimento e, assim, estabelecer bases para a comparao entre as medies; x Avaliar o andamento do projeto comparando com dados planejados; x Fazer previses sobre o futuro andamento do projeto com base em comportamentos passados; x Promover melhorias identificando falhas, ineficincias e outras oportunidades para melhorar a qualidade do produto e o desenvolvimento do processo. Contudo, no fcil definir, coletar e analisar um conjunto de mtricas. A realizao destas atividades requer cuidados especiais, pois podem gerar um aumento dos problemas enfrentados durante o desenvolvimento de software. De acordo com [Basili 94], deve-se: x Concentrar-se em objetivos especficos; x Ser realizadas sobre todos os produtos, processos e recursos do ciclo de vida; x Ter seus resultados interpretados com base em caractersticas do contexto organizacional e do ambiente. Finalmente, encontrar um conjunto de modificaes que melhore os resultados obtidos seja do processo, seja da organizao bastante desafiador. Na seo a seguir, ser descrita uma abordagem para medio e melhoria de processos de software que inclui definio, coleta e anlise de mtricas aplicadas aos processos de software [Oliveira 06a].
x

24

3 3. .2 2A AB BO OR RD DA AG GE EM M P PA AR RA AA AM ME ED DI I O OE E M ME EL LH HO OR RI IA AD DE E P PR RO OC CE ES SS SO OD DE E S SO OF FT TW WA AR RE E
Desenvolver aplicativos e sistemas de software no uma tarefa trivial, requer empenho de equipes de trabalho que em conjunto pem em prtica toda sua criatividade e capacidade de desenhar e implementar solues cada vez mais complexas. Para tanto, seguir uma linha de execuo para que um objetivo comum seja alcanado est sendo a alternativa que as organizaes esto aplicando para identificar suas diferentes dimenses e encontrar problemas que precisam ser analisados a fim de estabelecer prticas efetivas. Sendo assim, supe-se que a qualidade adquirida do produto de software quando se realiza um processo no seu desenvolvimento est diretamente ligada qualidade do processo utilizado para o sua construo e manuteno [Gomes 01]. Seguindo o raciocnio de cultivar a utilizao de processo quando acontece algum problema, preciso que no apenas o defeito encontrado seja corrigido, mas tambm o processo que permitiu que tal erro acontecesse. Logo, trabalhos futuros no sofrero os mesmos tipos de correo. propsito, no se conhece um processo que seja genrico, ou seja, aplicvel a qualquer tipo de projeto, pois cada um tem sua particularidade. Sabe-se que h diferenas na estratgia de aquisio, tamanho e complexidade do projeto, bem como nas polticas e procedimentos organizacionais que influenciam o produto de software, desde a aquisio at a manuteno. Alm de todas as caractersticas citadas acima, existem outras que determinam na definio de um processo, dentre os quais podemos destacar
25

as tecnologias de desenvolvimento, a experincia e o conhecimento das equipes de trabalho, o porte da empresa, bem como sua cultura e os objetivos do projeto especfico [Machado 00]. No entanto, para melhor entender como sistemas complexos de software so produzidos surgiu a necessidade de uma pesquisa mais a fundo sobre a definio e a modelagem de processo de software. Com isso, permite-se gerenciar a execuo, melhorar a compreenso, estudar o aperfeioamento e automatizar parte da sua execuo [Arajo 98]. De incio, vrias ferramentas se propuseram a resolver o problema de automatizao de parte do processo. Da, reparou-se que a preocupao maior para o sucesso de um projeto est no pessoal e nos processos que o compe. A tecnologia no se demonstra como um fator to de risco, talvez seja o menos problemtico [Gomes 01]. No entanto, o desenvolvedor deve, sim, se valer das ferramentas, mas elas por si s no so uma garantia de xito. As pesquisas mostram que a melhoria da qualidade dos softwares e, por conseguinte, dos processos de software crescente quando se tm empresas e projetos cada vez maiores. O que vem se observando tambm que a definio dos processos deve ser de forma bem dinmica para poder acompanhar as expectativas de um mercado exigente e competitivo. Para tanto, necessita-se melhorar cada etapa do processo de desenvolvimento, mas para que isso ocorra preciso obter dados quantitativos que possam expressar o andamento atual do projeto. Vrias mtricas foram propostas com o objetivo de suprir essa necessidade [Oliveira 06a].

26

[Rocha 01] baseia-se nas seguintes etapas para a abordagem de medio e melhoria de processos de software: x Seleo / definio de mtricas adequadas, para realizar as medies, com base em objetivos previamente identificados; x Realizao de medies como parte integrante do processo de desenvolvimento de software; x Anlise dos resultados do uso do processo em projetos, apoiada por um sistema com base em conhecimento; x Realizao de estudos empricos envolvendo medio de processos de software. Procurou-se, ainda, separar as atividades de medio, anlise e melhoria de processo das atividades de desenvolvimento de software. Percebeu-se que uma empresa de desenvolvimento de produtos de software tem que manter o foco no seu objetivo, respeitando os prazos e os custos para tal. A anlise do processo deve ser realizada por uma equipe de fora da organizao desenvolvedora. Esta fornecer os dados necessrios para se obter o feedback dos seus projetos com relao aos processos, incluindo as diretrizes de melhoras dos mesmos [Basili 94].

3 3. .2 2. .1 1D DE EF FI IN NI I O OD DE EM M T TR RI IC CA AS S
A tarefa de escolher as mtricas que vo compor o conjunto de referncias para a medio do processo de software bastante complicada. Olhar a literatura e decidir qual mtrica melhor para determinada situao no trivial. A seguir sero mostradas as mtricas escolhidas para a
27

metodologia do ProImprove, onde, segundo [Rocha 01] no um conjunto perfeito de mtricas, mas suficiente. Seguem trs objetivos os quais as mtricas foram selecionadas. So eles: caracterizar o projeto e seu contexto; medir, avaliar e sugerir melhorias em um processo de software especfico; e realizar estudos empricos envolvendo medio de processos de software. Veja como ficou a organizao do conjunto selecionado [Oliveira 06a]: x T Te em mp po o: tempo total do projeto; tempo nas fases de anlise, projeto, codificao, teste de unidades feitos por analistas, testes do sistema e testes de homologao; tempo em reunies de reviso; e tempo em retrabalho; x P Pr re ec ci is s o od de e e es st ti im ma at ti iv va a d de e c cr ro on no og gr ra am ma a: estimativa de cronograma de todo o projeto, estimativas de cronograma para as fases de anlise, projeto, codificao, teste de unidades feitos por analistas, teste do sistema e teste para homologao; x E Es sf fo or r o o: esforo total do projeto; esforo nas fases de anlise, projeto, codificao, teste de unidades feitos por analistas, testes do sistema e testes de homologao, esforo em reunies de reviso; esforo em revises; e esforo em retrabalho; x P Pr re ec ci is s o od da a e es st ti im ma at ti iv va a d de e e es sf fo or r o o: estimativa de esforo para todo o projeto; estimativa de esforo para as fases de anlise, projeto, codificao, teste de unidades feitos por analistas, teste do sistema, teste de homologao e revises; x T Ta am ma an nh ho od do os siis st te em ma a: nmero de linhas de cdigo; pontos por funo; pontos por casos de uso;
28

nmero de erros na especificao de requisitos e no projeto do sistema encontrados em reunies de reviso, erros no cdigo encontrados nos testes de unidade feitos por analistas; m me er ro od de em mo od diif fi ic ca a e es s: nmero de modificaes na especificao de x N N requisitos, projeto ou cdigo aps a sua aprovao; en ns siid da ad de e d de e d de ef fe ei it to os s: nmero de erros somado ao nmero de x D De modificaes em relao ao tamanho do sistema; x R Ro ot ta at ti iv vi id da ad de ed do op pe es ss so oa al l: percentual de pessoas que saram, entraram ou mudaram de funo durante o desenvolvimento do projeto; Pr ro od du ut ti iv vi id da ad de e: nmero de linhas de cdigo produzidas por unidade de x P esforo; pontos por funo ou casos de uso por esforo; x D De et te er ri io or ra a o od do os so of ft tw w a ar re e: relao entre o esforo gasto para corrigir os problemas encontrados aps a liberao do sistema para o usurio comparado ao esforo gasto da liberao do software para o usurio. x E Ex xp pe er ri i n nc ci ia ad da ae eq qu uiip pe e: experincia na linguagem de programao, no domnio da aplicao, nas ferramentas, no mtodo e no processo de desenvolvimento, tipo de treinamento em engenharia de software e tempo total de experincia profissional. O objetivo de caracterizar o projeto, bem como seu contexto de desenvolvimento se enquadra nas mtricas que procuram coletar e comparar resultados de projetos similares. J o objetivo de medir, avaliar e sugerir melhorias em um processo de software recai sobre as mtricas que tem por meta avaliar e melhorar a preciso das estimativas, avaliar e melhorar a qualidade dos produtos, e medir e reduzir o retrabalho. Por fim, para [Oliveira 06a] o objetivo de formar uma base de dados para futuros estudos
x
29

N N m me er ro od de ee er rr ro os s:

empricos rege as mtricas que coletam informaes para o aumento do entendimento sobre os processos do ciclo de vida de software. Para garantir que as mtricas selecionadas tenham uma utilizao correta. preciso definir sua estrutura operacional, para garantir que pessoas diferentes as implementem de forma coerente e consistente e que os dados sejam interpretados corretamente [Rocha 01].

3 3. .2 2. .2 2C CO OL LE ET TA AD DE EM M T TR RI IC CA AS S
Vimos que a melhor maneira de se trabalhar com essas atividades de medio de processo de software descentralizando as responsabilidades, ou seja, deixando elas fora do comando da organizao desenvolvedora que tem como atividade principal o desenvolvimento do produto de software. Logo, para fins de anlise posterior, os dados devem ser resgatados de documentos simples e geralmente produzidos pela organizao durante todo o processo. Seja ele, um relatrio de histrico e/ou uma planilha de atividades [Rocha 01]. Discriminando o que cada um dos documentos acima citados poderiam oferecer, esto: o registro de todas as atividades do processo de desenvolvimento com as datas de incio de trmino, as reunies de avaliao realizadas e seus resultados (relatrio de histrico); os registro de todas as atividades realizadas por cada membro da equipe de desenvolvimento e a gerncia do projeto (planilha de atividades) [Oliveira 06a].

30

You might also like