sábado, 17 de mayo de 2008

EL PORQUÉ DE LA INGENIERÍA DE SOFTWARE

El software satura nuestro mundo y algunas veces damos por sentado su rol en hacer que nuestras vidas sean más confortables, eficientes y efectivas.

¿QUE ES LA INGENIERIA DE SOFTWARE?
Como ingenieros de software usamos nuestro conocimiento de las computadoras y de la computación para ayudar a resolver problemas.

La Ingeniería de software designa el conjunto de técnicas destinadas a la producción de un programa de computadora, más allá de la sola actividad de programación. Forman parte de esta disciplina las ciencias computacionales y el manejo de proyectos, entre otros campos, propios de la rama más genérica denominada Ingeniería informática.

El software es el conjunto de instrucciones que permite al hardware de la computadora desempeñar trabajo útil. En las últimas décadas del siglo XX, las reducciones de costo en hardware llevaron a que el software fuera un componente que participa en muchos de los dispositivos usados por las sociedades industrializadas. Asimismo, se considera parte del software a la documentación generada durante el desarrollo del proyecto.
En el 2004, en los Estados Unidos, la Oficina de Estadísticas del Trabajo (U. S. Bureau of Labor Statistics) contó 760.840 ingenieros de software de computadora con trabajo.[1] El término "ingeniero de software", sin embargo, se utiliza en forma genérica en el ambiente empresarial, y no todos los ingenieros de software poseen realmente títulos de Ingeniería de universidades reconocidas.

Algunas personas piensan 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.

LA RESOLUCION DE PROBLEMAS.

la mayor parte de problemas son de gran magnitud y a veces difícil de encara, en especial si representan algo nuevo que nunca antes fue resultado. Entonces, se debe comenzar por investigar al problema efectuando su análisis, esto es, desglosando el problema en piezas que podemos comprender e intentar abordar. De esta forma podemos descubrir un problema grande como una seriede problema grande como una serie de problemas pequeños y sus interrelaciones.

Para la resolución de un problema se aplican una variedad de métodos, herramientas procedimientos paradigmas y procedimientos. Un método o técnica es un procedimiento formal para producir algún resultado.

Una herramienta es un instrumento o sistema automatizado para realizar algo de la mejor manera posible. Esta mejor forma puede significar que la herramienta nos hace más exactos, eficientes o productivos, o que refuerza la calidad del producto resultante.

Un procedimiento en como una receta, una combinación de herramientas y técnicas que juntas dan como resultado un producto particular.

Los planes de prueba describen los procedimientos de pruebas: indican que herramientas deberán utilizarse, sobre que conjuntos de datos y bajo qué circunstancias, De este modo, se puede determinar si el software satisface estos requerimientos.

Un paradigma es como un estilo de cocina, representan un estilo particular o filosofía para la construcción del software.

Los ingenieros de software usan herramientas, técnicas, procedimientos y paradigmas para mejorar la calidad de productos de software. Su finalidad es usar unos enfoques eficientes y productos para generar soluciones efectivas a los problemas.

DONDE ENCAJA EL INGENIERO DE SOFTWARE

Para comprender como encaja un ingeniero de software en el mundo de la computación. Observaremos un ejemplo sobre otra disciplina. Consideremos el estudio de la química y sus implicaciones. El químico investiga los químicos, su estructura, sus interacciones y la teoría relacionada con su comportamiento. Los ingenieros químicos aplican los resultados de los estudios de los químicos a una variedad del problema s. la química. Como la ven los químicos es el objeto del estudio.

Los ingenieros de software toman la segunda vista, en lugar de investigar el diseño del hardware o de probar teorías acerca de cómo trabajan los algoritmos, un ingenieros de software trabajan con las funciones de una computadora como parte de una solución general, en lugar de hacerlo con las estructuras o la teoría de la computadora misma.

Es la tarea de describir detalladamente el software a ser escrito, en una forma matemáticamente rigurosa. En la realidad, la mayoría de las buenas especificaciones han sido escritas para entender y afinar aplicaciones que ya estaban desarrolladas. Las especificaciones son más importantes para las interfaces externas, que deben permanecer estables.


¿Qué es el software de alta calidad?

Antes de empezar hablar acerca de que podría consistir la calidad de los productos software, se debería definir qué es lo que se entiende por calidad, a que es aplicable y de qué forma puede ser relacionada con productos software.
Según el diccionario, calidad se puede definir como "una característica o atributo de una cosa". De esta forma se podría decir que la calidad de los productos puede medirse como una comparación de sus características y atributos.

