Objetivo Particular:
Explicar e identificar los conceptos básicos de la ingeniería de software y su importancia en la construcción de sistemas.
1.1.- El software, antecedentes históricos y evolución.
1.2.- Ingeniería de software.
1.3.- El proceso del software.
Concepto de Software
Del inglés "soft" blando y "ware" artículos, se refiere al conjunto de instrucciones (programa) que indican a la electrónica de la maquina que modifique su estado, para llevar a cabo un proceso de datos; éste se encuentra almacenado previamente en memoria junto con los datos.En 1970, menos del uno por ciento de las personas podría haber descrito inteligentemente lo que significa, hoy muchas personas piensan que lo comprenden, pero lo entienden realmente?
El software es:
Evolución del Software:
---Resumen acerca de las eras:
Durante los primeros años de la era de la computadora, el <sw> se contemplaba como un extra añadido, la programación de computadoras era un arte manual (artesanal) para el que existían pocos métodos sistemáticos. El desarrollo del <sw> se realizaba virtualmente sin ninguna planificación, hasta que los planes comenzaron a descalabrarse y los costos a elevarse. Los programadores trataban de hacer las cosas bien, y con un esfuerzo heroico, a menudo salían con éxito. Lo normal era que el Hardware fuera de propósito general, y la mayoría del SW se desarrollaba y era usado por la misma persona u organización, la misma persona lo escribía, lo ejecutaba, y, si fallaba, lo corregía. En estos años aprendimos mucho sobre como echar a andar programas y aplicaciones, pero relativamente poco sobre la Ingeniería de las computadoras.
La segunda era en la evolución de los sistemas de computadoras, se extiende desde la mitad de la década de los sesenta hasta finales de los setenta. Esta era se caracterizo por la definición del software como un Producto y la llegada de las “Casas de Software”; el sW ya se desarrollaba para tener una amplia distribución en un mercado multidisciplinar. Pero todos estos programas, con todas esas sentencias fuentes, deberían ser modificados cuando (1) cambiaban los requisitos de los usuarios o (2) eran adaptados nuevos dispositivos de Hardware a los equipos o (3) se detectaban errores en la codificacion. Estas actividades se nombraron: Mantenimiento de Hardware.
La tercera era en la evolución de los sistemas de computadora comenzó a mediados de los años setenta y continuo mas allá de la década; el sistema distribuido, múltiples computadoras con funciones concurrentes y estableciendo alguna comunicación entre si, incremento notablemente la complejidad de los sistemas informáticos. La conclusión de la tercera era se caracterizo por la llegada y amplio uso de los Microprocesadores, esto ha producido un extenso grupo de productos inteligentes, desde autos, hornos de microondas, robots industriales, equipos médicos; de igual forma, la computadora personal NO es accesible al publico en general aún, esto sucederá en breve.
La cuarta era de la evolución de sistemas, trae potentes maquinas personales controladas por sistemas operativos sofisticados, en redes globales y locales, acompañadas de aplicaciones de software avanzadas. Las arquitecturas informáticas están cambiando de entornos centralizados de grandes computadoras a entornos descentralizados de tipo “cliente-servidor”, de igual forma se distingue el uso del internet. De esta forma, los sistemas expertos y el sW de inteligencia artificial han salido del laboratorio para entrar en aplicacions prácticas de una gran variedad de problemas del mundo real.
¿Qué es Ingenieria de Software?
El proceso de software es un marco de trabajo de las tareas que se requieren para construir software de alta calidad. Un proceso de software define el enfoque que se toma cuando el software es tratado por la ingenieria.
La ingenieria de software es el establecimiento y uso de principios robustos de la ingenieria a fin de obtener económicamente software que sea fiable y que funcione eficientemente sobre maquinas reales.
La ingenieria es el analisis, diseño, construccion, verificación y gestion de entidades tecnicas (o sociales). Con dependencia de la entidad a la que se va a aplicar ingenieria, algunos cuestionamientos son:
Cual es el problema a resolver?
Que caracteristicas tiene la entidad que se utiliza para resolver el problema?
Como se realizara la entidad y la solucion?
Como se construira la entidad?
Como se apoyara la entidad cuando usuarios soliciten correcciones, adaptaciones y mejoras de la entidad?
REQUERIMIENTOS DEL SISTEMA
1. Introducción
En la actualidad para muchas organizaciones, los sistemas de información basados en computadoras son el corazón de las actividades cotidianas y objeto de gran consideración en la toma de decisiones, las empresas consideran con mucho cuidados las capacidades de sus sistemas de información cuando deciden ingresar o no en nuevos mercados o cuando planean la respuesta que darán a la competencia.
2. Requerimientos del sistema
Los Sistemas de Información por computadora normalmente están integrados por muchos componentes. En la mayor parte de los casos, es difícil para los analistas entender todos estos componentes aún mismo tiempo; por lo tanto los investigadores tienen que comenzar con preguntas de tipo general con relación al propósito del sistema sus entradas y salidas de los procesos incluidos.
En los grandes proyectos de sistema varios analistas llevan a cabo una investigación en forma seccionada que la distribuyen entre ellos mismos, de manera que cada uno pueda trabajar en forma independiente.
Análisis de requisitos del software
[PRESSMAN, 2002]
La ingeniería de requisitos del software es un proceso de descubrimiento, refinamiento, modelado y especificación. Se refinan en detalle los requisitos del sistema y el papel asignado al software.
-<-<-<-<-<-->->->->->->-
¿Caracteristicas del Software?
Aplicaciones del Software.
El software puede aplicarse en cualquier situacion en la que se haya definido previamente un conjunto especifico de pasos procedimentales, exacto: un algoritmo! (Aunque tambien existen las excepciones, como el sW de Sistemas Expertos y el de Redes Neuronales.).
Algunas veces es dificil establecer categorías genéricas para las aplicaciones del SW, por lo que la siguiente solo es una de tantas clasificaciones que definen la amplitud de las aplicaciones potenciales.
Software de sistemas.
El software de sistemas es un conjunto de programas que han sido escritos para servir a otros programas. Algunos programas de sistemas procesan estructuras de información complejas pero determinadas. Otras aplicaciones de sistemas (por ejemplo: algunos componentes del sistema operativo, programas que manejan periféricos, procesadores de telecomunicación) procesan datos que en gran medida no están definidos. En cualquier caso, el área del software de sistemas se caracteriza por una fuerte interacción con el hardware de la computadora; una gran uso a nivel multiusuario, una operación concurrente que requiere una planificación, compartir recursos, gestión procesos, estructuras de datos complejas y múltiples interfaces externas.
Software de tiempo real.
El software que mide-analiza-controla sucesos del mundo real conforme ocurren, se denomina tiempo real. Entre los elementos de esta aplicación, se incluyen: (1) componentes de adquisición de datos que recolectan y dan formato a la información recibida del entorno externo, (2) un componente de análisis que transforma la información según lo solicita la aplicación, (3) un componente de control-salida, para que responda al entorno externo y (4) un componente de monitoreo que coordina todos los demás componentes; de forma que pueda mantenerse la respuesta en el instante que sucede, por lo general dentro del rango de 1 milisegundo a 1 minuto. El concepto de tiempo real es diferente al concepto “Interactivo” o “compartido”. Un sistema de este tipo da un tiempo de respuesta dentro de las limitantes estrictas de tiempo.
Software de gestión.
El procesamiento de información comercial constituye la mayor de las áreas de aplicación del software. Los sistemas “discretos” (por ejemplo: nominas, cuentas, prestamos, inventarios, etcétera) han evolucionado hacia un software de sistemas de información de gestión (SIG), que accede a una o a mas bases de datos grandes que contienen información comercial. Las aplicaciones en esta área, reestructuran los datos existentes para facilitar las operaciones comerciales y ayudar a la toma de decisiones, además de las tareas convencionales de procesamiento de datos.
Software de Ingenieria y Cientifico.
Este SW está caracterizado por los algoritmos de "manejo de números", las aplicaciones van desde astronomia, la vulcanología, desde el análisis de la presión de automotores, hasta la dinámica orbital de estaciones espaciales, desde la biología molecular hasta la fabricación automática, esta división comienza actualmente a combinarse bastante con algunas características del SW de Tiempo Real e incluso del SW de Sistemas, puesto que se han logrado avances en el Diseño asistido por Computadora, la simulación de sistemas y otras aplicaciones interactivas.
Software empotrado.
Los productos "inteligentes" se han convertido en algo común en casi todos los mercados de consumo e industriales. Este tipo de sW reside únicamente en memoria de solo lectura y se usa para controlar productos y sistemas de los mercados industriales y de consumo. El sW empotrado puede ejecutar funciones muy limitadas pero curiosas (como puede ser el control de alguno equipos del hogar y oficina, botones, alarmas, sensores, etc.), o suministrar una función significativa y con capacidad de Control (como algunas funciones de los autos, indicadores de equipos industriales, sensores, etc.).
Software de computadoras personales.
El mercado del software de computadoras personales se ha desarrollado bastante en la década de los noventas, el procesamiento de textos, hojas de calculo, gráficos por computadoras, multimedia, gestión de bases de datos, entretenimiento, aplicaciones financieras, manejo de bases de datos, de negocios y personales, y redes o acceso a bases de datos externas son algunas de de los cientos de aplicaciones de este tipo.
Software de inteligencia artificial.
Este software hace uso de de algoritmos no numéricos para resolver problemas complejos para los que no son adecuados el calculo o el análisis directo. Actualmente el área mas activa de la Inteligencia Artificial es el uso de sistemas "expertos", o sistemas basados en el conociemiento, tambien están, el reconocimiento de los patrones como imágenes y voz; la prueba de teoremas y los juegos, en los últimos años se ha desarrollado una nueva rama de la IA que se llama Redes Neuronales Artificiales, esto es utilizar la biología del cuerpo para diferentes funciones, que le permitan al software conocer patrones complejos y aprender de anteriores “experiencias” que la pc haya "vivido" .
Componentes del SW.
A medida que se la disciplina del sw evoluciona, se crea un grupo de componentes de diseño estándar, estos componentes reutilizables, han permitido que los desarrolladores puedan concentrarse en elementos verdaderamente innovadores de un diseño, en el mundo del HARDWARE, la reutilización de componentes es una parte natural del proceso de ingeniería, en el mundo del SOFTWARE, es algo que todavía se tiene que lograr en una escala mas amplia.
La reutilización.
Como profesionales del desarrollo del software, debemos reconocer la falacia de los mitos descritos y de algunos mas, lamentablemente, las actitudes y métodos habituales fomentan una pobre gestión, y malas practicas tecnicas, incluso cuando la realidad requiere un mejor método. Reconocer la realidad del software es el primer paso hacia la formación de soluciones practicas para su desarrollo.
Hoy la distribución de los costos en el desarrollo de sistemas informáticos, ha cambiado, es el sw en lugar del hw lo que actualmente cuesta mas, y a las personas relacionadas con la implementación y desarrollo se les han ocurrido estas preguntas..
1.-Porque lleva tanto tiempo terminar los programas?
2.-Porque cuesta tanto hacerlo?
3.-Porque no podemos encontrar tan fácilmente todos los errores en el sw antes
de entregarlo?
4.-Porque es difícil evaluar el progreso del sw mientras se desarrolla?
Para obtener estas respuestas, las personas han debido adoptar la ingeniería de sw como practica común para el desarrollo de sistemas.
En la industria del sw ha existido un lento y extenso cambio evolutivo, y por lo tanto no ha habido cambios drásticos y decisivos, la problemática del desarrollo del sw nos ha acompañado por todo este tiempo, y son el conjunto de problemas que aparecen cuando queremos desarrollar sw, cuando no funciona adecuadamente lo que implementamos, cuando no tenemos una guía correcta para su desarrollo, cuando no tenemos la capacidad de dar mantenimiento a las aplicaciones que se han desarrollado, cuando se requiere actualizar los conocimientos y desarrollar las cantidades de sw que nos requieren.Método.- Diccionario:
Procedimiento que se sigue en las ciencias para hallar la verdad y enseñarla. Es de 3 maneras, analitico y sintetico. Modo estructurado y ordenado de obtener un resultado, descubrir la verdad y sistematizar conocimientos.
Los métodos en la ing de sw, indican como construir técnicamente el sw
Metodología.- Diccionario:
Se refiere a los métodos de investigación en una ciencia. Manera sistematica de hacer algo. Conjunto de métodos que se siguen en una investigación cientifica o en una exposición doctrinal.
Tecnica.- Diccionario:
Conjunto de métodos y detalles sobre los mismos que se siguen en la realización de un procedimiento, como los empleados en la realización de una prueba de laboratorio. Formas efectivas para lograr la comprensión de lo que se expone.
Modelo.- Diccionario:
Es la conceptualizacion de un evento, un proyecto o una hipótesis, el estado de una cuestion, que se representa por medio de esquemas con símbolos descriptivos de características y relaciones mas importantes con un fin. Es una descripción simplificada de la realidad, se usa para proposito de planeacion y control.
Para resolver problemas reales de una industria, el desarrollador debe incorporar una estrategia de desarrollo que acompañe al proceso, métodos, capas de herramientas. A esta estrategia se le llama modelo de proceso, o paradigma de ingeniería de sw, se selecciona un modelo de proceso para la ingeniería del sw según la naturaleza del proyecto y de la aplicación.
Paradigma. Diccionario:
Esta constituido por los supuestos teoricos generales, las leyes y las tecnicas para su aplicación que adoptan los miembros de una determinada comunidad cientifica. Aspecto o situación que se toma como patron, ejemplo o modelo en forma esquematica. Ejemplo que sirve de norma.