|
Ingeniería del 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 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 o implementación, y por último el mantenimiento
1. Ingeniería del Software / Ingeniería y Programación / Análisis de Requerimientos
Antes de empezar un proyecto, es necesario saber cuales son los objetivos y funcionalidades que debe cumplir. La fase de análisis consiste en detectar estas funcionalidades y expresarlas en forma 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, en forma de requisitos
La determinación de los requerimientos se haya en base a la experiencia, de hablar con los usuarios finales sobre sus necesidades y/o analizando un sistema software existente. Los requerimientos de usuario se pueden expresar en lenguaje natural, organizados por categorías. También existen lenguajes formales como OCL (dentro de la especificación UML ), que permiten expresar los requerimientos de una forma más concisa y no ambigua.
Hay dos tipos de requerimientos: funcionales (QUE debe hacer el sistema), y no funcionales (otros requisitos sobre el entorno (sistema operativo, sistema gestor de base de datos, sistema de archivos, ...), ergonómicos (interfaz gráfica, etc..), de rendimiento , de tiempo , formato de entrega , etc... )
2. Ingeniería del Software _ / Ingeniería y Programación _ / 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.
M odelo 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
Además, la nueva versión del entorno integrado de desarrollo, Visual Studio 2005 , incorpora herramientas para realizar diagramas de clases, a partir de los cuales se genera automáticamente el código correspondiente de la aplicación. También permite crear diagramas de clases de aplicaciones ya existentes, mediante el proceso de ingeniería inversa.
3. Ingeniería de Software / Ingeniería y Programación / 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. Microsoft patterns & practices es un sitio Web de Microsoft que contiene multitud de patrones de diseño orientados a tecnologías de Microsoft
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..).
El diseño de la interfaz gráfica de usuario es otra de las tareas que se deben realizar dentro de la etapa de diseño. La interfaz de usuario de una aplicación debe de ser el máximo de intuitiva posible para el usuario final, y debe adaptarse a los procesos que los usuarios realizan para incrementar al máximo el rendimiento de los mismos. El entorno de desarrollo integrado Visual Studio .NET incorpora diversos diseñadores para diferentes interfaces de usuario, ya sean para aplicaciones de ventana, aplicaciones Web, o aplicaciones para dispositivos móviles.
Para almacenar los datos de la aplicación, es necesario también diseñar la estructura de la base de datos que va a contener esos datos. El diseño de la base de datos es importante para optimizar el tamaño ocupado por los datos y la agilidad de consulta de los mismos. Tanto SQLServer 2000 como Visio, y Visual Studio .NET, incorporan herramientas que facilitan la creación de bases de datos de forma visual, pudiendo después, mediante un proceso de reingeniería, obtener las correspondientes instrucciones de creación de la base de datos.
Microsoft 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. En concreto esta versión de Visual Studio incorpora Visio for Enterprise Architects , una herramienta basada en Visio Professional pero adaptada exclusivamente para desarrolladores. En los siguientes artículos se explican algunas de las utilidades de esta versión especial de Visio:
Step-by-Step Guide to Reverse Engineering Code into UML Diagrams with Microsoft Visio 2000
Step-by-Step Guide to Reverse Engineering a Database in Visio 2000
La nueva versión de Visual Studio 2005 contiene nuevas herramientas orientadas a facilitar las diferentes tareas del diseño de aplicaciones, y a facilitar la posterior implementación del diseño. En las siguientes URLs se pueden encontrar algunos artículos que hablan sobre estas herramientas:
Designing an API with the Visual Studio 2005 Class Designer
Introduction to the Visual Studio 2005 Application Designer, Part 1 Introduction to the Visual Studio 2005 Application Designer, Part 2
Introduction to the Visual Studio 2005 System Designer
Visual Studio 2005 Team System Modeling Strategy and FAQ
4. Ingeniería del Software / Ingeniería y Programación / Desarrollo en Equipo
La implementación es un fase generalmente muy extensa y requiere de un equipo de desarrolladores para llevarse a cabo. La coordinación entre los miembros de este equipo es muy importante si se desea finalizar el proyecto en el tiempo previsto.
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 del Modelo de Equipo
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.
La próxima versión del entorno de desarrollo, Visual Studio 2005 , contiene nuevas herramientas para facilitar el desarrollo de aplicaciones, como un intellisense mejorado, plantillas de código (code-snippets), herramientas de refactoring, mejoras en las herramientas de depuración, etc.
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. Además, existe una versión especial de Visual Studio 2005 , Visual Studio Team System , que permite la coordinación y colaboración entre todos los miembros del equipo desde el propio entorno de desarrollo. Para decidir cual de las dos herramientas (Visual SourceSafe o Visual Studio Team System) es conveniente utilizar, es recomendable consultar los siguientes articulos:
Choosing Between Microsoft Visual Studio Team System and Microsoft Visual SourceSafe
Using Source Code Control in Team Foundation
5. Ingeniería de Software _ / Ingeniería y Programación _ / 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.
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.
La última versión de Visual Studio, Visual Studio 2005 , incluye nuevas herramientas que facilitan las tareas de implantación, pruebas, depuración, y control del rendimiento. Existen dos versiones del producto especificas para pruebas ( Visual Studio 2005 Team Edition for Software Testers ), y para análisis de rendimiento ( Visual Studio 2005 Team Test Load Agent ). En las siguientes URLs se puede ver como utilizar Visual Studio para la realización de pruebas en el software:
Visual Studio 2005 Team System: Enabling Better Software Through Better Testing
Introducing Microsoft Visual Studio 2005 Team System Web Testing
A Unit Testing Walkthrough with Visual Studio Team Test
Unit Testing and Generating Source Code for Unit Test Frameworks Using Visual Studio 2005 Team System
6. Ingeniería del Software _ / 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.
|