Así, este concepto puede aplicarse a cualquier producto. Una de las formas de realizar una medida de calidad es observar las diferencias ocurridas en la producción dos productos iguales. La producción de artículos de cualquier especie no asegura que dos de ellos sean totalmente iguales. Quizás sea preciso realizar observaciones acuciosas para lograr distinguir las variaciones entre uno y otro, ya que estas pueden no ser obvias. Es más, quizás sea necesario disponer de instrumentos adecuados y de precisión para poder observar dichos cambios de la producción. Uno de los principales objetivos de dar calidad a los productos es minimizar las diferencias entre unidades producidas. Estas diferencias tienen diversos orígenes y, por tanto, distintas y amplias formas de corregirlos, dependiendo de la naturaleza del producto. Lo primordial es tener en cuenta el concepto de brindar calidad a lo que se está realizando.

Perspectivas sobre la calidad.

* La visión trascendental
* La visión del usuario
* La visión de manufactura
* La visión del producto
* La visión basada en valor

La calidad del producto

El hardware dejo de ser un impedimento para el desarrollo de la informática; redujo los costos y mejoro la calidad y eficiencia en el software producido.



La crisis se caracterizo por los siguientes problemas:

* Imprecisión en la planificación del proyecto y estimación de los costos.
* Baja calidad del software.
* Dificultad de mantenimiento de programas con un diseño poco estructurado, etc.



Por otra parte se exige que el software sea eficaz y barato tanto en el desarrollo como en la compra.

También se requiere una serie de características como fiabilidad, facilidad de mantenimiento y de uso, eficiencia, etc.

2. Objetivos de la ingeniería de software

En la construcción y desarrollo de proyectos se aplican métodos y técnicas para resolver los problemas, la informática aporta herramientas y procedimientos sobre los que se apoya la ingeniería de software.

* Mejorar la calidad de los productos de software.

* Aumentar la productividad y trabajo de los ingenieros del software.

* Facilitar el control del proceso de desarrollo de software.

* Suministrar a los desarrolladores las bases para construir software de alta calidad en una forma eficiente.

* Definir una disciplina que garantice la producción y el mantenimiento de los productos software desarrollados en el plazo fijado y dentro del costo estimado.

Que es el software de alta calidad

El instituto de la ingeniería del software (CEI) ha desarrollado un modelo completo de un amplio proceso basado en un conjunto de capacidades de software y de sistemas que deben de estar presentes conforme las organizaciones alcanzan diferentes grados de capacidad y madurez.

Según el diccionario, calidad se puede definir como "una característica o atributo de una cosa". De esta forma se podría decir que la calidad de los productos puede medirse como una comparación de sus características y atributos. Así, este concepto puede aplicarse a cualquier producto. Una de las formas de realizar una medida de calidad es observar las diferencias ocurridas en la producción dos productos iguales. La producción de artículos de cualquier especie no asegura que dos de ellos sean totalmente iguales. Quizás sea preciso realizar observaciones acuciosas para lograr distinguir las variaciones entre uno y otro, ya que estas pueden no ser obvias. Es más, quizás sea necesario disponer de instrumentos adecuados y de precisión para poder observar dichos cambios de la producción. Uno de los principales objetivos de dar calidad a los productos es minimizar las diferencias entre unidades producidas. Estas diferencias tienen diversos orígenes y, por tanto, distintas y amplias formas de corregirlos, dependiendo de la naturaleza del producto. Lo primordial es tener en cuenta el concepto de brindar calidad a lo que se está realizando.

Calidad en los productos Software

Hasta el momento puede dilucidarse algunos de los atributos que hacen comparable un producto de otro. Quizás podemos considerar formas, colores, tamaños, manejabilidad, entre otros muchos. Estas características pueden ser físicamente mensurables y, por ello, fácilmente comparables. Observando desde esa perspectiva, De qué manera puede ser aplicada la calidad a los productos software? Cómo controlar la variación entre un producto de este tipo? Así como existen medidas para atributos físicos, para el software también existen medidas que pueden hacerlo comparables, tales como puntos de función, líneas de código y otras. Estas medidas aportan a la medida de variación entre productos software, las cuales podrían ser analizadas con detenimiento en otro trabajo. La principal meta de un equipo desarrollador de software debería ser siempre producir software catalogado como de alta calidad. Pero para ello se deben tener en cuenta algunas ideas previas:

