Category: Engenharia

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…)

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…)

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…)

Exemplos de Requisitos Não Funcionais

Após a publicação do post O que é um Requisito Não Funcional vários leitores solicitaram exemplos de Requisitos Não Funcionais especificados. Sem dúvida que ver a especificação produzida ajuda muito a entender o que deve ser feito.

Neste post temos um exemplos de Requisitos Não Funcionais para cada uma das categorias existentes para este tipo de requisito. Observem o nível de detalhe de cada requisito especificado, isso é um dos fatores mais importante neste trabalho.
(more…)

O que é um Requisito Não-Funcional

O que é um Requisito Não-Funcional? Como o próprio nome diz, é uma “não funcionalidade”, ou seja, trata-se de algo que não é uma funcionalidade, mas que precisa ser realizado para que o software atenda seu propósito.

Existe uma definição propagada na literatura de Engenharia de Software que afirma que um Requisito Funcional define o que o sistema fará, e o Requisito Não-Funcional define como o sistema fará.

Alguns afirmam que um Requisito Não-Funcional especifica como um Requisito Funcional será implementado; também não é uma boa definição, pois uma funcionalidade teoricamente pode ser implementada sem nenhum Requisito Não-Funcional no projeto e isso não gerar ônus nenhum.

Acho que nenhuma dessas definições é suficiente, não dá para entender muito bem; tem outra que diz que requisitos não funcionais são atributos de qualidade para o sistema, essa eu já acho melhor, mas ainda um pouco subjetiva.

(more…)

Priorização de Requisitos

Priorização de Requisitos
Só não há a necessidade de realizar a Priorização de Requisitos em projetos onde os recursos são ilimitados.

Mas projetos com recursos ilimitados existem?

Não, obviamente.

E por esta realidade que precisamos escolher o que será “feito primeiro” e o que será “feito depois”.

Não é possível todos os requisitos terem a mesma prioridade.

Em projetos em que se acredita que sim, todos tem a mesma prioridade, observe e verá que a probabilidade de sucesso é muito baixa.

Requisitos e Escopo

Quando falamos em escopo do sistema (não escopo do projeto), estamos falando de requisitos (tanto funcionais quanto não funcionais, e também regras de negócio)

Obs.: para entender a diferença entre requisito e regra de negócio, veja este post).

A grosso modo, vamos entender como requisito tudo aquilo que deve ser feito no sistema, que compõe o escopo do sistema. Se quiser saber mais sobre Requisito de Software, veja mais aqui.
(more…)