Escribiendo código a la defensiva y manejando excepciones,

Desde el lanzamiento de .NET y su aplicación al desarrollo de aplicaciones Web (ASP.NET), uno de los principios esenciales es el desarrollar código seguro, pues qué puede significar eso?

No solamente es evitar inyecciones al código de tipo SQL, sino tambien implementar una serie de políticas que eviten el mal uso de este código, y sobre todo hacer que nuestras aplicaciones no se "caigan" de forma catastrófica (léase la típica pantalla de error de .NET) frente al usuario.

Dentro de nuestra organización  hemos tratado e imprimir una serie de reglas en el desarrollo de nuestras aplicaciones de las cuales enumero algunas:

  1. Nunca confíes en el input del usuario:
    Una de las causas más comunes de errores no controlados, el asumir que el usuario ubicará datos congruentes en cualquiera de los mecanismos de ingreso de información. De manera que todo "absolutamente todo" es validado a todo nivel, desde las formas ASP.NET hasta la capa de datos.

  2. Nunca permitas que la interfaz de usuario "se caiga":
    El usuario no debería perder la interacción con la aplicación. Si se llegase a generar una excepción, no debería ser el fin del mundo!, de esta manera tratamos de informarle al usuario: Qué paso? Qué tipo de excepción es?, Por qué pudo haberse generado el error? y Qué puede hacer para remediarlo?: Si es un error de input que ubique los valores adecuados o si es un error no manejable por el usuario a quién tiene que contactar para resolverlo.

  3. Capturar la mayor cantidad de excepciones posibles y registrarlas:
    El poder analizar los métodos dentro de los componentes, datos o presentación clasificando excepciones podría resultar una tarea ardua, pero enriquecedora en cuanto a resultados, mucho más si registramos las excepciones generadas, nos ha ayudado muchísimo a resolver problemas insospechados de forma relativamente rápida y efectiva. Aquí incluyo la clasificación de excepciones: comenzamos entre las "Excepciones Catastróficas" y el "Resto", para priorizar... lógicamente esta división se amplió a categorización por módulo, importancia, frecuencia, etc.

  4. Verificación de nulidad de objectos:
    Asumir que el objeto (sea control, instancia de clase, etc) podría ser nulo ("null") en cualquier momento. Esta estrategia te libera de muchos problemas derivados de la omisión.

  5. Implementar mecanismos de reporte de Bugs:
    Una vez que la aplicación está en producción, al usuario detectar un bug o excepción, tiene la posibilidad de reportarlo mediante mecanismos de comunicación con nuestro departamento de soporte. Esencial en aplicaciones de alto desempeño. Seamos razonables, la aplicación libre de bugs no existe, por lo tanto lo mejor es tratar de manejarlos, reportarlos e incluirlos dentro del flujo de soporte. Muy buenos resultados, sobre todo hacia la imagen que damos al usuario.

Son algunas cosas, pocas, las que he mencionado, pero que ayudan realmente en construir código realmente seguro y sobre todo enfocado hacia el soporte al usuario asegurando un ciclo de vida lo más correcto posible de la aplicación.

Espero seguir escribiendo sobre esto en algún post más... saludos. 

Actualmente calificado con 4.5 por 2 personas

  • Currently 4,5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Credo para el Desarrollador que trabaja en equipo

Cuando se construye un equipo, como ahora en mi oficina. Se debe pensar que es muy importante manejar la cultura de equipo de tal manera que se pueda ser lo más productivo posible. A través del tiempo trabajando con equipos con difierentes disciplinas se podría ubicar un lista de actitudes e ideas que beneficien al equipo de desarrollo. Se la podría denominar el Credo de Desarrollo

Este es un artículo que Eric Wase ha publicado y me permito reproducir en su extensión. 

 Yo <Tu nombre> soy un  desarrollador.

Entiendo que la razón por la cual yo existo, es para servir y resolver las necesidades de los usuarios.  Tomaré los requerimientos del usuario seriamente y seré un apasionado del servicio al cliente. No mostraré ningun desdén por el usuario que no entienda lo que yo hago y siempre trataré de cruzar el puente entre el mundo técnico y el del usuario para poder comprenderlo mejor. Al lograr entender al usuario puedo ganarme su confianza, y con esta confianza tendré un socio valioso en el proceso de desarrollo.