Los Productos software son realizados por personas para personas. Así, las personas desarrolladoras deben tener en cuenta claramente que son otras personas las que utilizarán sus productos, los que pueden estar sujetos a fallos constantes. Aún a pesar de los avances actuales en Inteligencia Artificial, los asistentes software para el desarrollo de software no son demasiado confiables como para que la mano humana no intervenga en este proceso. El desarrollo de productos software es una actividad sujeta a muchos factores que la pueden hacer poco confiable. l Muchas personas piensan en la calidad como un atributo exclusivo de los productos. Que esta empieza a considerarse una vez que las primeras líneas de código son escritas. El concepto de calidad involucra muchos factores previos a esta etapa, debiendo ponerse atención a cada una de estas etapas anteriores. Sujeto a lo anterior, la calidad que pueden alcanzar los productos software, y en general cualquier producto, esta sometida a como se desarrolla cada una de las etapas de la vida del producto, partiendo por la definición de la idea del producto hasta la entrega y mantención del mismo. Así la entrega de calidad a un producto considera actividades tales como:

Administración de la calidad, asegurando minimizar las diferencias entre los recursos presupuestados y los recursos realmente utilizados en las distintas etapas. Dichos recursos incluyen el staffing, el equipamiento y tiempo de desarrollo. Uso de tecnología de Ingeniería de Software eficiente, considerando métodos de desarrollo y herramientas. Aplicación de técnicas formales a lo largo de todo el proceso. Minimización de las variaciones entre los productos, disminuyendo las diferencias y defectos entre versiones.
Testeo acucioso en diferentes etapas del desarrollo.

Control de la documentación, tanto de apoyo al desarrollo como la entregada al usuario final, generado en cada etapa, y verificación de los posibles cambios y modificaciones que pudiera sufrir. Correcta mantención y servicios de post-venta.

viernes, 16 de mayo de 2008

MICROPROCESADORES DE DOBLE NUCLEO


INTRODUCCION

La tecnología aplicada a los dispositivos diseñados para el manejo de la información evoluciona de tal manera que se pretende un máximo rendimiento en la rapidez y velocidad de las comunicaciones con un óptimo uso de los recursos y la reducción de costos.

Los microprocesadores son dispositivos electrónicos de los cuales depende en gran medida el funcionamiento de un computador, pues al tener un computador con un microprocesador de alto desempeño este también lo será.

Los procesadores de doble núcleo se basen en una tecnología que ha permitido incluirle dos núcleos a un microprocesador de tal forma que se mejora su desempeño y da pie para pensar en microprocesadores de no solo dos núcleos, sino de múltiples núcleos lo cual es lo que esta sucediendo en la actualidad ya que los microprocesadores de doble núcleo llevan ya un tiempo considerado en el medio, para ser mas precisos desde el año 2004.

Este ensayo alcanza un concepto básico de lo que son los microprocesadores, su evolución y su posicionamiento dentro de las compañías pioneras de fabricaciones de microprocesadores como lo son AMD e INTEL.

MICROPROCESADORES DE DOBLE NUCLEO

Hay que tener claro como primera medida que los procesadores de doble núcleo no se deben confundir con un sistema multiprocesador. En el primero los recursos son compartidos y los núcleos residen en la misma CPU, mientras que, En el segundo existen dos CPUs diferentes con sus propios recursos.

el procesador de doble núcleo aparece como el futuro de los procesadores, ya que aumenta la velocidad del procesador de núcleo único, que son los que preceden a estos, sin aumentar por ello el consumo energético, y, además es más asequible en cuestión de costos para los usuarios particulares que los sistemas multiprocesador.

En los años inmediatamente anteriores se realizaron grandes esfuerzos para ordenadores en función de lograr procesadores más rápidos con el menor o igual consumo en watts y cantidad de calor disipado, lo que, por cuestiones físicas de los materiales, cada vez se vuelve más complejo; es decir, se pretende achicar los componentes para lograr maquinarias más poderosas en el mismo espacio.

A través de diversas tecnologías se ha presentado el hecho de que se puedan fabricar más procesadores por Waffer de silicio, logrando costos menores de fabricación lo cual nos permite que hoy se han logrado colocar dos núcleos de procesador exactamente en el lugar en donde antes entraba uno solo.

