Author: Plínio Ventura

Acoplamento e Coesão em Módulos e Funcionalidades

 

No último post falamos sobre Acoplamento e Coesão, que são medidas que devemos sempre levar em grande consideração no projeto de qualquer software.

E nada melhor que entender a teoria aplicada, ou seja, vê-la na prática. Vamos começar a refletir sobre isso.

Neste post vamos falar sobre Acoplamento e Coesão em Módulos e Funcionalidades.

Acompanhe esta série de posts, pois falaremos ainda sobre estas duas medidas aplicadas em vários outros modelos/artefatos do processo de produção de software.

Qualquer software – seja um aplicativo comercial, um sistema de gestão, um website, um aplicativo mobile ou até mesmo um jogo – é composto, basicamente, de Módulos e Funcionalidades.

Um software é um todo. Módulos são conjuntos dentro deste todo. Funcionalidades são elementos deste conjunto. (more…)

Acoplamento e Coesão

Acoplamento e Coesão talvez sejam as características mais importantes de qualquer sistema.

Muitos sistemas são como um Castelo de Cartas.

Num Castelo de Cartas, ao tirar uma carta da estrutura, a probabilidade de estragos no castelo é alta. Se a carta estiver na base (parte inferior) do castelo, é quase certo que o castelo irá desmoronar.

E nos sistemas, não é muito diferente. Todo profissional da área já passou por algum sistema onde corrigi-se um bug e aparecem outros vinte; exclui-se uma funcionalidade e outras várias param de funcionar ou apresentam defeitos etc. (more…)

A origem dos bugs de software

bugs de softwareQual é a origem dos bugs de software? As causas estão apenas no código fonte “bugados”? Exception é o único efeito causado pelos bugs?

É algo surpreendente quando entendemos que a maior causa dos bugs não está no código fonte.

Neste post vamos entender como os bugs surgem nos projetos de software, e perceberemos que o problema vai muito além de furos na codificação(more…)

UML – Relacionamento entre Classes – Agregação

UML - Relacionamento de Agregação entre ClassesVocê já se perguntou o que é o relacionamento de Agregação entre Classes?

É algo que parece abstrato, mas é mais simples do que imaginamos.

Mas o uso inadequado da Agregação gera Alto Acoplamento e Baixa Coesão na estrutura de um software.

Este é o terceiro post sobre relacionamentos entre classes na UML – aqui você pode ver o primeiro sobre Dependência entre Classes, e aqui pode ver o segundo sobre Composição entre Classes. (more…)

8 dicas para melhorar a relação com o usuário

8 dicas para melhorar a relação com o usuárioA relação com o usuário demanda cuidados. Qual Analista de Sistemas que nunca teve problemas com seus Usuários? E qual Usuário que nunca teve problemas com seus Analistas?

Essa relação é, culturalmente, carregada de pré-conceitos estabelecidos desde que se começou a desenvolvedor software neste mundo.

No fim, sempre o projeto paga a conta. Mas precisa ser assim?

A “culpa” é sempre do Usuário (conforme o ponto de vista do Analista), ou a “culpa” é sempre do Analista (conforme o ponto de vista do Usuário)?

(more…)

Como ter mais qualidade no desenvolvimento de software

Como aumentar a qualidade no Desenvolvimento de Software - Qualidade Garantida - Cliente Satisfeito

Qualidade no desenvolvimento de software

Como aumentar a qualidade no Desenvolvimento de Software é um desejo de vários profissionais de software.

Talvez, as soluções mais eficazes para isso estão nas iniciativas mais simples.

Mas para que simplificar se podemos complicar né!

Esse ditado popular é péssimo, mas reflete um vício que temos que deveria ser urgentemente revisto por todos nós. Muitas vezes esquecemos, ou deixamos de pensar, que a quantidade de bugs num software é proporcional à sua complexidade.

(more…)

O que é Regra de Negócio?

Deduzo que antes do lançamento do microcomputador o termo regra de negócio era algo interpretado totalmente isolado dos softwares empresariais, ou talvez nem fosse um termo conhecido pelas pessoas.

