Sunday, November 19, 2006

Pro BizTalk 2006 (Dunphy and Metwally)

I have recently bought the two books Apress put out about BizTalk 2006, "Pro BizTalk 2006" and "BizTalk 2006 Recipes", and started by reading the first. After the first hundred pages, I can say that this is possibly the most in-depth BizTalk book I've read (versions 2000/2002 included :-)), with several details about the insides of BizTalk Server and little tips that can be helpful, and I highly recommend it as a medium/advanced book for developers and architects.

There are some aspects of what I've read so far that I dislike, however, and where I think the authors could have selected different approaches:

  • Naming Conventions: the book includes a set of BizTalk naming conventions, essential in BizTalk development, but what I think is unnecessary is (table 2.3, p.61) the definition of prefix/identifier-based conventions for the names of shapes in Orchestrations.
    Example: If the graphical shape itself represents a Send, why have its name be "Snd_MessageName" and instead of simply "MessageName"? That's 4 characters wasted in a shape whose size does not grow to accomodate its name. Plus, if the names of the shapes are not identifiers (as variable or message names are), using underscores and casing instead of spaces and readable text is a loss of legibility.
  • Code Examples in VB.NET: I have never met a BizTalk 2004/2006 developer that uses VB.NET, C# is the language of choice. VB.NET might be a good selection if this was a beginner's book, but this not being the case, I personally think this is was a poor option.
    There are obviously personal preferences in this issue, but the fact that expressions are written in C#-like code, and that the code generated by the ODX cross-compiler is C#, might have been good objective reasons to a difference choice.
  • Factoring of Visual Studio projects: this is a topic that is more important than it seems, and frequently ignored both in published documentation and examples. The traditional wisdom, when doing BizTalk development, is to factor developments into projects named for example Project.Orchestrations, Project.Schemas, Project.Pipelines, etc., i.e., grouping by type of artifact. This book, unfortunately, makes similar recommendations.
    The problem of this type of recommendation is that it doesn't take in consideration operational issues, especially when long-running processes are involved: imagine you have 2 orchestrations and 2 schemas, and you factor these into a MyProject.Orchestrations and MyProject.Schemas projects. One of the orchestrations waits for a confirmation from a user, and is typically long-running, the other is short-lived. You deploy these into production environments, and all is well. Some time later, there is a need to update the schema used in the short-lived orchestration. What happens? To replace the schemas assembly you have to replace the orchestration assembly as well, and this terminates the long-running processes, which is not good. Having given some importance to the versioning issues, which can indeed help avoid this problem, the authors could have gone for a more refined approach in this factoring issue.
    I typically use two approaches: first, factor together artifacts that are versioned simultaneously (example: if a schema changes, it is very likely that any maps using it will also change). This is, by the way, the solution recommended in a Microsoft Webcast done by a couple of BizTalk Rangers a while back. Second, use Domain Driven Design techniques (and here I am referring to Allen's book with this title) and factor together semantically related artifacts. This also helps when teams of several developers are working in a BizTalk solution.
    Factoring BizTalk artifacts into projects is not a simple issue, but these techniques can help guide you in your developments.
  • Schema versioning:  the authors correctly recommend using the namespaces of schemas to do schema-versioning. What I dislike is the usage of .Net-like version numbers instead of schema change/publish date. In page 55, a suggestion is made to use http://Microsoft.BizTalk/Service/v1.0.0.0, where I think something like http://Microsoft.BizTalk/Service/2006/11/18 should be used instead. You do lose the immediate connection to the .Net version, but if schemas are to be published outside your organization or department, this shouldn't be exposed. Also note that using the date is frequent both in internal BizTalk schemas and W3C recommendations.

Also note that, in page 16, it should read "Windows SharePoint Services (v2.0)" instead of "SharePoint Portal Server".

Even with these issues, like I said at the start, I highly recommend this book. Buy it, you won't be disappointed. The only thing that is missing is Adapter development.

Thursday, November 16, 2006

Evento Msdn Better Together. For developers

No dia 22 de Novembro, próxima quarta-feira, no Porto, a Microsoft vai realizar um evento técnico que inclui sessões sobre Windows Vista, .Net 3.0 (WCF, WPF e WF), e o novo Office. As sessões de Office vão  focar-se em grande parte nas capacidades disponibilizadas pelo novo SharePoint 2007.

Neste evento, vou apresentar a seguinte sessão:

Soluções de Workflow e Processos de Negócio com formulários desenvolvidos em InfoPath 2007
A sessão apresenta as diferentes ferramentas disponíveis para construir e gerir as soluções baseadas em Microsoft Office InfoPath 2007. Apresenta o novo modelo de objectos do InfoPath, fala sobre a integração melhorada do Microsoft Visual Studio 2005, e sobre as novas caracteristicas como os templates, os ficheiros de ligação a dados partilhados, e a possibilidade de serem utilizados em ambientes Web e Windows. Conhecerá igualmente o desenvolvimento, gestão e a possibilidade de utilização de formulários desenvolvidos em InfoPath 2007 noutras aplicações. O servidor da Microsoft Office SharePoint 2007 apresenta o Business Data Catalog (BDC) como uma nova tecnologia para facilitar a ligação ao portal e as aplicações empresariais. Nesta sessão iremos analisar o BDC e a sua integração nas soluções existentes.

Apareçam!

Tuesday, November 14, 2006

BizTalk: faster to transform with maps or in code?

I have been testing a scenario hinted about in a discussion at TechEd with a fellow MVP. This is the basic idea: which is faster? using the BizTalk Mapper, which generates XSL-T underneath to convert between 2+ schemas, or do the transform in a custom Transform method written in C# in a class library project, that converts a source object into a target object (with these two being produced from the schemas using xsd.exe) with the appropriate assignments and serializations?

I am testing this out of curiosity only, because I plan on keep on using the Mapper due to its visibility and documentation advantages, but the code-based approach seems to be faster, even with simple maps containing direct-links only. The Map approach is a little faster when processing single messages, but as I increase the load the difference becomes greater in favor of the code approach.

I want to further test this, with complex scenarios (ex: using functoids and repeating structures), and will post my test code here when I'm done.

If the code approach proves to be superior in terms of performance, it may be a good idea to create a tool that generates C# code from a map, instead of XSL-T... in a BizTalk Server Software Factory, perhaps? :-)

Monday, November 13, 2006

Iron Architect: Contest Submission

Here is my submission to the Iron Architect contest at TechEd EMEA 2006, in PDF. Like I said in a previous post, the main difference between my submission and others was probably the inclusion of the Tag Cloud. This was actually my first idea when approaching the problem. The main issues I felt were in dealing with time slots and with the communication with the speakers and delegates.

Friday, November 10, 2006

Iron Architect: YEAH! :-)

