sábado, 13 de septiembre de 2014

Datos


Alexis Cajina San Juan 
Numero de control: 12011127
Ingeniería en Sistemas Computacionales 
Fundamentos de Ingeniería de Software 

Unidad 1

Integrantes:
Felipe Castro Medina
Claudia Thamara Mendez González
Rene Balaram Castro Vivar
Alexis Cajina San Juan
Julián Antonio Breniz Castalleda

Explicación:
Un numero aleatorio es el resultado de una variable al azar especificada por un método de distribución. Los valores a generar se encuentran entre el intervalo del 0 y 1. Los números aleatorios son producidos con base en algún fenómeno analógico. Las computadoras o sistemas que se dedican a generar números al azar son digitales, esto produce que los números que generen sean deducibles de algún método. A estos números se les conoce como “pseudoaleatorios”.
Nuestro proyecto a documentar es un software que se dedica a generar números pseudoaleatorios por distintos métodos y comprueba la eficacia del numero semilla. El numero semilla es el que se introduce antes de generar los números, éste es introducido por el usuario y puede ser eficaz o no serlo.
Hemos elegido este programa porque nos parece interesante el proceso que se lleva acabo para obtener los números. Este software se puede mejorar e incursionar en nuevos métodos, para que después se pueda ofrecer a algún cliente. El cliente ideal para obtener nuestro software es un cliente que utilice números aleatorios para la generación de códigos y claves de seguridad.
La documentación se empeñara en describir el software, así como también presentar un manual para que el usuario pueda ocupar lo, y de esta manera, el software sea amigable.



Descargar Archivos

Clasificación de las herramientas CASE ----documento de World ----


Power point: Ingeniería de sistemas 


Power point: Ingeniería en sistemas puntos 1.4 y 1.5 


Esquema de ingeniería de software 


Esquema de Ingeniería en sistemas


Esquema de las características del software



En este diagrama se puede apreciar las características del software que fueron realizados en la materia de ingeniería de software, una nota peculiar es que fue de nuestros primeros trabajos.

Esquema de las herramientas CASE



En este es que podemos apreciar las características de la herramienta CASE, dicho trabajo se realizo en la materia de ingeniería de software.

Cuestionario

Contesta correctamente

1.-Define que es un sistema
R=Es un conjunto organizado de cosas o partes interactuantes que se relacionan formando un todo unitario y complejo.

2.- Define que es una entro pía
R=es el desgaste del sistema que se origina por el transcurso del tiempo o por el funcionamiento del problema.

3.- Define el ciclo de la vida de un proyecto de software
R=es el desarrollo del software desde su fase inicial hasta su fase final.

4.-Define que es programación en sistema
Implementación de un lenguaje de programación para crear funciones definidas durante el diseño.

5.- Define que es el software
R= Es el equipamiento o soporte lógico de una computadora. Hacen posible la realización de tareas específicas.

6.- Define que es hardware
R= Son todos los componentes físicos de una computadora.

7.-Escribe las pruebas que aplican a un sistema de información
R= Prueba de unidad;  Prueba de integración;  Prueba beta

8.-Define que es implementación.
R=Es la última fase del desarrollo de sistemas. Proceso de instalar equipos o software nuevo, como resultado de un análisis y diseño previo.


Investigación 1

¿Qué es ingeniería de software?

Ingeniería de software es la aplicación de un enfoque sistemático, disciplinado y cuantifica ble al desarrollo, operación y mantenimiento de software, y el estudio de estos enfoques, es decir, la aplicación de la ingeniería al software. Es la aplicación de la ingeniería al software, ya que integra matemáticas, ciencias de la computación y prácticas cuyos orígenes se encuentran en la ingeniería.

Se pueden citar otras definiciones enunciadas por prestigiosos autores:
Ingeniería de software es el estudio de los principios y metodologías para el desarrollo y mantenimiento de sistemas software (Zelkovitz, 1978).

Ingeniería de software es la aplicación práctica del conocimiento científico al diseño y construcción de programas de computadora y a la documentación asociada requerida para desarrollar, operar y mantenerlos. Se conoce también como desarrollo de software o producción de software (Bohem, 1976).

La ingeniería de software trata del establecimiento de los principios y métodos de la ingeniería a fin de obtener software de modo rentable, que sea fiable y trabaje en máquinas reales (Bauer, 1972).

En 2004, la U. S. Bureau of Labor Statistics (Oficina de Estadísticas del Trabajo de Estados Unidos) contó 760 840 ingenieros de software de computadora. El término "ingeniero de software", sin embargo, se utiliza de manera genérica en el ambiente empresarial, y no todos los que se desempeñan en el puesto de ingeniero de software poseen realmente títulos de ingeniería de universidades reconocidas.

