Arquitecturas de Software
A concepção de software é simultaneamente o processo de definição da arquitectura, dos componentes, das interfaces e de outras características do sistema (ou componente), e o resultado desse processo.
Na óptica do processo e no âmbito do ciclo de vida de desenvolvimento de software, a concepção de software consiste na actividade em que os requisitos de software são analisados com o intuito de produzir uma descrição da estrutura interna e da organização do sistema.
Na óptica do produto, a concepção de software (o resultado final do processo) deve descrever a arquitectura do sistema (i.e., como o sistema pode ser decomposto e organizado em componentes), as interfaces entre os componentes, bem como os próprios componentes com um nível de pormenor que permita a construção destes.
Programa resumido
- Definição das componentes de uma arquitectura software;
- Decomposição modular. Estruturação do um sistema software complexo;
- Modelos de controlo e fluxo de informação;
- Padrões estruturais e de comportamento;
- Frameworks orientadas ao domínio e de componentes reutilizáveis;
- Desenvolvimento orientado à reutilização
- Aplicações multi-camada (especifidades e padrões necessários);
- Estratégias e mecanismos de integração;
Resultados de Apreendizagem Específicos
- Avaliar a importância de uma arquitectura de software no contexto geral de disponibilização de uma solução.
- Definir os diferentes tipos de modelos arquitecturais a nível de estrutura do sistema, decomposição por camadas e por elementos de controlo.
- Analisar soluções existentes e o seu grau de flexibilidade e reutilização.
- Analisar e avaliar as qualidades intrínsecas à arquitectura (integridade conceptual, correcção e completude, e construibilidade), os atributos que se revelam em tempo de concepção (capacidade de modificação, portabilidade, reusabilidade, integrabilidade e capacidade de teste) e os atributos que só revelam em tempo de execução (desempenho, segurança, disponibilidade, usabilidade e funcionalidade).
- Utilizar frameworks específicas e mecanismos de especialização.
- Definir aplicações com indepêndencia de camadas e modos de a assegurar.
- Analisar as condicionantes dos modelos de programação e escolher as notações e linguagens mais adequadas para representar artefactos de concepção de software, nomeadamente a organização estrutural da concepção e o comportamento do software.
- Medir os impactos dos mecanismos de integração na definição de uma arquitectura.
- Reutilizar soluções pré-definidas e garantidamente testadas e eficazes no âmbito do domínio do problema recorrendo, por exemplo, à utilização de estruturas arquitecturais e perspectivas, estilos arquitecturais, padrões de concepção, famílias de programas e frameworks.
-- 08 May 2007