Translate this page now :



»Programação
»Programação.NET
»Banco de Dados
»Webdesign
»Office
» Certificações Microsoft 4
»Treinamentos4
»Programação 4
»Webdesign«
»Office & User Tips«
»Grupos de Usuários
»Células Acadêmicas«
intcontpiada : 118
Listagem de Bug's
Você já está cadastrado e participa do grupo de usuários de sua cidade ? Se não, comente o porque.
 
 
Faça um pequeno teste com 10 questões de VB
.:.
Teste seus conhecimentos em Visual Basic, SQL Server e ASP 3.0 com nossas provas on-line
.:.
Aprimore seus conhecimentos em programação com nosso treinamento on-line de lógica de programação
.:.
Veja nosso calendário de treinamentos
Gostou da Página?
Então

para um amigo!
 





Por Dennes Torres
dennes@bufaloinfo.com.br
Dennes Torres possui as certificações MCAD, MCSD,MCSE, MCDBA e MCT. Atualmente atua Como diretor da Búfalo Informática, líder do grupo de usuários DevASPNet no Rio de Janeiro e membro da liderança dos grupos getWindows e devSQL, também do Rio de Janeiro, podendo sempre ser encontrado na lista de discussão do grupo DevASPNet (devaspnet-subscribe@yahoogrupos.com.br) bem como nas reuniões do grupo. Mantém dois blogs em http://cidadaocarioca.blogspot.com

Arquitetos de Software

Pesquisa personalizada
Pesquisar Dicas:






Conforme a construção de softwares evoluiu, aos poucos foi surgindo, como quem não quer nada, uma nova profissão : Arquiteto de Software.

Indispensáveis no processo de desenvolvimento de grandes aplicações, os arquitetos de software ainda são muito pouco conhecidos, por isso vou aproveitar esse espaço para estar falando um pouco mais a respeito deles.

Imaginemos uma empresa iniciando o desenvolvimento de uma nova solução. A empresa inicialmente pensará em contratar um analista de sistemas e alguns desenvolvedores para fazer o desenvolvimento da solução.

O analista de sistemas irá iniciar o levantamento de informações junto aos futuros usuários da solução, para poder definir a melhor forma de implementar as regras de negócio.

Mas enquanto isso tornam-se necessárias outras definições :

A) A solução será Web ou Windows ? Se for Windows, como será distribuida, via setup nos clients, utilizando distribuição via GPO no domínio ou como smart clients ?

Se for solução Windows :

Como serão as futuras atualizações da solução ?

Como será feito o controle da CAS (Code Access Security), novo recurso de segurança no .NET ?

A solução Windows será usada externamente ? Se sim, como será a conexão remota com banco de dados ?

Se for solução web :

Estará em uma webFarm ?

Como será o tratamento de sessão ?

Todas essas definições são apenas o inicio de grandes definições que devem ser feitas para a construção de uma boa solução. Passada a etapa de escolha do formato da solução, muito mais surge.

Vejamos alguns exemplos :

Desenvolvimento

Como será o desenvolvimento em conjunto da aplicação ?

Que ferramenta será utilizada para versionamento do código fonte da aplicação ?

Se for aplicação web, será usado um servidor web centralizado para testes ou os testes serão locais na máquina de cada desenvolvedor ?

Segurança

Como será implementada, de forma integrada com o Windows ou de forma independente ? Sendo de forma integrada com o Windows, como usuários externos acessarão a aplicação ?

Quais serão os padrões de codificação para garantir uma aplicação segura ? Por exemplo, as inúmeras telas da aplicação deverão checar a segurança de acesso as telas, qual será o padrão para implementação desta checagem ? Seria possível implementar herança para simplificar o trabalho dos desenvolvedores ?

Trace/Debugging

Qual forma será utilizada para identificar erros em run-time ? Que tipo de log de erros será utilizado ?

Como será o padrão de codificação para tratamento de erros ?

Interface Gráfica

Como será o padrão de segurança para menus e itens de tela da aplicação ?

Qual o padrão utilizado para a montagem de menus, de forma que permita que novas partes da aplicação sejam adicionadas dinâmicamente ?

 

Esses são apenas alguns dos tópicos envolvidos, os mais genéricos. Durante o desenvolvimento da aplicação muitos outros tópicos surgem, e alguns muito mais específicos, precisando ser analisados caso a caso. Inicialmente poderia-se imaginar que o analista ou o programador poderiam resolver isso, mas :

- A tarefa do analista de sistemas é fazer o levantamento de informações e modelar as regras de negócio.

- A tarefa do programador é implementar as regras de negócio modeladas.