Algunos autores consideran que "desarrollo de software" es un término más apropiado que "ingeniería de software" para el proceso de crear software. Personas como Pete McBreen (autor de "Software Craftmanship") cree que el término IS implica niveles de rigor y prueba de procesos que no son apropiados para todo tipo de desarrollo de software.
Indistintamente se utilizan los términos "ingeniería de software" o "ingeniería del software"; aunque menos común también se suele referencia como "ingeniería en software". En Hispanoamérica los términos más comúnmente usados son los dos primeros.
La creación del software es un proceso intrínsecamente creativo y la ingeniería del software trata de sistematizar este proceso con el fin de acotar el riesgo del fracaso en la consecución del objetivo, por medio de diversas técnicas que se han demostrado adecuadas en base a la experiencia previa.

La IS se puede considerar como la ingeniería aplicada al software, esto es, por medios sistematizados y con herramientas preestablecidas, la aplicación de ellos de la manera más eficiente para la obtención de resultados óptimos; objetivos que siempre busca la ingeniería. No es sólo de la resolución de problemas, sino más bien teniendo en cuenta las diferentes soluciones, elegir la más apropiada.

El papel evolutivo del software

Hoy en día, el software tiene un papel dual. Es producto y canal de distribución de este. Como producto, ofrece la potencia de cómputo presentada como hardware de una computadora o, de manera más global por una red de computadoras accesible mediante hardware local y de acceso físico. Sin importar el lugar en que resida el software, ya sea en un celular o dentro de una computadora central, éste es un transformador de información; 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 relació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 forma que los datos sean más útiles en un contexto local; maneja información alrededor del mundo (Internet) y proporciona los medios para adquirir información en todas sus formas.
El papel del software de computadora ha experimentado un cambio significativo en un periodo un poco mayor a 50 años. La mejorías sustanciales 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 entrada han propiciado el surgimiento de sistemas más elaborados y complejos basados en computadoras.

En la actualidad una enorme industria del software se ha convertido en un factor dominante en la economía del mundo industrializado. El programador solitario de la era inicial ha sido sustituido por equipos de especialistas en software, en los que cada uno se enfoca en una parte de la tecnología requerida para desarrollar una ampliación compleja. Hasta ahora, las preguntas formuladas al programador solitario son las mismas que se hacen cuando se construyen los sistemas basados en computadoras modernas.

PRIMERA ERA (1950 / 1965)

1.    Se trabajaba con la idea de “Codificar y Corregir”.
2.    No existía un planteamiento previo.
3.    No existía documentación de ningún tipo.
4.    Existencia de pocos métodos formales y pocos creyentes en ellos.
5.    Desarrollado  a base de prueba y error.

SEGUNDO ERA (1965 – 1972)

1.    Se busca simplificar código.
2.    Aparición de Multiprogramación y Sistemas Multiusuarios.
3.Sistemas de Tiempo Real apoyan la toma de decisiones. Aparición de Software como producto. (Casas de Software).
4.    Se buscan procedimientos para el desarrollo del Software.

TERCERA ERA (1972 – 1985)

1.    Nuevo Concepto: Sistemas Distribuidos.
2.    Complejidad en los Sistemas de Información.
3.    Aparecen: Redes de área local y global, y Comunicadores Digitales.
4.    Uso de Microprocesadores.

 CUARTA  ERA (1985 - 1995)

1.    Impacto Colectivo de Software.
2.    Aparecen: Las  Redes de Información, Tecnologías Orientadas a Objetos.
3.    Aparecen: Redes Neuronales, Sistemas Expertos y SW de Inteligencia Artificial.
4.    La información como valor preponderante dentro de las Organizaciones.

QUINTA ERA (2000 hasta hoy en día)

1.    Utiliza algunos requisitos de las eras anteriores solo que aumenta la omnipresencia de la web, la reutilización de información y componentes de software. Codificar: Transformar mediante las reglas de un código la formulación de un mensaje.
2.    Hardware: Componente físico de la computadora. Por ejemplo: el monitor, la impresora o el disco rígido. El hardware por sí mismo no hace que una máquina funcione.

3. Multiprogramación: Se denomina programación a la técnica que permite que dos o más procesos ocupen la misma unidad de memoria principal y que sean ejecutados al "mismo tiempo“.

INVESTIGACIÓN DE LA UNIDAD 1



TECNOLÓGICO DE ORIZABA, VERACRUZ

10-11 hora

PROGRAMA EDUCATIVO

INGENIERÍA EN SISTEMAS COMPUTACIONALES

