sábado, 23 de febrero de 2013


La ingeniería de software es una disciplina formada por un conjunto de métodos, herramientas y técnicas que se utilizan en el desarrollo de los programas informáticos (software).
Esta disciplina trasciende la actividad de programación, que es el pilar fundamental a la hora de crear una aplicación. El ingeniero de software se encarga de toda la gestión del proyecto para que éste se pueda desarrollar en un plazo determinado y con el presupuesto previsto.

La ingeniería de software, por lo tanto, incluye el análisis previo de la situación, el diseño del proyecto, el desarrollo del software, las pruebas necesarias para confirmar su correcto funcionamiento y la implementación del sistema.

 

Cabe destacar que el proceso de desarrollo de software implica lo que se conoce como ciclo de vida del software, que está formado por cuatro etapas: concepción, elaboración, construcción y transición.



La concepción fija el alcance del proyecto  y desarrolla el modelo de negocio; la elaboración define el plan del proyecto, detalla las características y fundamenta la arquitectura; la construcción es el desarrollo del producto; y la transición es la transferencia del producto terminado a los usuarios.
Una vez que se completa este ciclo, entra en juego el mantenimiento del software. Se trata de una fase de esta ingeniería  donde se solucionan los errores descubiertos (muchas veces advertidos por los propios usuarios) y se incorporan actualizaciones para hacer frente a los nuevos requisitos. El proceso de mantenimiento incorpora además nuevos desarrollos, para permitir que el software pueda cumplir con una mayor cantidad de tareas.

Un campo directamente relacionado con la ingeniería de software es la arquitectura de sistemas, que consiste en determinar y esquematizar la estructura general del proyecto, diagramando su esqueleto con un grado relativamente alto de especificidad y señalando los distintos componentes que serán necesarios para llevar a cabo el desarrollo, tales como aplicaciones complementarias y bases de datos. Se trata de un punto fundamental del proceso, y es muchas veces la clave del éxito de un producto informático.


 La primera de todas las etapas del trabajo que realizan los ingenieros de software consiste en estudiar minuciosamente las características que se creen necesarias para el programa a desarrollar, y es éste el punto en el cual deben encontrar un equilibrio (cada vez más difícil de alcanzar) entre las demandas excesivas de los malos consumidores y las posibilidades de la compañía. El tiempo es dinero, y las empresas del mundo informático lo saben muy bien.

Cada función de un programa, cada rasgo que lo vuelva más cómodo, más inteligente, más accesible, se traduce en una cantidad determinada de tiempo, que a su vez acarrea los sueldos de todas las personas involucradas en su desarrollo. Pero además del costo de producción necesario para realizar cada una de las piezas de un programa, la ingeniería de software debe decidir cuáles de ellas tienen sentido, son coherentes con el resto y son necesarias para comunicar claramente la esencia y los objetivos de la aplicación.


La ingeniería de sistemas es una carrera universitaria que se encarga del diseño, la programación, la implantación y el mantenimiento de sistemas. A diferencia de otras ramas de la ingeniería, esta disciplina no se ocupa de productos tangibles (los ingenieros civiles, por ejemplo, construyen edificios), sino de productos lógicos.
Por lo tanto, la ingeniería de sistemas implica el uso de nociones matemáticas que permitan concretar la aplicación tecnológica de las teorías de los sistemas. Se trata de una ciencia interdisciplinaria, que requiere de diversos conocimientos para plasmar sus diseños en la vida práctica.


La ingeniería de sistemas permite transformar una necesidad operativa en una descripción de los parámetros del rendimiento de un sistema, con su correspondiente configuración. Por otra parte, posibilita la integración de los parámetros técnicos relacionados de modo tal que las interfaces de programa y funcionales sean compatibles y se garantice el funcionamiento del sistema total.
Al realizar su trabajo, el especialista en esta materia debe asegurar que el sistema cumpla con los principios de fiabilidad, mantenibilidad, seguridad y eficiencia, entre otros.


En concreto, el ingeniero de sistemas puede dedicarse al desarrollo e implementación de redes complejas, a la programación de aplicaciones informáticas y al manejo de base de datos, por ejemplo.

Los profesionales en ingeniería de sistemas son muy requeridos en la actualidad ante el avance de la tecnología y la necesidad de informatización que tienen las empresas.




CAPAS EN LA INGENIERÍA DE SOFTWARE



HERRAMIENTAS: proporciona un enfoque automático o semiautomático para el proceso y para los métodos cuando se integran herramientas para la información creada por una herramienta la puede utilizar otra, se establece un sistema de soporte para el desarrollo de software llamado Ingeniería de Software asistida por computadora.

METODO: Los métodos de la ingeniería de software indican cómo se debe construir técnicamente el software abarcan una gran gama de tareas, que incluyen:
- Análisis de requisitos.
- Diseño
- Construcción de programas
- Pruebas
- Mantenimiento.

Dependen de un conjunto de principios básicos que gobiernan cada área de la tecnología e incluyen actividades del modelado otras técnicas descriptivas.


PROCESO: Define un marco del trabajo para un conjunto de áreas claves de proceso que se deben establecer para la entrega efectiva de la tecnología de la ingeniería de software las áreas claves forman la base del control del proyecto.



¿Qué es un Proceso del Software?
Conjunto de actividades y resultados asociados que producen un producto de software. Estas actividades son llevadas a cabo por los ingenieros de software, son las siguientes:



