martes, 22 de mayo de 2012

Ingeniería de software


Es el establecimiento y uso de métodos y principios de ingeniería sólidos para obtener un software confiable que pueda trabajar con máquinas reales.

Ciclo de software:
 
  1. Se desarrolla por un grupo de programadores
  2. Se usa durante un tiempo antes de que requiera algunas modificaciones.
  3. Estas son necesarias ya que se encuentran errores dentro del software.
  4. Estos dos pasos usar y modificar se utilizan hasta que se el software se vuelve un objeto.
  5. Se vuelve Obsoleto quiere decir que el software pierde su valides debido a su ineficiencia.
  6. Algunos ejemplos son el registro de estudiantes, sistemas de facturación y contabilidad.
El proceso de desarrollo en el ciclo de vida del software se conforma de 4 fases:
  1. 1.       Análisis: Muestra el objetivo del software, que es lo que debe hacer. Se definen los requisitos específicos  de modo que el usuario lo entienda y se divide esta fase en cuatro:

o   Definición del usuario: se diseña para un usuario genérico o especifico.

o   Definición de las necesidades: El usuario define con claridad sus expectativas del software.

o   Definición de requisitos: con base a las necesidades del usuario se definen con precisión los requisitos del software.

o   Definición de los métodos: Después de definir los requisitos se puede elegir los métodos apropiados para cumplir estos requisitos.

  1. 2.       Diseño: Lograra el sistema lo que se definió en la fase anterior. Se determina el sistema y/o el diseño tanto de las bases de datos y los archivos. Se divide en dos:

o   Modularidad: Todo el software se divide en pequeños módulos, cada uno de ellos se diseña, se prueba y se une con otros a través  de un programa principal.

o   Herramientas: Se utilizan varias siendo las más comunes diagramas de estructuras los cuales muestran como dividir un paquete en pasos lógicos cada uno en un módulo independiente y su interacción entre ellos.

  1. 3.       Implementación: Se crean los programas reales.

o   Herramientas: Para mostrar el flujo lógico de los programas antes de la escritura real del código.

o   Diagrama de flujo: Utiliza símbolos gráficos para representar el flujo lógico de datos.

o   Pseudocódigo: es parte del idioma y del programa que describe con detalles algorítmicos precisos que indica que hacer al programa.

o   Codificación: después de usar las herramientas anteriores o ambas el programador describe el código en un lenguaje específico para el proyecto.

  1. 4.       Pruebas: Una vez que se ha escrito el programa debe probar el software el cual le va a tomar mucho tiempo y puede tornarse tedioso ya que debe ver que interactúe cada uno de sus componentes entre sí y con otros programas.

o   Pruebas de caja negra: Es probar un programa sin saber que hay dentro y sin saber cómo funciona.

o   Pruebas de caja blanca: Asume que sabe todo sobre el programa desde su funcionamiento hasta su interacción con otros.

Modelos de desarrollo:

o   Modelo cascada: El proceso de desarrollo fluye en una sola dirección, esto quiere decir que una fase no puede iniciarse hasta que la anterior se concluya.

o   Modelo incremental: el proceso se desarrolla en una serie de pasos. Primero se completa una versión simplificada de todo el paquete que no incluye todos los detalles. De esta manera se va ir incrementando la serie de módulos terminados para desarrollar por completo el programa.

Modularidad: Significa la división de un proyecto en partes más pequeñas para entenderse y manejarse más fácilmente. 

o   Herramientas:

o   Diagrama de estructura: se utiliza para mostrar la relación entre los procedimientos y las funciones.

o    Diagrama de clase: Se utiliza en la programación orientada a objetos para mostrar la relación entre las clases.
  
o   Acoplamiento: Es una medida de que tan estrecho se ligan los módulos. Entre mayor ligados que estén más acoplados y menos independientes y viceversa. 

o   De datos: Para los datos mínimos de la función requerida.
o   De sello: si son objetos compuestos como arreglos o estructuras.
o   De control: el paso de banderas que pueden dirigir el flujo lógico de una función.
o   Global: Utiliza variables globales para comunicarse entre dos o más funciones.
o   Contenido: Cuando una función hace directamente  referencia a los datos o instrucciones de otra. 

