lunes, 18 de febrero de 2013

ITHUEJUTLA RSA

UNIDAD 1  FUNDAMENTOS INGENIERÍA DE SOFTWARE

1.1 Conceptos básicos

Importancia

•La economía de todos los países desarrollados es dependiente del software.
•Actualmente cada vez mas sistemas son controlados por software.
•La Ingeniería de Software concierne a teorías, métodos y herramientas para el desarrollo profesional de software .
•El gasto en la Ingeniería de Software, representa un alto porcentaje del PIB de los países desarrollados.

Ingeniería de software 

La Ingeniería de Software es una disciplina de la Ingeniería que concierne a todos los aspectos de la producción de software. Los Ingenieros de Software adoptan un enfoque sistematico para llevar a cabo su trabajo y utilizan las herramientas y técnicas necesarias para resolver el problema planteado, de acuerdo a las restricciones de desarrollo y recursos disponibles.

Diferencia entre ingeniería de software y ciencias computacionales

Las ciencias computacionales conciernen a la teoría y fundamentos de cualquier sistema de cómputo (hardware, software).
La ingeniería de software concierne a los aspectos prácticos del desarrollo y puesta en marcha de productos útiles de software.
La ingeniería de software aún está lejos de ser considerada una ciencia como lo son la química y la física.

Diferencia entre ingeniería de software e ingeniería de sistemas

La ingeniería de sistemas se refiere a todos los aspectos del desarrollo de sistemas basados en cómputo incluyendo hardware, software y la ingeniería de procesos.
La ingeniería de software es una parte de este proceso que comprende el desarrollo de software, control, aplicaciones y bases de datos del sistema.

Costos de la ingeniería de software

El costo total de un software esta dividido aproximadamente de la siguiente forma: 
60% costos de desarrollo .
 40% costos de pruebas.

 .En el software a la medida los costos de evolución a menudo exceden los costos de desarrollo. Los costos dependen del tipo de sistema que se desarrolla y de los requerimientos del mismo tales como desempeño y confiabilidad. La distribución de los costos depende del modelo de desarrollo empleado.

1.2 El Papel Evolutivo del Software

  El software es tanto un producto como el vehículo para su entrega. Es el transformador de la información. El papel del software de computadora ha experimentado un cambio significativo en un periodo un poco mayor a 50 años. Las mejorías substanciales en el desempeño del hardware, los cambios profundos en las arquitecturas de cómputo, los enormes incrementos en las capacidades de memoria y almacenamiento, y la amplia variedad de opciones de salida y de entrada han propiciado el surgimiento de sistemas más elaborados y complejos basados en computadoras. Nadie sabe en realidad el futuro de los sistemas que día a día se construyen, más sin embargo sin importar el lugar en el que resida el software, ya sea en un celular o dentro de una computadora central, el software realiza la producción, el manejo, la adquisición, la modificación, el despliegue o la transmisión de la información que puede ser tan simple como un solo bit o tan compleja como una  presentación multimedia. En su papel de vehículo para la entrega de un producto, el software actúa como la base para el control de la computadora (sistemas operativos), la comunicación de información (redes) y la creación y el control de otros programas (utilerías de software y ambientes)

El software entrega el producto más importante de nuestro tiempo: información. Transforma los datos personales, por ejemplo las transacciones financieras de un individuo, de modo que los datos sean más útiles en un contexto local. Maneja información de negocio para mejorar la competitividad, proporciona una vía para las redes de información alrededor del mundo (Internet) y proporciona los medios para adquirir información en todas sus formas (páginas web).

Evolución prolongada del sistema

La evolución de los programas es un proceso autorregulativo. Los atributos de los sistemas, tales como tamaño, tiempo entre entregas y la cantidad de errores y documentados son aproximadamente invariantes para cada entrega del sistema.

Estabilidad organizacional

Durante el tiempo de vida de un programa su velocidad de desarrollo es aproximadamente constante e independiente de los recursos dedicados al desarrollo del sistema.
Crecimiento continuado: la funcionalidad ofrecida por los sistemas tiene que crecer continuamente para,  tener la satisfacción de los usuarios.

1.3 Etapas del Desarrollo del Software 

