Pergunta

Eu estou começando a minha tese de pós-graduação e o tema vai ser "ágil arquiteturas"

Basicamente, ele vai começar com uma descrição tradicional de desenvolvimento de software methologies, e o subsequente nascimento de metodologias ágeis, terminando com as recomendações e um design de uma aplicação flexível arquitetura facilmente adaptável para as inerentes alterações no software de construção.

A minha pergunta é, quais os padrões e práticas de design que você recomendaria para uma tal arquitetura?Eu estou interessado em padrões que permitem a maximização da classe dissociação como injeção de dependência, de alta maintanability, e o máximo de abstração do problema específico.

Foi útil?

Solução

Eu recomendo o seguinte:

  1. Repositório Padrão
  2. Especificação Padrão De
  3. Injeção De Dependência
  4. Domain Driven Design

Basicamente, tudo o ALT.NET multidão prega.

Outras dicas

Definitivamente Coi práticas e contrato-base programação em geral estaria no topo da minha lista.A partir de uma questão de experiência, porém, eu avisava abstrair muito longe de o problema simplesmente por uma questão de abstração.E. g.abstraindo porque você pode e não pode, porque ninguém nunca vai ser capaz de fazer uso da abstração.Eu já vi esse tipo de arquitetura foi ruim e simplesmente adicionar demasiado alto grau de complexidade de um sistema de manutenção do sistema de pior.

Algum tipo de feedback loop em torno de seu processo de desenvolvimento, seja ele testes de unidade, integração contínua e/ou "scrum" reuniões.Eu percebo que, realmente, não cair no âmbito do agile "arquiteturas", mas se você não tem o e agilidade no processo, nenhum grau de "ágil, orientada para a" arquitetura importa.

Um design essencial práticas que eu sugiro é construir primeiro um funcionais, end-to-end esqueleto de sua arquitetura.Para validá-lo o mais cedo possível pelo feedback real.

Isto é o que a Pragmática Programadores se refere como "Traçadores de Balas", e Alistair Cockburn como "curta esqueleto".

Você pode também definir o que é uma aplicação o contexto de sua tese ?Você considere apenas software de aplicação ou você também lidar com sistemas mais complexos ?

Essa é uma questão interessante, este.Pode uma arquitetura de ser criado ágil em isolamento?Se estamos olhando para algo parecido com o XP, então eu estou um pouco duvidoso.Ou talvez eu tenha entendido mal, mas isso nunca me impediu de expansão...

No XP, para tomar uma abordagem de eu saber mais sobre, nós vamos ter algum tipo de estrutura dentro de muito pouco tempo depois de iniciar um projeto;sobre o tempo, a primeira história é completa, na verdade.Durante a fase inicial da história-escrita nós vamos ter começado a ter alguma ideia do que podemos construir - é inevitável:os programadores tendem a pensar em termos de código.Mas pensar muito à frente leva-nos em YAGNI território.

Eu pensei que grande parte da arquitetura de um aplicativo desenvolvido dentro de um ambiente ágil seria esperado para ser emergente, através, nomeadamente, constante e dedicado de refatoração para remover a duplicação de esforços.

Então, talvez a questão é tanto para avaliar se existem características especiais - ou classes de características que as arquitecturas evoluiu como resultado de um processo ágil, tendem a apresentar.E então eu acho que vai depender de que tipo de app que estamos construindo, apesar de alguns dos princípios já mencionados (a par de que eu mesmo entender) deve ser provável.

Tanto quanto eu estou preocupado Ágil não pregue "Arquiteturas" como tal.Agile é uma metodologia baseada em princípios fundamentais que efeito gerenciamento de projetos, ciclos de lançamento gerais e práticas de desenvolvimento, mas certamente não é arquitetura de software.

Todos os padrões de software listados aqui podem ser utilizados através de uma forte cachoeira processo que é anátema para o desenvolvimento Ágil.

Ser ágil significa que você abraçar a mudança, i.é.adotar a mudanças nos requisitos e decisões de design e aceitar refactoring etc..muitas coisas modo "tradicional" que desaprovam, uma vez que você tocar em algo que está trabalhando/previamente acordado.

Em métodos como o XP tenta manter a alta qualidade por escrever testes de unidade.Vamos fingir que estamos todos de acordo sobre a escrita de testes de unidade.

Agora, aqui é onde você pode introduzir algum arquitetura de forma que o sistema é testável, ou teste-friendly, porque nem todos os sistemas são testáveis.Por exemplo, tornando a camada média exigível e separar INTERFACE do usuário camada de lógica de negócio etc.

Se Robert Martin tem nada a dizer sobre ele (e ele chamou o original do Manifesto Ágil reunião IIRC), então com certeza a arquitetura tem tudo a com Agilidade.Toda a primeira seção de seu livro Desenvolvimento ágil de Software, Princípios, Padrões e Práticas é sobre o SÓLIDOS princípios de arquitetura.Este tem sido um tanto controverso em algumas partes, mas eu não entendo o porquê.Se sua base de código é frágil e fortemente acoplado, em seguida, ele não pode ser muito aberto à mudança, que é a marca de agilidade.Conceitualmente separar os processos do código de prática é muito onu-agile coisa para fazer.

Princípio 1 do manifesto:"Nós valorizamos os indivíduos e interacções sobre processos e ferramentas."

A definição Ágil "processo" como uma abstração separada da arquitetura da codebase para mim viola o espírito deste primeiro princípio.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top