EXPERIENCIA EDUCATIVA

FUNDAMENTOS DE INGENIERÍA DE SOFTWARE

DOCENTE

HERNANDEZ FLORES RITA

TRABAJO

INVESTIGACIÓN DE LA UNIDAD 1

ESTUDIANTE

CAJINA SAN JUAN ALEXIS

CLAVE

4G4

08/09/2014


1.4 CLASIFICACIÓN DE LA TECNOLOGÍA EN EL DESARROLLO DEL SOFTWARE

Hoy en día la tecnología orientada a objetos ya no se aplica solamente a los lenguajes de programación, además se viene aplicando en el análisis y diseño con mucho éxito, al igual que en las bases de datos. Es que para hacer una buena programación orientada a objetos hay que desarrollar todo el sistema aplicando esta tecnología, de ahí la importancia del análisis y el diseño orientado a objetos.


La programación orientada a objetos es una de las formas más populares de programar y viene teniendo gran acogida en el desarrollo de proyectos de software desde los últimos años.


Esta acogida se debe a sus grandes capacidades y ventajas frente a las antiguas formas de programar.

Una Perspectiva Histórica Tradicionalmente, la programación fue hecha en una manera secuencial o lineal, es decir una serie de pasos consecutivos con estructuras consecutivas y bifurcaciones.

Los lenguajes basados en esta forma de programación ofrecían ventajas al principio, pero el problema ocurre cuando los sistemas se vuelven complejos. Estos programas escritos al estilo “espagueti” no ofrecen flexibilidad y el mantener una gran cantidad de líneas de código en sólo bloque se vuelve una tarea complicada.


Frente a esta dificultad aparecieron los lenguajes basados en la programación estructurada. La idea principal de esta forma de programación es separar las partes complejas del programa en módulos o segmentos que sean ejecutados conforme se requieran. De esta manera tenemos un diseño modular, compuesto por módulos independientes que puedan comunicarse entre sí. Poco a poco este estilo de programación fue reemplazando al estilo “espaguetti” impuesto por la programación lineal.Entonces, vemos que la evolución que se fue dando en la programación se orientaba siempre a ir descomponiendo más el programa. Este tipo de descomposición conduce directamente a la programación orientada a objetos.


Pues la creciente tendencia de crear programas cada vez más grandes y complejos llevó a los desarrolladores a crear una nueva forma de programar que les permita crear sistemas de niveles empresariales y con reglas de negocios muy complejas. Para estas necesidades ya no bastaba la programación estructurada ni mucho menos la programación lineal. Es así como aparece la programación orientada a objetos (POO). La POO viene de la evolución de la programación estructurada; básicamente la POO simplifica la programación con la nueva filosofía y nuevos conceptos que tiene. La POO se basa en la dividir el programa en pequeñas unidades lógicas de código. A estas pequeñas unidades lógicas de código se les llama objetos. Los objetos son unidades independientes que se comunican entre ellos mediante mensajes.


CONCEPTO DE PROGRAMACIÓN ESTRUCTURADA


EL creciente empleo de los computadores ha conducido a buscar un abaratamiento del desarrollo de software, paralelo a la reducción del costo del hardware obtenido gracias a los avances tecnológicos. Los altos costos del mantenimiento de las aplicaciones en producción normal también han urgido la necesidad de mejorar la productividad del personal de programación.


En la década del sesenta salieron a la luz pública los principios de lo que más tarde se llamó Programación Estructurada, posteriormente se liberó el conjunto de las llamadas "Técnicas para mejoramiento de la productividad en programación" (en ingles Improved Programming Technologies, abreviado IPTs), siendo la Programación Estructurada una de ellas.


Los programas computarizados pueden ser escritos con un alto grado de estructuración, lo cual les permite ser más fácilmente comprensibles en actividades tales como pruebas, mantenimiento y modificación de los mismos. Mediante la programación Estructurada todas las bifurcaciones de control de un programa se encuentran estandarizadas, de forma tal que es posible leer la codificación del mismo desde su inicio hasta su terminación en forma continua, sin tener que saltar de un lugar a otro del programa siguiendo el rastro de la lógica establecida por el programador, como es la situación habitual con codificaciones desarrolladas bajo otras técnicas.


EN programación Estructurada los programadores deben profundizar más que lo usual al procederá realizar el diseño original del programa, pero el resultado final es más fácil de leer y comprender, el objetivo de u programador profesional al escribir programas de una manera estructurada, es realizarlos utilizando solamente un numero de bifurcaciones de control estandarizados.