Se qualquer um dos dois, analista ou programador, ficar encarregado de definir as questões que seriam tarefa do arquiteto de software uma de duas coisas vão ocorrer :

A) Ou por falta de especialização técnica as questões não serão bem definidas e haverá perda de produtividade no desenvolvimento do software. Observe que tratam-se de questões complexas que exigem profundo conhecimento tanto das ferramentas atuais de desenvolvimento de software como também de infraestrutura, para que seja possível definir o trabalho em conjunto do software com a infraestrutura disponível;

Ou

B) Um dos dois, analista ou programador, tem realmente o conhecimento técnico para definir estas questões. Neste caso, estão superqualificados para a função, provavelmente cobram muito mais do que um analista ou programador cobrariam e tem seus conhecimentos sub-utilizados na tarefa de analise ou programação, gerando um gasto maior que o necessário para o desenvolvimento do sistema.

Então, como vemos, torna-se muito importante ter um arquiteto de software presente durante o inicio da construção de uma solução :

O arquiteto de software irá especificar os padrões e metodologias que deverão ser utilizados pelo programador para implementar as regras de negócio, de forma a atender aos requisitos da empresa.

Observe que o trabalho do arquiteto de software afeta não apenas uma solução, mas todas as futuras soluções desenvolvidas pela empresa, pois ficando o padrão de desenvolvimento bem definido, será aplicado como padrão de desenvolvimento de software da empresa.

Para suprir a falta de arquitetos de software no mercado a Microsoft criou um setor de arquitetura de software. Os funcionários da MS membros deste setor tem por função criar padrões de desenvolvimento de software (design patterns) que são distribuidos em código aberto e podem ser utilizados na construção de aplicações.

Isso minimiza um pouco o problema mas não resolve, pois ainda resta tanto a necessidade de definir quais patterns aplicar e como aplicar, como também a necessidade de definir questões específicas de cada projeto. Portanto, observem bem a necessidade do trabalho de um arquiteto de software ao definirem um novo projeto.



Envie seus comentários sobre este artigo

Nome :

E-mail :

Comentários :


Avise-me quando houverem novos comentários nesta página

Veja abaixo os comentários já enviados :

Nome : DG E-Mail : douglas@dgsoft.com.br
Caro Dennes, meus parabéns pelo Artigo. Foi de grande utilidade para o meu crescimento profissional, bem como consegui visualizar melhor o papel do Arquitero de Software dentro de um projeto. Gostaria de obter mais informações!

Abcs
DG.
Nome : Thales E-Mail : thalesr@gmail.com
Achei muito interessante o teu artigo e gostaria de obter mais informações. Sou acadêmico de Sistema de Informação e falta um ano e meio para a conclusão do meu curso, e desde já estou levantando temas para minha monografia que envolvam a engenharia de software e assuntos relacionados. Não conhecia a função do Arquiteto de Software e fiquei interessado em conhecer mais sobre a profissão e talvez até dissertar sobre ela, portanto, se possível, gostaria de ter acesso a mais fontes (além do Google!) ou materiais de estudo.

Um abraço.


Thales
Nome : Edimilson E-Mail : edimilsonestevam@gmail.com
Boa tarde, Dennes!

Eu sou estudante de informática pela Faculdade de Tecnologia - FATEC em São Paulo e estou participando de uma bateria de testes para uma vaga de Arquiteto de Software. Aliás já atuei na área de Qualidade de Software durante um ano.

Qual dica você me daria para passar nessa seletiva?

Ah, a minha prova será amanhã (07/02/07 às 14h).

Até mais!
Nome : Everson E-Mail : everson_z@yahoo.com.br
Aff...
Um arquiteto amarrado na Microsoft?
Se a pergunta for(Vamos usar Linux ou Unix para a aplicação local?)
"Gostei" do exemplo...
Nome : Iva Gomes Leal E-Mail : iva_leal13@hotmail.com
Artigo muito confuso, estou pesquisando sobre padrões de codificação, e este artigo não me ajudou em nada.Sou estudante de RH no CEFETPI.mande-me uma luz.
Nome : Carlos Augusto Coutinho E-Mail : carlos.m.coutinho@uol.com.br
Primeiramente, parabéns pela iniciativa de puplicar este artigo.
Sou arquiteto de software, e gostaria de comentar um pouco. Meu objetivo não é criticar ou elogiar o artigo, e sim, complementar as informações que eu vejo ser importantes e que não foram citadas.

Estes são os meus pontos de vista, é claro que há quem concorde ou descorde ou como eu, identifique outros pontos que nem o autor, nem eu levantou.