o   Cohesión: Medida que tan estrechamente se desarrollan los procesos.

o  Funcional: Contiene solo un proceso, solo hace una función y en un solo lugar o ocasión.
o   Secuencial: Contiene dos o más tareas relacionadas.
o   De comunicación: combina procesos que trabajen en los mismos datos.
o   De procedimiento: Combina procesos no relacionados mediante un flujo de control.
o   Temporal: Acepta solo una variedad limitada de procesos.
o   Lógica: combina procesos que están relacionados solo por la entidad que los controla.
o   Casual: Combina procesos que no guardan ninguna relación entre sí.
Calidad: 

o   Software de calidad: aquel que satisface lo requisitos explícitos e implícitos del usuario, está bien documentado, cumple con las normas y se ejecuta de manera eficiente en el hardware para el cual se desarrolló.

o   Factores de calidad: 

o   Operabilidad: Operación básica de un sistema. El cual debe de ser :
o   Eficiente
o   Fiable
o   Fácil de usar
o   Pertinente
o   Seguro



o   Preciso.
o   Capacidad de almacenamiento:
o   Corrección
o   De pruebas
o   Flexible
o   Variable
o   Capacidad de Transferencia Interacción con otras plataformas.
o   Interoperabilidad
o   Portabilidad
o   Reutilización de código
Documentación: 

 o   Documentación del usuario: Es el manual para el uso del sistema dirigido al usuario.


      o   Documentación del sistema:  Es el paquete mismo debe de mantenerse y modificarse por personas distintas a los programadores que lo crearon.

Se deben de documentar cada una de las fases que se realizaron anteriormente para desarrollar el programa.

BIBLIOGRAFIA:

http://books.google.com.mx/books?id=xu4jcMBih8QC&pg=PT31&dq=concepto+de+programa+almacenado&hl=es&sa=X&ei=vPl0T6eRA6He0gH1_Mi_DQ&ved=0CDcQ6AEwAQ#v=onepage&q=concepto%20de%20programa%20almacenado&f=false

lunes, 21 de mayo de 2012

Sistemas Operativos


Una computadora es un sistema formado por dos componentes importantes: Hardware de computadora es el equipo físico y el Software que es la colección de programas que permiten que el hardware realice su trabajo.
El software de computadora se divide en dos amplias categorías: el sistema operativo y los programas de aplicación (figura 7.1). Los programas de aplicación utilizan el hardware de computadora para resolver los problemas de los usuarios. El sistema operativo, por otro lado, controla el acceso al hardware por parte de los usuarios.

Sistema operativo es una interfaz ente el hardware de una computadora y el usuario (programas o personas) que facilitan la ejecución de otros programas y el acceso a recursos de hardware y software. Teniendo dos objetivos de diseño importantes: el uso eficiente del hardware y la facilidad para usar los recursos.
Un sistema operativo facilita la ejecución de otro software, actúa como el administrador general de un sistema de computación y garantiza el uso eficiente de los recursos de hardware y software. La evolución de los sistemas operativos ha incluido sistemas operativos por lotes, sistemas de tiempo compartido, sistemas monousuarios y sistemas distribuidos.
 El sistema operativo supervisa al administrador de archivos y la interfaz de usuario. En la monoprogramación, la mayor parte de la capacidad de la memoria está dedicada a un solo programa.





En la multiprogramación, hay más de un programa en memoria al mismo tiempo.


 En el particionamiento, la memoria se divide en secciones de longitud variable, cada una de las cuales aloja un programa (Figura 7.6)

En la página de la memoria se divide en secciones de igual tamaño llamadas bloque y el programa se divide en secciones de igual tamaño llamadas páginas. (Figura 7.7)
Las páginas de un programa no necesitan estar presentes en la memoria para la ejecución del programa. La paginación bajo demanda es asimilar a la página con la excepción de que no es necesario que todas las páginas estén en la memoria. La segmentación bajo demanda es similar a la paginación con la excepción de que en lugar de secciones de igual tamaño, el programa se divide para corresponder con las divisiones del programa. La paginación bajo demanda y la segmentación bajo demanda pueden combinarse para mejorar la eficiencia de un sistema de computación.
La suma de los tamaños de todos los programas en la memoria es la memoria virtual. (Figura 7.8)


