as falácias e os desenganos no desenvolvimento de software (techdays 2005)
TRANSCRIPT
![Page 1: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/1.jpg)
![Page 2: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/2.jpg)
ARC03ARC03As Falácias e os Desenganos As Falácias e os Desenganos no Desenvolvimento de no Desenvolvimento de SoftwareSoftware(Partes desta apresentação baseadas numa sessão do Ted (Partes desta apresentação baseadas numa sessão do Ted Neward)Neward)
ARC03ARC03As Falácias e os Desenganos As Falácias e os Desenganos no Desenvolvimento de no Desenvolvimento de SoftwareSoftware(Partes desta apresentação baseadas numa sessão do Ted (Partes desta apresentação baseadas numa sessão do Ted Neward)Neward)
Tiago Pascoal Tiago Pascoal ([email protected])([email protected])
Bruno Câmara Bruno Câmara ([email protected])([email protected])
AgiliorAgilior
MicrosoftMicrosoft®®
TechDays 2005TechDays 2005Aprender, Partilhar, ExperimentarAprender, Partilhar, Experimentar
![Page 3: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/3.jpg)
PatrocinadoresPatrocinadores
![Page 4: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/4.jpg)
Todo e qualquer programador, aquando da construção de uma aplicação poderá ter partido das premissas aqui apresentadas.
No médio prazo estas verificam-se como não sendo verdadeiras, e causam problemas. Revelam-se experiências didácticas mas dolorosas.
Falácia
![Page 5: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/5.jpg)
Falácias com implicações a nível deProcesso Desenvolvimento
Integridade
Fiabilidade/Robustez
Segurança
Desempenho
Manutenção (nível desenvolvimento e operação)
Interoperabilidade
Agenda
![Page 6: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/6.jpg)
Processo DesenvolvimentoProcesso define-se mais tarde
“Por agora faz-se assim, e depois automatiza-se”. “Isto é só temporário, depois vê-se”.
Regras de codificação, não existentes
Os processos de build são habitualmente manuais, sendo os seus automatismos relegados para mais tarde; e quando se vai pensar, ou já não há tempo ou é tarde demais.
Gestão de configurações insuficiente.
![Page 7: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/7.jpg)
Processo define-se mais tardeDefinir boas prácticas à cabeça
Definição de convenções de código e alguns templates pré-definidos
Processo de build automatizado desde o dia zero de desenvolvimento
Build sem intervenção humana e repetível
Definição de regras claras de gestão de configurações
Políticas de Check-In, nomenclatura de versões, regras de estruturação da árvore de desenvolvimento
Padronização dos ambientes de desenvolvimento
![Page 8: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/8.jpg)
Integridade e Fiabilidade”A rede é fiável”
O Hardware falhaRouters “crasham”, fios são cortados, falha a energia (a culpa é da cegonha), ....
Desligam-se servidores inadvertidamente,...
O Software falha Excepções inesperadas, crashes, …
Sistemas são crackados
“As leis da física falham”Por vezes os sinais não viajam como são supostos (interferência, ruído,…)
![Page 9: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/9.jpg)
“A Rede é fíavel”Não assumir fiabilidade
Assumir que durante uma comunicação remota, a rede poderá falhar a qualquer altura
Programação defensiva: timeouts, re-tentativas
Mecanismos de compensação (humana se for caso disso).
Backups (quando tudo o resto falha...)
![Page 10: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/10.jpg)
Fiabilidade/Robustez“Alteraçõezinhas” última hora
“É só mais esta funcionalidadezinha sem impacto”
Associada a esta funcionalidade não foi feita qualquer análise de impacto, podendo afectar a fiabilidade da aplicação
Tipicamente não existem testes (acto de fé, é tão simples que….)
Potencial inconsistência com as restantes funcionalidades
![Page 11: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/11.jpg)
“Alteraçõezinhas última hora”Evitar a tentação de funcionalidades não planeadas
“É dificil não cair na tentação, mas a carne tem que ser forte”
Funcionalidades novas só com testes efectuados
Análise de risco e/ou de impacto
![Page 12: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/12.jpg)
SegurançaA Rede é Segura
“Programadores são competentes”Nem sempre ... Quantos é que sabem sobre segurança de redes?
Os dados remotos são confiáveisA origem dos pacotes TCP/IP pode ser forjada
Principal preocupação do IPv6
Sistemas remotos são confiáveisMesmo sendo confiáveis agora, qual a garantia que algures no futuro não serão comprometidos?
Nunca correrá fora da firewallPortáteis e PDA’s a viajar fora da rede
Redes wireless sem conhecimento departamento de redes
![Page 13: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/13.jpg)
“A Rede é Segura”Assumir a insegurança
Qualquer aplicação que comunique, tem no mínimo dois clientes: A que nós escrevemos e o telnet (o melhor amigo dos crackers)
Se assumirmos que qualquer byte de rede passa por um processo de verificação antes de ser usado, é um bom começo.
Quem discute a dimensão de uma chave criptográfica com outro programador, está apenas a discutir a espessura da porta blindada da tenda
Se confia na firewall para garantir a sua segurança espero que não trabalhe para nenhuma empresa à qual eu confio os meus dados.
![Page 14: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/14.jpg)
DesempenhoNão existe latência
Os dados demoram tempo a viajar pelas camadas de rede e pelo hardware
E isto acontece muitas vezes (uma por intermediário)
Mesmo as redes rápidas, são ordens de grandeza mais lentas que o BUS lento de um PC.
![Page 15: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/15.jpg)
“Não existe latência”Medir os tempos de rede
Seja frugal com a quantidade de dados que transmite pela rede; quanto maior a dimensão dos dados, mais tempo demora a ser transmitido.
O TCP/IP tenta garantir a entrega dos pacotes, cuja dificuldade aumenta com uma maior quantidade de pacotes.
![Page 16: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/16.jpg)
DesempenhoLargura de banda infinita
Uma linha T1 (1.544 Mbps) fica saturada rápidamente quando lhe metemos em cima VOIP, streaming video, downloads de música,etc,etc
Assim que se metem Web Services à mistura, é de esperar que as necessidades dupliquem ou tripliquem
Colocar mais cablagem para aumentar capacidade, é o jogo do tapa e destapa na rua mais próxima (mais uma vez…)
Programadores desenvolvem localmente ou em redes pouco congestionadas.
Um ambiente de produção com estas características, tem uma probablidade igual à de eu ganhar o Euromilhões (e nem sequer jogo )
![Page 17: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/17.jpg)
“Largura de banda infinita”Não envie mais do que precisa
Seja frugal com a quantidade de dados que transmite pela rede; tentar enviar apenas aquilo que não pode ser colocado em cache
Ironicamente, este argumento vai contra a corrente inicial das aplicações baseadas em browsers visto que grande parte da informação enviada é apresentação. Daqui o recente ressurgimento dos “smart clients” e de aplicações AJAX
Testar a aplicação (e não apenas na véspera de passagem a produção) num ambiente muito próximo do de produção.
![Page 18: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/18.jpg)
DesempenhoCusto de transporte é zero
Os ponteiros não viajam bem
É dispendido muito tempo a transformar a representação interna dos dados em algo que possa ser transmitido.
Este processo é denominado por marshaling e tem custos associados.
Quer o Java quer o .Net remoting usam serialização para fazer o marshaling
Os Web Services tem que fazer o marshal/unmarshal de XML
![Page 19: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/19.jpg)
Custo de transporte é zero Perceber e quantificar o seu custo
Medir o custo total de enviar os dados pela rede, medindo o custo total do marshaling.
Recriar o processo de marshaling/unmarshaling (serializando/deserializando todos os dados)
“Observar” dados na rede (tracer)
Medir com um profiler o peso da execução
![Page 20: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/20.jpg)
ManutençãoTopologia é imutável
Mudanças de topologia, acontecem sem qualquer planeamento:
Falhas de hardware, falhas de software, desastres (naturais ou causados),etc.
O código pode correr num portátil ou PDA que anda “por aí”
A rede pode ser wireless, onde os nós estão em mutação constante.
Ou pior uma combinação de rede wireless e cablada.
![Page 21: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/21.jpg)
Topologia é imutávelUtilizar níveis de indirecção
A infra-estrutura de rede, disponibiliza frequentemente níveis de indirecção de forma a abstrair a topologia física da topologia lógica:
DNS,NAT,etc,etc
Alguns modelos de programação disponibilizam modelos (JNDI)
Considerar técnicas Peer to Peer (WS-Discovery, UDP/IP, Multicast,…) para manter registo e reagir a alterações topológicas em runtime.
![Page 22: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/22.jpg)
ManutençãoO sistema é monolítico
“Sim, isso é simples. Só temos que desenvolver e instalar mais um bocado de código…”
Mesmo que se controle todos os intervenientes hoje….
…o amanhã trás sempre alterações a nível do controle das peças
“Parti a tua aplicação? O que queres dizer com isso? Nunca sequer ouvi falar dessa aplicação!”
Poderão existir sistemas, a interligar-se com o nosso (o que não era suposto) sem sequer o sabermos.
As bases de dados são sistemas orgânicos que ganham vida própria. Muitas vezes a “propriedade” da BD perde-se assim que é colocada em produção.
![Page 23: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/23.jpg)
Sistema é monolíticoDefinir as fronteiras
Desenhar o sistema, a tornar explicito quais as partes que são interdependentes e que necessitam de ser alterados atomicamente (tightly coupled); manter as fronteiras externas (rede) o mais possível fora destes átomos (loosely coupled)
Se as dependências do componente se mantiverem apenas do nosso lado, são muito mais fáceis de controlar.
Interrogar-se: “Como é que reagimos se o schema e código evoluírem independentemente?”.
Preferir definir contratos por oposição a tipos partilhados.
![Page 24: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/24.jpg)
ManutençãoO sistema está terminado
A única altura em que o sistema está “terminado”, é quando o servidor é desligado, todas as cópias do código fonte são apagadas, e todos as pessoas envolvidas no projecto são “terminadas” de uma forma final.
De qualquer outra maneira o sistema renascerá de novo noutro projecto “precisamos de algo que o projecto ABC tinha, bastando apenas …”
Mesmo que deixemos a empresa, o código que escrevemos ganha vida própria.
![Page 25: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/25.jpg)
O sistema está terminadoConstruir sistemas que durem
Conceber sistemas com pontos de extensibilidade que permitam a evolução da plataforma sem ter que alterar significativamente o código base
Manter o desenho simples e baseado em interfaces ou protocolos.
![Page 26: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/26.jpg)
ManutençãoExiste um só administrador
“…e ele nunca nos abandonará, nunca adoecerá, nunca terá férias, ou será atropelado por um autocarro”
Acreditem ou não, mesmo os administradores que vivem e respiram os sistemas, gostam de estar longe do computador de vez em quando
“Mas nós controlamos ambas as pontas”
Por agora, talvez, mas o que é que acontece se a tua aplicação tiver um grande sucesso? Ou se a tua empresa compra um concorrente? Ou for comprada? Ou faz uma parceria?
![Page 27: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/27.jpg)
Existe um só administradorTornar o sistema facilmente gerível
Em qualquer altura, qualquer administrador de sistema relativamente competente deve ser capaz de usar ferramentas e serviços para instalar, monitorizar, e diagnosticar o sistema
Usar as capacidades de gestão do SO e ferramentas standard de monitorização
Desenvolver funcionalidades de gestão e administração não contempladas inicialmente (ex: adicionar/remover utilizadores, auditing, etc.) em vez de obrigar o admin a actualizar directamente na BD.
![Page 28: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/28.jpg)
ManutençãoSó mais um IF
“Então para fazermos isto não é só mais um IF? Isto não custa nada certo?”
“Esparguetada” difícil de manter
Aumento da complexidade
![Page 29: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/29.jpg)
Só mais um IF“Não cair na tentação da martelada”
Pode parecer a solução mais rápida, mas a médio prazo poder-se-á tornar num conhecimento perdido (“mas porque é que este IF está aqui?”)
Refactorização de código
![Page 30: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/30.jpg)
InteroperabilidadeO ambiente é homogéneo
Em qualquer empresa existem sempre vários ambientes
Ambientes legados
Mac do departamento gráfico
Aplicação Java da empresa que foi comprada
Existe sempre um amanhã
E as inevitáveis aquisições, fusões, parcerias, etc.
Podes correr, mas não te podes esconder
![Page 31: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/31.jpg)
O ambiente é homogéneoDesenvolver sistemas agnósticos à plataforma
Na concepção do sistema, nunca assumir que do outro lado estará uma plataforma “X”
Utilizar standards nas fronteiras do sistema
Quando tivermos que interoperar, fazê-lo remotamente e nas fronteiras do sistema
![Page 32: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/32.jpg)
Mas.....Em jeito de conclusão
A parte complicada, é perceber quais as falácias que se aplicam ao seu caso em particular
Não existem dogmas
O que foi aqui dito deve ser lido com um espírito crítico
Pesar bem os pratos da balança, e fazer uma análise custo-beneficio
![Page 33: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/33.jpg)
Perguntas e Respostas?Perguntas e Respostas?
![Page 34: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/34.jpg)
Recursos
The Eight Fallacies of The Eight Fallacies of Distributed ComputingDistributed Computinghttp://today.java.net/jag/Fallacies.html
Blog Ted NewardBlog Ted Newardhttp://blogs.tedneward.com
Fallacies of Enterprise ComputingFallacies of Enterprise Computinghttp://blogs.tedneward.com/content/binary/FallaciesOfEnterpriseComputing.ppt
Web Services Interoperability OrganizationWeb Services Interoperability Organizationhttp://www.ws-i.org/
![Page 35: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/35.jpg)
Pergunte Aos EspecialistasObtenha as Respostas às suas Questões
Estarei na área Pergunte Aos Especialistas,
no Pavilhão 5 :
Quinta 10 Novembro 12:30 – 13:00
![Page 36: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/36.jpg)
Participe Noutras Sessões
ARC01 -Padrões para Arquitecturas Orientadas a Serviços (SOA)
WEB04 - Hacked!!! Como são atacadas as aplicações Web, e como devemos usar a .NET Framework para as proteger
ARC04 - Domain Specific Language (DSL) Tools para Desenvolvimento Model-Driven no Microsoft Visual Studio 2005
![Page 37: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/37.jpg)
Recursos Úteis
MSDN Portugalhttp://www.microsoft.com/portugal/msdn
Noticias
Comunidades
Centro de Arquitectura
MSDN Flash
Subscrições MSDNhttp://msdn.microsoft.com/subscriptions
![Page 38: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/38.jpg)
Recursos Úteis
Recursos para Comunidades Microsofthttp://www.microsoft.com/portugal/technet/comunidades
Subscrições TechNethttp://www.microsoft.com/portugal/technet/subscricoes
Certificaçõeshttp://www.microsoft.com/portugal/technet/certificacoes
IT’s Showtime Webcastshttp://www.microsoft.com/portugal/technet/itshowtime
![Page 39: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/39.jpg)
MicrosoftMicrosoft®®
TechDays 2005TechDays 2005Aprender, Partilhar, ExperimentarAprender, Partilhar, Experimentar
Não se Esqueça de Preencher Não se Esqueça de Preencher o Questionário de Avaliação!o Questionário de Avaliação!
ARC03ARC03As Falácias e os Desenganos As Falácias e os Desenganos no Desenvolvimento de no Desenvolvimento de SoftwareSoftware
Não se Esqueça de Preencher Não se Esqueça de Preencher o Questionário de Avaliação!o Questionário de Avaliação!
ARC03ARC03As Falácias e os Desenganos As Falácias e os Desenganos no Desenvolvimento de no Desenvolvimento de SoftwareSoftware
![Page 40: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/40.jpg)
PassatempoPassatempo
Habilite-se a ganhar uma Habilite-se a ganhar uma Xbox 360Xbox 360 e e
um um i-mate JAM 128i-mate JAM 128 por dia! por dia!
Complete o questionário de avaliação e devolva-o no final do dia à saída no balcão da recepção.Complete o questionário de avaliação e devolva-o no final do dia à saída no balcão da recepção.
Bónus Extra no TechDays 2005!!Bónus Extra no TechDays 2005!!
![Page 41: As Falácias e os Desenganos no Desenvolvimento de Software (TechDays 2005)](https://reader030.vdocuments.com.br/reader030/viewer/2022032619/55bdfb58bb61eb7c688b4650/html5/thumbnails/41.jpg)
© 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only.MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.