Entiendo que cada uno de los miembros del staff de IT es importante para lograr alcanzar mis metas. Los administradores de Bases de Datos protegen mis datos y me ayudan a asegurar el desempeño. Los Administradores de Red aseguran que mis respaldos (backups) están seguros y que tengo los accesos, permisos, software y sistemas adecuados y funcionando para realizar mi trabajo. No formaré un "gueto" de desarrolladores ni tendré una mentalidad "nosotros vs ellos". Apoyaré a los miembros de mi equipo que no sean desarrolladores como si fuera otro cliente o compañero.

Entiendo que cada uno de los desarrolladores de mi equipo es mi compañero. Como compañeros, ellos tendrán mi respeto y así lograré tener el de ellos. Con una relación basada en confianza y respeto, no voy a temer al formular preguntas, plantear inquietudes, o de otro modo ayudar a mis compañeros en la creación de código de alta calidad. Considero cualquier conflicto intelectual como una función saludable y natural de los equipos para encontrar la mejor ruta de acción para completar una tarea. Cuando el conflicto haya concluido y una dirección haya sido decidida por el equipo, apoyaré de todo corazón el enfoque adoptado, incluso si mi sugerencia no fue la "ganadora".

Entiendo que el ego en todas sus formas es destructivo y perjudicial para el equipo. Voy a recordar que el equipo es el propietario del código, no el individuo. A pesar de que debería sentirme orgulloso de mis logros personales, siempre recordaré darle crédito a la ayuda que el equipo me haya dado para cumplir estos logros, y nunca mostraré egoismo sobre mi código y técnicas hacia mis compañeros. Voy a alentar a mis compañeros a entender mi código y siempre sentar como bienvenidas cualquier crítica constructiva. Me doy cuenta de que todo el código puede ser mejorado y tomaré la crítica como una oportunidad para el debate intelectual y una experencia de aprendizaje, mas no como algo personal.

Entiendo que mi campo de acción está en constante crecimiento y evolución. Voy a crear oportunidades para explorar nuevos conceptos y estaré abierto a nuevas Ideas. No me cerraré en patrones particulares o prácticas de desarrollo en las cuales me siento a gusto pero que no son apropiadas en ciertas situaciones. Cuando uso patrones y prácticas particulares, voy a sopesar cuidadosamente los beneficios e inconvenientes de dichos patrones y tomaré las decisiones que sean siempre lo mejor para el equipo. Aunque guste de aprender cosas nuevas, me resistiré a usar herramientes y prácticas de desarrollo sólo porque son nuevas o "avanzadas", si es que no agregan valor real al código, servicio o producto que estoy haciendo.  

Tengo como idea principal que a pesar de que soy el primero en escribir algún código en particular, no voy a ser el último en mantenerlo, administrarlo o hacerle cambios. Voy a tratar de mantener mi código legible, bien documentado y que tenga la menor complejidad posible. No asumiré que ya que conozco de una herramienta o patrón de desarrollo el resto de desarrolladores lo conocerá. Documento cuidadosamente los usos y justificativos para usar un patrón o herramienta para que los que vengan detrás de mí puedan entender mejor lo que yo estaba tratando de lograr con este código. Nunca construiré código "obscuro" o difícil de entender, solo por intentar lograr "un empleo seguro" o demostrar lo listo que soy.

Léelo Completo: My Team's Developer Credo en - Eric Wase Blog

 

Actualmente calificado con 5.0 por 1 personas

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Larga vida a Sourcesafe!

Visual Sourcesafe

Mientras todo el centro de atención sobre control de versiones estuvo puesto sobre Team Foundation Server durante los dos últimos años, es sumamente importante recordar al viejo amigo Visual Sourcesafe quien aún existe y es más esta siendo usado por miles de equipo de desarrollo alrededor del mundo.