Un sistema es una serie de instrucciones no activa escritas por un programado y almacenar en un disco o cinta. Una tarea en un programa seleccionado para su ejecución. Un proceso es una tarea que reside en la memoria. Un diagrama de estado muestra la relación entre un programa, una tarea y un proceso.
Una tarea puede estar en los modos de espera, terminación, listo, ejecución o espera. Un proceso puede estar en uno de los tres últimos estados.

El planificador de tareas crea un proceso a partir de una tarea y cambia un proceso de regreso a una tarea. El administrador de procesos cambia un proceso de un estado a otro. Las tareas y los procesos esperan en colas de espera.

El punto muerto es una situación en la cual un proceso es incapaz de ejecutar debido al uso irrestricto de recursos por otros procesos.

La privación es una situación en la cual un proceso es incapaz de ejecutarse debido a que hay demasiado restricciones en los recursos.

El administrador de depósitos controla el acceso a los dispositivos de E/S. El administrador de archivos controla el acceso a los archivos. La interfaz de usuario es software que acepta solicitudes de los procesos y los interpreta para el resto del sistema operativo.
Windows 2000, UNIX y Linux son tres sistemas operativos muy comunes.

BIBLIOGRAFIA:
http://books.google.com.mx/books?id=xu4jcMBih8QC&pg=PT108&dq=interconexion+de+subsistemas&hl=es&sa=X&ei=NtOBT6W9LeWw2wXRz4XrBg&ved=0CDMQ6AEwAA#v=onepage&q&f=true

Representación de datos


Tipos de datos:
Un programa  de ingeniería Procesa números principalmente.
Un programa de procesamiento de texto procesa palabras.
Un programa de procesamiento de imágenes  procesa imágenes para su manipulación y edición.
Un programa reproductor puede manejar tanto audio como video para su manipulación o edición.
A cada uno de los datos anteriores la industria de la computación usa el termino multimedia para definir esta información.
 
Datos dentro de la computadora

Patrón de bits: es cuando una computadora acepta de forma uniforme la mezcla de varios tipos de datos. Es una secuencia o cadena de bits para representar datos.

Un bit es un digito binario, es la unidad más pequeña de datos que puede almacenarse en una computadora; puede ser ya sea un 0 o 1. Un bit representa un estado de un dispositivo que puede tomar uno de dos estados.

La memoria solo almacena los datos como patrones de bits. Es responsabilidad de los dispositivos de entrada/salida  o de los programas interpretar los patrones como un tipo de dato.
A un patrón de 8 bits se le denomina un Byte.

Representación de datos:

TEXTO: Una pieza de texto en cualquier idioma es una secuencia de símbolos usados para representar una idea en ese idioma. Se representa cada símbolo con un patrón de bits.
La longitud del patrón  de bits depende del número de símbolo, La relación no es lineal sino logarítmica
En la siguiente tabla se muestra esta relación.

No. De símbolos
Longitud del patrón de bits
2
1
4
2
8
3
16
4
128
7
256
8
65536
16

CÓDIGOS: Se han diseñado diferentes secuencias de patrones de bits para representar símbolos de texto .A cada secuencia se le conoce como código y al proceso de representarlos se le conoce como codificación.

ASCII: El instituto Nacional Norteamericano de Estándares (ANSI) desarrollo un código llamado  Código norteamericano de estándares para intercambio de información. El cual utiliza 7 bits para cada símbolo.

Características de ASCII:

  1. Utiliza un patrón que varía de 00000000 a 1111111
  2. El primer patrón representa la ausencia de carácter.
  3. El  segundo patrón representa el carácter de eliminación.
  4. Hay 31 caracteres de control no imprimibles.
  5. Se codifican primeros los números que las letras.
  6. Hay varios caracteres de impresión especiales
  7. Las letras mayúsculas están antes que las minúsculas.
  8. Los caracteres entre mayúsculas y minúsculas se distinguen solo por un bit(en el 6 bit).
  9. Hay 6 caracteres especiales entre las letras mayúsculas y las minúsculas.