1. Especificación del software donde los clientes e ingenieros definen el software a producir y las restricciones sobre su operación.
2. Desarrollo del software donde el software se diseña y programa.
3. Validación del software donde el software se valida para asegurar que es lo que el cliente requiere.
4. Evolución del software donde el software se modifica para adaptarlo a los cambios requeridos por el cliente y el mercado.



Enfoques de desarrollo de software

Cada metodología de desarrollo de software tiene más o menos su propio enfoque para el desarrollo de software. Estos son los enfoques más generales, que se desarrollan en varias metodologías específicas. Estos enfoques son los siguientes:


·         - Modelo en cascada: Framework lineal.

·         - Prototipado: Framework iterativo.

·         - Incremental: Combinación de framework lineal e iterativo.

·         - Espiral: Combinación de framework lineal e iterativo.

·         - RAD: Rapid Application Development, framework iterativo.




Modelo en cascada

Es un proceso secuencial de desarrollo en el que los pasos de desarrollo son vistos hacia abajo (como en una cascada de agua) a través de las fases de análisis de las necesidades, el diseño, implementación, pruebas (validación), la integración, y mantenimiento.






Prototipado  
El prototipado es el framework de actividades dedicada al desarrollo de software prototipo, es decir, versiones incompletas del software a desarrollar.












Provee una estrategia para controlar la complejidad y los riesgos, desarrollando una parte del producto software reservando el resto de aspectos para el futuro.








Los principios básicos son:


      - La atención se centra en la evaluación y reducción del riesgo del proyecto dividiendo el  proyecto en segmentos más pequeños y proporcionar más facilidad de cambio durante el proceso de desarrollo, así como ofrecer la oportunidad de evaluar los riesgos y con un peso de la consideración de la continuación del proyecto durante todo el ciclo de vida.


      - Cada viaje alrededor de la espiral atraviesa cuatro cuadrantes básicos: (1) determinar objetivos, alternativas, y desencadenantes de la iteración; (2) Evaluar alternativas; Identificar y resolver los riesgos; (3) desarrollar y verificar los resultados de la iteración, y (4) plan de la próxima iteración.


·       - Cada ciclo comienza con la identificación de los interesados y sus condiciones de ganancia, y termina con la revisión y examinación.



Rapid Application Development (RAD)

El desarrollo rápido de aplicaciones (RAD) es una metodología de desarrollo de software, que implica el desarrollo iterativo y la construcción de prototipos.


·      - Objetivo clave es para un rápido desarrollo y entrega de una alta calidad en un sistema de relativamente bajo coste de inversión.

·       - Intenta reducir los riesgos inherentes del proyecto partiéndolo en segmentos más pequeños y proporcionar más facilidad de cambio durante el proceso de desarrollo.

·       - Orientación dedicada a producir sistemas de alta calidad con rapidez, principalmente mediante el uso de iteración por prototipos (en cualquier etapa de desarrollo), promueve la participación de los usuarios y el uso de herramientas de desarrollo computarizadas

·       - Control de proyecto implica el desarrollo de prioridades y la definición de los plazos de entrega.



REFERENCIAS BIBLIOGRÁFICAS.
- Ian Sommerville. Ingenieria de Software. Pearson. 2005




sábado, 16 de febrero de 2013


INGENIERÍA DE SOFTWARE.
La ingeniería de software es una disciplina de ingeniería que comprende todos los aspectos de la producción de software, desde las etapas iniciales de la especificación del sistema, hasta el mantenimiento de éste después de que se utiliza. 

SOFTWARE.
Muchas personas asocian el término software con los programas de computadora. Sin embargo, preferimos una definición más amplia donde el software no son sólo programas, sino todos los documentos asociados y la configuración de datos que se necesitan para hacer que estos programas operen de manera correcta. 
Por lo general, un sistema de software consiste en diversos programas independientes, archivo de configuración que se utilizan para ejecutar estos programas,  un sistema de documentación que describe la estructura del sistema, la documentación para el usuario que explica cómo utilizar el sistema y sitios web que permitan a los usuarios descargar la información de productos recientes.

INGENIEROS.
Los ingenieros hacen que las cosas funcionen. Aplican teorías, métodos y herramientas donde sean convenientes, pero las utilizan de forma selectiva y siempre tratando de descubrir soluciones a los problemas, aun cuando no existan teorías y métodos aplicables para resolverlos.   

Principales áreas de estudio y/o investigación.
-  Métodos y Metodologías de Desarrollo de Software

- Procesos de Desarrollo de Software

-  Gestión de Proyectos de Software.- Es imposible redactar una descripción estándar del trabajo de un gestor de software, pero realizan algunas actividades de gestión.
1. Reacción de la propuesta
2. Planificación y calendarización del proyecto
3. Estimación de costes del proyecto
4. Supervisión y revisión del proyecto
5. Selección y evaluación del personal
6. Redacción y presentación de informes

-  Medición y Estimación de Software

-  Ingeniería de Requisitos / Requerimientos.- Los requerimientos para un sistema son la descripción de los servicios proporcionados por el sistema y sus restricciones operativas. Estos requerimientos reflejan las necesidades de los clientes de un sistema que ayude a resolver algún problema como el control de un dispositivo, hacer un pedido o encontrar información.

-  Ingeniería de Software Empírica

-  Gestión de Riesgos

-  Usabilidad de Software

-  Evaluación de Software.- La flexibilidad de los sistemas software es una de las principales razones por la que más y más software se incorpora a los sistemas grandes y complejos.
-  Métricas de Software
-  Calidad de Software
-  Métodos Formales
-  Ingeniería Web


REFERENCIAS BIBLIOGRÁFICAS.
- Ian Sommerville. Ingenieria de Software. Pearson. 2005