Acabei de ganhar a final do concurso Iron Architect do TechEd 2006, com uma abordagem a um sistema de criação de comunidade para o evento. O factor diferenciador foi o recurso a um mecanismo de tagging para construir perfis de utilizadores, com base nas sessões em que cada pessoa participa. Daqui sai uma tag cloud pessoal, que pode ser usada para encontrar pessoas com interesses semelhantes, entre outras coisas.

Na sala estavam muitos dos portugueses da conferência, e agradeço-lhes o apoio, bem como os comentários e ajuda de outras pessoas do GASP, como o Hugo Batista, Tiago Pascoal, Filipe Clérigo, Paulo Morgado, entre outros. Thanks people! O Zé Tó da MS não pode ajudar, porque fazia parte da organização, mas agradeço-lhe, e ao Pedro Rosa, pelo incentivo à participação.

No juri estava o Beat Schwegler, o Ron Jacobs, Juergen Pfeifer, e uma pessoa da organização do evento. Suficiente para me deixar mais nervoso do que em qualquer outra apresentação pública que tenha feito. :-)

Não tenho o material comigo, mas quando tiver coloco aqui a apresentação.

O site da competição é este: Iron Architect.

Thursday, November 9, 2006

Mais TechEd Off-Topic

Ontem a noite foi de Country Drinks, num bowling perto do Centro de Conferências. Imensa gente na conversa e a jogar, foi divertido, e tive oportunidade de conversar com vários conhecidos que não via há anos e que reencontrei. O Pedro Rosa da MS levou as t-shirts da "Portuguese Team", que se pode ver aqui, e que na frente inclui os logotipos da Microsoft e do GASP. Porquê a frase? O Pedro um dia explica-vos. J