ASCII Extendido: Para hacer el tamaño de patrón de 8 bits  de ASCII se les aumenta un cero a su izquierda.

EBCDIC: IBM desarrollo este código llamado Código extendido de intercambio decimal codificado en binario. El cual utiliza patrones que puede representar hasta 256 símbolos. Sin embargo solo las utilizan las computadoras mainframe de IBM.

Unicode: Utiliza hasta 16 bits y puede representar hasta 65536 símbolos para idiomas distintos al ingles. Algunas partes del código se utilizan para símbolos gráficos y especiales. El lenguaje Java utiliza este código para representar caracteres. Microsoft Windows utiliza una variación de los primeros 256 caracteres.

ISO: La Organización Internacional para la Estandarización ha diseñado un código que utiliza patrones de 32 bits. Este código representa hasta 4294967296 símbolos.

NÚMEROS: En una computadora los números se  representan en un sistema binario:

Sistema binario: Se basa solo en dos números 0 y 1 siendo su base el 2
Sistema decimal: Su base es 10 y comienza del 0 al 9
Números Enteros: pueden ser positivos y negativos pero nunca fraccionarios.

o   Números enteros sin signo: es aquel que parte del intervalo del 0 al infinito positivo y como no hay manera de para representar el infinito en una computadora existe algo llamado entero máximo sin signo el cual varia entre 0 y la constante.

                                               Intervalo: 0...(2^N-1)

Para esto el número se transforma a binario y si es menor que N se añade un 0 ala izquierda de manera de que exista un total de N bits.

o   Formato de signo y magnitud: representa un 0 para positivo y un 1 para negativo por esto el primer bit de 8 es el que asigna el signo y los otro 7 el número.

o   Formato de complemento a uno: para representar un número positivo usan la convención adoptada para un número entero sin signo. Y para representar el número negativo lo complementan el número positivo.

o   Formato del complemento a dos: El bit en el extremo izquierdo define el signo del número, si es 0 el número es positivo y si es 1 es negativo.






IMAGENES: Las imágenes se representan mediante 2 métodos:
·         Gráficos de mapa de bits: La imagen se divide en una matriz de pixeles (elementos de imagen) donde cada pixel es un pequeño punto. El tamaño de este pixel  depende de lo que conocemos como resolución (entre mayor numero de pixel la resolución es mucho mejor). Luego a cada pixel se asigna un patrón de bits. En una imagen de blanco y negro el color negro se representa con un 1 y el blanco con un 0 registrándose los patrones uno de tras del otro. Si la imagen es una mezcla de pixeles blancos y negros se puede aumentar el tamaño del patrón de bits para representar escalas de grises. Y para representar una imagen de color se descomponen en 3 colores primarios. Rojo, verde y azul. Después se mide la intensidad de cada color y se asigna un patrón de bits.

·         Gráficos de vectores: El problema con este método es que los patrones de bits exactos para representar una imagen en particular deben guardarse en una computadora. Posteriormente si desea cambiar el tamaño de la imagen debe cambiar el tamaño de los pixeles. La imagen se descompone en una combinación de curvas y líneas las cuales se representan por medio de fórmulas matemáticas.

AUDIO: Es una representación de sonido o música. Estos son los siguientes pasos para transformar un audio que es información analógica en información digital:

1.       La señal análoga se muestrea. El muestreo significa medir el valor de la señal a internos iguales.
2.       La muestras se cuantifican. La cuantificación es asignar un valor a una muestra entre 0 y 63 que es un conjunto.
3.       Estos valores se cambian a patrones binarios.
4.       Los patrones binarios se almacenan.

VIDEO: Es una representación de imágenes llamados cuadros o frames en el tiempo. En donde cada cuadro o imagen cambia a una serie de patrones de bits y se almacenan.

BIBLIOGRAFIA: 

http://books.google.com.mx/books?id=xu4jcMBih8QC&pg=PT31&dq=concepto+de+programa+almacenado&hl=es&sa=X&ei=vPl0T6eRA6He0gH1_Mi_DQ&ved=0CDcQ6AEwAQ#v=onepage&q=concepto%20de%20programa%20almacenado&f=false