Primeiramente, um arquiteto de software deve possuir uma bagagem profissional muito grande. Se você analisar um curriculo de um arquiteto, verá que ele passou por diversas experiências, projetos e é detendor de um grande conhecimento técnico e gerencial. Não tem como ser um arquiteto, sem antes ter sido um programador sr; analista sr; projetista sr; e ter noções de cordenação de equipe. Um arquiteto, geralmente conheço diversas linguagens de programação (Java, .Net, C/C++, etc), padrões de modelagem (atualemte UML Unified Modeling Language), Processos de Desenvolvimento de Software (iterativo, cascata, espiral, etc) como por ex: RUP Rational Unified Process, XP Extreme Program, Noções de MDA Model Driven Architecture, etc ... Integração entre plataformas usando CORBA, MI/MQ Serious, Noções de Mainframe, COBOL (ao menos como funciona), RMI, esta na moda agora SOA Serviço Orientado a Arquitetura, Enteder também de Hardware (conceitos) servidores e sistemas operacionais como Linux, Unix, Windows e etc ..protocolos de comunicação, TCP/IP, UDP, HTTP etc .. enfim ... uma porção de termos técnicos ...

Por um outro lado, o RUP define um arquiteto como: "Arquiteto de Software lidera e coordena as atividades e os artefatos técnicos no decorrer do projeto. O arquiteto de software estabelece a estrutura geral de cada visão de arquitetura: a decomposição da visão, o agrupamento dos elementos e as interfaces entre esses principais agrupamentos. Portanto, comparado aos outros papéis, a visão do arquiteto de software é ampla, e não detalhada. Em resumo, o arquiteto de software deve ter grande conhecimento geral, possuir maturidade, visão e profunda experiência que permita identificar problemas rapidamente e dar opiniões sensatas e criteriosas na falta de informações completas. Mais especificamente, o arquiteto de software ou os membros da equipe de arquitetura devem combinar as seguintes habilidades: Experiência , Liderança, Comunicação e Orientação por metas e Proatividade".

Para finalizar, o Arquiteto de Software deve atuar junto com o Gerente de Projetos, onde o Arquiteto avalia os riscos, define arquitetura do sistema, prioriza os requisitos, estrutura os modelos de implementação, faz a estimativa do "esforço" do projeto, enquanto o Gerente de Projetos define as datas, prazos e cronogramas. O Arquiteto constroi e valida frameworks e workflows de trabalho, e implementa um ou mais módulos do sistema para validader a arquitetura. O arquiteto ledera e coordena as atividades técnicas, enquanto o Gerente de Projetos Lidera e coordena as atividades negociais.

Bom é isso,

At.,
Coutinho
Nome : Carlos Augusto Coutinho E-Mail : carlos.m.coutinho@uol.com.br
Desculpem-me pelos erros de digitação, é que escrevi direto aqui no site e eu não li o texto antes de enviar. Devido a pressa, eu não iria nem escrever, mas resolvi dedicar uns 5 minutos.

Abraço a todos ..
Coutinho
Nome : Carlos Augusto Coutinho E-Mail : carlos.m.coutinho@uol.com.br
Desculpem-me pelos erros de digitação, é que escrevi direto aqui no site e eu não li o texto antes de enviar. Devido a pressa, eu não iria nem escrever, mas resolvi dedicar uns 5 minutos.

Abraço a todos ..
Coutinho
Nome : Carlos Augusto Coutinho E-Mail : carlos.m.coutinho@uol.com.br
Desculpem-me pelos erros de digitação, é que escrevi direto aqui no site e eu não li o texto antes de enviar. Devido a pressa, eu não iria nem escrever, mas resolvi dedicar uns 5 minutos.

Abraço a todos ..
Coutinho
Nome : marcos E-Mail : fala.besteira.com
Como falam besteira ...
Nome : Ilton Barbosa E-Mail : jittobr@gmail.com
Olá,
Gostaria de saber qual a data de publicação deste artigo, para poder citá-lo em meu TCC.
Nome : MSC Engenharia de Software E-Mail : contato@mscad.com.br
Prezados,

Gostaríamos de apresentar-lhes o MSCad PRO, um software CAD brasileiro compatível com AutoCAD 2011. Com o software, é possível abrir, editar e imprimir arquivos de projetos de engenharia e arquitetura nos padrões AutoCAD.

Desfrute de recursos exclusivos com investimento 90% inferior. 100% em português. Suporte técnico gratuito.

Acesse [ www.mscad.com.br ] e faça o download gratuito do software para teste!

Ficamos à disposição para maiores esclarecimentos.

Atenciosamente.

Equipe MSCad.
contato@mscad.com.br
www.mscad.com.br