Desarrollo de aplicaciones Solución Borland Daniel Pereiro Borland Ibérica .
-
Upload
camila-silvestre -
Category
Documents
-
view
24 -
download
10
Transcript of Desarrollo de aplicaciones Solución Borland Daniel Pereiro Borland Ibérica .
Desarrollo de aplicaciones Solución Borland
Daniel PereiroBorland Ibéricawww.borland.es
Contenido
Desarrollo de aplicaciones: Proceso de desarrollo de Software. Calidad en el desarrollo de aplicaciones. Mejorar el rendimiento de las aplicaciones.
Solución Borland
Desarrollo de Software
Actividades:
1: Definir que queremos construir (capturar requisitos)
2: Analizar requisitos y diseñar el producto
3: Construir el producto
4: Probar el producto
5: Entregar/Desplegar
Por qué un proceso?
Permite mejorar las tareas repetitivas hasta la entrega del software
Dirige y controla de las tareas asignadas a los distintos perfiles
Permite comunicación entre las partes interesadas
La alternativa: Caos Total
Best-in-classTECHNOLOGY
EffectivePROCESSES
SkilledPEOPLE
Procesos de desarrollo Software Excellence Triangle
Procesos de desarrollo de Software El objetivo de un proceso de desarrollo
debe ser asegurar la calidad del Software. Orientado a:
Cumplir el 100% de los requisitos de usuario. Generar sólo la documentación necesaria.
Procesos de desarrollo mas conocidos: Unified Process (UP) Rational Unified Process (RUP) (Pesado) Extreme Programming (XP) (Ligero) Feature Driven Development (FDD) (Intermedio) …
Agile Processes
Casi lo contrario a RUP Orientado a las personas y no a los
procesos
Cualquiera hace cualquier cosa!
“Adaptativo” en lugar de “predictivo” Más centrado en el código que en la
documentación
¿ Usamos un proceso de desarrollo efectivo ?
Fases del desarrollo tradicional El vació entre las distintas fases de
desarrollo tradicional requiere que el equipo realice manualmente la integración. Proceso lento, inflexible y la colaboración baja. + tiempo, + recursos, + dinero.
Proceso iterativo
Analysis
Construct Design
Test/Deploy
tiempo
Borland ALMApplication Lifecycle Management Solución modular pero fuertemente
integrada. Todo el equipo es coordinado por el SCM.
Together®
Edition for .NET
Janeva™InterBase®
VS.NET C#Builder
™
Optimizeit™
For .NETCaliberRM™
StarTeam®
DESIGN
DEPLOY
DEVELOP
TESTDEFINE MANAGE
LA VISIÓN DE BORLANDBuenas prácticas Alta integración entre fases de desarrollo. Gestión de requisitos (efectiva) Modelado visual (UML) Conocimiento (Patrones de diseño) Desarrollo iterativo (crecimiento
incremental) Verificar la calidad del Software
continuamente Control de cambios a todos los niveles,
requisitos y código (visibles en tiempo real) Trazabilidad a través de todo el ciclo de
vida.
Configuration, Change, and Project ManagementConfiguration, Change, and Project Management
LA VISIÓN DE BORLAND Reengineering The Process
Quality Assurance / TestingQuality Assurance / Testing
Requirements ManagementRequirements Management
AnalyzeAnalyze DesignDesign DevelopDevelop DeployDeployObject-Oriented Analysis and Design
TogetherTogetherIntegrated Development Environment
VS.NET,VS.NET, C#BuilderC#Builder
Unit Testing
OptimizeITOptimizeIT
Requirements Management
CaliberRMCaliberRM
Configuration and Change Management
StarTeamStarTeam
Integración de herramientasMS Visual Studio .NET
Together
CaliberRM StarTeam
OptimizeIT Janeva
Gestión de Requisitos Borland CaliberRM
Daniel PereiroBorland Ibéricawww.borland.es
Origen de errores en el Software
Requirements Errors(56%)
Requirements Errors(56%)
Other Errors (10%)Other Errors (10%) Coding Errors (7%)Coding Errors (7%)Coding Errors (7%)Coding Errors (7%)
Design Errors (27%)Design Errors (27%)
Source: James Martin, An Information Systems Manifesto
Síntomas mala gestión de requisitos “Perdemos más tiempo gestionando
documentos que requisitos” “Hemos generado una solución
técnicamente perfecta, pero el cliente no la acepta”
“No podemos medir el estado real del proyecto”
“Al llegar un cambio, el análisis de impacto se realizaba manualmente o no se realizaba”
“Se desconoce el motivo por el cual se implementa un componente”...
Borland CaliberRM
Es la totalmente configurable e integrable con otras herramientas.
Entorno distribuido y colaborativo Notificaciones en tiempo real de cambios
en los requisitos a los responsables Tratamiento de requisitos como objetos Repositorio centralizado Versionado de los requisitos Múltiples vistas sobre los requisitos Generación de documentación automática
Características principales
Flexibilidad – Definición tipos requisitos y atributos Integración Productividad: Desarrollo / Pruebas Trazabilidad, auditorías, seguimiento
dependencias Datamining API abierta: Java, COM y .net (sig. versión) Acceso remoto (Cliente Web) Foros de discusión Glosario Seguridad Personalización de informes (Document
Framework)
Información en CaliberRM
Dentro del proyecto
Hierarchy #ID #
Atributosde usuario
Atributos del sistema
Proyecto
Tipos de requisito
Dentro de los tipos de requisito
Requisitos
Se definen por estos grupos de atributos (tabs)
Detalles Otros..Trazabilidad Referencias Discusión Historia ValidaciónResponsables
Requisitos en CaliberRM
Cada requisito tiene un identificador, se integra en una jerarquía y tiene múltiples atributos sobre los que registrar información importante
IdentificadorIdentificador único del requisto que no cambia ni puede reutilizarse.
Numero jerárquicoDetermina su posición en la jerarquía, puede cambiar cuando un requisito se añade, elimina, etc.
Nombre del requisitoEspecificación corta del requisito. Permite reconocerlo rápidamente
Descripción del requisitoContiene una descripción completa y no ambigüa del requisito.
CaliberRM - Integraciones
Windows NT/2000/XPJava-enabled Browser
Mod & Dev ToolsTogetherJBuilderC#BuilderVisual Studio .NETRational RoseEmbarca. DescribeSELECT EnterpriseOthers via SDK
SCM ToolsStarTeamPVCSMicrosoft VSSClearCaseCM SynergyOthers via SDK
Testing ToolsMer. TestDirectorOthers via SDK
PASS
FAIL
Desktop & PM ToolsMicrosoft OfficeMicrosoft ProjectSPC Estimate PRO
MyProject1 Task1.1 Sub Task 11.2 SubTask 21.2.1 Sub Task 3
CaliberRM Integrations
Web Server:Microsoft IISNetscape ServerApache
CaliberRM Server
En la práctica …
Why? What? How? When? Where?
Integración con Together CC
Integración con Visual Studio .net
Gestión de Configuración Borland StarTeam
Daniel PereiroBorland Ibéricawww.borland.es
La necesidad de un SCM
Los errores corregidos suelen reaparecer Imposibilidad de reconstruir releases
previas de software Cambios o desapariciones misteriosas de
componentes Cambios múltiples sobre el software no son
correctamente controlados No existe un modo de rastrear o auditar los
cambios
Trabajo Colaborativo
Arquitectura interna … Permite acceso remoto, soporte a múltiples
plataformas y clientes, configurable (SDK), control de acceso …
Workflow … Definición de reglas de negocio, procesos,
roles… Desarrollo en paralelo Control de versiones …
Soporte completo a la gestión de la configuración, indicación de estados del repositorio, desarrollo en paralelo, acceso a proyectos PVCS y SourceSafe
Trabajo Colaborativo
Gestión de cambios e incidencias … Modulo de gestión de cambios integrado,
integración con TestDirector, notificaciones de cambio integradas
Gestión de requisitos … Pequeño módulo de gestión de requisitos,
integración con CaliberRM Gestión de tareas …
Gestión básica de tareas, integración bidireccional con MS Project
Trabajo Colaborativo
Desarrollo colaborativo… Acceso centralizado a “assets” del proyecto
(ficheros, peticiones de cambio, tareas, requisitos,…), notificaciones y discusiones por e-mail,…
Explotación de la información… Ordenación y priorización de assets, histórico
de cambios, baselining Reports
Starteam proporciona informes personalizables a través del SDK; StarTeam DataMart (análisis de la información)
Borland StarTeamEl proceso de desarrollo
StarTeamWorkFlow
Proceso de gestión de requisitos:- Seleccionar un requisito aprobado como parte del proceso de check-in- Enlazar versiones de ficheros con versiones de requisitos
Proceso de gestión de cambios:- Seleccionar un cambio aprobado como parte del proceso de check-in- Enlazar versiones de ficheros con versiones de propuestas de cambio
Proceso de gestión de tareas:- Seleccionar una tarea aprobada como parte del proceso de check-in- Enlazar versiones de ficheros con tareas del proyecto
Proceso de gestión de versiones:- Add, checkin y checkout- Vistas, revisiones y etiquetas- Discusiones y notificaciones por e-mail
Arquitectura StarTeam
SGBD-ODBC
PVCS
VSS
StarGate SDK
StarDiskIntegración con Explorer
STCMDComandos Unix o Win Web Browser
JStarGUI via Java
AppsJava, VB, C++,...
Cliente StarTeamIDE – Soporte SCC
StarTeam Server
Diseño y Optimización de aplicaciones
Daniel PereiroBorland Ibéricawww.borland.es
Algunos datos
“For every $1 you spend on development, you will spend $2 on maintenance”.
Only about 15% of software development effort is devoted to programing”.
- Walker Royce
Diseñar
Sistema extensible (Herencia-Sistema extensible (Herencia-Polimorfismo).Polimorfismo).Un buen diseño reducirá el Un buen diseño reducirá el mantenimientomantenimiento
¿Qué hacemos el 85% restante?¿Qué hacemos el 85% restante?
Necesidad de modelar
El código es fácil de entender?
El código es fácil de comunicar?
Millones de líneas de código
Diferentes lenguajes!
Soluciones: UML Patrones de
Diseño
UML (Unified Modeling Language) Lenguaje para visualización, definición,
construcción y documentación de Software. UML no es un lenguaje de programación
visual. Autores: Booch, Jacobson y Rumbaught. Compendio de otros lenguajes (“U”). Ventajas:
Comunicación entre desarrolladores. Diferentes vistas de un sistema. Independiente de lenguajes de programación. Representación visual de nuestro sistema.
Diagramas UML
Requisitos del Sistema
Diagramas Casos de uso
Diagrama Clases & Paquetes
Diagrama Objetos
Diagrama Componentes
Diagrama Despliegue
Comportamiento del Sistema Estructura del Sistema
Diagrama Actividades
Diagrama Estados
Diagrama Secuencia
Diagrama Colaboración
Aspectos dinámicos
Aspectos estáticos
UML y Vistas del sistema
Vistas
Diagrama Casos de uso
Diagrama Actividades
Diagrama Secuencia
Diagrama Colaboración
Diagrama Secuencia
Diagrama Clases
Diagrama Objetos
Diagrama Componentes
Diagrama Estados
Patrones de DiseñoOrigen En los años 70 Christopher Alexander
escribió algunos libros documentando patrones para ingeniería civil y arquitectura.
La comunidad del Software adopto la idea. Se popularizaron con el libro:
“Design Patterns: Elements of Reusable Software”
Conocidos como patrones de GoF (Gang of Four).
Contiene diseños útiles apreciados en numerosos proyectos, que fueron identificados y documentados.
Ninguno patrón fue inventado por los autores.
Patrones de DiseñoDEFINICIÓN
“Each pattern is a three-part rule, which expresses a relation between a certain context, a problem and a solution”
- Christopher Alexander, A Pattern Language
“A pattern is an idea that has been useful in one practical context and will probably be useful in others”
- Martin Fowler, Analysis Patterns
Un patrón es una solución de diseño, probada y documentada, de un problema que aparece repetidamente en un contexto particular y en consecuencia puede ser imitado para resolverlo.
Patrones de DiseñoDEFINICIÓN En esencia, son plantillas de diseño
reutilizables: Esqueleto básico adaptable, no una librería de
clases. Útiles para programadores y arquitectos
porque: Documentan un mecanismo simple que trabaja
bien Transfieren conocimiento (Vocabulario común) Describen soluciones como combinación de
patrones Reutilizan diseños y decisiones de
implementación
Patrones de DiseñoElementos básicos de un Patrón NOMBRE
Descripción corta que identifica a un patrón Incrementa nuestro vocabulario, haciendo más fácil
pensar sobre el diseño y comunicarlo a otros. PROBLEMA
Describe cuando aplicar el patrón, el problema y su contexto.
SOLUCIÓN Describe los elementos que forman el diseño, sus
relaciones, responsabilidades y colaboraciones (Diagramas).
CONSECUENCIAS El resultado de aplicar el patrón.
…
Patrones de GoFCasificación Por Proposito Creational patterns
Abstracción sobre el proceso de instanciación de objetos
Mejoran la flexibilidad y reduce el acoplamiento. Structural patterns
Describe como clases y objetos pueden ser compuestos para formar grandes estructuras.
Behavioral patterns Describe patrones de objetos y clases, y
patrones sobre la comunicación ente ellos. Herencia para distribuir comportamiento entre
clases y composición para distribuir comportamiento entre objetos.
Patrones de GoFCasificación Por Proposito Creational patterns
Abstract Factory Pattern
Builder Pattern Factory Method Pattern Prototype Pattern Singleton Pattern
Structural patterns Adapter Pattern Bridge Pattern Composite Method
Pattern Decorator Pattern Facade Pattern Flyweight Pattern Proxy Pattern
Behavioral patterns Chain of Responsibility
Pattern Command Pattern Interpreter Pattern Iterator Pattern Mediator Pattern Memento Pattern Observer Pattern State Pattern Strategy Pattern Template Method
Pattern Visitor Pattern
Patrones de DiseñoOtras Categorias Distintas formas de catalogar patrones:
Design Patterns Architectural Patterns Analysis Patterns Creational Patterns Structural Patterns Behavioral Patterns
Otra clasificación frecuente es (Layers Pattern): Presentation Tier Patterns Business Tier Patterns Integration Tier Patterns
Pattern Frame
Diferentes niveles de abstracción: Arquitectura, Diseño e Implementación.
Diferentes puntos de vista: Bases de datos, Aplicación, Despliegue e
Infraestructura. http://msdn.microsoft.com/architecture/
patterns
Web Presentation Patterns Model-View-Controller Desacoplar Lógica de negocio/Datos,
Presentación y Control de flujo de la aplicación.
Permite cambiar presentación sin modificar la lógica, múltiples vistas de un modelo, separar perfiles, etc.
Web Presentation PatternsObserver Permite alertar de un cambio de estado a
otros objetos, sin introducir dependencias entre ellos.
Desacoplar el modelo y la vista: El modelo no requiere información de la vista, sólo notifica los cambios a los Observers que tiene registrados.
Web Presentation PatternsPage Controller La separación Vista-Controlador es implícita
en ASP.NET. Usa un controlador por página.
En algunos casos podemos ampliarlo añadiendo una clase BaseController que incorpora funciones comunes (como validar parámetros) y el resto heredan de ella.
Web Presentation PatternsFront Controller Centraliza todas las peticiones en un único
controlador. Útil cuando la navegación entre páginas es
dinámica y se basa en reglas configurables.
Web Presentation PatternsFront Controller - El manejador Cada petición HTTP es procesada por una
instancia de clase que implemente IHttpHandler (o otra interfaz del API).
El manejador delega la creación del objeto Command correcto en la clase CommandFactory.
Diseño de aplicaciones Borland Together For .NET
Daniel PereiroBorland Ibéricawww.borland.es
Sincronización modelo & código The hard way
Model fileVersion X
source fileVersion Y
CodeModel
Forward engineer source fileVersion X
Manage conflicts?Replace lost data?
Reverse engineerModel fileVersion Y
Manage conflicts?Replace lost data?
Sincronización entre modelo y código Tecnología Together® LiveSource™:
Elementos UML de clases son la viva interpretación del código subyacente.
Modelo-Código, Código-Modelo: Siempre sincronizados.
IncrementalIncrementalCodeCode
GeneratorGenerator
Together®Together®ParsingParsingEngineEngine
LiveSource™
Together for Visual Studio .NET
Permiten la utilización del lenguaje de modelado UML dentro de Ms Visual Studio .net
Presentación de Diagramas desde el código dentro de Visual Studio .net
Ingeniería inversa desde cualquier código fuente Sincronización automática entre modelo y código Generación automática de Documentación
actualizada Patrones de diseño (GoF, estándar, personalizados,
…) Exportación / Importación del modelo vía XMI
Together for Visual Studio .NET DIAGRAMAS UML Soporte de diagramas UML:
Class/Namespace diagram Use Case diagram Interaction (sequence and collaboration) Activity diagram Statechart diagram Component diagram Deployment diagram
Together for Visual Studio .NET
Together
CaliberRM
Together Design Pattern Support Reutilizar soluciones probadas
Gang of Four (GoF) patterns Nuestros propios patrones!
Generación automática de documentación Muestra cada dato introducido Siempre esta actualizada Incluye todos nuestros diagramas Es navegable
Optimización de código Borland OptimizeIt For .NET
Daniel PereiroBorland Ibéricawww.borland.es
¿Cuándo optimizamos el rendimiento? En todo momento La optimización debe hacerse de forma
iterativa. Nadie conoce mejor el código que quien lo
ha desarrollado. Nadie está mejor situado en el ciclo de
desarrollo para solucionar problemas de rendimiento que el autor del código.
Muchos de los problemas de rendimiento ocurren en la integración de componentes. Nota: http://www.nunit.org
¿Qué código tenemos que optimizar? No es necesario optimizar todo el código
(regla 80/20). El reto es descubrir qué partes de nuestra
aplicación suponen un cuello de botella o consumen la memoria ...
Intentar optimizar cada línea de código supone un esfuerzo innecesario.
Los depuradores clásicos no son suficientes!
OptimizeIt permite una optimización de código inteligente y eficiente.
Optimizeit Profiler for .net
CLR es responsable de la ejecución de toda la fontanería de nuestra aplicación.
Este alto nivel de abstracción permite centrarse en la lógica de la aplicación.
Posibles problemas: excesiva actividad del GC, memory leaks o excesivos objetos temporales.
Optimizeit Profiler for .net
OptimizeIt esta formado por dos aplicaciones: Audit System -> oiprof.exe User interface -> OptimizeDotNet.exe
Se comunican vía TCP por el puerto 1964 (por defecto).
Optimizeit Profiler for .net
Soporta todos los lenguajes que generan código manejado para CLR (C#, J#, Visual Basic, JScript, etc).
Permite analizar código ASP.NET. No requiere modificar el código. Exportar información (ASCII, HTML, o ASCII
para analizar). Localiza el código fuente implicado. Ejecución desde línea de comandos (Script). Análisis de aplicaciones remotas.
Optimizeit Profiler for .net
CLR Overview Memory Profiling CPU Profiling
Optimizeit Profiler – CLR Information Gráfico del Tamaño del Heap Número de clases cargadas en CLR Actividad del Garbage Collector Número de Threads en ejecución
Optimizeit Profiler – Memory Profiling Permite encontrar memory leaks Manejar el garbage collection Monitorización en tiempo real de la
asignación de objetos Gráfico de secuencia en asignación de
objetos Permite llegar a la línea de código
implicada
Optimizeit Profiler – CPU Usage Profiling CPU Profiler descubre cuellos de botella en
el código: Lista los puntos calientes por tiempo de
ejecución Gráfico de secuencia de llamadas Permite llegar a la línea de código implicada
Remote profiling
Establecer variables de entorno para CLR COR_ENABLE_PROFILING = 1 COR_PROFILER =OIProfiler
Ahora CLR usará OptimizeIt Profiler Audit System
Le proceso Aspnet_wp.exe de IIS leerá estas variables al ejecutar aplicaciones ASP.NET.
Variables para configurar el análisis: DN_PAUSE, DN_PROFILER_PORT,
DN_PROFILER_MODE, DN_OPEN_CONSOLE,…
Integración de entornos Borland Janeva
Daniel PereiroBorland Ibéricawww.borland.es
Enterprise Mixed EnvironmentsEnterprise Application Interoperability
ClientDepartment
ServerCorporate
Data Center
.NET
JavaWeb Services, CORBA®, and Borland Janeva
Borland Janeva
Interoperabilidad entre Microsoft .NET y J2EE o CORBA
Integra en el entorno de desarrollo .NET No requiere conocimientos de J2EE o CORBA
No requiere cambios en la infraestructura de back-end
““Bridge”Bridge”“Bridge”
Web Server
WebService
WebService
WebService
WebService
WebService
WebService
WebService
WebService
WebService
WebService
WebService
WebService
La solución Janeva
EJBEJB EJBEJBEJBEJB
BESBES
AppServerAppServer
BES VisiBrokerBES VisiBroker
EJBEJB EJBEJBEJBEJB
WebSphereWebSphere
EJBEJB EJBEJBEJBEJB
WebLogicWebLogic
InterBase
Oracle
Sybase
MS-SQL Server
.NET Server.NET Server
ASASPP
ASASPP
ASASPP
.NET ThickClients
.NET Thin Clients J2EE and CORBA Back Ends
JanevaJaneva JanevaJaneva
- No additional infrastructures needed
- No changes required to back end
- Seamless interoperability
- J2EE and CORBA infrastructures are leveraged, including Qualities-of- Service features
- High Performance
JanevaJaneva
JanevaJaneva
JanevaJaneva
JanevaJaneva
Janeva - Java and Corba Interop
.NET
JanevaRun-Time
Corba
Proxy
.NETASM
.NET EXEJ2EE
Proxy.CS
C# Source Code(or VB, Delphi,J#, etc)
.NET IDE
.EJBIIOP
Compile
.NETType
IDLJAR
.NETType Janeva
CompilerDevelop
Deploy