terça-feira, março 28, 2006

Retro-Alimentação

Fiz dois comentários sobre notas do Eduardo e da Glória.

Vou listar as duas abaixo, mas vejam que existem um redundância na resposta. Enfim o mesmo
problema, mas com respostas diferentes.

Eduardo,

O ponto, aqui, é a discussão se o porte para outra plataforma aumenta a funcionalidade. Sob a ótica funcional me parece que a base de funções oferecidas permanece a mesma, apenas pode-se usar outra plataforma. No entanto, no caso de uma plataforma móvel, poderia-se argumentar que a mobilidade oferecida aumenta a funcionalidade do todo, ou seja um sistema fixo passa a ser móvel. No entanto, me parece que a visão mais correta seja a de que houve uma adição de caractéristica ao sistema. Esta adição sendo fruto de uma demanda externa caracteriza o "feedback loop".

Glória,

O ponto que ressaltei foi o que trata da diferença entre aspectos funcionais e não funcionais.
Por exemplo: plataforma móveis, exigem um esforço de minituarização.
Isso deve ser visto como um "feedback" negativo na medida que representa uma reorganização do software (código), mas representa um aumento de "funcionalidade" sob a ótica de que agora o artefato é também móvel e portanto mais "funcional".

Enfim...

quarta-feira, março 22, 2006

Material de Evolução

O material da turma de 2002-1 está disponível na página do curso.
Dêem uma olhada.

Próximo Artigo

"What Netscape learned from cross-platform software development". Nossa leitura desse artigo de Cusumano deve ser comparativa com o que lemos de Lehman e com as críticas de Scacchi. O elo fornecido é da ACM, no portal Capes temos acesso a esse artigo.

quinta-feira, março 16, 2006

As Leis da Evolução de Software



Conforme discutimos em aula, as leis de Lehman, sumarizadas abaixo, são fundamentalmente centradas no conceito de retro-alimentação.

Vale também lembrar que essas leis são válidas para software que não podem ser considerados sistemas fechados, ou seja simples programas que tem especificação bem definida e que portanto podem ser verificados formalmente, se essa especificação for socialmente aceita como completa. Vejam exemplos desse tipo de software (chamado por Lehman de S-type) aqui e aqui.

As leis de Lehman, apresentadas a seguir, foram traduzidas do artigo Rules and Tools for Software Evolution Planning and Management (a tradução usou partes da tradução feita por Roberto Holanda de outro artigo de Lehman e usou o termo software em substituição a E-type Software):

I - Mudança contínua.
Um software deve ser continuamente adaptado, caso contrário se torna progressivamente menos satisfatório.

II - Complexidade crescente.
À medida que um software é alterado, sua complexidade cresce, a menos que um trabalho seja feito para mantê-la ou diminuí-la.

III - Auto-regulação.
O processo de evolução de software é auto-regulado próximo à distribuição normal com relação às medidas dos atributos de produtos e processos.

IV - Conservação da estabilidade organizacional .
A não ser que mecanismos de retro-alimentação tenham sido ajustados de maneira apropriada, a taxa media de atividade global efetiva num software em evolução tende a ser manter constante durante o tempo de vida do produto.

V - Conservação da Familiaridade.
De maneira geral, a taxa de crescimento incremental e taxa crescimento a longo prazo tende a declinar.

VI - Crescimento contínuo.
O conteúdo funcional de um software deve ser continuamente aumentado durante seu tempo de vida para para manter a satisfação do usuário.

VII - Qualidade decrescente.
A qualidade do software será entendida como declinante a menos que o software seja rigorosamente adaptado às mudanças no ambiente operacional.

VIII - Sistema de Retro-alimentação.
Processos de evolução de software são sistemas de retro-alimentação em múltiplos níves, em múltiplos laços (loops) e envolvendo múltiplos agentes.


A próxima leitura pode ser encontrada aqui.

terça-feira, março 07, 2006

Bem-vindo

Aqui estaremos postando notícias, resumos e elos para consumo de nossa disciplina de Evolução de Software.

Recomendo a leitura de um breve resumo que fiz em 1997 e de uma entrada recente no meu blog.

O desenho inicial do curso, toma por base esse blog. Cada um de vocês deverá também ter um blog.

Comentários são muito bem vindos!

O primeiro encontro será para que possamos tentar traçar uma linha de interesse mais sintonizada com cada um de vocês. Vamos ver como funcionará.

As duas primeiras leituras são:
1) Laws of Software Evolution Revisited, e
2) Rules and Tools for Software Evolution Planning and Management

Na próxima Terça (dia 14) discutiremos esse dois artigos.