• Nenhum resultado encontrado

A dinâmica não linear do processo real

2. O Processo de software

2.5. O processo de software

2.5.6. A dinâmica não linear do processo real

Na secção 2.5.3. foram analisadas as causas da evolução do produto, tendo-se constatado que as referidas causas obrigam a que o processo seja incremental.

Um sistema dinâmico muda ou evolui no tempo [Garnett,P.97]. O processo é considerado dinâmico quando:

ao longo do tempo apresenta-se em vários estados diferentes,

ao longo do tempo de desenvolvimento, emprega diferentes metodologias de construção e obtém como resultado modelos de tipos diferentes de representação da solução,

depois da primeira operacionalidade, ao longo da evolução, os produtos aparecem numa sucessão de versões, uma vez que o objectivo inicial da resolução do problema proposto, mesmo depois de atingido, se altera devido a necessidades intrínsecas do produto criado ou a modificações do ambiente onde opera.

Exemplo 2.5.6.1.: São exemplos dos vários estados do processo a escrita, a partir da definição do problema dos requisitos, a execução de testes dos módulos que constituem o produto, a

construção de uma nova versão de um sistema já entregue, etc.

São exemplos das modificações em metodologia usada e modelos construídos ao longo do processo: a transformação do modelo de requisitos em modelo de arquitectura, a codificação dos módulos da arquitectura, etc.

São exemplos de evolução por mudança de objectivos as modificações que ocorrem quando uma publicação de uma lei muda o enquadramento jurídico do problema que preexiste ao produto e obriga a reiniciar o processo como forma de adaptar o produto a esta nova realidade.

A dinâmica dos processos reais revela características de não linearidade e de adaptabilidade [Kitchenham,B.98].

Vejamos porque é que o processo é não linear. Uma tarefa, realizada em qualquer das fases, depende significativamente das anteriormente realizadas e influencia também da mesma forma as fases seguintes. Se não existisse esta interdependência de tarefas, teríamos o equivalente a uma linha de montagem e o processo seria uma combinação linear da sequência das tarefas.

A não linearidade do processo confere-lhe uma dependência sensível de várias condicionantes que, quando actuam, podem alterar drasticamente o estado de desenvolvimento do processo. Exemplo 2.5.6.2.: É exemplo da não linearidade a propagação exponencial de erros ao longo das fases do sistema. Um erro não corrigido inicialmente causa um número de erros com crescimento exponencial nas fases seguintes. Este exemplo também é indicativo da dependência sensível do número de erros de uma fase no número de erros das fases seguintes. É exemplo da dependência sensível de certas condicionantes o aparecimento de uma nova tecnologia que obrigue à modificação total do projecto. Um exemplo concreto desta situação é a experiência da autora na reformulação completa do software, na Portugal Telecom, que estava em fase de testes dos telemóveis de segunda geração face à disponibilidade dos telemóveis de terceira geração.

A dinâmica do processo é adaptativa porque as modificações do domínio do discurso do produto e da envolvente tecnológica do processo obrigam a que o processo vá, em cada estado, mudando, de forma a responder a essas mudanças.

Exemplo 2.5.7.3.: É exemplo da adaptabilidade do processo a mudança da plataforma de desenvolvimento de Windows NT para Windows 2000, porque a rede onde o produto ficará

operacional mudou de Windows NT para Windows 2000 ou a entrega a uma equipa exterior subcontratada a execução de uma fase, porque da análise do risco dessa fase se concluiu que a equipa de desenvolvimento não tinha capacidade de a realizar.

Tal como é descrito na secção 2.4.1., a dinâmica do processo é organizada de duas maneiras diferentes:

Sequencial, quando uma das tarefas mencionada da definição 2.4.1. termina e se inicia outra diferente.

Incremental, quando a informação, as ferramentas e as metodologias relevantes a uma única tarefa são aplicadas sucessivamente aos vários níveis de estruturação dessa tarefa até à sua completa realização e quando as actividades de verificação e de validação obrigam a mudar ou acrescentar funcionalidades ao produto ou quando o problema de que o produto é solução ou o seu ambiente mudam e causam a evolução do produto. As duas formas reveladas pela dinâmica do processo, são fundamentais para o considerar como sistema complexo, tal será detalhado no capítulo 4.

Aparentemente seria de pensar que o carácter dinâmico dos processos não conduziria à identificação de leis gerais e o processo seria impossível de controlar. Tal como essa afirmação é inválida em domínios físicos como, por exemplo, as leis físicas relacionando a pressão e temperatura dos gases são observadas apesar do comportamento dinâmico dos átomos, também Lehman [Lehman,M.85] enunciou, qualitativamente, leis gerais que regulam a evolução do software:

Lei da mudança contínua: um produto em uso ou está em mudança constante ou se torna

progressivamente menos útil.

Lei do aumento da complexidade: a mudança contínua introduz continuamente

complexidade no produto deteriorando a estrutura do produto. Se não for desenvolvida nenhuma actividade explícita do controle da complexidade a manutenção do produto deixa de ser possível e este torna-se inútil.

dinâmica auto regulada com tendências estatísticas determináveis e invariâncias.

Lei da conservação da estabilidade organizacional: durante a vida activa do produto a

taxa de actividade global é invariante.

Lei da conservação da familiaridade: durante a vida activa do produto o conteúdo de

cada versão é estatisticamente invariante.

Nota-se que a complexidade usada na segunda lei é informal e deve ser interpretada como a noção intuitiva de complexidade que indica a dificuldade de redução do tamanho da especificação do produto.

As cinco leis, fundamentadas nas causas da evolução do produto, justificam e enquadram a tentativa de obter um modelo matemático que permita controlar, a partir da evolução da complexidade do produto, a sua convergência para a solução na fase de desenvolvimento e o controlo da sua complexidade na fase de evolução.

No capítulo 4, abordam-se as propriedades dos sistemas ditos complexos que apresentam características análogas às descritas para o produto. No capítulo 5 analisam-se programas com medidas usadas na área dos sistemas complexos.