Al inicio de un desarrollo esta es la primera fase que se realiza y según el modelo de proceso adoptado,  pueden casi terminar para pasar a la próxima etapa. Durante esta fase, se adquieren, reunen y especifican las características funcionales y no funcionales que deberán cumplir el futuro programa o sistema a desarrollar. Las características, tanto de entorno, parámetros no funcionales y arquitectura dependen enormemente de lo bien logrado.

Planificaciòn

En esta etapa se establece el problema, aclarando lo mas posible. Es la parte mas critica de la solución. Amerita un estudio cuidadoso. Se deben identificar las teorías, fundamentos y/o principios matemáticos, físicos o de cualquier índole q puedan fundamentar satisfactoriamente el problema.

Análisis 

En esta etapa se debe entender y comprender de forma detallada cual es la problematica a resolver, verificando en el entorno en cual se encuentra dicho problema, de tal manera que se obtenga la información necesaría y suficiente para afrontar su respectiva solución. 

Diseño

En esta etapa consiste básicamente en desarrollar una lista de pasos llamados algoritmos o receta de la solución, verificando que el problema se resuelva como se desee. Una vez que se tiene la suficiente información del problema a solucionar, es importante determinar la estrategia que se va a utilizar, para resolver el problema.

Implementación

En esta etapa consiste en implementar o escribir el algoritmo como un programa de computadora en un lenguaje de programaciòn, convirtiendo cada paso de algoritmo en instrucciones en lenguaje de programacion. 

Pruebas

En esta etapa comprueba que le software realize correctamente las tareas indicadas en la especificación. Se considera un buena pràctica el que las pruebas sean efectuadas por alguien distinto al desarrollador quien programó, idealmente un área de pruebas;  sin perjuicio de lo anterior el programador debe hacer sus propias pruebas.

Uso y Mantenimiento

En esta etapa se realiza la resoluciòn del problema previamente planteado o satisface una determinada necesidad, es importante mantener una estructura de actualizaciòn, verificaciòn y validaciòn que permita a dicho programa ser útil.

1.4 Clasificacion de la Tecnologia en el Desarrollo de Software (tecnologias estructuradas y orientada a objetos).

Tecnología de desarrollo estructurado

Es posible estructurar el modelo de un sistema de software en base a funciones que procesan la información que reciben de otras funciones que procesan la función lo del exterior y dirigen la información que reciben de otras funciones del sistema necesario.

Tecnologías orientadas a objetos

Los métodos de descomposición orientada a objetos contribuyen la tendencia mas influyente observada en la ingeniería del software en los últimos años en ellas un objeto es un conjunto de datos y funciones de manipulación de los mismos encapsulados en una cantidad que es posible tratar.

1.5 Definiciòn e Historia de las Herramientas "CASE" 

Las herramientas CASE son diversas aplicaciones informaticas destinadas a aumentar la productividad en el desarrollo de software reduciendo el costo de las mismas en términos de tiempo y de dinero. Estas herramientas pueden ayudar en todos los aspectos del ciclo de vida de desarrollo del software en tareas como el proceso de realizar un diseño del proyecto, cálculo de costos, implementación de parte del código automáticamente con el diseño dado, compilación automática, documentación o detección de errores entre otras. Ya en los años 70 un proyecto llamado ISDOS diseñó un lenguaje y por lo tanto un producto que analizaba la relación existente entre los requisitos de un problema y las necesidades que éstos generaban, el lenguaje en cuestión se denominaba PSL (Problem Statement Language) y la aplicación que ayudaba a buscar las necesidades de los diseñadores PSA (Problem Statement Analyzer).
Aunque ésos son los inicios de las herramientas informáticas que ayudan a crear nuevos proyectos informáticos, la primera herramienta CASE fue Excelerator que salió a la luz en el año 1984 y trabajaba bajo una plataforma PC.
Las herramientas CASE alcanzaron su techo a principios de los años 90. En la época en la que IBM había conseguido una alianza con la empresa de software AD/Cycle para trabajar con sus mainframes, estos dos gigantes trabajaban con herramientas CASE que abarcaban todo el ciclo de vida del software. Pero poco a poco los mainframes han ido siendo menos utilizados y actualmente el mercado de las Big CASE ha muerto completamente abriendo el mercado de diversas herramientas más específicas para cada fase del ciclo de vida del software.

 