El doble Núcleo permite a una computadora ganar un %250 de rendimiento, es decir más del doble, pero existen, al igual que ocurrio con la tecnología de 64 bits, impedimentos grandes de software. Por ejemplo, si un video juego no está preparado para utilizar ambos procesadores, utilizará solo uno. Un sistema operativo permitirá realizar más procesos simultáneos sin desmedro de un software particular.

¿Que es un procesador de doble núcleo?

Un procesador de doble núcleo es una CPU, Central Processor Unit, con dos núcleos diferentes en una sola base, combina dos o más procesadores independientes en un solo circuito integrado cada uno con su propio caché. Con esto se consigue mejorar el rendimiento del sistema, eliminando los cuellos de botella que se podrí­an llegar a producir en las arquitecturas tradicionales; es decir, es como si la CPU tuviera dos cerebros que pudieran trabajar de manera simultánea, tanto en el mismo trabajo, como en tareas completamente diferentes, sin que el rendimiento de uno se vea afectado por el rendimiento del otro. Con ello se consigue elevar la velocidad de ejecución de las aplicaciones informáticas, sin que por ello la temperatura del equipo informático se eleve demasiado, moderando así­ el consumo energético.

Un dispositivo doble núcleo contiene solamente dos microprocesadores independientes permitiendo que un dispositivo computacional exhiba una cierta forma del paralelismo sin incluir múltiples microprocesadores en paquetes físicos separados a nivel de TLP, Thread-level parallelism, que es Un hilo de ejecución en sistemas operativos que permite a una aplicación realizar varias tareas concurrentemente. Esta forma de TLP se conoce a menudo como multiprocesamiento a nivel de chip o CMP, Chip-level multiprocessing.

La confección de microcircuitos se realiza a partir de un nivel de reducción de 90nm (10^-9) y, al mismo tiempo, la tecnología de proceso SOI (Silicon On Insulator). SOI es la fabricación de semiconductores desarrollada por IBM que utiliza silicio de cristal puro y óxido de silicio para circuitos integrados y microchips. Un microchip de SOI procesa la velocidad 30 % más rápido que los chips semiconductores complementarios de óxido de metal (CMOS), y el consumo de energía es 80 % menor, volviéndolos ideales para los equipos móviles. Los componentes SOI también reducen la taza de error de software, que es la corrupción de datos causada por rayos cósmicos y señales de fondo radioactivas naturales. Sin embargo Algunos efectos de estas limitaciones físicas pueden causar significante disipación de calor y problemas de sincronización de información.

¿De donde salen?

En el año 2004 surgió la tecnología de procesadores de 64 bits de la mano de AMD, empresa que logró tomar así un año de ventaja con respecto a Intel, y ahora ambas empresas vuelven a la carga con la tecnología de los procesadores de doble núcleo.

