Ingeniería de Software MSDN Ingeniería de Software...1 Ingeniería del Software_/_ Ingeniería y Programación...1 Análisis de Requerimientos...2 Especificación...3 Diseño...4 Desarrollo en Equipo...5 Mantenimiento...6 Planificación y Gestión...7 Microsoft Project...7 Microsoft Solutions Framework...7 MSDN Ingeniería de Software La Ingeniería del Software se podría definir como el establecimiento y aplicación de principios de la Ingeniería para obtener software. Teniendo en cuenta factores tan importantes como el coste económico, la fiabilidad del sistema y un funcionamiento eficiente que satisfaga las necesidades del usuario. Como concepto de Software se entienden las aplicaciones, toda aquella parte de la informática que se desarrolla, y que posee un difícil mantenimiento debido al corto período de tiempo en el que queda obsoleto. La Ingeniería del software se preocupa de la fiabilidad y el rendimiento, tratando de reducir costes y complejidad. Los modelos que utiliza están basados en teorías matemáticas sólidas. Una parte básica de la ingeniería del software es la Especificación, que consiste en la descripción del comportamiento externo del sistema, desde el punto de vista del usuario o del entorno. Define aquello que debería hacer el sistema. El Diseño determina la arquitectura general del sistema que mejor satisface los requerimientos: componentes físicos del sistema (hardware), el software utilizado y la interacción con el usuario. Define como debe realizar su función el sistema. Ingeniería del Software_/_ Ingeniería y Programación En el desarrollo de un proyecto intervienen diferentes etapas que se interrelacionan y complementan para con la finalidad de alcanzar los objetivos iniciales. Estas etapas pueden variar dependiendo del ciclo de vida que hayamos decidido para nuestro sistema, pero las principales fases de un proyecto son el análisis de requerimientos, la especificación, el diseño, el desarrollo e implementación, y por último el mantenimiento. Página 1
Análisis y Requerimientos: Todo sistema ha de tener un periodo de definición, en el cual se han de planificar todas las etapas del mismo, tanto de creación como de corrección. Para llevarlo a cabo tenemos diferentes oportunidades, La elección será más óptimo si analizamos bien los requerimientos y propiedades que se desean para el sistema. Análisis de Requerimientos El análisis de requerimientos es la primera etapa de un proyecto software, en ella se tratan de definir las condiciones o capacidades necesarias para uno o varios usuarios con el fin de solucionar un problema o conseguir un objetivo. Para la creación global del sistema se necesita comprender todos los objetivos y necesidades del usuario. En primer lugar, hemos de especificar el comportamiento externo del sistema desde el punto de vista del usuario. Una vez acabado, podemos pensar en la arquitectura general del sistema, en términos de componentes físicos: hardware, software, usuarios y la comunicación entre ellos. La determinación de los requerimientos se haya en base a la experiencia, de hablar con los usuarios finales sobre sus necesidades y analizando un sistema software existente. Podemos modelizar los requerimientos de usuario mediante lenguajes como UML, que disponen de modelos llamados casos de uso pensados para describir las funcionalidades necesarias para los usuarios. Hay diferentes tipos de requerimientos: de entorno (sistema operativo, sistema gestor de base de datos, sistema de archivos,...), ergonómicos (interfaz gráfica, etc..), funcionales(que debe hacer el sistema), de rendimiento, de tiempo, formato de entrega, etc... Página 2
Especificación: Para realizar la especificación, en la mayoría de proyectos se utiliza UML (Unified Modeling Language), un lenguaje visual que permite plasmar en notación orientada a objetos nuestras necesidades. No obstantem, UML no es el único lenguaje utilizado, en esta sección podrás descubrir otros como por ejemplo ORM. Especificación Para realizar la especificación de un proyecto se utilizan lenguajes que permiten plasmar los requerimientos del usuario en notación de orientación a objetos. No son lenguajes de programación, únicamente nos sirven para abstraer de forma gráfica los requerimientos y realizar el diseño posterior del sistema. UML es el lenguaje más extendido para la especificación y diseño de proyectos, hasta el punto de convertirse en un estándar en 1997. Define dos modelos básicos: el modelo conceptual y el modelo de comportamiento. Modelo conceptual: Es el utilizado en la especificación del sistema, representa los conceptos más significativos en el dominio del problema utilizando Clases de Objetos, Asociación entre clases de Objetos y Atributos de las clases. Nos describe la parte estática del problema, es una fotografía del mundo real. La parte dinámica del sistema no queda definida en este modelo. Modelo de Comportamiento: Utilizado en la parte de diseño del sistema, define la parte dinámica, es decir, cual debe ser el comportamiento en cada situación y la forma de proceder. Los diagramas de secuencia y de estados son parte de este modelo. ORM es otro lenguaje que proporciona un método de modelado conceptual de muy fácil comprensión. La metodología de ORM está basada en tres principios básicos: Simplicidad: El modelado de los datos se realiza de la forma más natural posible. Transmisibilidad: Las estructuras se documentan utilizando un lenguaje fácilmente comprensible. Precisión: El esquema resultante del modelo queda normalizado. La persona encargada de la especificación debe ser capaz de relacionar convenientemente las estructuras de datos y el nivel conceptual en términos que los usuarios puedan entender. ORM está específicamente diseñado para mejorar este tipo de comunicación. Como herramienta de modelado gráfico, Microsoft propone Visio, un paquete de software que nos permite realizar modelos conceptuales de forma intuitiva y sencilla. Página 3
Diseño: En la fase de diseño se determina la arquitectura general del sistema y su comportamiento dinámico, adaptando la especificación realizada en la etapa anterior. En esta fase, se decide que tecnología se utilizará en el sistema aprovechando y adaptando sus ventajas. Diseño En la fase de diseño se establece el comportamiento dinámico del sistema, es decir, como debe reaccionar ante los acontecimientos. Para su desarrollo también se utilizan los lenguajes de modelado descritos en la fase de especificación. El resultado obtenido de la etapa de diseño facilita enormemente la implementación posterior de nuestro sistema, pues proporciona la estructura básica del sistema y como los diferentes componentes actúan y se relacionan entre ellos. Una buena metodología de diseño consiste en utilizar patrones. Un patrón de diseño ofrece una solución concreta a los posibles problemas que podamos encontrar en la construcción de nuestro sistema, indicando la mejor forma de modelar los objetos. Una vez aplicados, su implementación en lenguajes orientados a objetos no presenta ningún problema adicional. La elección de la arquitectura interna de nuestro sistema es otro de los puntos básicos de la etapa de diseño. Las arquitectura más utilizada es en capas, el número de las cuáles depende de diferentes factores, aunque la más utilizada es la arquitectura en 3 capas: Presentación, Dominio y Acceso a datos. No obstante, al escoger la arquitectura dependerá también de la tecnología que utilicemos (XML Web services,.net Remoting, etc..). Visual Studio.NET Enterprise Architect proporciona estructuras de diseño para diferentes tipos de proyectos, que el desarrollador puede adaptar a sus necesidades. De esta forma, utilizando este paquete software podemos modelar toda la arquitectura del sistema utilizando alguna de sus plantillas. Página 4
Desarrollo y trabajo en equipo: La implementación del diseño es un fase muy extensa y requiere de un equipo de desarrolladores. La coordinación de este equipo es muy importante si se desea finalizar el proyecto en el tiempo previsto. Desarrollo en Equipo En la fase de desarrollo se implementa el sistema, es decir, se crea el código correspondiente al resultado de la fase de diseño, siguiendo los patrones y la arquitectura escogida. Uno de los puntos importantes a controlar en esta etapa consiste en la coordinación del equipo de desarrolladores del proyecto. Dentro de Microsoft Solutions Framework se define un modelo de equipo para el desarrollo de proyectos informáticos, indicando la estructura correcta dependiendo de diversos factores (tipo de proyecto, recursos disponibles, tiempo de desarrollo, etc...). Para más información sobre este modelo es posible consultar el Documento sobre el modelo de equipo de MSF Con el fin de agilizar el desarrollo de un proyecto, Microsoft dispone de diversos paquetes software que pueden ser de gran utilidad. Para el desarrollo e implementación, Microsoft ofrece Visual Studio.NET, un entorno de desarrollo completo que facilita la generación de código. Para la coordinación de los diferentes desarrolladores implicados en un mismo proyecto, Microsoft ofrece otra herramienta que facilita la concurrencia del desarrollo en equipo. Visual Source Safe es un paquete software que se integra con Visual Studio.NET y permite el desarrollo conjunto de un equipo de personas, alojando el código fuente, y controlando que las partes desarrolladas por diferentes personas no interfieran entre ellas. Página 5
Mantenimiento: La fase de mantenimiento de un proyecto contiene las fases de implantación, testeo, depuración y control de rendimiento, etapas que nos permiten ajustar nuestro sistema de forma que sus funcionalidades correspondan con los objetivos iniciales. Mantenimiento La primera fase del mantenimiento de un sistema software consiste en la implantación de nuestra aplicación en el entorno donde se va a desarrollar. Posteriormente, es necesario realizar una serie de pruebas para comprobar que no han surgido problemas, en tal caso será recomendable realizar una depuración. Finalmente, se debe mantener un control del Rendimiento. Para completar todas estas fases con éxito, disponemos de diversas utilidades que facilitan el proceso de mantenimiento. En el momento de implantar un sistema la primera cuestión a resolver consiste en la distribución del software..net Framework proporciona tres formas de empaquetado: Mediante un assembly o colecciones de assemblies, proporcionando las dll y los ejecutables tal y como han sido compilados. Una segunda opción consiste en comprimir nuestros archivos en.cab, de forma que sean fácilmente instalables, y finalmente, distribuir los archivos mediante un archivo Microsoft Installer. En la proceso de prueba de nuestro software es importante contar con utilidades que nos ayuden a conocer el funcionamiento real de la aplicación. Dos de estas utilidades son Visual Studio Analyzer y Application Center Test. Visual Studio Analyzer permite realizar análisis de rendimiento y depuración, mediante un registro de datos mientras la aplicación está en ejecución, además, este paquete software viene incluido en el entorno Visual Studio, aplicación que también posee un completo entorno de depuración. Application Center Test es un producto diseñado para controlar el rendimiento de servidores web y detectar los posibles problemas con las aplicaciones web, incluyendo las páginas ASP y los componentes que utilizan. Para un análisis de rendimiento podemos utilizar Microsoft Operations manager, un producto software que permite realizar monitorización de eventos, registro de operaciones, y exhaustivos análisis de las aplicaciones corriendo bajo un entorno Windows 2000. Página 6
Planificación y Gestión Para poder completar con éxito un proyecto de software, se necesita tener un control riguroso sobre el tiempo, las personas o los imprevistos que puedan surgir, como por ejemplo cambios en el software. Para ayudarnos en la planificación y gestión de proyectos, Microsoft nos proporciona dos herramientas básicas: Microsoft Project y Microsoft Solutions Framework. Microsoft Project: Descubre las ventajas de utilizar este programa para el control de los proyectos en desarrollo. Entre sus muchas funcionalidades te permite gestionar la planificación del proyecto mediante grafos, tablas y diagramas. Microsoft Project La gestión de proyectos incluye un control de los costes y del tiempo de finalización que coincidan con los objetivos empresariales. Microsoft Project es un producto de Microsoft que proporciona una plataforma para el desarrollo seguro y una implementación correcta de los proyectos. Se divide en Microsoft Project Server 2002 y Microsoft Project 2002. Microsoft Solutions Framework: MSF está diseñado para proporcionar una guía básica sobre como desarrollar con éxito un proyecto software. Aprende más sobre él en esta sección. Microsoft Solutions Framework Microsoft Solutions Framework (MSF) es una flexible e interrelacionada serie de conceptos, modelos y prácticas de uso que controlan la planificación, el desarrollo y la gestión de proyectos tecnológicos. MSF se centra en los modelos de proceso y de equipo dejando en un segundo plano las elecciones tecnológicas. Originalmente creado en 1994 para conseguir resolver los problemas a los que se enfrentaban las empresas en sus respectivos proyectos, se ha convertido posteriormente en un modelo práctico que facilita el éxito de los proyectos tecnológico MSF se compone de varios modelos encargados de planificar las diferentes partes implicadas en el desarrollo de un proyecto: Modelo de Arquitectura del Proyecto, Modelo Página 7
de Equipo, Modelo de Proceso, Modelo de Gestión del Riesgo, Modelo de Diseño de Proceso y finalmente el modelo de Aplicación. Modelo de Arquitectura del Proyecto: Diseñado para acortar la planificación del ciclo de vida, este modelo define las pautas para construir proyectos empresariales a través del lanzamiento de versiones. Puedes encontrar los conceptos básicos de este modelo en el Documento base del Modelo de Arquitectura del Proyecto Modelo de Equipo: Este modelo ha sido diseñado para mejorar el rendimiento del equipo de desarrollo. Proporciona una estructura flexible para organizar los equipos de un proyecto. Puede ser escalado dependiendo del tamaño del proyecto y del equipo de personas disponibles. Para obtener más información puedes consultar el Documento del Modelo de Equipo Modelo de Proceso: Diseñado para mejorar el control del proyecto, minimizando el riesgo, y aumentar la calidad acortando el tiempo de entrega. Proporciona una estructura de pautas a seguir en el ciclo de vida del proyecto, describiendo las fases, las actividades, la liberación de versiones y explicando su relación con el Modelo de equipo. Puedes encontrar su descripción en el Documento del Modelo de Proceso Modelo de Gestión del Riesgo: Diseñado para ayudar al equipo a identificar las prioridades, tomar las decisiones estratégicas correctas y controlar las emergencias que puedan surgir. Este modelo proporciona un entorno estructurado para la toma de decisiones y acciones valorando los riesgos que puedan provocar. Consulta la base del modelo en el Documento del Modelo de Gestión del Riesgo Modelo de Diseño del Proceso: Diseñado para distinguir entre los objetivos empresariales y las necesidades del usuario. Proporciona un modelo centrado en el usuario para obtener un diseño eficiente y flexible a través de un enfoque iterativo. Las fases de diseño conceptual, lógico y físico proveen tres perspectivas diferentes para los tres tipos de roles: los usuarios, el equipo y los desarrolladores. Modelo de Aplicación: Diseñado para mejorar el desarrollo, el mantenimiento y el soporte, proporciona un modelo de tres niveles para diseñar y desarrollar aplicaciones software. Los servicios utilizados en este modelo son escalables, y pueden ser usados en un solo ordenador o incluso en varios servidores. Página 8