1.6 Clasificaciòn de las Herramientas CASE.

 

Las herramientas CASE pueden clasificarse por su función, su papel como instrumentos para administradores o personal técnico, por su utiliza­ción en los distintos pasos del proceso de ingeniería del software, la arquitectura de entorno (hardware y software) que les presta su apoyo, o incluso por su origen o su coste. En muchos casos, las únicas herramientas disponibles para el ingeniero del software eran compiladores y editores de texto. Estas herramientas abarcan solo la codificación, actividad que no debería de ocupar mas del 20% del proceso global del software. La taxonomía que se presenta enseguida, utiliza como criterio principal funcion.

Herramientas de la ingeniería de la información.  

Al modelar los requisitos de información estratégica de una organización, las herra­mientas de la ingeniería de la información proporcionan un metamode­lo del cual se derivan sistemas de información específicos. En lugar de centrarse en los requisitos de una aplicación especifica, estas herramien­tas CASE modelan la información de negocios cuando esta se transfiere entre distintas entidades organizativas en el seno de una compañía. El objetivo primordial de las herramientas de esta categoría consiste en representar objetos de datos de negocios, sus relaciones, y la forma en que fluyen estos objetos de datos entre distintas zonas de negocio en el seno de la compañía.

Modelado de procesos y herramientas de administración. 

 Si una organización intenta mejorar un proceso de negocios (o de software) lo primero que debe de hacer es entenderlos. Las herramientas de modelado de procesos (también denominadas herramientas de tecnología de procesos) se utilizan para representar los elementos clave del proceso para entenderlo lo mejor posible. Estas herramientas también pueden proporcionar vínculos con descripciones de procesos que ayuden a quienes estén impli­cados en el proceso de comprender las tareas que se requieren para llevar a cabo ese proceso. Además, también pueden proporcionar vínculos con otras herramientas que proporcionen un apoyo para actividades de proceso ya definidas.

Herramientas de planificación de proyectos.

  Las herramientas de esta categoría se concentran en dos áreas primordiales: estimación de esfuer­zos de proyecto y de costes de software, y planificación de proyectos. Las primeras calculan su esfuerzo estimado, la duración del proyecto y su número de personas empleando una o más de las técnicas presentadas. Por su parte, las herramientas de planificación de proyectos capacitan al administrador para definir todas las tareas del proyecto (la estructura de desglose de tareas), para crear una red de tareas (normalmente empleando una entrada gráfica), para repre­sentar la interdependencia entre tareas y para modelar la cantidad de paralelismo que sea posible para ese proyecto.

Herramientas de análisis de riesgos. 

 La identificación de riesgos potenciales y el desarrollo de un plan para mitigar, monitorizar y admi­nistrar esos riesgos tiene una importancia fundamental en los grandes proyectos. Estas herramientas en si, capacitan al adminis­trador del proyecto para construir una tabla de riesgos pro­porcionando una guía detallada en la identificación y análisis de riesgos.

Herramientas de administración de proyectos. 

 La planificación del proyecto y el plan del proyecto deben de seguirse y de monitorizarse de forma continua. Además, el gestor deberá de utilizar las herramientas que recojan métricas que en ultima instancia proporcionen una indicación de la calidad del producto del software. Las herramientas de esta categoría suelen ser extensiones de herramientas de planificación de proyectos.

Herramientas de seguimiento de requisitos. 

 Cuando se desarrollan grandes sistemas, el sistema proporcionado suele no satisfacer los requi­sitos especificados por el cliente. El objetivo estas herramientas es proporcionar un enfoque sistemático para el aislamiento de requisitos, comenzando por la solicitud del cliente de una propuesta (RFP) 0 especificación. Las herramientas de trazado de requi­sitos típicas combinan una evaluación de textos por interacción humana. Con un sistema de gestión de bases de datos que almacena y categoriza todos y cada uno de los requisitos del sistema que se analizan partir de la RFP o especificación original.