Nos tempos atuais é difícil encontrar alguém que entende regra de negócio como algo isolado do software. Quando se fala “regra de negócio”, praticamente “sempre” é no contexto de um sistema.

É possível uma empresa mais arcaica viver sem software, mas não consegue viver sem regras de negócio.
(more…)

O que é Requisito Funcional

O que é um Requisito Funcional? Vamos primeiro ao que é Requisito. Requisito é uma exigência, solicitação, desejo, necessidade.

Quando falamos de um Requisito Funcional estamos nos referindo à requisição de uma função que um software deverá atender/realizar. Ou seja, exigência, solicitação, desejo, necessidade, que um software deverá materializar.

Um Requisito Funcional é um Requisito de Software.

O que é Requisito Funcional - Relacionamento entre Requisitos

É comum os profissionais de engenharia de software associarem a ideia de um requisito funcional a uma tela, uma rotina, que no fim serão as funcionalidades de fato de um sistema.

Mas é necessário entender que uma funcionalidade não necessariamente realizará apenas um Requisito Funcional. 

Uma funcionalidade pode realizar vários Requisitos Funcionais – significa que em uma funcionalidade um ou mais Requisitos Funcionais podem ser atendidos, não necessariamente apenas um. Se pensarmos em multiplicidade, uma funcionalidade pode realizar um ou muitos Requisitos Funcionais (1.. *).
(more…)

Porque os projetos dão errado?

titanic-fracasso-projetos-de-software

Antes de começarmos: projetos não falham. Pessoas falham. Mas pessoas não gostam de assumir culpa sobre seus erros, então é usual falar que “o projeto deu errado”, “o projeto falhou”.

Nos últimos quatro anos conheci uma figura que repetia semanalmente para os seus superiores: “o projeto é complexo demais, precisamos de mais tempo, mais dinheiro, o sistema é muito complicado”.

Isso durante quatro anos. O projeto ainda não acabou, está indo para o quinto ano. Agora ele fala que o problema é que o cliente foi omisso durante os quatro anos, e deixou o projeto solto. Esta figura não faz bem seu trabalho, mas não reconhece isso.
(more…)

Sintaxe e Semântica – Forma e conteúdo na produção de software

Sintaxe e Semântica - Forma e conteúdo na produção de software

Sintaxe e Semântica

Tudo na vida possui forma e conteúdo. Mas um bom conteúdo com forma ruim é problema, e uma forma bacana com conteúdo ruim, pior ainda.

Projetar software é lidar com isso toda hora. Modelos, especificações, código: precisam de uma boa forma (sintaxe) e um bom conteúdo (semântica). Entender como ter qualidade na sintaxe e na semântica é fundamental!

Na Engenharia de Software quando falamos de sintaxe geralmente nos referimos à forma de escrever código fonte (palavras reservadas, comandos, recursos diversos).

Aprendemos na escola que sintaxe é algo sobre regras para escrever em linguagem natural na produção de textos, então é natural tal “analogia”; mas é pobre.
(more…)

Entendendo definitivamente o que é um Caso de Uso

O que seria um “caso de polícia”? Seria uma estória que descreveria uma cena policial, um crime ou investigação, por exemplo.

O que seria um “caso de novela”? Seria uma estória que descreveria uma trama, por exemplo, que se passa numa novela. Quando alguém quer contar alguma coisa a alguém, nos detalhes necessários, é comum dizer: “vou lhe contar um caso”.

O que é Caso de Uso? Vai na mesma linha. Tem como objetivo “contar a alguém”, descrever como será o uso de uma funcionalidade de um sistema.

A diferença é que, para contar este caso, existe um padrão para fazê-lo, um conjunto de regrinhas que serve para padronizar o “conto”, de maneira que o leitor da “estória que está sendo contada” – que poderá ser o programador do sistema que utilizará o caso de uso para codificar a funcionalidade ou o usuário que utilizará o caso de uso para validar a funcionalidade ou outro profissional – entenda a funcionalidade de uma maneira única, seguindo um padrão específico.
(more…)