EL resultado de aplicar la sistemática y disciplinada manera de elaboración de programas establecida por la Programación Estructurada es una programación de alta precisión como nunca antes había sido lograda. Las pruebas de los programas, desarrollados utilizando este método, se acoplan más rápidamente y el resultado final con programas que pueden ser leídos, mantenidos y modificados por otros programadores con mucho mayor facilidad.


1.5 DEFINICIÓN E HISTORIA DE LAS HERRAMIENTAS CASE


CASE:


Se puede definir a las Herramientas CASE como un conjunto de programas y ayudas que dan asistencia a los analistas, ingenieros de software y desarrolladores, durante todos los pasos del Ciclo de Vida de desarrollo de un Software. Como es sabido, los estados en el Ciclo de Vida de desarrollo de un Software son: Investigación Preliminar, Análisis, Diseño, Implementación e Instalación.


CASE se define también como:


Conjunto de métodos, utilidades y técnicas que facilitan la automatización del ciclo de vida del desarrollo de sistemas de información, completamente o en alguna de sus fases.


La sigla genérica para una serie de programas y una filosofía de desarrollo de software que ayuda a automatizar el ciclo de vida de desarrollo de los sistemas.


Una innovación en la organización, un concepto avanzado en la evolución de tecnología con un potencial efecto profundo en la organización. Se puede ver al CASE como la unión de las herramientas automáticas de software y las metodologías de desarrollo de software formales.


Historia de las Herramientas CASE


Las Herramientas CASE tienen su inicio con el simple procesador de palabras que fue usado para crear y manipular documentación. Los setentas vieron la introducción de técnicas gráficas y diagramas de flujo de estructuras de datos. Sobre este punto, el diseño y especificaciones en forma pictórica han sido extremadamente complejos y consumían mucho tiempo para realizar cambios.


La introducción de las herramientas CASE para ayudar en este proceso ha permitido que los diagramas puedan ser fácilmente creados y modificados, mejorando la calidad de los diseños de software. Los diccionarios de datos, un documento muy usado que mantiene los detalles de cada


tipo de dato y los procesos dentro de un sistema, son el resultado directo de la llegada del diseño de flujo de datos y análisis estructural, hecho posible a través de las mejoras en las Herramientas CASE.


Pronto se reemplazaron los paquetes gráficos por paquetes especializados que habilitan la edición, actualización e impresión en múltiples versiones de diseño. Eventualmente, las herramientas gráficas integradas con diccionarios de base de datos para producir poderosos diseños y desarrollar herramientas, podrían sostener ciclos completos de diseño de documentos.


Como un paso final, la verificación de errores y generadores de casos de pruebas fueron incluidos para validar el diseño del software. Todos estos procesos pueden saberse integrados en una simple herramienta CASE que soporta todo el ciclo de desarrollo.


La primera herramienta comercial se remonta a 1982, aunque algunos especialistas indican que algunos ejemplos de herramientas para diagramación ya existían.


No fue sino hasta 1985 en que las herramientas CASE se volvieron realmente importantes en el proceso de desarrollo de software. Los proveedores prometieron a la Industria que muchas actividades serían beneficiadas por la ayuda de las CASE.


Estos beneficios consistían, por ejemplo, en el aumento en la productividad. El objetivo en 1985 para muchos vendedores era producir software más rápidamente.


Las herramientas del CASE serían una familia de métodos favorablemente estructurados para planeamiento, análisis y diseño. Esto llevaría a la generación automática de código para desarrollo de software vía una especificación formalmente diseñada. Esto traería como beneficio:


Una mejora en la calidad, fiabilidad, utilidad y rendimiento.


El entorno de producción de documentación para software mejora la comunicación, mantenimiento y actualización.


Hace el trabajo de diseño de software más fácil y agradable.


La promesa futura de reemplazar realmente a los ingenieros de software especializados.


Reducción del costo de producción de software.


Con estos objetivos en mente, la industria destinó millones en producción de Herramientas CASE.


Así como esta enorme suma de dinero fue gastada en Herramientas CASE, hubo también trabajo de investigación a nivel mundial en diferentes instituciones como Universidades, Instituciones Gubernamentales y de Defensa. La industria de Herramientas CASE está creciendo y está tomando cada vez mayor importancia.


1.6 CLASIFICACIÓN DE LAS HERRAMIENTAS CASE


Clasificación de las Herramientas Case


No existe una única clasificación de herramientas CASE y, en ocasiones, es difícil incluirlas en una clase determinada. Podrían clasificarse atendiendo a:


• Las plataformas que soportan.


• Las fases del ciclo de vida del desarrollo de sistemas que cubren.


• La arquitectura de las aplicaciones que producen.


• Su funcionalidad.