Una actualización está disponible ahora para Visual Sourcesafe 2005 que permitirá que pueda seguir siendo usado con Visual Studio 2008 sin problemas. Esta actualización está disponible de forma gratuita para quienes sean usuarios con licencia de Visual Sourcesafe. Este update también incluye algunas mejoras adicionales como soporte total para Windows Vista y la corrección de algunos bugs.

Esta actualización esta disponible aquí y todas las novedades a encontrarse con este update están en un post del blog de Richard Berg.  

Después de haber descargado durante las últimas 4 semanas ISOs de 3, 4 GB, es refrescante ver ahora un simple update de 3.5MB jejeje. 

Sea el primero en calificar este post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

ASP.NET 3.5 Extensions CTP Preview Lanzado ...

Lo he leído en el blog de Scott Gu, lo que muchos estábamos esperando la versión CTP de los ASP.NET 3.5 Extensions.

La estrella de este Release: El framework para desarrollo de aplicaciones ASP.NET utilizando MVC (Model, View, Controller). El mismo Scott nos tenía al tanto con algunas cosas realmente interesantes de este framework.

Este primer release incluye:

  • ASP.NET AJAX Improvements: New ASP.NET AJAX features in the ASP.NET 3.5 Extensions release include better browser history support (back/forward button integration, and server-side history management support), improved AJAX content linking support with permalinks, and additional JavaScript library improvements.
  • ASP.NET MVC: This model view controller (MVC) framework for ASP.NET provides a structured model that enables a clear separation of concerns within web applications, and makes it easier to unit test your code and support a TDD workflow. It also helps provide more control over the URLs you publish in your applications, and more control over the HTML that is emitted from them.
  • ASP.NET Dynamic Data Support: The ASP.NET 3.5 Extensions release delivers new features that enable faster creation of data driven web sites.  It provides a rich scaffolding framework, and will enable rapid data driven site development using both ASP.NET WebForms and ASP.NET MVC.
  • ASP.NET Silverlight Support: With the ASP.NET 3.5 Extensions release we'll deliver support for easily integrating Silverlight within your ASP.NET applications.  Included will be new controls that make it easy to integrate Silverlight video/media and interactive content within your sites.
  • ADO.NET Data Services: In parallel with the ASP.NET Extensions release we will also be releasing the ADO.NET Entity Framework.  This provides a modeling framework that enables developers to define a conceptual model of a database schema that closely aligns to a real world view of the information.  We will also be shipping a new set of data services (codename "Astoria") that make it easy to expose REST based API endpoints from within your ASP.NET applications.

Descarga el CTP de ASP.NET 3.5 Extensions Acá.

Para tener a la mano la información que el mismo Scott ha publicado:

Mucho que aprender estos días así que .. Happy Coding!

 

 

Actualmente calificado con 4.7 por 3 personas

  • Currently 4,666667/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Enlaces básicos ahora que Visual Studio 2008 está listo para usar, Resolución de problemas y migración.

Pues ahora ya tenemos Visual Studio 2008, muchos lo estábamos usando desde las versiones Beta, Otros no.

Es necesario presentar alguna información, especialmente de beneficios, solución de problemas, trucos, etc. Pero lo más importante a mi parecer, es la decisión de migrar a tu equipo de trabajo hacia la nueva plataforma.

Para equipos de desarrollo "mas o menos formales" de 10 o 20 desarrolladores, el proceso de migración debe ser bien pensando. En la versión Team Suite utilizamos Team Foundation Server como controlador de código, tareas, pruebas y builds. El encontrar la forma más adecuada de migrar la plataforma sin afectar tiempos actuales ni a los proyectos antiguos es un reto de por sí. 

Por un lado tenemos la premisa que Visual Studio 2008 no es una actualización tan drástica como la de VS2003 a VS2005, por lo tanto podemos quedarnos tranquilos.

Mientras yo también estoy haciendo la migración de mi equipo les dejo algunos enlaces interesantes:

Hay mucho que leer, mucho que decidir...

Por lo pronto mañana viernes 22 Nov 2007 haré la migración de mi equipo de trabajo, trataré de escribir algo sobre la novedades presentadas.

Mientras tanto...  happy coding 

 

 

Actualmente calificado con 5.0 por 1 personas

  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Categorías

Sponsors


    Blogroll