Aproveitei também para ir falar com o Lee Graber, Dev Lead da MS na equipa de BizTalk, e juntamente com outro MVP de BizTalk (somos espécies raras, entre muitos MVP's de ASP.NET) do Chipre, estive a esclarecer várias questões que tinha acumuladas. Soube dar-me alguns detalhes sobre aspectos concretos da implementação do "coração" do BizTalk, uma vez que muito do que existe foi desenvolvido por ele (por exemplo, muitos dos stored procedures), e mesmo da organização da equipa que desenvolve o produto. Muito interessante.

Da mesma forma estive com a "minha" MVP Lead da Microsoft, com o Damir Tomicic que está cá em representação da IASA (e está mais gente de outros chapters), e com dois holandeses do User Group .Net holandês, ambos MVPs e com livros publicados, a conversar sobre panoramas de tecnologias nos dois países, e cenários para publicação de livros. Trocar ideias e conhecer pessoas é um dos aspectos mais interessantes destas conferências.

DEV310 - WCF: Building Secure, Reliable and Transacted Distributed Services (Shy Cohen)

Tenho a impressão de já ter visto esta sessão em algum lugar. Sem muito de novo, foi mais um "refresh" de WCF. Em termos de segurança, requisitos que o WCF cumpre são coisas como:

  • Saber quem invoca um serviço
  • Controlar acesso a serviços
  • Garantir integridade das mensagens
  • Garantir confidencialidade do conteúdo das mensagens
  • Agir em nome de quem invoca um serviço

Ainda em termos de segurança, apresentou conceitos importantes como Credenciais, Claims, e Security Model, e mecanismos de segurança como Segurança no Transporte, Segurança ao nível da Mensagem, e Segurança com Federação (incluindo aqui a utilização de um STS). E se o WCF não fizer o que pretendemos? "extensibility in WCF can be complex, but it is completely possible".

Passando à componente de reliability, falou de questões como problemas de comunicação (ex: perda de pacotes), ou de processamento (como idempotência). Prosseguiu com a questão da transaccionalidade, tanto em termos de tx atómicas como de longa duração, e compensação (acção manual para reverter uma transacção que fez commit). Passou ainda por queues (inc. a dead letter queue) e poison messages e a sua detecção.

A terminar, a parte mais interessante, que faz sempre uma boa demo, tem a ver com reliable sessions, bastando sinalizar o cliente e o servidor com as configurações adequadas. A demo incluía um "cubo mágico" e a face do Don Box, com um intermediário que introduzia perdas nas invocações. Já deve ter sido feita 100x, mas tem sempre interesse.

Agora que o WCF já está em RTM, já não há desculpa para continuar a usar ASMX. E até meados de Dezembro, vem a Service Factory para WCF (que neste momento existe para ASMX apenas).

TechEd: Iron Architect contest

Não voltei a colocar resumos de sessões, porque tenho despendido o tempo livre que tenho a produzir uma submissão para o concurso Iron Architect do TechEd. O vencedor ganha financiamento para concorrer à certificação Microsoft Certified Architect, no valor estimado de €8000.

O problema a resolver é semelhante ao que foi lançado no TechEd em Boston, mas com o objectivo de conceber uma forma de agendar reuniões entre participantes na conferência, speakers e community leaders. Amanhã concorrentes seleccionados vão ter a oportunidade de em 10 minutos apresentar a sua solução ao juri (Beat Schwegler, Ron Jacobs, Juergen Pfeifer e Arvinda Sehmi...). Sei que há outro concorrente do GASP (o Luis Martins da Organtex, no Porto), o que não deixa de ser interessante. J Que ganhe o melhor, a minha proposta já seguiu.

Entretanto, há duas outras pessoas do GASP por aqui: o Paulo Cunha da IT Sector, no Porto, e o Nuno Cândido Antunes, do BPI. Andamos todos aos encontrões nas sessões de Arquitectura. J

A ideia de ter este tipo de concursos é bastante interessante: em sessões do GASP já foram feitos dois muito animados e design labs.

Wednesday, November 8, 2006

DEV323 - C# 3.0: Future Directions in Language Innovation (Anders Hejlsberg)

O dia começou cedo, aproveitei uma hora para fazer um hands-on lab com a Web Service Software Factory. Como acontece com outros, nem sempre se explica o raciocínio de cada passo, mas o essencial da criação dos tipos, mensagens, os contratos, etc., está bem explicitado.

Depois disto, fui à sessão de C# 3.0 do Anders Hejlsberg, criador do C#, Linq, etc. Já tinha visto a sessão antes, mas vale sempre a pena. Começou com uma perspectiva histórica: a primeira versão, com a .Net Framework 1.0, já tem quase 8 anos desde que começou a ser pensada, a primeira abordagem a Managed Code. Na versão 2.0, fez-se tudo que se queria ter feito na anterior mas não houve tempo, com grande destaque para os generics. Na versão 3.0, que aí vem, é onde se tem finalmente espaço para inovar, muito baseado nos alicerces mais sólidos da 2.0.

Os objectivos de design do 3.0 são/eram:

  • Integrar objectos, dados relacionais, e Xml
  • Tornar a linguagem mais consisa
  • Adicionar potencialidades de linguagens funcionais (como lamba expressions)
  • Não fazer a linguagem dependente de API's específicas
  • 100% retro-compatibilidade

Quais as novidades, então?

  • Local variable type inference – conveniência sintática que permite não ter de repetir o tipo que está a ser declarado, usando a keyword var. Exemplo: var d = new Dictionary<int, Order>(); em vez de Dictionary<int, Order> d = new Dictionary<int, Order>();Notar que a variável d é strongly-typed, a novidade trata-se de mera conveniência sintática.
  • Extension Methods - possibilidade de adicionar métodos a quaisquer classes existentes, como se lhes pertencessem. Isto evita termos de fazer métodos estáticos para adicionar funcionalidade. Exemplo: em vez de public static string MyContactenate(string s1, string s2), podemos fazer: public static string MyConcatenate(this string s1, string s2); e agora podemos chamar desta forma: s1.MyConcatenate(s2);
    Mais uma vez, trata-se de uma conveniência sintática, mas muito interessante.
  • Lamba Expressions – durante a licenciatura aprendi uma linguagem funcional chamada ML, em que reinam coisas chamadas lamba expressions. Apesar do aspecto relativamente académica, é um mecanismo muito interessante e poderoso em várias situações (convido-vos a investigar). O C# 3.0 inclui expressões lamba, que permite fazer coisas como: customers.FindAll(c => c.PostalCode == 1000). A lamba expression aqui seria algo como λc.c.PostalCode == 1000 . Pouco intuitivo talvez, mas muito poderoso.
  • Object Initializers – fácil de explicar com um exemplo. Consiste na possibilidade de inicializar objectos com invocações implícitas a propriedades: Ponto p = new Ponto{X=100, Y=50}; , em que X e Y são propriedades da classe P. Outra conveniência sintática.
  • Collection Initializers – parecido com o anterior, ilustrado mais uma vez com um exemplo: List<int> = new List<int> (10, 100, 20, 40);
  • Query Expressions – talvez o aspecto mais visível do C# 3.0, quando se investiga o Linq (Language Integrated Query), consiste na possibilidade de escrever "statements" de acesso a dados como se fossem Sql em C#, para aceder a arrays, xml's, bases de dados, etc. (qualquer coisa que suporte IEnumerable<T>). Este tema é enorme, e recomendo a todos que investiguem o assunto. Mais uma vez, são uma conveniência sintática, uma vez que os Select/Where/GroupBy são convertidos para invocações a métodos antes da compilação para IL.
  • Anonymous Types – usado, por exemplo, quando se faz uma query à BD e se devolvem apenas 2 dos campos de uma tabela. É criado um tipo automaticamente, strongly-types, para guardar o resultado. Exemplo: select new { Name = p.Name, Address = p.Address }; cria um tipo anónimo (sem nome...) com 2 campos do tipo string.
  • Expression Trees – quem conhece desenvolvimento de compiladores e análise sintática de expressões adivinha rapidamente o que isto é. A referência é a classe Expression<T> e o namespace System.Expressions .
  • Automatic Properties – outra conveniência sintática, permite criar automaticamente properties, da seguinte forma: public string Name { get; set; } cria a variável privada e métodos set e get.

A sessão teve algumas demos de Linq, impressionantes como sempre, e que podem tb ser vistas no Channel9 (vejam tudo o que está lá com o Anders). Foi uma boa sessão. A questão que se levanta é: todos estes mecanismos vão mesmo ser usados, de forma generalizada? Coisas como Lamba Expressions e o Query Expressions são poderosas, mas não são de compreensão imediata. Logo se verá, afinal ainda vamos no 2.0 . J

Tuesday, November 7, 2006

DEV401 - BizTalk Server 2006 for XML Developers (Aaron Skonnard)

Uma sessão nível 400 que devia ser 300, sem novidades ou muita profunidade. Algumas demos introdutórias, e a ilustração de aspectos onde o Xml é utilizado no BizTalk: o schema editor, o mapper (que é uma das jóias na caixa do BizTalk), XSL-T e o Flat-File Schema Wizard (uma ferramenta muito interessante, nova no 2006).

A maioria da informação apresentada pode ser lida em dois artigos que o Aaron publicou na MSDN em 2005 sobre o tema, ainda em BizTalk 2004, aqui e aqui.

ARC305 - Connected Systems - Part 2: Communication, Flow, Rules and Logic (Clemens Vasters e Steve Swartz)

O Clemens e o Swartz são ambos experientes e habituados a este tipo de eventos. Este ano têm uma série que fazem as dois, na track de Arquitectura, sobre diversos assuntos relacionados com Connected Systems. As sessões são sempre cheias de humor, e têm slides muito atraentes visualmente.

Nesta sessão, a segunda da série, começou por se apresentar três padrões de interligação locais: chamadas síncronas (local calls), utilização da thread pool (uma forma de mover trabalho para outro interveniente), e eventos (aqui exemplificado com eventos .Net). Analogamente, em termos globais, as analogias destes 3 padrões são, respectivamente: N-Tier (exemplo clássico: UI/Business/Data Access), Message Queues, e Publish-Subscribe.

Para o Swartz, só existem estes três padrões de interligação (sujeito a discussão, claro – por exemplo, como enquadrar o P2P neste esquema?): "My belief is that all other patterns are combinations of there three". Estes são frequentemente compostos, nas aplicações reais que desenvolvemos. No final da parte do Swartz, fez o mapeamento para tecnologias concretas, como MSMQ, BizTalk, WCF, ASMX, e Enterprise Services.

Aqui entrou o Clemens, que teve uma intervenção menos teórica, e começou por apresentar o Outlook como uma destas composições: Contactos e Notas são N-Tier, Inbox e Reminders são Pub-Sub, e a Outbox e as Tasks são Queues. Analogias interessantes. Depois do Outlook, ilustrou num Visio um exemplo do tipo Amazon, com identificação de padrões usados em cada um dos inúmeros componentes da arquitectura.

A sessão teve outros aspectos interessantes de referir, como onde deve estar a fronteira entre a utilização de configuração (ou regras, ou workflow) e código.

No geral, os tópicos abordados foram interessantes e são relevantes, valendo a pena pensar sobre o tema, no entanto a forma de apresentação acaba por parecer forçada e exagerada, não me deixando com vontade de ir a outras sessões da série. Julgo que seria melhor se limitassem o aspecto brincadeira e focassem mais na mensagem a transmitir.

TechEd Off-Topic

O GASP está representado em peso no TechEd: além de mim, e entre os cerca de 4000 participantes, estão o Hugo Batista, Tiago Pascoal, Filipe Clérigo, Paulo Morgado e Miguel Madeira de Lisboa, e o José António Silva, Luis Martins e Hugo Ribeiro do Porto.

Passando pelo "booth" de Ask The Experts de Arquitectura, encontrei o Zé Tó, que é uma das pessoas por trás do concurso Iron Architect deste ano, numa animada conversa com o Ron Jacobs e o Paulo Morgado, essencialmente sobre a utilização de interfaces de serviços do tipo:

messageResponse Execute(messageRequest arg) {...}

Para o Ron um Anti-Pattern SOA, para o Zé Tó um padrão muito interessante em cenários como routing/brokering, e também com claras vantagens em termos de gestão de plataforma (pela redução na quantidade de serviços). O Ron vai fazer a sessão de anti-patterns soa, quero ver se inclui os resultados desta conversa. J

ARC207 - Introduction to Agile Methodologies and Concepts (Roy Osherove)

O Roy Osherove é uma das blog-sonalidades presentes no TechEd, para fazer sessões relacionadas com metodologias ágeis. A apresentação que fez foi uma sessão muito introdutória a metodologias ágeis, com algum foco em Scrum e eXtreme Programming. Grande parte do tempo foi passado a motivar para a utilização destas abordagens, sendo a capacidade de reagir à mudança o aspecto chave. Outros aspectos críticos são a comunicação entre os intervenientes do projecto, e a capacidade de produzir valor para o cliente rapidamente, com releases frequentes e incrementais. Em alternativa, referiu, as metodologias tradicionais tentam "prever o futuro", fechá-lo em documentos Word, requisitos, âmbitos controlados, etc.

Foi brevemente apresentado o Agile Manifesto, e este vídeo como uma boa analogia das metodologias ágeis: parece confuso, contra-intuitivo, mas que funciona surpreendentemente bem! Seria mais eficiente, se fosse cumprido o código da estrada? Há aqui assunto para discussão.

Uma parte interessante foi o contraste Scrum vs XP, com identificação daquilo que o XP tem que não está no Scrum (ver os slides, abaixo), tais como o pair programming, e que pode ser incorporado na primeira.

Acho que a mensagem essencial, e o Roy apresentou esta sessão evitando tudo o que é o aspecto religião frequentemente associado à defesa destas metodologias, é que destas metodologias devemos adoptar aquilo que achamos relevante no nosso contexto: a postura do cliente, as características da equipa, o projecto, etc.
O soundbyte: "The essential is adopting what works for you, the goal is make things better. If your current method works well, leave it alone, keep using it".

Pessoalmente, acho que este tipo de metodologias são muito interessantes (gosto especialmente de Scrum), e acho que em muitas situações é um caminho que se deve pelo menos experimentar.

Nota: aqui estão os slides da pre-conf que o Roy fez ontem. A sessão ARC207 foi a primeira da pre-conf.

DEV312 - BizTalk Server 2006 – Design for Performance (Lee Graber)

A primeira sessão de BizTalk, com uma apresentação por um Dev Lead do BizTalk (autor do blog BizTalk Core Engine), dedicada ao tema de desempenho. Já conhecia a maioria destes conteúdos, que percorreu inúmeras boas práticas a seguir em termos de messaging (ex: não usar elementos xml com nomes grandes, não usar a Xml Pipeline no envio a menos que se pretendam demover propriedades, colocar mapas nos receive ports e não nas orquestrações, etc.) e orquestrações (não assumir que o parallel é multi-threaded, inicializar correlation sets no envio e não na recepção de mensagens, etc.), considerações sobre tunning, a penalização decorrente da persistência e as situações em que a mesma acontece, efeitos de ter várias message boxes, e vários outros aspectos. Em tudo o que tem a ver com desempenho, um aspecto a salientar é sempre a necessidade de testar e medir.

Uma dica que vai estar em breve no blog dele é a de que se executem os seguintes sp's nos SQL's que suportem o BizTalk:

exec sp_tableoption N'Spool', 'text in row', 'ON'
exec sp_tableoption N'Parts', 'text in row', 'ON'

Aparentemente tem um efeito significativo (10-15%) no desempenho ao nível da Message Box.

No final houve várias questões, uma delas sobre a inclusão do Windows Workflow no BizTalk. O Lee explicou a história e origem do WF, quando ainda era WinOE, e comentou que na versão do BizTalk pós-R2 o motor de orquestrações vai ser efectivamente substituído, e que já não existem pessoas da equipa de produto a fazer desenvolvimentos no mesmo.

Uma boa sessão, e tem sempre piada ouvir os comentários "off-record" sobre o que acontece "lá dentro". Adicionalmente, nunca tinha estado numa sessão de BizTalk com tanta gente. Talvez uma demonstração da crescente adopção da tecnologia.

O soundbyte da sessão: "The SQL Agent is our Garbage Collector".

KEY001 – Launch: Windows Vista, the 2007 Office System and AJAX (Eric Rudder)

Primeira sessão oficial do evento, a keynote do Eric Rudder servia para fazer o lançamento dos produtos que indico no título (com excepção do Vista). A sessão foi fraca e pouco dinâmica, algo dirigida para a imprensa (como costumam ser), e muito timidamente anunciando os RTM's do Office 2006 ("yesterday at 6pm"), .Net 3.0, e Ajax for Asp.Net. Os produtos estão terminados, e estarão disponíveis na MSDN até ao final do mês.

Ponto interessante da sessão foi a demo do Eric Lee, percorrendo o Office 2007, Vista, WPF, Workflow, WCF, Ajax. Muito mostrar a funcionar e sem mostrar a fazer. Mesmo a terminar entrou o Anders Hajlsberg para uma demo final de Linq. O Anders é muito convincente, e apesar de a demo não ter tido nada a mais do que teve o ano passado no PDC05, não deixou de ser extremamente interessante, e a tecnologia é muito promissora. Ponto alto.

Monday, November 6, 2006

TechEd 2006: Introduction to Software Architecture (Sessões 3 e 4)

As outras duas sessões da pre-conference foram sobre Essencials of Architectural Analysis, e sobre reviews a Arquitecturas. A primeira, com o Ron, foi mais uma vez muito leve, ilustrada com alguns dos vídeos disponíveis no site dele, focada em questões como a identificação de requisitos e a sua importância. Apresentou uma tabela interessante com dados de projectos da NASA, relacionando o tempo despendido a recolher requisitos com o aumento de custos em projectos, face ao esperado: com menos de 5% do orçamento do projecto alocado aos requisitos, resultam excessos de custo de 125%. Com mais de 10%, apenas excessos de 30%. Falou ainda de patterns, e talvez o vídeo mais interessante que mostrou, apesar de curto, foi com um "city planner" de Seattle, que em poucos minutos, ao falar do planeamento de cidades (algo tipo os PDM's), usou palavras como "patterns", "frameworks", "master plan", e outras que ressoam no domínio da arquitectura de software.

A segunda sessão foi quase toda dedicada ao standard ISO 9126, sobre qualidade de software, percorrendo os vários aspectos do mesmo e terminando a analisar o iPod. Não foi uma sessão muito interessante, apesar do Scott ser um bom speaker.

A pre-conf está a acabar, com perguntas e respostas, e as primeiras foram precisamente sobre um tema que já discuti no passado: qual é o papel do arquitecto numa metodologia ágil como o Scrum? O Scott, um agilista convicto, faz tanto arquitectura como design (curioso como fez esta distinção), o que lhe dá espaço para estar em todos os projectos e dar globalmente indicações sobre o caminho a seguir. O Ron acrescentou que, em projectos ágeis bem sucedidos, o Arquitecto tende a ser alguém que é o dono da Visão arquitectural do projecto. Para ambos é indiscutível que tem de existir espaço para este papel, em contraste com a visão orgânica (e romântica) em que do trabalho independente de developers a trabalhar em equipa sai um edifício como o pretendido pelo cliente.

Globalmente, a pre-conf não foi tão satisfatória como poderia ter sido (parece que há uma certa tendência para haver demasiado teoria nestas sessões, quase todas de nível 200), pessoalmente interessa-me também ter a visão prática, especificidades dos projectos, trocas de experiências. Como acontece no GASP, aliás. Neste aspecto, a lição que me pareceu mais interessante, passada pelo Scott, foi a necessidade de recolher métricas, medir, testar automaticamente. Porque "anecdotes", historietas, experiências de projectos passados, não são o suficiente.

Outros comentários finais do Scott: diz que não lhe agrada particularmente o UML, e que o único diagrama (na experiência dele) que o cliente consegue compreender são os Sequence Diagrams, que fazem para cada Use Case dos projectos que desenvolvem (pessoalmente também tenho boas experiências com Statechart diagrams).

Quanto à tuga-team, já chegou também o Zé Tó, almoçámos todos o Jan Tielens, e à noite tenho o jantar de MVPs com o Paulo Morgado. Uma curiosidade interessante é que há mais participantes portugueses que espanhois no TechEd (!!).

TechEd 2006: Introduction to Software Architecture (Sessões 1 e 2)

A primeira sessão da pre-conf foi muito "alto nível", com o Ron Jacobs a identificar três funções que considera chave num arquitecto: a faceta de explorador/visionário, o aspecto de "advocate", que se preocupa com o cliente e o problema (sendo este o aspecto que me parece menos interessante em termos de analogia, uma vez que um advogado é alguém que pode defender causas que sabe serem do culpado), e finalmente o aspecto que mais tradicionalmente se pode associar à função de um arquitecto, a concepção/desenho de uma solução.
Foi uma sessão vaga e algo superficial, mas também com carácter introdutório.

A segunda sessão, com o Scott Hanselman, foi mais interessante. O título era "Essencial Abilities of a sw architect", e focou em aspectos como preocupações com segurança, disponibilidade, e desempenho. Três preocupações genéricas, mas tb muito fundamentadas no tipo de trabalho desempenhado pelo Scott, em sistemas com frontends web. Aproveitou para "vender" aspectos que já apresentou tb em podcasts, como sejam os testes unitários, integração contínua, e scrum. Um aspecto particularmente saliente, em qualquer das três dimensões, tem a ver com a possibilidade de tirar medidas não equívocas, de forma automática, que possam ser comparadas com uma "baseline", e assim avaliadas.
Uma dos inúmeros sound-bytes que disse foi "A quantidade de artefactos não-software num sistema deve tender para zero." O exemplo? Um documento Word que diz que o tempo de carregamento de uma página deve ser inferior a 2 segundos deve ser substituído por um teste automático que verique essa condição.
Uma sessão interessante, com um speaker muito eloquente.

 

TechEd 2006: Introduction to Software Architecture (Pre-Conference)

Começo as sessões deste ano na Pre-Conf de Arquitectura, com o Ron Jacobs e o Scott Hanselman a falar de arquitectura. O primeiro conhecido pelo Arccast, o segundo pelos Hanselminutes.

O grupo de "tuga" já inclui com o Pedro Rosa da MS, Tiago Pascoal e Bruno Câmara da Agilior, Paulo Morgado (MVP C#), e eu. Durante o resto do do dia deve chegar o resto do "contigente" de cerca de 60 pessoas. A t-shirt patrocinada pela MS PT, inclui, além do logo da conferência e a Microsoft, o logotipo do GASP. :-)
Por cá há também uma banca da IASA, com quem vou falar amanhã.