Las herramientas CASE, en función de las fases del ciclo de vida abarcadas, se pueden agrupar de la forma siguiente:


1. Herramientas integradas, I-CASE (Integrated CASE, CASE integrado): abarcan todas las fases del ciclo de vida del desarrollo de sistemas. Son llamadas también CASE workbench.2. Herramientas de alto nivel, U-CASE (Upper CASE - CASE superior) o front-end, orientadas a la automatización y soporte de las actividades desarrolladas durante las primeras fases del desarrollo: análisis y diseño.3. Herramientas de bajo nivel, L-CASE (Lower CASE - CASE inferior) o back-end, dirigidas a las últimas fases del desarrollo: construcción e implantación.4. Juegos de herramientas o Tools-Case, son el tipo más simple de herramientas CASE. Automatizan una fase dentro del ciclo de vida. Dentro de este grupo se encontrarían las herramientas de re ingeniería, orientadas a la fase de mantenimiento.

CONCLUSIÓN:


A lo largo de la historia de la programación se han desarrollado métodos para la elaboración de software y es nuestro caso en particular estudiaremos el CASE que se dio a la tarea de hacer una metodología para la elaboración de sistemas de cómputo.


Fuentes:


http://www.inei.gob.pe/biblioineipub/bancopub/Inf/Lib5103/Libro.pdf


http://java.ciberaula.com/articulo/tecnologia_orientada_objetos/


http://html.rincondelvago.com/programacion-estructurada.html


Reporte del día del programador:

El día del programador tuvo varias facetas donde se realizaron diversos concursos referentes al área de programación que, con lo que pude escuchar y leer en redes sociales  contó con 3 categorías en los concursos.

 Y después se llevaron a cabo a partir de las 4 de la tarde, una conferencia sobre el desarrollo de software pero del lado administrativo, donde un ingeniero nos mencionó muchos factores que hay que considerar para la elaboración de un software en específico. Además de ello que es muy importante además de la programación hacer reacción con las personas.
 Creo que fue lo que más me intereso de la plática donde me explico que así pudieras ser el mejor programador pero si no te juntas con las personas correctas en el área correcta puede que no tenga un buen empleo porque no me llevo con otras personas y así me limito mucho al momento de hacer proyecto.

Por otro punto lo dio mucha importancia a la parte administrativa donde tienes que ser responsable con el cliente y con tu empresa además si tienes empleados conocer sus debilidades y virtudes, y siempre pedir un anticipo al momento de realizar un software o algún trabajo ya que hay más seguridad por ambas partes.

Igualmente  nos explicó estadística mente las cotizaciones para alguien que quiere trabajar en el área de sistemas, por lo que me pude dar cuenta Veracruz es uno de los estados peor pagados y que a nivel continente americano estamos en 3 lugar contando a estados unidos, pero lo que me sorprendió es que no vi a Canadá creo que no lo tomaron en cuenta para las estadísticas.

Otros de los factores importantes y que se habló de ello toda la conferencia es que tenemos que aprender inglés a como dé lugar porque si queremos tener la información más actualizada en nuestra área o todo el material véase manuales técnicos y libros esta en dicho idioma.
Lo que me sorprendió es que el ingeniero era egresado de la UNIVO, fue algo relevante para mí,
Además explico que dependiendo las tecnologías que se aplicaran en  el proyecto se cobra cierto porcentaje para terminar en esta sección, en mi opinión nos quiso dar a entender el ingeniero que hay que estudiar todo lo que podamos y que nos vallamos a otro estado porque aquí no hay mucho futuro en nuestra área.

En la otra sección que fue un panel de egresados, fue una sección de preguntas y respuestas organizado todo por un ingeniero de nuestra institución, donde me pude dar cuenta que nuestra carrera tiene el potencial para llevarnos a otros países, para convivir con personas de diferente raza y cultura mencionaban mucho que tenían que trabajar con personas americanas, y de otros países tales como india, china, Brasil etc. Además de ello me dio una esperanza por qué y considero que fue el más relevante de los panelistas no era de muy buenas calificaciones pero tenía una perseverase formidable que lo llevo a estar en empresas relevantes dentro de nuestro país y del extranjero.

 Por otro lado nos mencionaron que tenemos que aprender inglés y fueron muy francos con nosotros nos dijeron que si no estamos aprendiendo o sabes ese idioma que hacemos en ingeniería en sistemas.
Este pequeño reporte fue lo que pude percibir agrandes rasgo de las conferencias y panel de egresados donde le doy gracias al tecnológico de realizar estos eventos ya que te motivan para ser mejor estudiante y poder ser igual o mejores que los ingenieros que invitaron el día 11 de septiembre.