La verdad es que en los últimos 3 años la variedad de procesadores ha crecido enormemente y se ha presentado que hay un procesador para cada tipo de trabajo específico. Tomando como referencia la variedad de procesadores de equipos de escritorio ya que son los mas comunes al igual que la de los portatiles en la actualidad podemos conocer en el portal de Intel (
http://www.intel.com/espanol/products/desktop/processors/index.htm) los procesadores que Intel tiene disponibles dentro de los que podemos observar en e llink de procesadores para escritorio el “Intel core 2 duo” el cual ya esta siendo resagado por “Intel core 2 quad” y el “Intel core 2 extrem” los cuales son de tecnología multinucleo cada una con cuatro núcleos. Mientras que por parte de Athlon podemos conocer en su portal ( http://www.amd.com/la-es/Processors/ProductInformation/0,,30_118_9484,00.html ) en el link de procesadores de escritorio “AMD Athlon™ 64 x2 de doble nucleo ” el cual es de una alto rendimiento ya que cada núcleo es de 64 bits.

¿Y ahora que sigue?

Con estas las nuevas arquitecturas de múltiples núcleos para procesadores, pierde mucho sentido el tener una referencia de ellos de acuerdo a los MHZ que manejan como comúnmente se venían referenciando. La principal característica de estos pasaría a ser la arquitectura sobre la cual estén diseñados.

Los MHz sí importan y mucho a la hora de establecer el desempeño que ofrece un procesador, pero, los MHz importan dentro de una misma familia de procesadores en la que todas las demás características son idénticas. En otras palabras, los MHz solos no son medida objetiva de desempeño, por ejemplo, un procesador de 3.2GHz puede rendir menos que uno de 1.6GHz.

Intel y AMD de alguna forma son responsables de la confusión. Se encargaron de empujar los MHz a límites insospechados. A comienzos de los 90’s había quienes afirmaban que la física de estado sólido jamás permitiría alcanzar 1GHz y en 2002-2003 se mostraron prototipos de Pentium 4 y Athlon corriendo a mas de 3GHz. Pero esos mismos prototipos anunciaban lo difícil que sería enfriar tantos MHz y desencadenaron una decisión crucial en esta industria que era escalar el desempeño mediante el uso de múltiples núcleos. Se dio inició así a la era multicore y terminó la era de los MHZ.

Acudiendo a física de transistores, si se reducían los MHz en 15% en la CPU, el consumo de energía se reducía en 50%. Así, si se unían dos CPUs en un mismo chip, el consumo total de energía de ambos volvía a ser el 100% original, pero ahora con el poder de dos procesadores el rendimiento crecía en un 70%. Y así ocurriría con 4 núcleos, 8 núcleos y más. Con el fin de entender mejor los desafíos de la era multicore los diseños de la actualidad servirán de estudio para diseños futuros

2. Básicamente leyendo las tres biografías de Bill Gates (Microsoft) Eric Schmidt (Google), Blake Ross (FIRE fox) hemos llegado a una pequeña conclusión que es que estos tres personajes son muy exitosos. Primero que todo por el nivel de estudio que tienen, y cuando nos referimos a esta parte estamos hablando de la dedicación y del empeño que le colocan a su estudio, a las ganas de superarse y a las ganas de salir a delante; no como cualquier persona sino como se dice vulgarmente por la puerta grande; innovando, creando, y dando a conocer nuevas soluciones para toda la sociedad, para todas las industrias y para todas las grandes y medianas empresas que en este momento utilizan los diferentes proyectos, o mejor dicho los diferentes sueños de cada uno de estos personajes que en la actualidad se convirtieron en realidad, tocando así ha cada ser humano y demostrándole a todos que cuando uno quiere lograr las cosas, es solo dedicarle tiempo, ponerle entusiasmo y nunca mirar o pensar negativamente, porque de lo contrario te quedaras estancando en un agujero oscuro y negro, y de lo contrario nunca podrás salir de el y te tocara dejar así un sueño atrás que algún día lo viste hecho realidad.
Por otra parte es fundamental saber o conocer que la fuerza de cada uno de ellos radica primordialmente en el PENSAR, INTERPRETAR, ARGUMENTAR Y PROPONER que es lo que realmente necesita la sociedad, las industrias, las empresas y todas las personas que en estos momentos utilizan cada uno de sus servicios.

También cabe decir que estos tres personajes poseen unas cualidades muy especificas, como lo son el ser líder y el tener un liderazgo que en estos momentos se puede ver reflejada con cada uno de sus proyectos a fines y con cada una de sus empresas.`




CONCLUSIONES

Como primera medida se puede concluir que se ha aprendido a conocer las diferencias entre lo que es un ensayo y además cual es la diferencia que tiene o que posee sobre un artículo científico y sobre un proyecto.

Hemos aprendido mas afondo sobre el manejo de los procesadores de doble núcleo, esto debido a que nos toco investigar y consultar en los diferentes medios par obtener información detallada sobre dicho tema
También podemos concluir que este trabajo nos deja como enseñanza el aprender a mirar mas halla de lo que realmente estamos observando, puesto que como vimos en las biografías, estos seres triunfaron y seguirán triunfando por el excelente manejo del liderazgo y el excelente manejo de ser un líder en una sociedad que en estos momentos se encuentra cada día, cada mes y cada año, en un proceso llamado evolución.

MATRIZ COMPARATIVA



Un anteproyecto, siempre es previo a tu proyecto definitivo, y esto es porque en el anteproyecto muestras tu idea o intención a desarrollar pero no de una forma ya acabada, es decir tu idea aún puede ser pulida, perfeccionada o incluso modificada; en pocas palabras muestra más o menos algo que te interesa, señalas algunos detalles (bibliografía, fuentes...) pero no es un trabajo serio o definitivo. En la medida que trabajas en tu anteproyecto, lograrás llegar a tu "proyecto" el cual, va a representar tu idea definitiva, sobre lo que quieres hacer o investigar, ya señalas perfectamente tu plan de desarrollo, tus metas y las conclusiones a las cuales quieres llegar. El anteproyecto es informal, mientras que el proyecto es algo formal.