Title: CICLO DE VIDA DEL DESARROLLO DE SOFTWARE CON 'NET
1CICLO DE VIDA DEL DESARROLLO DE SOFTWARE CON
.NET
2Agenda
- Microsoft Solutions Framework
- GuÃas de arquitectura y desarrollo
- Modelado
- Gestión de versiones
- Desarrollo
- Pruebas
- Depuración
- Despliegue
3Microsoft Solutions Framework
- Gestión de riesgos
- Modelo de equipo
- Modelo de proceso
- http//www.microsoft.com/msf
4El éxito no llega fácilmente
Con éxito
Cuestionados
Fracasados
28
23
49
2000
26
28
46
1998
27
40
33
1995
16
31
53
1994
Este gráfico muestra el resultado de 30.000
proyectos en compañÃas grandes, medianas y
pequeñas empresas de EEUU analizados por The
Standish Group desde 1994. Fuente The Standish
Group International, Extreme Chaos, The Standish
Group International, Inc., 2000
5Marco Metodológico
Una metodologÃa aplica las direcciones
especÃficas a un destino conocido un marco, como
una brújula, verifica el avance y proporciona una
guÃa direccional
6Gestión del riesgo en MSF
- Riesgo Posibilidad de daño o perdida
- Distingue riesgos de incidencias o problemas que
ya existen - Define un proceso de gestión del riesgo para
proactivamente identificar, analizar y canalizar
los riesgos - Incrementa la probabilidad de éxito en un
proyecto al minimizar el potencial de fallo
7Gestión del riesgo
8Matriz de riesgos
- Definición del riesgo
- Tipo de riesgo
- Probabilidad del riesgo
- Impacto del riesgo
- Exposición al riesgo
- Plan de Mitigación
- Plan de Contingencia
- Responsable(s)
- Trigger
9Modelo de equipoConceptos clave
- Equipo de iguales
- Mentalidad orienta a cliente
- Mentalidad de producto
- Mentalidad de cero defectos
- Disposición para aprender
10Modelo de equipoPrácticas probadas
- Equipos pequeños y multidisciplinares
- Permitir a los equipos trabajar juntos en una
misma ubicación - Crear un diseño de la solución con la
participación de todo el equipo
11Modelo de equipo
12Modelo de proceso
Implantación completa
Versión preparada
Visión/Alcance aprobado
MSF
Plan de proyecto aprobado
Alcance completo
13Enfoque iterativo
Minimizar riesgos descomponiendo los proyectos en
múltiples versiones
Funcionalidad
Versión 1
Tiempo
14Variables del proyecto
- El triangulo representa la relación entre los
recursos, la planificación y las caracterÃsticas
de la solución
15Documentos Vivos
- Iniciarlos pronto
- Congelarlos tarde
- Evitar la parálisis por el análisis
- Establecer un proceso estructurado de control de
cambios
Documentos Vivos
16GuÃas de desarrollo
- GuÃas de Arquitectura (PAG)
- Estándares de desarrollo
- Enterprise Templates
- FxCop
17GuÃas de arquitectura
- GuÃas de diseño para aplicaciones .NET
- Muestran como encaja todo junto
- Blueprint para decisiones a nivel de diseño
- Alto riesgo en la etapa de diseño
- Arquitectos son contrarios al riesgo
- No es una solución para todos los diseños
- Hay escenarios especÃficos
- Preservar las inversiones
- Tendré que rehacer todo en el futuro?
18GuÃas de Arquitectura
Users and Devices
UI Components
UI Process Components
Business Workflows
Business Components
Business Entities
Data Access Components
Data Sources
19Design-Level GuidanceKey considerations in
guidance
- Applicability Requirements drive design
- Component types apply to specific requirements
- You may not need all component types!
- Reusability Custom framework components
- Where does your basic infrastructure code go?
- Relevancy Factoring on design / implementation
- Design includes implementation and isnt purely
conceptual - Non Funtional Requirements
- Security, Scalability, Availability,
Manageability etc
20GuÃas de Arquitectura
- Application Architecture for .NET Designing
Applications and Services - .NET Data Access Architecture Guide
- Building Secure ASP.NET Applications
- Debugging .NET Applications
- Exception Management in .NET
- .NET/COM Migration and Interoperability
- Monitoring in .NET
- Deploying .NET Applications
- Team Development with SourceSafe
- UNIX Code Migration Guide
http//msdn.microsoft.com/practices/
21Estándares de desarrollo
- Ayudan a escribir código robusto y seguro que
funciona de manera consistente con el Framework
.NET - Facilita la propiedad colectiva del código
- Énfasis en la comunicación
- .NET Framework Design Guidelines
- http//msdn.microsoft.com/library/en-us/cpgenref/h
tml/cpconnetframeworkdesignguidelines.asp
22Enterprise Templates
- Aplican polÃticas arquitecturales
- Proveen guÃas arquitecturales
- Foco en la tarea, en vez de en el lenguaje de
programación - Modifican el IDE dinámicamente
- Proveen estructuras iniciales de proyecto y guÃa
continua de desarrollo
23Enterprise Templates
Enterprise Template
PolÃticas (TDL)
Estructura Aplicación (proyectos, código,)
Orientación (contexto y html)
24Enterprise Templates
25FxCop
- Utilidad que analiza el código managed para
chequear las prácticas recomendadas - Da información sobre como mejorar el código
- Diseño de reglas personalizadas
- http//www.gotdotnet.com/team/libraries/
26FxCop
27Modelado
- Modelado de software
- Modelado de bases de datos
28Modelado
- Permite una mejor comprensión de los riesgos
antes de construir el sistema - Nos permite especificar la estructura o
comportamiento de un sistema, y comunicarlo a
otros - Nos proporciona una plantilla que nos guÃa
durante la construcción del sistema - Documenta las decisiones que hemos tomado
29Modelado de Software
- Visual Studio .NET soporta modelado con UML 1.2
- Generación código (diagramas UML -gt código)
- IngenierÃa inversa (código -gt diagramas UML)
- Automatic semantic error checking
- Customizable UML reports
30VisioModelado de Software
31Modelado de base de datos
- ORM (Object Role Modeling)
- Diagramas Entidad-Relación
- Integración con el IDE de Visual Studio .NET
- Generación del esquema de base de datos
- Sincronización entre la base de datos fÃsica y el
modelo - IngenierÃa inversa del esquema de la base de datos
32VisioModelado de base de datos
33Gestión de versiones
- Visual SourceSafe
- GuÃa Team Development with Visual Studio .NET
and Visual SourceSafe
34Visual SourceSafe
- Herramienta integrada con Visual Studio .NET
- Control de versiones
- Coordinación del equipo
- Seguimiento de versiones
- Reutilización
35Visual SourceSafe
36Desarrollo
- Application Blocks
- Comentarios en lÃnea
- Refactoring
- Compilación diaria
- Extendiendo el IDE
37Application Blocks
- Data Access Application Block for .NET
- Componente .NET que contiene código optimizado de
acceso a datos - Exception Management Application Block for .NET
- Provee un framework simple, pero extensible para
manejar excepciones
38Comentarios en lÃnea
- Documentación integrada en el código
- Obtención de documentos XML con todos los
comentarios - Ndoc
- http//sourceforge.net/projects/ndoc/
39Comentarios en linea
40Refactoring
- Mejorar el diseño del código existente, sin
cambiar su comportamiento externo - Más fácil de comprender
- Más fácil de modificar
- Evita la degradación del diseño con el paso del
tiempo - Refactoring. Improving the design of Existing
Code. Martin Fowler - www.refactoring.com
- Herramientas de Refactoring con C
- www.dotnetrefactoring.com
- www.xtreme-simplicity.net/
41Refactoring
42Compilación diaria
- El sistema se compila cada dÃa
- El proceso de compilación termina con un conjunto
de pruebas unitarias (Smoke Tests) - Minimiza problemas de integración
- Facilita la monitorización del progreso
- Siempre hay una versión ejecutable
- Más sencilla de lo que puede parecer
- NAnt
- http//sourceforge.net/projects/nant/
43Compilación diaria
44Video Windows XP Daily Build
45IDE extensible
- Macros
- La forma más sencilla de personalizar el IDE
- Add-Ins
- Gran integración con Visual Studio
- Wizards
- Ayuda en procesos complejos
- VSIP
- Integración al mismo nivel que C ó VB.NET
- http//msdn.microsoft.com/vstudio/downloads/sample
s/automation.asp
46Pruebas
- Pruebas unitarias
- Pruebas stress
- Análisis rendimiento
47Pruebas unitarias
- El programador prueba el código que desarrolla
- Combate la regresión de errores y la introducción
de nuevos errores al modificar el código - Las clases tienen sus propias pruebas
- Aumentan la confianza en el código
48NUnit
- Un marco para desarrollar pruebas unitarias
- Las pruebas están automatizadas
- Permite que el código se compile y que las
pruebas se ejecuten frecuentemente - Barra verde siempre! ! !
- http//www.nunit.org
- Test-Driven Development. Kent Beck
49NUnit
50Application Center Test
- Herramienta de stress diseñada para simular un
alto volumen de peticiones HTTP - Prueba aplicaciones Web o servicios Web
- Proporciona información de rendimiento
- Ayuda a descubrir cuellos de botellas
- Performance Testing Microsoft .NET Web
Applications. Microsoft ACE Team
51Application Center TestCreación de pruebas
- Ejecutar New Test Wizard
- Grabar la navegación
- Importar el Log de un servidor Web
52ACT
53Visual Studio Analyzer
- Analiza las caracterÃsticas de rendimiento de
aplicaciones distribuidas - Determina posibles cuellos de botella
- Captura eventos de COM, COMTI, ADO, OLE DB, IIS
- Permite instrumentación personalizada de la
aplicación
54Devpartner Profiler
- Identifica cuellos de botella en aplicaciones
.NET - Soporta VB .NET, VC, C, JScript 7 y unmanaged
VC - Integrado en Visual Studio.NET
- http//www.compuware.com/products/devpartner/profi
ler/default.asp
55Devpartner Profiler
56Depuración
- Trazas
- Windows Forms
- ASP.NET
- Procedimientos Almacenados
- Instrumentación
- GuÃas
- Production Debugging for .NET Framework
Applications - Monitoring in .NET Distributed Application
Design
57Depuración Trazas
- Namespace System.Diagnostics
- La clase Debug se usa durante el desarrollo
- La clase Trace se usa en aplicaciones instaladas
- Ambas clases tienen los mismos miembros
- Write, Flush, Assert, etc
58Depuración Procedimientos almacenados
- Ejecución desde el Server Explorer
- Depuración desde el Server Explorer
- Depuración desde el código que ejecuta el
procedimiento almacenado - Es necesario un punto de ruptura en el
procedimiento almacenado
59Instrumentación
- Enterprise Instrumentation Framework con Everett
- Integra y unifica las diferentes tecnologÃas de
trazas, eventos y logs - Integrado con herramientas de gestión y
monitorización (Application Center, MOM)
60Servidores distribuidos
Application Server
Application Server
Distributed .NET Application
Management Server
61Despliegue
- Ofuscación del código
- Implantación
- GuÃa
- Deploying .NET Applications Lifecycle Guide
62Ofuscación del código
- Cualquier aplicación puede ser descompilada en su
código fuente - La ofuscación de código transforma un programa de
forma que sea más difÃcil de descompilar,
manteniendo la funcionalidad intacta - Dotfuscator Community Edition 1.1
- http//www.preemptive.com/dotfuscator/
63Dotfuscator
64ImplantaciónEmpaquetado
- Simple assembly o un conjunto de assemblies que
son ficheros .dll o .exe - Fichero .cab
- Paquete de instalación Windows Installer
65ImplantaciónDistribución
- Utilizar Xcopy o FTP
- Utilizar codebase download
- Copiar los assemblies a un servidor
- Utilizar un programa de instalación
66ImplantaciónEscenarios
- Implantar una aplicación ASP.NET
- Implantar una aplicación Windows Forms
- Implantar un Windows Form Control
67Miscelánea
- Collection Generator (GotDotNet)
- Code Inspector (GotDotNet)
- Allocation Profiler (GotDotNet)
- .NET Application Updater Component
- http//www.gotdotnet.com/team/windowsforms/appupda
ter.aspx - CodeSwap
- http//www.vscodeswap.net/
- BugTracker.NET
- http//sourceforge.net/projects/btnet/
- Spell checker
- http//www.dotnetdog.com/archives/2002_12.html
- Draco.NET
- http//sourceforge.net/projects/draconet/
68Roadmap Visual Studio