Herramientas de métricas y gestión. 

 Las métricas de software mejoran la capacidad del administrador para controlar y coordinar el proceso del software y la capacidad del ingeniero para mejorar la calidad del softwa­re que se produce. Las métricas y herramientas de medida actuales se centran en procesos, proyectos y características del producto. Las herra­mientas orientadas a la administración capturan métricas especificas del proyecto (p. ej.: LDC/persona-mes, defectos por punto de función) que proporcionan una indicación global de productividad o de calidad. Las herramientas orientadas técnicamente determinan métricas técnicas que proporcionan una mejor visión de La calidad del diseño o del código.

Muchas de las herramientas métricas avanzadas mantienen una base de datos de medidas de medias de la industria. Basándose en características de proyectos y de productos proporcionados por el usuario, estas herramientas «califican» los numero locales frente a los valores medios de la industria (y frente al rendimiento local anterior) y sugieren estrategias para llegar a mejoras.

Herramientas de documentación. 

 Las herramientas de producción de documentos y de autoedición prestan su apoyo a casi todos los aspectos de la ingeniería del software, y representan una importante oportunidad de «aprovechamiento» para todos los desarrollares de software. La mayor parte de las organizaciones dedicadas al desarrollo de software invierte una cantidad de tiempo considerable en el desarrollo de docu­mentos, y en muchos casos el proceso de documentación en 51' resulta bastante deficiente. No es infrecuente que una organización de desarrollo de software invierta hasta Un 20 0 un 30 por ciento de su esfuerzo global de desarrollo de software en la documentación. Por esta razón, las herra­mientas de documentación suponen una oportunidad importante para mejorar la productividad.
Herramientas de software de sistema. 
 CASE es una tecnología de esta­ciones de trabajo. Por tanto, el entorno CASE debe adaptarse a un software de sistema en red de alta calidad, al correo electrónico, a los boleti­nes electrónicos y a otras capacidades de comunicaciones.

Herramientas de control de calidad. 

 La mayor parte de las herramien­tas CASE que afirman que tienen como principal interés el control de calidad son en realidad herramientas métricas que hace una auditoría del código fuente para determinar Si se ajusta o no a ciertos estándares del lenguaje. Otras herramientas extraen métricas en un esfuerzo por extrapolar la calidad del software que sé esta constru­yendo.

Herramientas de gestión de bases de datos. 

 El software de gestión de bases de datos sirve como fundamento para establecer una base de datos CASE (depósito), que también se denominara- base de datos del proyecto. Dado el énfasis acerca de los objetos de configuración, las herramientas de gestión de bases de datos para CASE pueden evolucionar a partir de los sistemas de gestión de bases de datos relacionales (SGBDR) para transformarse en sistemas de gestión de bases de datos orientadas a objetos (SGBDOO).

Herramientas de gestión de configuración de software. 

 La gestión de configuración de software (GCS) se encuentra en el núcleo de todos los entornos CASE. Las herramientas pueden ofrecer su asistencia en las cinco tareas principales de CICS: identificación, control de versiones, control de cambios, auditoría y contabilidad de estados. La base de datos CASE proporciona Un mecanismo para identificar todos los elementos de configuración y relacionarlo con otros elementos; el proceso de control que se describa se puede implementar con ayuda de herramientas especializadas; un acceso sencillo a los elementos de confi­guración individuales facilita el proceso de auditoría; y las herramientas de comunicación CASE pueden mejorar enormemente la contabilidad de estados (ofreciendo información acerca de los cambios a todos aquellos que necesiten conocerlos).

Herramientas de análisis y diseño.

 Estas herramientas capacitan al ingeniero del software para crear modelos del sistema que haya que construir. Los modelos contienen una representación de los datos, de la función y del comportamiento (en el nivel de análisis), así como caracterizaciones del diseño de datos, arquitectura, procedimientos e interfaz. Al efectuar una comprobación de la consistencia y validez del modelo, las herramientas de análisis y diseño proporciona una al ingeniero del software Un cierto grado de visión en lo tocante a la representación del análisis, y ayudan a eliminar errores antes de que se propaguen al diseño, o lo que es peor, a la propia implementación.

  

 

Biliografias

http://www.itescam.edu.mx
Software Engineering for information system, Donald McDermid, Blackwell scientific Publication

www.slideshare.net/..///historia-y-evolucion-del-software-9165502
  Rapid Development: Taming Wild Software Schedules. 1996. Steve McConnell. Las 680