Atributos de projeto podem ser vistos como princpios que fornecem
sentido ao desenvolvimento de software, que visa obter um produto final que satisfaa os requisitos identificados no incio do processo. Exemplos: Separao de interesses, abstrao, modularidade e compartilhamento de recursos. Vantagens: Ao serem usados corretamente, podem trazer inmeras vantagens como descomplicar um sistema complexo, ou at mesmo diminuir o custo do desenvolvimento. Desvantagens: Poucos profissionais se preocupam em usar os atributos de projeto. Alm disso, cada atributo de projeto pode ter sua desvantagem. Modularidade Quando engenheiros de software/projetistas se deparam com um sistema de grande porte e/ou complexo, cria-se a necessidade de dividir tal sistema em partes menores. Essas partes so chamadas de mdulos e um sistema que composto por mdulos se torna modular. A modularidade se faz presente em todo o processo de desenvolvimento do sistema. Basicamente existem 3 metas que a modularidade tenta obter:
Capacidade de separar em partes sistemas de grande porte e/ou
complexos. Capacidade de reagrupar os mdulos a fim de formar o sistema completo. Compreender a modularizao do sistema.
A capacidade de separar em partes um sistema baseada na ideia de
dividir um problema em subproblemas e reaplicar este procedimento nos subproblemas de forma recursiva. O contrrio disso seria o reagrupamento das partes. Os projetistas iniciam o processo de composio do sistema a partir de mdulos que de forma incremental vo sendo agregados at a obteno de um sistema completo. Exemplo: As linhas de montagem de qualquer veculo so um forte exemplo. Cada pea reunida com as outras, quando completado o processo, gera um sistema final completo. Vantagens: Com a modularidade, possvel descomplicar o sistema dividindo suas ideias complexas. Desvantagens: Ao usar indevidamente, o forte nvel de acoplamento pode prejudicar muito a integridade do sistema e a satisfao do usurio. Compartilhamento de recursos Para entender compartilhamento de recursos, precisamos do conceito de acoplamento. O acoplamento usado como medida de interdependncia entre dois componentes. De maneira ideal, o nvel de acoplamento de componentes de um software deve ser baixo. Se o nvel de dois ou mais
componentes for alto, toda a parte de anlise, compreenso, modificao,
testes e reutilizao se torna muito difcil. Partindo desse conceito, normal pensar que no existe meios de o nvel de acoplamento ser baixo. Porm h meios de atingir este objetivo. Um deles criar um gerenciador de recursos, que encarregado de gerenciar todos os dados e servios dos componentes independentes. Exemplos: dois componentes so criados, se um possui dependncia de uma varivel declarado no outro, esse sistema possui compartilhamento de recursos. Um exemplo disso a impressora, que depende do compartilhamento de recursos do sistema operacional. Vantagem: reduz e muito os custos para manter um sistema, pois no h necessidade de repetir os mesmos processos em todos os componentes de um sistema. Desvantagem: se mal utilizado, compromete a segurana do sistema.