AREA DE BASES DE DATOS TEORIA DE BASE DE DATOS Y MANEJO DE INFORMACION BASE DE DATOS EN EL CONTEXTO DE LA INGENIERÍA DE SOFTWARE. La base de datos se relaciona a la ingeniería del software debido a que para la realización del mismo, es necesario contar con herramienta y métodos que nos permiten obtener una base bien ordena. La correcta ordenación de los datos y su forma de relacionarlos, a la vez la utilización de métodos y herramientas para lograr obtener soluciones a los problemas en el almacenamiento de datos. La base de datos es una estructura que en base a herramientas y métodos que nos ayudan en la realización de su diseño permite el almacenamiento de datos de una forma sistemática, el cual tiene como beneficiario a los usuarios finales. CONCEPTOS DE BASE DE DATOS. Datos: datos sin procesar. Información: datos procesados que revelan un significado. Metadatos: datos acerca de los datos. Índice: funcionamientos similares a la de los libros, los cuales por medio de un identificador único nos muestran los registros de una tabla en una base de datos. Base de datos: Es una estructura computarizada compartida e integrada que guarda un conjunto de: • • Datos del usuario final. Metadatos Una base de datos es un conjunto de datos pertenecientes a un mismo contexto y almacenados sistemáticamente para su posterior uso. VENTAJAS DE UNA AMBIENTE DE BASE DE DATOS. • • • • • • • • Integridad de datos: consistencia de datos y los datos se adecuan las condiciones de entradas de los datos. Obtención de datos de forma rápida. Debido a que todo está en un computador la obtención se agiliza. Compartir datos. Dependiendo del tipo de base de datos es más fácil realizar esta acción. Consistencia de datos. Menor redundancia y los datos son el mismo en cualquiera de las áreas donde se utilicen. Obtención de información. Facilidad de consulta de datos. Independencia de datos. Que nos afecta el cambio de formato con las programas de aplicación. Seguridad. Una base de datos maneja políticas de seguridad con lo cual ayuda a que no cualquier usuario pueda visualizar los datos. Mejor toma de decisiones. (Base de Datos, 2015) (Coronel, Morris, & Rob, 2011) ARQUITECTURA DE UN DBMS • • • • Usuarios. Usuarios normales, programadores de aplicaciones, usuarios sofisticados y administradores de la base de datos Programas de aplicación/consulta Herramientas que ayudan a interactuar al usuario con la base de datos. Software para procesar consultas/ programa a) Interprete del LDD: interpreta las instrucciones del LDD y registra las definiciones en el diccionario de datos. b) Compilador de LMD: traduce las instrucciones de LMD en un lenguaje de consultas a un plan de evaluación que consiste en instrucciones de bajo nivel que entiende el motor de evaluación. También cumple con la función de optimización de consultas. c) Motor de evaluación de consultas. Ejecuta las instrucciones de bajo nivel generadas por el compilador de LMD. Software para tener acceso a datos Su función es la de traducir las diferentes instrucciones LMD a órdenes de un sistema de archivos de bajo nivel. Sus componentes son: • a) Gestor de autorización e integridad: comprueba que se tenga la debida autorización al acceso a los datos por parte de los usuarios y que se sigan las normas de integridad. b) Gestor de transacciones. Asegura que la base de datos este en forma consistente y que las tracciones ocurran sin conflicto. c) Gestor de archivos. Gestiona la reserva de espacio de almacenamiento de disco y las estructuras de datos usadas para representar la información almacenada en disco. d) Gestor de memoria. intermedia. Es responsable de traer los datos al disco de almacenamiento a memoria principal y decidir qué datos tratar en la memoria cache. Almacenamiento. Lugar donde se almacenan los datos físicamente, aunque también contiene estructuras que ayudan a poder obtener la información de una manera más rápida. a) Archivo de datos: almacena la base datos en sí. b) Diccionario de datos: almacena metadatos acerca de la estructura de la base de datos, en particular, el esquema de la base de datos. c) Índices. Que proporciona acceso rápido a elementos de datos que tienen valores particulares. (Coronel, Morris, & Rob, 2011) (Silberschatz, 2004) http://www.unalmed.edu.co/~mstabare/Dbms.htm LENGUAJE DE DEFINICION DE DATOS. Forma parte de SQL (Structured Query Languaje), su función es la de especificar el esquema de la base de datos. Las sentencias son: • • • Create: utilizado para crear nuevas tablas, campos e índices. Drop: empleado para eliminar tablas e índices. Alter: utilizado para modificar las tablas agregando campos o cambiando la definición de los campos. Estas sentencias se pueden aplicar a tablas, vistas, procedimientos almacenados y Triggers de la base de datos. COMANDO U OPCION CREATE SCHEMA AUTHORIZATION CREATE TABLE NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY DEFAULT DESCRIPCION Crea un esquema de base de datos. Crea una nueva tabla en el esquema de base de datos de usuario. Asegura que una columna no tendrá valores nulos. Asegura que una columna no tendrá valores duplicados. Define una llave primaria para una tabla Define una llave foránea para una tabla (Silberschatz, 2004) (Wikipedia, 2015) LENGUAJE DE MANEJO DE DATOS. Es un lenguaje que permite a los usuarios acceder o manipular los datos organizados mediante el modelo de datos apropiado. Hay dos tipos. • Procedimentales. Requieren que el usuario especifique que datos se necesitan y como obtener esos datos. • Declarativos. La misma funcionalidad que la anterior a diferencia que no indicar como obtener los datos. Sentencias. • • • Insert. Inserta registros. Update. Actualiza registros. Delete. Elimina registros. (Silberschatz, 2004)Presentación de SQL, FUNCIONES DEL GESTOR DE BASE DE DATOS. El gestor de la base de datos es un conjunto de programas que hacen cumplir las funciones de un DBMS. Es un conjunto de programas que permiten el almacenamiento, modificación y extracción de la información en una base de datos, además de proporcionar herramientas para añadir, borrar, modificar y analizar los datos. Los usuarios pueden acceder a la información usando herramientas específicas de interrogación y de generación de informes, o bien mediante aplicaciones al efecto. Además de servir como interfaz entre la base de datos, las aplicaciones y el usuario. Sus funciones son la definición, manipulación y consulta de datos. USUARIOS DE UN AMBIENTE DE BASE DE DATOS. Existen 5 tipos de usuarios que interactúan con una base de datos. • • • • • Usuario normal o final: son las personas que utilizan la aplicación para ejecutar las operaciones diarias de una organización. Ejemplo, un vendedor, supervisores, etc. Analistas y programadores del sistema o programadores de aplicaciones. Escriben programas de aplicación para la introducción de datos, informes y procedimientos por medio de los cuales los usuarios finales manipulan la base de datos. Diseñador de base de datos. Proyectan la estructura de una base de datos Administrador de la base de datos. Manejan el DBMS y aseguran que la base de datos se encuentre funcionando en forma correcta. Administrador del sistema. Supervisan las operaciones generales del sistema de base de datos. TIPOS DE BASES DE DATOS Y SUS FORMAS DE MODELADO. MODELO JERÁRQUICO. Creado en el año 1960, su nombre se debe a que su estructura se representa por medio de un árbol invertido. Además de permitir relaciones uno a muchos, con la deficiencia de que no permite la relación muchos a muchos. Otro inconveniente que presentas es que trabaja a nivel físico y por lo tanto para poder relacionar es necesario saber trabajar a nivel físico. MODELO DE RED. Fue creado para representar relaciones de datos en forma más efectiva que el modelo jerárquico, además de permitir las relaciones muchos a muchos. Las ventajas que promovió este modelo se presenta más a definiciones, que a su utilización, ya que en este modelo se utilizó por primera vez el término, esquema (describe la estructura de la base de datos que se diseña: nombres y tipos de los campos en cada tipo de registro y las relaciones generales entres ellos), subesquema (vista de la información creada a partir de la datos almacenados), lenguaje de definición de datos y manipulación de datos. MODELO ORIENTADO A OBJETOS. Este modelo se apega más al mundo real además de ser más semántico, es decir que su contenido se relaciona más a un significado de lo que lleva. Se le llama orientada a objetos debido a que utiliza objetos. Los métodos de una clase se podrían decir que son los procedimientos en el modelo relacional, las propiedades de una clase son los atributos, además de poseer las características de un objeto como herencia, encapsulamiento, jerarquía de clases, etc. Cabe mencionar que todas las relaciones y procedimientos están en la misma clase. Para la representación de este modelo se utiliza UML, específicamente el diagrama de clases, debido a la utilización de la herencia se promueve más la integridad de datos. MODELO CONCEPTUAL DE DATOS. Es parte de la abstracción de datos, también llamado modelo lógico, que representa una vista global de toda la base de datos como lo ve la organización. Para representarlo gráficamente se utiliza el modelo entidad relación. El modelo conceptual contiene las entidades, relaciones, restricciones y procesos que llevara la base de datos en una sola vista. Cabe mencionar que para llegar al modelo conceptual es necesario realizar el modelo externo de abstracción de datos. MODELO ENTIDAD – RELACION. Utilizado para la modelación de datos. Además de ser una herramienta en el modelo relacional, permite poder observar las entidades, atributos, relaciones y restricciones que interactúan en sistema de base de datos. Es uno de los varios modelos semánticos. Las entidades, son cualquier cosa (persona, lugar, coas, o hecho) del cual se recolecta y guardar datos. Además de que se pueden llamar conjunto de entidades. Atributos es una característica de una entidad. Además estas presentas ciertas características: • Atributo requerido, no permite que se quede vacío o nulo • • • • • • • • • Atributo opcional, puede dejarse vacío Dominios: los atributos tiene dominio, un ejemplo de dominio seria la casilla genero de una tabla de empleados donde su dominio se centra en si es M (masculino) o F (Femenino). Identificadores: son atributos que identifican de manera única a cada instancia de entidad, en el modelo relacional están relacionados a las llaves primarias. Identificador Compuesto. Es decir una llave compuesta por más de un atributo. Atributos compuestos. Son aquellos que pueden subdividirse como por ejemplo la dirección, ya que esta consta de una zona, avenida, etc. Atributos simples. Son aquellos que no puede subdividirse por ejemplo el sexo, estado civil, edad. Atributos de un solo valor: son aquellos que solo captan un valor simple, por ejemplo el número de seguro social. Atributos de varios valores: son aquellos que permiten muchos valores, por ejemplo una persona puede tener varios títulos universitarios. Atributos derivados, son aquellos que cuyo valor se calcula por medio de otros atributos. Por ejemplo el sueldo de un empleado, en base a los que vendió y lo que le pagan por cada producto vendido. Relación: describe la asociación entre entidades. Esta puede ser, uno a uno, uno a muchos, o muchos a muchos Restricción: se aplica a los datos, por ejemplo, el salario de un empleado es de 300 a 600 Conectividad y Cardinalidad. La conectividad se usa para clasificar el grado de relación. Y la cardinalidad nos muestra la cantidad mínima y máxima de casos de entidad asociados en un caso de la entidad relacional. Dependencia de existencia. Es decir que una entidad solo puede existir si existe otra, u otra forma que la entidad tenga una llave foránea. Entidad fuerte. Es aquella entidad que es independiente de existencia, es decir que no necesita de alguien para poder existir. Fuerza de relación. Está relacionada en cómo se define la llave primaria en una entidad relacionada. • • Relaciones débiles. Se le llama así porque la llave primaria de una entidad aparece solo como llave foránea en otra entidad. Relaciones fuertes. Se le llama así porque la llave primaria de una entidad aparece como llave primaria y foránea en otra entidad. Entidades débiles Son aquellas que dependen existencialmente. Participación de relación. • • Opcional: una entidad no requiere de una entidad en una relación Obligatoria. Una entidad requiere de una entidad en una relación. Es dependerá de la semántica con que se maneje. Grado de Relación. • • • Unarias. Es decir que la entidad se relaciona a así mismo, un ejemplo seria que en la tabla empleados está el gerente, que a su vez es un empleado, pero para generar otro empleado se necesita de un superior y ese superior es otro empleado con distinto nivel. Binarias. Es cuando dos entidades están relacionadas. Ternarias y orden superior. Una relación ternaria es una relación entre tres entidades Entidades asociativas (compuestas) Son aquellas que se generan en una relación muchos a muchos, es decir es una entidad que relación dos entidades. MODELO ENTIDAD RELACION EXTENDIDO. Debido a que la complejidad de las estructuras de datos que se modelan ha aumentado, existe la necesidad de capturar más información en los modelos de datos. Supertipos y subtipos de entidad. • • Supertipos: poseen características comunes, son entidades generalizadas, por ejemplo una entidad empleado. Subtipos. Son entidades más específicas poseen características específicas. Dependen de una supertipos por ejemplo, mecánico, depende de la entidad empleado. Jerarquía de especialización. Describe la organización de supertipos y subtipos. Herencia La herencia hace posible que un subtipo herede los atributos y relaciones de un supertipo. Discriminador de subtipo. Es una atributo que determina a que supertipo está relacionado el subtipo. Restricciones disjuntas y traslapadas. Los subtipos disjuntos con aquellos que solo se pueden relacionar un solo vez con el supertipo ejemplo, un empleado puede ser solo mecánico o piloto. Los subtipos traslapados lo contrario a disjunto es decir un empleado puede ser piloto y mecánico a la vez. Restricciones de plenitud. • • Parcial, el supertipo no es miembro de algún subtipo. Total, el supertipo es miembro de al menos un subtipo. Especialización y Generalización. Ambos métodos nos ayudan en la identificación de supertipos y subtipos • • Especialización. Identifica supertipos y subtipos en base a la identificación de características específicas de los subtipos para luego crear el supertipo. (De lo particular a lo General). Generalización. Identifica supertipos y subtipos en base a las características comunes para un supertipos y luego busca el subtipo. (De lo General a lo particular). Grupo de entidad. Es un tipo de entidad virtual empleado para representar varias entidades y relaciones en el ERD. Llaves naturales y llaves primarias. Un identificador natural es aquel que identifica de manera única a objetos reales, al cumplir con esto, es candidato a ser la llave primaria. Guía para seleccionar una llave primaria. • • • • • • Valores únicos: capaz de identificar de manera única cada instancia de entidad. No inteligentes: solo se utiliza para identificar. Sin cambio en el tiempo: es por esto que no se puede dejar como llave primaria el nombre de alguien ya que este cambie cuando se case. De un solo atributo, ya que con esto es más fácil que la base de datos trabaje. Numérica, las llaves primarias deben ser siempre numéricas ya que en base a ello es más fácil la búsqueda. Queja de seguridad. La llave primaria no debe estar compuesta por atributos que den un riesgo, por ejemplo el número de seguro social. Uso de la llaves compuestas • • Identificadores de entidades compuestas. Identificadores de entidades débiles. ESTRATEGIAS DE MODELADO. Para el modela de datos es necesario contar con cierta información que nos ayudara a seleccionar el modelo a utilizar y a su vez en que forma las entidades estarán relacionadas. Los primero que se debe realizar es la abstracción de datos y para ello es necesario utilizar el modelo externo, conceptual e interno, luego de ellos utilizamos el modelo entidad relación y para mostrar nuestros resultados el diagrama entidad relación. DESARROLLO DE BASES DE DATOS Y SUS ASPECTOS PRINCIPALES MODELO RELACIONAL. Introducido en el año de 1970 por E.F. Codd, el modelo relacional es un concepto conocido como relación. La relación puede ser considerada como una matriz de filas y columnas, a cada fila se le llama tupla y a cada columna atributo. Permite el uso de SQL por lo cual lo vuelve más fácil de utilizar, a su vez nos permite observar una vista lógica de como las entidades están relacionados olvidándose de la parte en cómo se guardan los datos. El modelo relacional está basado en la lógica de predicados y la teoría de conjuntos, este último permite que se realicen las relaciones. El modelo relacional tiene tres conceptos bien definidos. • • • Una estructura lógica de datos representados por sus relaciones. Un conjunto de reglas de integridad Un conjunto de operaciones que define como se manipulan los datos. El modelo relacional se representa por tablas, además utiliza llaves para identificar de manera única a cada instancia de entidad y también se utiliza para relacionar las entidades, las llaves se clasifican en: • • • • • • Súper llave: es un atributo o combinación que identifica de manera única a una instancia de entidad. llave candidata. Se puede llamar una súper llave sin atributos innecesarios. llave primaria. Es la llave candidata seleccionada. llave Secundaria. Se utiliza para recuperación de datos. llave Compuesta. Utiliza varios atributos para formar esta llave. llave foránea. Es un atributo en una tabla pero es llave primaria en otra. La integridad se dividen en: • • integridad de entidad. Para garantizar esto no se permite datos nulos en una llave Integridad referencial. Garantiza que para esa relación la llave foránea indique la existencia de datos. Si en caso no existiera algo que garantice la relación se utilizan banderas. Para la manipulación de datos se utiliza el álgebra relacional, esta define ochos operadores relaciones los cuales son: • • • • • • • • SELECT, da un subconjunto horizontal de una tabla. PROJECT, de un subconjunto vertical de una tabla. JOIN, permite que se reúna información de una o más tablas. INTERSECT, muestra los renglones que son comunes en ambas tablas. UNION, combina todos los renglones de dos tablas, excluyendo las que se duplican. DIFFERENCE, da todos los renglones de una tabla que nos están en la otra. PRODUCTO, da todos los posibles pares de renglones de dos tablas. DIVIDE. Diccionario de datos: es una descripción detallada de todas las tablas que se encuentran en la base de datos es decir contiene toda la información acerca de atributos y las características de cada tabla. Catálogo del sistema. Es como un diccionario de datos del sistema, que contiene información acerca de los objetos dentro del sistema, tipos de datos de cada columna, nombre de la tabla, quien creo la tabla y la fecha en que lo creo, que usuario y que privilegios de acceso tienen. La relaciones que maneja el modelo relacional. Son uno a muchos, uno a uno, muchos a muchos, en el caso de uno a uno lo que pretende es que solo exista esta instancia de entidad en la otra instancia de entidad. Para la relación muchos a muchos, el modelo relacional no se puede hacer uso de ella, debido a que presentaría mucha redundancia y además de que es casi complicado por aplicar los operadores relacionales. Para ello se utiliza una entidad compuesta la cual consta de las llaves primarias de cada tabla, además de utilizar la relación uno a muchos. El diseñador dejara a su criterio si utiliza las llaves foráneas como llave compuesta o crea una llave primaria para esa entidad. NORMALIZACION DE DATOS La normalización es el proceso mediante el cual se transforman datos complejos a un conjunto de estructuras de datos más pequeñas, que además de ser más simples y más estables, son más fáciles de mantener. También se puede entender la normalización como una serie de reglas que sirven para ayudar a los diseñadores de bases de datos a desarrollar un esquema que minimice los problemas de lógica. Cada regla está basada en la que le antecede. La normalización se adoptó porque el viejo estilo de poner todos los datos en un solo lugar, como un archivo o una tabla de la base de datos, era ineficiente y conducía a errores de lógica cuando se trataban de manipular los datos. La normalización también hace las cosas fáciles de entender. Los seres humanos tenemos la tendencia de simplificar las cosas al máximo. Lo hacemos con casi todo, desde los animales hasta con los automóviles. Vemos una imagen de gran tamaño y la hacemos más simple agrupando cosas similares juntas. Las guías que la normalización provee crean el marco de referencia para simplificar una estructura de datos compleja. Otra ventaja de la normalización de base de datos es el consumo de espacio. Una base de datos normalizada ocupa menos espacio en disco que una no normalizada. Hay menos repetición de datos, lo que tiene como consecuencia un mucho menor uso de espacio en disco. El proceso de normalización tiene un nombre y una serie de reglas para cada fase. Esto puede parecer un poco confuso al principio, pero poco a poco se va entendiendo el proceso, así como las razones para hacerlo de esta manera. Grados de normalización Existen básicamente tres niveles de normalización: Primera Forma Normal (1NF), Segunda Forma Normal (2NF) y Tercera Forma Normal (3NF). Cada una de estas formas tiene sus propias reglas. Cuando una base de datos se conforma a un nivel, se considera normalizada a esa forma de normalización. No siempre es una buena idea tener una base de datos conformada en el nivel más alto de normalización, puede llevar a un nivel de complejidad que pudiera ser evitado si estuviera en un nivel más bajo de normalización. En la tabla siguiente se describe brevemente en qué consiste cada una de las reglas, y posteriormente se explican con más detalle. SISTEMAS GESTORES DE BASES DE DATOS EN EL MERCADO ACTUAL. • • • SGBD libres a) MySQL b) FireBird. c) SQLite. SGBD no libres a) Microsoft SQL Server b) PervarsiveSQL c) Oracle SGBD no libre y gratuitos. a) Microsoft SQL server edición básica. b) Sybase ASE (Linux). c) Oracle Express Edition 10 Los más usados: • Oracle a) Licencia Privativa b) Multiplataforma. c) Para bases de datos relacionales. d) Utilizado mundialmente e) Puede ejecutarse en diversas multiplataforma. f) Permite el uso de particiones para la mejora de la eficiencia. g) Es más orientado a internet. h) Las licencias son muy caras. • D2 de IBM • SQL Server a) Licencia privativa, aunque gratuito. b) MS Windows. c) Basado en transact-SQL. d) Multiusuario. e) Posee un entorno gráfico. f) Uso de comandos DML y DDL. g) Mejor utilización de los recursos de la PC. h) Utiliza una mayor cantidad de RAM. i) Bloque a nivel de página. • MySQL a) Es Multiplataforma. b) Código Abierto. c) Mantenimiento de Pago. d) e) f) g) • Base de datos relacional. Vistas actualizables. Procedimientos almacenados. Los disparadores son básicos. PostgreSQL. a) Multiplataforma. b) Código Abierto. c) Orientado a objetos. d) Alta concurrencia. e) Herencia de tablas. f) Integridad transaccional. g) Consume más recursos que MySQL por lo que necesita mayores características de hardware. h) Es más lento que MySQL INSTRUCCIONES DE LENGUAJE ESTRUCTURADO DE CONSULTA. Es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones sobre las mismas. Se caracteriza por el uso del algebra y calculo relacional. Comandos SQL para Definición de datos Comando o Opcion CREATE SCHEMA AUTHORIZATION CREATE TABLE NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY DEFAULT CHECK CREATE INDEX CREATE VIEW ALTER TABLE CREATE TABLE AS DROP TABLE DROP INDEX DROP VIEW Descripción Crea un esquema de base de datos. Crea una nueva tabla en el esquema de base de datos del usuario Asegura que una columna no tendrá valores nulos Asegura que una columna no tendrá valores duplicados Define una llave primaria para una tabla Define una llave foránea para una tabla Define una valor predeterminado para una columna Valida datos de un atributo Crea un índice para una tabla Crea un subconjunto dinámico de filas/columnas desde una o más tablas Modifica una definición de tablas (agrega, modifica o elimina atributos o restricciones) Crea una nueva tabla basada en una consulta en el esquema de base de datos del usuario Permanentemente elimina tabla (y sus datos) Permanentemente Elimina un índice Permanentemente elimina una vista. CREATE SCHEMA Sintaxis: CREATE SCHEMA AUTHORIZATION [creador] Ejemplo: CREATE SCHEMA AUTHORIZATION HORARIO. CREATE TABLE Sintaxis: CREATE TABLE nombre_de_tabla ( Columna1 tipo de datos [restricciones][, Columna2 tipo de datos [restricciones]][, PRIMARY KEY (Columna1 [, Columna2])][, FOREIGN KEY (Columna1 [, Columna2]) REFERENCES nombre_de_tabla [, CONSTRAINT restricciones]); Ejemplo. CREATE TABLE VENDEDOR { Idvendedor int not null unique, Nombre_vendedor nvarchar (50) not null, Apellido_vendedor nvarchar (50) not null, Primary key (Idvendedor) } CREATE TABLE PRODUCTO { Idproducto int not null unique, Descripción_producto nvarchar (100) not null Primary key (Idproducto), Foreing key (Idvendedor) references VENDEDOR ON UPDATE CASCADE. } Tipo de datos • • • • • • Int: números naturales (enteros). Smallint: números enteros pero de valores limitados (6 dígitos). Decimal(l,d): Char: datos de longitud fija. Varchar: datos de longitud variable. Date: fechas, Restricciones • • • • • • PRIMARY KEY FOREING KEY NOT NULL UNIQUE DEFAULT CHECK CREATE INDEX Sintaxis CREATE [Unique] INDEX nombre_del_indice ON nombre_de_tabla (Columna1) Ejemplo. CREATE INDEX índice_vendedor ON VENDEDOR (Idvendedor). DROP INDEX Sintaxis DROP INDEX nombre_del_indice Ejemplo DROP INDEX índice_vendedor. MANIPULACION INSERT SELECT WHERE GROUP BY HAVING ORDER BY UPDATE Inserta renglón(es) en una tabla Selecciona atributos de renglones en una o más tablas o vistas Restringe la selección de renglones con base en una expresión condicional Agrupa los renglones seleccionados con base en uno o más atributos Restringe la selección de renglones agrupados con base en una condición Ordena los renglones seleccionados con base en uno o más atributos Modifica los valores de un atributo en uno o más renglones de tabla INSERT Sintaxis. INSERT INTO nombre_tabla VALUES (valor1, valor2, valor3,…, valorn) INSERT INTO nombre_tabla (atributo1, atributo2) VALUES (valor1, valor2, valor3) Ejemplo INSERT INTO VENDEDOR VALUES (1,’juan’,’perez’); Para guardar cambios en la tabla, estos no se guardan hasta que se cierra el programa por lo tanto es necesario utilizar el comando COMMIT, este comando guarda permanentemente en la tabla. Sintaxis. COMMIT; SELECT Sintaxis: SELECT Campos FROM Tabla Ejemplo: SELECT Nombre, Teléfono FROM Clientes; Ordenar los registros. Variaciones en la sentencia de consulta. La siguiente consulta ordena los datos de acuerdo al campo nombre. Sentencia: SELECT CodigoPostal, Nombre, Telefono FROM Clientes Order By Nombre Se puede ordenar los registros por más de un campo. Ejemplo: SELECT CodigoPostal, Nombre, Telefono FROM Clientes Order By CodigoPostal, Nombre; Se puede cambiar la forma del ordenamiento agregando DESC o ASC. SELECT CodigoPostal, Nombre, Telefono FROM Clientes ORDER BY CodigoPostal DESC, Nombre DESC; CONSULTAS CON PREDICADO. Predicado ALL TOP DISTINCT DISTINCTROW Descripción Devuelve todos los campos de la tabla. Devuelve los primeros N de registros del conjunto resultante. Omite los registros cuyos campos seleccionados coincidan totalmente. Omite los registros duplicados basándose en la totalidad del registro y no solo en los campos seleccionados. Sintaxis ALL: si no se incluye algún predicado se asume ALL SELECT * FROM Empleados. TOP: devuelve un cierto número de registros que entran al principio o al final de un rango especificado por la cláusula ORDER BY. SELECT TOP 25 Nombre, Apellido FROM Estudiantes ORDER BY Nota DESC También nos permite la selección de un porcentaje SELECT TOP 10 PERCENT Nombre, Apellido FROM Estudiantes ORDER BY Nota DESC. DISTINCT: Devuelve aquellos registros cuyos campos indicados en la cláusula SELECT posean un contenido diferente. SELECT DISTINCT Apellido FROM Empleados. ALIAS. Sentencia AS: sirve para colocarle otro nombre a alguna columna. Ejemplo: SELECT DISTINCROW Apellido AS Empleado FROM Empleado También es posible para las tablas SELECT E.Nombre, E.Apellido, C.Salario AS Sueldo FROM Empleado as E, Contrato as C WHERE E.Codigo_Empleado = C.Codigo_Empleado WHERE. SENTENCIA WHERE: nos permite limitar los resultados de la sentencia SELECT. De lo contrario siempre nos devolvería todas las filas. Ejemplo: SELECT Apellidos, Salario FROM Empleados WHERE Salario > 21000 SELECT Apellidos, Salario FROM Empleados WHERE Salario BETWEEN 200 and 300; Funciones agregadas COUNT: sirve para totalizar el número de valores no nulos en la tabla. Ejemplo. SELECT COUNT (*) FROM Vendedor. MAX y MIN: nos ayudan a identificar cual es el mayor y menor de algún registro de una tabla. Ejemplo. SELECT código FROM Producto WHERE precio = MAX (precio); SUM: calcula la suma para cualquier atributo especificado. Ejemplo SELECT SUM (totales_parciales) FROM Ventas AVG: calcula el promedio Ejemplo: SELECT AVG (totales_parciales) FROM Producto; UPDATE Comando utilizado para modificar datos de una tabla. Sintaxis UPDATE nombre_tabla SET nombre_columna = expresión, nombre_columna2=expresion2 WHERE lista de condiciones. Ejemplo. UPDATE VENDEDOR SET Nombre_vendedor = ‘pedro’ WHERE Idvendedor = 1; Para dejar la base de datos como estaba anteriormente luego de alguna modificación se puede utilizar el comando ROLLBACK, este comando deshace cualquier modificación desde el último comando COMMIT Sintaxis. ROLLBACK; DELETE Utilizado para la eliminación de renglones de tabla. Sintaxis. DELETE FROM nombre_tabla WHERE [lista_de_condiciones] Ejemplo. DELETE FROM VENDEDOR WHERE Idvendedor = 1; ALTER TABLE Utilizado para la manipulación de las tablas Adición de una columna ALTER TABLE nombre_tabla ADD (nombre_columna tipo_dato). Modificación de una columna. ALTER TABLE nombre_tabla MODIFY (nombre_columna tipo_dato); Eliminar una columna. ALTER TABLE nombre_tabla DROP nombre_columna. FUNCIONES Es un grupo de enunciados procedimentales y de SQL, con nombre, que entrega a un valor Sintaxis: CREATE FUNCTION nombre_funcion (variable tipo_de_dato) RETURNS tipo_de_dato BEGIN Instrucciones: RETURN VALOR END; Ejemplo CREATE FUNCTION nuevo (archivo Datatime) RETURNS int AS BEGIN Declare @resultado int Insert into fecha_actual (archivo); Set @resultado=1; RETURN @resultado; END; SELECT dbo.nuevo (10/10/10); PROCEDIMIENTOS ALMACENADOS Es un grupo de enunciados procedimentales, con nombre, se pueden usar para encapsular y representar transacciones de negocio, además se almacenan físicamente en una base de datos. Su uso es rápido debido a que se ejecuta en el motor de la base de datos. Sintaxis: CREATE PROCEDURE nombre_procedimiento (argumento IN/OUT tipo_dato) AS BEGIN Instrucciones PL/SQL o SQL: END CREATE PROCEDURE INSERTAR_VENDEDOR (Nombre_Vendedor in nvarchar (20)) AS BEGIN Declare existe int default 0; Declare estado nvarchar (20); Set existe = (SELECT COUNT (*) FROM VENDEDOR WHERE nombre = Nombre_Vendedor) If existe > 0 then Set estado = ‘ya existe el vendedor’; Else Insert Into VENDEDOR (nombre) VALUES (Nombre_Vendedor); Set estado = ‘ingreso exitoso’; Endif; END; DISPARADORES Se activa al momento que se realice alguna actividad la cual poder ser una inserción, actualización. O eliminación. Sintaxis. CREATE OR REPLEACE TRIGGER nombre_disparador [BEFORE/AFTER] [DELETE/INSERT/UPDATE] OF nombre_de_columna ON nombre_tabla [FOR EACH NOW] [DECLARE] [nombre_variable_tipo_de_dato [:=valor_inicial]] BEGIN Instrucciones END; CREATE TRIGGER nombre_disparador On NOMBRETABLA FOR EVENTO- insert, update o delete As SENTENCIAS Ejemplo CREATE TRIGGER dis_empleados_insertar ON empleados FOR INSERT AS Declare @maximo decimal(8,2) Set @maximo=(SELECT sueldomaximo FROM secciones join inserted ON inserted.codigoseccion=secciones.codigo) If (@maximo< (SELECT sueldo FROM inserted)) BEGIN Declare @mensaje varchar (40) Set @mensaje='El sueldo debe ser menor a '+cast (@maximo as Char (8)) raiserror(@mensaje, 16, 1) ROLLBACK transaction END; SISTEMA BASES DE DATOS EN DIFERENTES PLATAFORMAS BANCO DE DATOS Conjunto de datos, de informaciones que son agrupadas y mantenidas en un mismo soporte a modo de facilitar su acceso. Cuando hablamos de un banco de datos estamos señalando que esta información está clasificada y ordenada de acuerdo a diferentes parámetros ya que la misma puede ser solicitada muy a menudo con diversos fines. Los bancos de datos pueden ser estáticas (solo de lectura) o dinámicas (permiten edición). (Wikipedia, 2015) EXPLORACION DE DATOS, MINERIA DE DATOS. Es un mecanismo de explotación que permite explorar grandes base de datos, de manera automática o semiautomática con el objetivo de encontrar patrones repetitivos, tendencia o reglas, que expliquen el comportamiento de los datos en un determinado contexto. Además de que la minería es la principal herramienta de ayuda en la toma de decisiones tácticas y estratégicas. La minería de datos se basa en tres conceptos: • Estadística clásica. • Inteligencia artificial. • Aprendizaje automático. La minería de datos se divide en: • Minería de datos predictiva: usado para la estadística. • Minería de datos para descubrimiento de conocimiento: para la inteligencia artificial. Características de la minería. • Las herramientas de la minería de datos se combinan fácilmente y pueden analizarse y procesarse rápidamente. • Uso de procesos paralelos. • Hurgar y sacudir implica el descubrimiento de resultados valiosos. • La arquitectura que posee la minería es la de cliente servidor. • Busca los datos en los almacenes de datos. Los usuarios que participan en la minería de datos son: • Analistas empresariales. Produce, consultas y reportes • Peritos en estadística • Profesionales en tecnología de la información. Proceso de la minería de datos. • Selección de objetivos: de acuerdo a lo que el cliente desee. • Preparación de datos: se refiere a la preparación de la base de datos. • Construcción del modelo: de acuerdo a los objetivos. • Análisis de resultados. Se determina si los resultados son novedosos y si ayudan en la toma de decisiones. Extensiones en la minería de datos. • Web mining: aplicación de la minería de datos en la web. • Text mining: aplicación de la minería de datos en los documentos: Aplicación de la minería de datos: • En la empresa: detección de fraudes, formas de compras en supermercados, recursos humanos. BASE DE DATOS DISTRIBUIDAS. Almacena datos que pertenecen lógicamente a un solo sistema, pero se encuentra físicamente esparcido en varios “sitios” de la red. Un sistema de base de datos distribuidos se compone de un conjunto de sitios, conectados entre sí mediante algún tipo de red de comunicaciones. Estas pueden ser: • • Homogéneas: tiene el mismo sistema gestor de base de datos (SGBD). Heterogéneas. El SGBD es distinto en cada sitio. Sistema de Gestión de Base de Datos Distribuida. Es un sistema de gestión de base de datos que gestiona la BD distribuida. Funciones: • Acceso a sitios remotos. • Establece las estrategias de ejecución de las consultas. • Decide a que copia de datos acceder. • Mantiene la consistencia de las copias de los datos replicados. • Realiza la recuperación ante los fallos. Componentes: • Hardware. Solo necesita servidores y una red. • Software. a) Sistema manejador de base de datos distribuida (DDBMS). Está formado por las transacciones y los administradores de las base de datos. b) Administrador de transacciones distribuidas (DTM). Encargado de coordinar y controlar las solicitudes de procesamiento de los programas de consultas o transacciones y las traduce en acciones para los administradores. c) Sistema manejador de base de datos (DBMS). Procesa cierta porción de la base de datos. Se encarga de recuperar y actualizar datos del usuario y generales de acuerdo a los comandos de los DTM. d) Nodo. Es una computadora que ejecuta un DTM o un DBM o ambos. Un nodo transacción ejecuta un DTM y un nodo de base de datos un DBM. Distribución de los datos: • • • • Centralizada. Los usuarios están distribuidos, maneja el modelo Cliente/Servidor y lo único que realiza es una transacción distribuida. Replicadas. Se realiza una copia de toda la base de datos y se la coloca en cada sitio, la desventaja que tiene es que es de un alto costo, aunque es de gran ayuda si el sistema solo es de lectura y en él no se escribe mucho. Además nos da fiabilidad y disponibilidad. Particionadas o Fragmentadas. Hay una copia de cada elemento, pero la información está distribuida a través de los nodos. Hibrida. Combinación de partición y replicación. Se particional la relación y a la vez los fragmentos están selectivamente replicados a través del sistema del BDD. Tipos de Arquitecturas/implementaciones. Se toma en cuenta: • Distribución. Los componentes del sistema están en la misma computadora o no. • Heterogeneidad. Que se heterogéneo. • Autonomía. En el diseño, comunicación, de ejecución. Ventajas: • Mejora en la estructura organizacional, debido a que los datos están en el área que le corresponde. • Autonomía Local: Un departamento puede controlar los datos que le pertenecen. • Disponibilidad: algún fallo solo afecta a cierta área no a todo el sistema. • Rendimiento: trabajo en paralelo por lo cual balancea la carga de los servidores. • Economía: es más barato crear una red de computadoras pequeñas, que tener una sola muy poderosa. • Modularidad: se puede agregar, modificar o quitar sistema de la base de datos sin afectar a los demás. Desventajas • Complejidad: se debe asegurar que la base de datos sea transparente. • Economía: necesita mayor mano de obra. • Seguridad: tanto en la infraestructura como en cada sistema. • Falta de experiencia: falta de personal con experiencia en el campo. • Carencia de estándares: no existen herramientas o metodologías que ayuden. GESTORES DE BASES DE DATOS EN EL MERCADO ACTUAL • SQL: es el lenguaje de programación estructurado de las bases de datos Oracle y su estructura es muy similar a la de cualquier otro lenguaje con procedimientos como C o C++. • SERVER: Sistema que proporciona recursos (por ejemplo, servidores de ficheros, servidores de nombres). En Internet, este término se utiliza a menudo para designar los sistemas que proporcionan información a los usuarios de la red. • ORACLE: es un sistema de gestión de base de datos relacional (o RDBMS por el acrónimo en inglés de Relational Data Base Management System), desarrollado por Oracle. • Adabas: (Adaptable Database System), es una base de datos de listas invertidas. • SQL Server: es un sistema de gestión de bases de datos relacionales (SGBD) basado en el lenguaje Transact-SQL, y específicamente en Sybase IQ, capaz de poner a disposición de muchos usuarios grandes cantidades de datos de manera simultánea. • Access es un programa Sistema de gestión de base de datos relacional creado y modificado por Microsoft para uso personal de pequeñas organizaciones. • Db2 es una marca comercial, propiedad de IBM, bajo la cual se comercializa el sistema de gestión de base de datos.DB2 versión 9 es un motor de base de datos relacional que integra XML de manera nativa, lo que IBM ha llamado pureXML, que permite almacenar documentos completos dentro del tipo de datos xml para realizar operaciones y búsquedas de manera jerárquica dentro de éste, e integrarlo con búsquedas relacionales. • PostgreSQL es un sistema de gestión de base de datos relacional orientada a objetos de software libre, publicado bajo la licencia BSD. ALGORITMOS DE CODIFICACION, COMPRESION, DETECCION Y CORRECCION DE ERRORES Codificación • Shannon-Fanon • Huffman-Greedy Compresión de datos • Codificación de fuente • Códigos no-singulares • Códigos unívocamente decodificables o Extensión de código • Códigos prefijo (o códigos instantáneos) Detección de errores • Bits de redundancia o Métodos de control de errores ▪ Paridad ▪ Códigos autochequeo y autocorrectores ▪ Códigos de bloque ▪ Distancia Hamming ▪ ▪ Paridad horizontal y vertical Códigos lineales ▪ Códigos cíclicos ▪ CRC16 ▪ CRC32 RESPALDOS Definición de respaldo de información La palabra "Backup" significa subir respaldo, siendo común el uso de este término dentro del ámbito informático. El respaldo de información es la copia de los datos importantes de un dispositivo primario en uno ó varios dispositivos secundarios, ello para que en caso de que el primer dispositivo sufra una avería electromecánica ó un error en su estructura lógica, sea posible contar con la mayor parte de la información necesaria para continuar con las actividades rutinarias y evitar pérdida generalizada de datos. Métodos para el respaldo de información Manual: el usuario copia directamente los archivos a respaldar por medio de comandos ó por medio del explorador de archivos de su respectivo sistema operativo. Otra forma de realizar las copias de seguridad es por medio de una aplicación que permita la creación de la copia al momento y con los datos existentes hasta ese momento, regularmente los datos se almacenan en forma de archivos comprimidos para ahorrar espacio. Ejemplo Microsoft® Copia de Seguridad. Automático: por medio de una aplicación especializada, el usuario programa los archivos a guardar y este respaldo se va actualizando en tiempo real (simultáneamente), conforme se van registrando cambios en los archivos. La manera más moderna de realizar los respaldos, es por medio de aplicaciones basadas en el uso de Internet, ya que por medio de la contratación de servicios de pago ó libres de pago, se pueden programar rutinas de respaldo, que permiten guardar copias de seguridad en servidores Web. Entre los dispositivos y servicios para respaldo de información están los siguientes: Cintas de almacenamiento: son los dispositivos por excelencia que mas se habían utilizado, debido a su bajo costo y gran capacidad de almacenamiento, aunque su lentitud era la desventaja. Desde el dispositivo de almacenamiento principal, se copian los archivos hacia la unidad que escribe/lee las cintas. Servidores Web: actualmente por medio de Internet, es posible subir los archivos a respaldar al servidor de algún proveedor, esto se hace por medio de la red. Tiene la desventaja de que la conexión tiene que ser muy veloz y segura, para evitar que los datos sean interceptados mientras llegan al servidor. Discos duros: actualmente estos son los que dominan el mercado, ya que cuentan con una muy alta capacidad para guardar datos, tanto en empresas como en el entorno doméstico ya que tiene una alta velocidad de lectura/escritura. Simplemente se copian los archivos del dispositivo primario al disco duro. Discos espejo de servidores: se trata de discos duros que se van autocopiando mientras se trabaja de manera normal, conforme el disco duro principal de una computadora va modificando su información, una computadora anexa va clonando las acciones de este. Esto se logra mediante una aplicación especial instalada en ambas computadoras, así, si él principal falla, se auto activa el otro como primario mientras se resuelve la avería del sistema. RECUPERACIÓN El escenario más común de "recuperación de datos" involucra una falla en el sistema operativo (típicamente de un solo disco, una sola partición, un solo sistema operativo), en este caso el objetivo es simplemente copiar todos los archivos requeridos en otro disco. Esto se puede conseguir fácilmente con un Live CD, la mayoría de los cuales proveen un medio para acceder al sistema de archivos, obtener una copia de respaldo de los discos o dispositivos removibles, y luego mover los archivos desde el disco hacia el respaldo con un administrador de archivos o un programa para creación de discos ópticos. Estos casos pueden ser mitigados realizando particiones del disco y continuamente almacenando los archivos de información importante (o copias de ellos) en una partición diferente del de la de los archivos de sistema en el sistema operativo, los cuales son reemplazables. Otro escenario involucra una falla a nivel de disco, tal como un sistema de archivos o partición de disco que esté comprometido, o una falla en el disco duro. En cualquiera de estos casos, los datos no pueden ser fácilmente leídos. Dependiendo de la situación, las soluciones pueden estar entre reparar el sistema de archivos, la tabla de particiones o el registro maestro de cargado (MBR), o técnicas de recuperación del disco duro que van desde la recuperación basada en software de los datos corruptos a el reemplazo del hardware de un disco dañado físicamente. Si la recuperación del disco duro es necesaria, el disco de por sí típicamente ha fallado de manera permanente, y el propósito en vez de una recuperación de una sola vez, es el de rescatar cualquier dato que pueda ser leído. En un tercer escenario, los archivos han sido "borrados" de un medio de almacenamiento. Típicamente, los archivos borrados no son realmente eliminados de inmediato; en vez de ello, las referencias a ellos en la estructura de directorios ha sido removida, y el espacio que éstos ocupan se hace disponible para su posterior sobre-escritura. En el transcurso de esto, el archivo original puede ser recuperado. Aunque hay cierta confusión acerca del término, la "recuperación de datos" puede también ser usada en el contexto de aplicaciones de informática forense o de espionaje. AREA DE DESARROLLO DE SOFTWARE ESTRUCTURAS DE DATOS ESTATICAS Es aquella en las que el tamaño se ocupa la memoria antes de que se ejecute el programa y no puede modificarse dicho tamaño durante la ejecución del programa. Su principal característica es que ocupan solo una casilla de memoria, por lo tanto una variable simple hace referencia a un único valor a la vez, dentro de este grupo de datos se encuentra: a) b) c) d) e) f) Enteros Reales Caracteres Boléanos Enumerados Subrangos. DINAMICAS No tiene las limitaciones o restricciones en el tamaño de memoria ocupada que son propias de las estructuras estáticas. Mediante el uso de un tipo de datos especifico, denominado puntero, es posible construir estructuras de datos dinámicas que no son soportadas por la mayoría de los lenguajes, pero que en aquellos que si tiene estas características ofrecen soluciones eficaces y efectivas. Estructura de datos dinámicos 1- Lineales a) Pila b) Cola c) Lista 2- No Lineales a) Arboles b) Grafos METODOS Y MODELOS DE DESARROLLO DE SOFTWARE Un proceso de software detallado y completo suele denominarse “Metodología”. Las metodologías se basan en una combinación de los modelos de proceso genéricos (cascada, evolutivo, incremental, espiral entre otros). Adicionalmente una metodología debería definir con precisión los artefactos, roles y actividades involucrados, junto con prácticas y técnicas recomendadas, guías de adaptación de la metodología al proyecto, guías para uso de herramientas de apoyo, etc. Habitualmente se utiliza el término “método” para referirse a técnicas, notaciones y guías asociadas, que son aplicables a una (o algunas) actividades del proceso de desarrollo, por ejemplo, suele hablarse de métodos de análisis y/o diseño. EVOLUCION HISTORICA DE LAS METODOLOGIAS DE DESARROLLO DE SOFTWARE El desarrollo de los sistemas tradicionales de ciclo de vida se originó en la década de 1960 para desarrollar a gran escala funcional de sistemas de negocio en una época de grandes conglomerados empresariales. La idea principal era continuar el desarrollo de los sistemas de información en una muy deliberada, estructurada y metódica, reiterando cada una de las etapas del ciclo de vida. Los sistemas de información en torno a las actividades resueltas pesadas para el procesamiento de datos y rutinas de cálculo. Metodologías de Desarrollo de Software tiene como objetivo presentar un conjunto de técnicas tradicionales y modernas de modelado de sistemas que permitan desarrollar software de calidad, incluyendo heurísticas de construcción y criterios de comparación de modelos de sistemas. Para tal fin se describen, fundamentalmente, herramientas de Análisis y Diseño Orientado a Objetos (UML), sus diagramas, especificación, y criterios de aplicación de las mismas. Como complemento se describirán las metodologías de desarrollo de software que utilizan dichas herramientas, ciclos de vida asociados y discusión sobre el proceso de desarrollo de software más adecuado para las diferentes aplicaciones ejemplos que se presentarán. Principalmente, se presentará el Proceso Unificado el cual utiliza un ciclo de vida iterativo e incremental. • Kendall y Kendall I. Identificación del problema, oportunidades y objetivos. II. Determinación de los requerimientos de información. III. Análisis de las necesidades del sistema. IV. Diseño del sistema recomendado. V. Desarrollo y documentación del software. VI. Pruebas y mantenimiento del sistema. VII. Implantación y evaluación del sistema. • James Senn I. Ciclo de vida y desarrollo del sistema. II. Desarrollo por análisis estructurado III. Prototipo del sistema. • Llorens Fabregas I. Requerimientos. II. Análisis/Diseño. III. Construcción. IV. Pruebas. V. Producción y mantenimiento. • Jonas Montilva I. Definir el proyecto. II. Análisis del contexto. III. Definición de los requerimientos. IV. Diseño preliminar. V. Diseño detallado. • Roger Pressman I. Análisis de los requerimientos del Software. II. Diseño. III. Generación de código. IV. Pruebas. V. Mantenimiento. Metodologías de desarrollo de software 1970 • Programación estructurada sol desde 1969 • Programación estructurada Jackson desde 1975 1980 • Structured Systems Analysis and Design Methodology (SSADM) desde 1980 • Structured Analysis and Design Technique (SADT) desde 1980 • Ingeniería de la información (IE/IEM) desde 1981 1990 • Rapid application development (RAD) desde 1991. • Programación orientada a objetos (OOP) a lo largo de la década de los 90's • Virtual finite state machine (VFSM) desde 1990s • Dynamic Systems Development Method desarrollado en UK desde 1995. • Scrum (desarrollo), en la última parte de los 90's • Rational Unified Process (RUP) desde 1999. • Extreme Programming(XP) desde 1999 Nuevo milenio • Enterprise Unified Process (EUP) extensiones RUP desde 2002 • Constructionist design methodology (CDM) desde 2004 por Kristinn R. Thórisson • Agile Unified Process (AUP) desde 2005 por Scott Ambler GENERACION DE METODOLOGIAS • Desarrollo Convencional a) Los resultados finales son impredecibles b) No hay forma de controlar lo que está sucediendo en el proyecto. c) Los cambios organizativos afectan negativamente el proceso de desarrollo. • Desarrollo Estructurado a) Identificación de los problemas, oportunidades y objetivos. Es la primera fase del ciclo de vida del desarrollo de sistemas, el encargado de esta fase es el analista. La identificación de los problemas es fundamental para el desarrollo ya que es donde se centrara el proyecto, las oportunidades que se vayan a identificar podrían darle una ventaja competitiva a la empresa ya que estas se pretenden mejorar con los proyectos. Los objetivos también son importantes identificarlos debido a que nos permite saber qué hace la empresa y como poder ayudarle con el sistema. Las personas que se involucran en esta etapa son los usuarios, analistas y los administradores de sistemas. b) Determinación de los requerimientos del factor humano. Esta fase nos sirve para determinar las necesidades de los usuarios involucrados, mediante el uso de herramientas como, entrevistas, muestreos e investigación de datos duros, cuestionarios y los métodos discretos como, observación. c) Análisis de las necesidades del sistema. Por medio de herramientas como los diagramas de flujo se puede observar cuales son los requerimientos del sistema, como entradas, procesos y salidas, en esta etapa el analista prepara una propuesta en base a lo que ha averiguado de los usuarios. d) Diseño del sistema recomendado. Se utiliza la información antes recolectada para el diseño lógico del sistema, se diseña las interfaces es con la ayuda de los usuarios, también se diseña la base de datos, también se diseña las salidas que satisfagan las necesidades de los usuarios, también se debe diseñar controles y procedimientos de respaldo para proteger el sistema y los datos. e) Desarrollo y documentación del software. En esta fase se trabaja con los programadores para desarrollar el software original y además se crea la documentación efectiva para el software, como manuales. La documentación indica a los usuarios como deben usar el software y que deben de hacer en caso de problemas. f) Prueba y mantenimiento del sistema. Las pruebas nos permiten detectar si existe algún problema antes de entregarles a los clientes el producto. El mantenimiento del sistema empieza en esta fase y se realiza durante toda la vida del sistema. g) Implementación y evaluación del sistema. Es esta fase se inicia con la capacitación de los usuarios, además es planea un conversión del sistema antiguo al nuevo este proceso implica instalar equipo, convertir datos, etc. La evaluación nos indica si los usuarios están usando el sistema. • Desarrollo Ágil. Es una metodología que se basa en valores, principios y prácticas básicas. Los cuatro valores son comunicación, simpleza, retroalimentación y valentía. La metodología ágil se caracteriza por dos palabras interactivas e incrementales. a) Exploración. Se estima el tiempo, con que personal se trabajara y con las tecnologías potenciales necesarias para crear el sistema. b) Planeación. En esta etapa se define la fecha en que se entregara las soluciones a los problemas más estresantes de la empresa. c) Iteraciones para la liberación de la primera versión. Nos sirven para mostrar lo que se espera entregar, además de darnos retroalimentación y modificación de lo que se tiene. d) Puesta en Producción. En esta fase se libera el producto. e) Mantenimiento. Una vez liberado el sistema, debe seguir funcionando sin problemas. Es posible agregar características. • Desarrollo Orientado a Objetos Es una metodología diñada para facilitar el desarrollo de sistemas que deben cambiar con rapidez en respuesta a los entornos empresariales dinámicos. Utilizan UML, para descomponer el sistema en un modelo de caso de uso. Los objetos pueden ser clientes, artículos, pedidos, etc. Los objetos representan y agrupan mediante clases, las cuales son ideales para la reutilización y la facilidad de mantenimiento a) Definir el modelo de caso de uso. Se identifica a los actores y los eventos principales iniciados por los actores. b) Durante la fase de análisis de sistemas, empezar a dibujar diagramas de UML. Se dibujan diagrama de actividad, los cuales ilustran todas las principales actividades en el caso de uso. Además se crea uno o más diagramas de secuencia. c) Continua la fase de análisis, desarrollar diagramas de clases. d) Aun en la fase de análisis, dibujar diagramas de estado. Los diagramas de clases sirven para dibujar diagrama de estado, los cuales ayudan a comprender procesos complejos. e) Empezar el diseño de sistemas mediante la modificación de los diagramas de UML. f) Desarrollar y documentar el sistema. UML, solo nos da un modelo, por lo cual es necesario poder desarrollarlo. A menudo las metodologías orientadas a objetos se enfocan en iteraciones pequeñas y rápidas de desarrollo, a lo que algunas veces se le conocen como el modelo de espiral. CARACTERISTICAS DESEABLES DE UNA METODOLOGIA. • • • • • • • • • • • Existencia de reglas predefinidas Cobertura total del ciclo de desarrollo Verificación intermedias Planificación y control Comunicación efectiva Utilización sobre un abanico de amplio de proyectos Fácil formación Herramientas CASE Actividades que mejoren el proceso de desarrollo Soporte al mantenimiento Soporte de la reutilización de software METODOLOGIAS EN COMPARACION CON EL CICLO DE VIDA DE DESARROLLO DE SOFTWARE MODELOS DE PROCESO EN EL DESARROLLO DE SOFTWARE. • Modelo de la cascada Está compuesto por una serie de fases que se ejecutan secuencialmente. Utilizado mayormente cuando se necesita una actualización o mejora a un sistema ya existente. Desventajas de su uso • Es raro que los proyectos reales sigan el flujo secuencial del proyecto. • Es difícil que un cliente indique cuales son los requerimientos. • El cliente debe tener paciencia, ya que tendrá resultados hasta el final. • Dependencia de fases. Ventajas de su uso. • Solo en proyectos donde se conocen los requerimientos y estos son fijos. • Modelo Incremental Este modelo permite entregar etapas del proyecto funcionales, hasta llegar a su finalización. El modelo de proceso incremental se centra en que en cada incremento se entrega un producto que ya opera. Los primeros incrementos son versiones desnudas del producto final, pero proporcionan capacidad que sirve al usuario y también le dan una plataforma de evaluación. Útil cuando no se dispone de mucho personal, debido a que si los primeros incrementos son bien recibidos entonces se agrega el personal necesario para las posteriores etapas. • Modelos de proceso evolutivos. Su uso se debe a que en el proceso de desarrollo del software, puede que el proyecto presente cambios en los requerimientos estipulados anteriormente. PROTOTIPOS • • • • • El modelo de proceso de prototipos comienza con la comunicación, en la cual se definen los requerimientos y los objetivos generales. Se planea rápidamente una iteración para hacer el prototipo. se lleva a cabo el modelado (en forma de un “diseño rápido”), Este se centra en la representación de aquellos aspectos del software que serán visibles para los usuarios finales. El diseño rápido lleva a la construcción de un prototipo. Este es entrega y es evaluado por los participantes, que dan retroalimentación para mejorar los requerimientos. La iteración ocurre a medida de que el prototipo es afinado para satisfacer las necesidades de distintos participantes, y al mismo tiempo le permite a usted entender mejor lo que se necesita hacer. La idea es que el prototipo sirva para identificar los requerimientos del software. Desventajas de su uso. • • Puede ser que los clientes piensen que es la versión final, lo cual puede ocasionar que el proyecto se estanque, a su vez afecta la calidad del software. Se utilizan herramientas como sistemas operativos o lenguajes de programación que se tiene a disposición y no se busca el ideal para el sistema. ESPIRAL Propuesto por Barry Boehm, es un modelo evolutivo del proceso de software impulsado por el riesgo y se acopla con la naturaleza iterativa de hacer prototipos con los aspectos controlados y sistemáticos del modelo de cascada. Características. • • Enfoque cíclico, es decir permite el crecimiento incremental del grado de definición de un sistema y su implementación, mientras que disminuye el grado de riesgo. Punto de referencia de anclaje puntual, para asegurar el compromiso del participante con soluciones factibles y mutualmente satisfactorias. PROGRAMACION EXTREMA. Utilizado en la metodología ágil. Involucre ir descubriendo la solución, en la medida que se va avanzando en el desarrollo. Hay poca documentación, mucha interacción con el cliente/usuario Características • • • Desarrollo iterativo e incremental. Pruebas unitarias continuas. Programación en parejas. RAD. Este modelo se basa en el modelo lineal secuencial llevado a cabo por varios equipos de trabajo que siguen las etapas del proceso, es aplicable a la construcción de sistema de información fácilmente modularizables. Modelado de Gestión: el flujo de información entre las funciones de la empresa se define respondiendo a preguntas como que información del motor del proceso de negocio, lo que se genera, que la genera, donde va la información, que lo procesa y así sucesivamente. Modelado de Datos: la información de datos definidos en la fase de modelado de negocio, se refina en un conjunto de objetos de datos que se necesitan para apoyar el negocio. Modelado de procesos. Se transforman los datos para lograr el flujo de la información, se utiliza para implementar una función de negocio, descripciones de procesamiento se crean para añadir, modificar, eliminar o recuperar un objeto de datos. Generación de aplicaciones. La herramientas automatizadas que se utilizan para facilitar la construcción del software, e incluso que utilizan las técnicas GL cuerto. Pruebas de entrega. Este modelo se enfoca más a la codificación que a la documentación. Y tiene un lapso máximo de tiempo de 90 días. CLASIFICACION DE LAS METODOLOGIAS SEGUN EL MODELO DE PROCESO. • • • Metodología Estructural. a) Modelo de Cascada. b) Incremental. Metodología Ágil. a) Modelo de Prototipos. b) RAD. c) Programación Extrema. Metodología Orientada a Objetos. a) Espiral b) RAD. CLASIFICACION DE LAS METODOLOGIAS SEGÚN SU ENFOQUE. • • • Lineal a) Modelo de Cascada Iterativo. a) Prototipos b) Programación extrema. c) RAD. Iterativo y línea. a) Incremental. b) Espiral. MODELOS DE PROCESOS UTILIZADOS EN EL DESARROLLO DE SOFTWARE. • • • • Cascada Prototipos Incremental. Espiral. ARQUITECTURA DE SOFTWARE DOCUMENTOS DE DISEÑO: ARQUITECTONICO Y DETALLADO, MATRIZ DE TRAZADO. Parte 1: Descripción General. • Propósito del sistema. propósito del sistema a desarrollar • Alcance. Alcance del sistema a desarrollar • Definiciones, acrónimos y abreviaciones. Listado con su significado. • Referencias. Referencia de los documentos utilizados para construir el DD. • Descripción general. Describe a grandes rasgos, el sistema a desarrollar. • Servicios a brindar por el producto. Que servicios brinda el producto (consultas, etc.) Parte 2: Diseño Arquitectónico. Relacionado con el diseño macro-componentes del sistema, relacionado con los requerimientos antes encontrados. Se divide en: • Arquitectura Física. a) Expresa cuales son los componentes físicos (cliente, servidor, servidor web, BD) que se utilizaran y como se relacionan entre ellos. b) Consta de uno o más diagramas, y la explicación de los mismos (actores y relaciones entre ellos). c) La arquitectura física es una formalización del ambiente operacional. Existen arquitecturas como la de tres capas, su auge se debe a que actualmente se está utilizando más las aplicaciones web. • Arquitectura Lógica. a) Indica cuales son los componente lógicos (subsistemas, o macro-sistemas) que participan en nuestra solución, y la relación entre ellos. b) Utilización de diagramas (Diagramas de Datos, de clases, de bloques, de casos de uso) • Modelo de datos. a) El modelo de datos consiste en identificar gráficamente las entidades (o tablas) que participan en el sistema. b) Identificación de llaves. Parte 3: Diseño Detallado. Relacionado con el diseño de las micro-componentes del sistema, en base a los requerimientos y el diseño arquitectónico. El diseño detallado se especifica a través de: • Diseño detallado por Módulos. Se mantiene las interfaces de entrada/salida, cada módulo del sistema debe tener un identificador. ID, Nombre (o Descripcion), Subsistema, Funcion, Parametros de Entrada, Parametros de Salida. • Modelo de Navegación. • Interfaz de Usuario. a) Patrón de interfaz a usar (si hay alguno). b) Diseño de cada interfaz. • Diccionario de Datos. a) Complemento de los puntos anteriores. b) Posee dos componentes, especificación de procesos y de datos. 1- Procesos. Para cada módulo del diseño detallado por módulos, se indica su función, los parámetros que recibe, y los parámetros que retorna. 2- Datos. Por cada tabla se especifican los campos y su formato. Parte 4: Matriz de Trazado. Es un elemento de control, su función es de ver que el diseño refleje los requisitos especificados además de ver la calidad del diseño. Su trabajo se realiza en paralelo con el diseño. Se han creado diferentes técnicas y modelos para soportar la práctica de trazabilidad durante el proceso de desarrollo de software. La técnica más común y aplicable a cualquier modelo de desarrollo es la construcción de matrices de trazado, que hacen posible el análisis de la correlación entre elementos de un mismo modelo y entre modelos en diferentes niveles de abstracción. Por ejemplo, en la figura 1 se muestra una de las matrices más comunes de trazado: la de Requisitos y Casos de Uso, la cual permite verificar en qué casos de uso son representados y especificados los requisitos funcionales solicitados desde el espacio del problema. Otro ejemplo es la matriz CRUD (Create, Retrieve, Update and Delete). Permite analizar las operaciones que deben realizarse sobre la base de datos a partir de la correlación entre tablas y funciones y entre otros elementos de la base de datos. La construcción de estas matrices trae beneficios, más allá de un simple registro de la correlación o dependencia entre los elementos de los modelos. A partir de ellas es posible analizar características tales como el nivel de especificación de los requisitos, el nivel de participación de los usuarios, el costo asociado a cada fase de desarrollo, la arquitectura requerida, el plan de las pruebas, etc. Otra de las ventajas de estas matrices es que, si se actualizan continuamente, pueden servir como herramienta de soporte muy útil para el personal encargado del mantenimiento y las pruebas del sistema. De otra parte, esta práctica puede ser costosa y tediosa para sistemas de gran tamaño o complejos. Algunas herramientas CASE posibilitan la generación automática de estas matrices o de forma automática generan elementos de un modelo a otro en diferentes niveles de abstracción (p. ej. del modelo de análisis al modelo de diseño), para obtener así una correlación (mapping) de trazado; sin embargo, no todos los elementos pueden ser correlacionados de forma automática o simplemente no tienen elementos definidos en los modelos destino. TRABAJO EN EQUIPO Trabajar en equipos se deba a que los proyectos son cada vez más grandes, además de ser más necesarios los especiales y los grupos interdisciplinarios. El trabajar en equipo no ayuda a competir, mejorar y a su vez nos permite poder asumir desafíos más grandes. El funcionamiento de los grupos se puede dividir en: • • • • Democrático. No hay un líder, las decisiones se toman por votos. Las desventajas son; difícil de implementar, solo es para grupos chicos, a menudo cuesta más llegar a una decisión, no todo se puede llevar a votación. Jerárquico. Hay un responsable por nivel, y rol. Los procedimientos claros para casi todo. Todas las comunicaciones se realizan a través del jefe, las ventajas que ofrece son; pocos canales de comunicación, fácil toma de decisiones, se está acostumbrado a trabajar así, mejor comunicación cliente/usuario. Desventajas el jefe tiene que estar en todo, no es aplicable en proyectos grandes, dependencia del personal, Supervisado. Es administrado por dos personas; el manager y el team leader (técnico). Las ventajas que nos ofrece son; los administradores pueden desempeñar el cargo del otro, con óptimos resultados si las personas tienen mucha experiencia y profesionalismo. Las desventajas son que hay decisiones que son tanto del área técnica como gerencial, necesita de un buen entendimiento de los administradores, además de un gran profesionalismo y compromiso. Mezclas. Cada equipo debe estar formado por pequeños equipos (de 3 a 4 personas), con responsabilidades y atribuciones claras. Cada miembro trabajara en forma individual. Los equipos de trabajo deben considerar 5 temas críticos: • • • • Clarificar la visión compartida del proyecto. Cada miembro del equipo debe tener la confianza de poder expresar su visión del proyecto. Construir la cooperación y la confianza. Conocimientos delos principios morales básicos, es necesario tener en cuenta que el éxito es de todos, a menudo lo que nosotros esperamos o exigimos de alguien, se vuelve lo que recibimos de el. No se debe ser negativo, no ser idealista, no ser egocéntrico, ser objetivo, clarificar. Establecer responsabilidades y atribuciones. Establecer cuál es la tarea de cada miembro y que resultados nos brindara su trabajo, y además que otros miembros del equipos necesitan esos resultados. Establecer la organización y utilización de los recursos. Identificación de los recursos, y quien tiene acceso a ellos, asignación de los mismos de manera equitativa. • Definir las actividades de supervisión. Es cuando en una reunión se verifica el progreso del proyecto es puede ser por medio de revisiones grupales, reuniones y controles para recibir información. Además nos permite determinar el éxito de proyecto. Equipos vs. Grupos. Grupos Líder fuerte Responsabilidad individua Persigue metas organizacionales Se delega trabajo Alienta el individualismo Equipos Liderazgo compartido. Responsabilidad individual y grupal Persigue metas del equipo Se trabaja en conjunto Estrecha vínculos entre los miembros. Los equipos y buenos resultados, son conceptos inseparables. Claves del éxito de los equipos • • • • • • Compromiso común. Definición de objetivos específicos Mezcla de experiencia. Se mide el rendimiento grupal e individual. Existen acuerdos. Identificación del administrador del proyecto y de sus colaboradores. Administrador del proyecto Habilidades y destrezas de un administrador efectivo. • • • • • • • • • • • • Capacidad de administración Análisis Negociación Comunicación verbal y escrita Escuchar Motivar Toma de decisiones. Alta coordinación Definir los niveles de opinión Información fluida Nivel de autorización frente a terceros. Protección del grupo respecto a perturbaciones externas. COSTOS Y TIEMPO. Medidas del software. Planeación -> estimar tiempos y recursos -> estimar tamaño del software - > medida del software. Medida directa. Peso, altura Medida Indirecta. Velocidad. Predicción. Estimación de tamaño que no existe en ese momento. Es solo un aproximación a la medida correcta. Modelo COCOMO simple Relaciona el esfuerzo E (meses-hombre) con el tamaño S (MLOCS) de acuerdo a: E=a*Sb Donde a y b son parámetros determinados por el tipo de software a ser desarrollado. Es un sistema de predicción de costos. Medir cada Fase (análisis, diseño, ...) ➔ Para mejorar Medir a paquete completo ➔ Para estimar mejor. Sistemas de Predicción. • Se debe establecer empíricamente la precisión de la predicción. Métodos de estimación. • Wideband-Delphi. a) se usan a varios expertos que hacen converger hacia una estimación única. • Lógica Difusa. a) Se basa en comparar el tamaño/complejidad con información histórica de productos anteriores. • Componentes Estándares. a) Se basa en mantener una base de datos con información de componentes usados anteriormente. • Puntos de Función. a) Identifica 5 funciones, pantallas de captura de datos, de salida; consultas, archivos (tablas de BD), Interfaz (archivos compartidos de entrada y salida). • Factor de complejidad. Considera 14 aspectos Es mejor desarrollar un modelo propio, que use la información historia de la empresa. ARQUITECTURAS BASICAS. Por lo general las arquitecturas se adaptan según sea el caso donde se apliquen. • Cliente-Servidor. Modelo de aplicación distribuida en la que las tareas las provee un servidor o servidores y los solicitantes son los clientes. Ejemplo de ello son los servicios como Correo Electrónico o un Servidor de impresión. • Cliente servidor en internet. La separación es de un tipo lógico, el cliente es quien inicia las solicitudes y peticiones, recibe y espera las respuestas del servidor, pueden conectarse a varios servidores, El servidor al iniciarse espera a que lleguen las solicitudes, y envía las respuestas Ventajas a) Centralización del control, los accesos, recursos y la integridad son controlados por el servidor. b) Escalabilidad. Se pueden agregar más clientes y servidores por separado. c) Fácil mantenimiento. Debido a que están distribuidas las funciones y responsabilidades en varios ordenadores es más fácil realizar el mantenimiento. d) Existen tecnologías, las cuales se están especializadas para este tipo de arquitectura, para cubrir la seguridad, interfaces, transacciones. Desventajas. a) Congestión de tráficos, se da cuando muchos clientes envían solicitudes al mismo servidor. b) Puede caer, si el servidor colapsa no se podrá realizar ninguna transacción. c) El software y Hardware. Es necesario contar con el equipo necesario. d) El Cliente no dispone de los recursos que puedan existir en el servidor. • Arquitectura de tres niveles. Es una especialización de la arquitectura cliente-servidor, su objetivo general es la separación de la lógica de negocios de la lógica de diseño. La ventaja principal es que se puede llevar a cabo en varios niveles y, en caso de que sobrevenga algún cambio, solo se ataca el nivel requerido sin tener que revisar todo el código mezclado. Capas y niveles. a) Capa de presentación. Es la interfaz gráfica, es decir es lo que ve el usuario, se presenta de una manera agradable y a su vez permite la captura de información. b) Capa de negocios. Es donde residen los programas que se ejecutan, y se comunica con la capa de datos. c) Capa de datos. Es donde residen los datos y es la encargada de acceder a los mismos. Formado por uno o más gestores de base de datos. Capa. Nos indica la forma como una solución segmentada desde el punto de vista lógico. Nivel. Nos indica en la forma que las capas están distribuidas. • Modelo vista Controlador Este modelo separa los datos y la lógica de negocio de una aplicación de la interfaz gráfica de usuario y el modulo encargado de gestionar los eventos y las comunicaciones. De manera genérica, los componentes de MVC se podrían definir como: a) Modelo: es la presentación de la información con lo cual el sistema opera, por lo tanto gestiona todos los accesos a dicha información, tanto consultas como actualizaciones. b) Controlador. Responde a eventos e invoca peticiones al modelo. También puede enviar comandos a vista, por tanto se puede decir que controlador hace de intermedio entre la vista y el modelo. c) Vista. Presenta el modelo, (interfaz gráfica). • • • OSI Es una arquitectura de red, creado en el año 1980 a) Nivel Físico. Encargada de la topología de red, definición del medio por los que va a viajar la comunicación, cable de pares trenzados, cable coaxial, fibra óptica. b) Nivel de Enlace de datos. Esta capa se ocupa del direccionamiento físico. Ethernet, Wi fi, Token rif c) Nivel de Red. Identifica el enrutamiento existente entre una o más redes. Su objetivo es que los datos lleguen desde el origen al destino. Uso de routers. d) Nivel de Transporte. Se encarga de trasportas los datos de la máquina de origen a la de destino. Utiliza los protocolos UDP, TCP. e) Nivel de Sesión. Encarga de mantener y controlar el enlace establecido entre dos hosts. f) Nivel de Presentación. Da un formato estándar a los datos, capas de cifrar y comprimir datos. g) Nivel de Aplicación. Permite a las aplicaciones poder acceder a los servicios de las demás capas y define los protocolos para intercambios datos, como correo electrónico, gestores de base de datos y servidor de ficheros, por UDP pueden viajar (DNS) Sistemas domóticas. Utilización de las Tecnologías de información y comunicación (TIC) Arquitectura orienta a servicios. Utilizado para diseñar y desarrollar sistemas distribuidos, permite la creación de sistemas de información altamente escalables que reflejan el negocio de la organización, a su vez brinda una forma bien definida de exposición e invocación de servicios. SOA es una arquitectura de aplicación en la cual todas las funciones están definidas como servicios independientes con interfaces invocables que pueden ser llamados en secuencias bien definidas para formar los procesos de negocio. • Arquitectura Orientada a Objetos. Conjunto de objetos que cooperan entre si en lugar de como un conjunto de procedimientos. Los objetos son discretos, independientes y poco acoplados, se comunican mediantes interfaces y permiten enviar y recibir peticiones. METRICAS Y REVISIONES DE SOFTWARE Métricas: es la medida de un concepto (generalmente) abstracto. Debe medirse de forma • Sistemática • Simple • Pertinente Se requiere una escala de medida para ese concepto Las métricas son utilizadas para medir, el cumplimiento de requisitos, etapa, hitos, impacto de proyecto. Ejemplo de métricas. • Cantidad y tipo de requisitos por proyecto • Cantidad y tipo de errores por proyecto. • Uso de componentes estándares • Duración del proyecto. Implementar métricas tiene sentido si es a largo plazo. Las revisiones de software sirven para validar la calidad y/o el estado de un producto, el cual puede ser un documento, un módulo, un prototipo. Las revisiones del software son un filtro para el proceso del software, sirven para descubrir errores y defectos a fin de poder eliminarlos, purifican los productos de la ingeniería del software. Consideraciones generales. • Lea el manual sobre protocolos de comunicación entre miembros del proyecto • Se revisa el trabajo, no al autor. • Se buscan defectos, no forma de implementar sus ideas. • Sigas las instrucciones del moderador, y los tiempos asignados a cada actividad. • Las criticas destructivas, no beneficia a nadie. Estas pueden ser: • Revisiones (entre pares). Orientado al código fuente, detecta errores o problemas de lógica y de programación en forma temprana. • Auditorias. Evalúa el nivel de conformidad con estándares y planes. • Caminatas. Está divida en tres fases, planificación (preparación) , ejecución(revisión) y seguimiento(post-revisión). • Inspecciones. Las revisiones nos ayudan. • Mantener el control del proyecto. • Publicitar el estado de avance del proyecto. • Identificar falencia. • Generará nuevas ideas. DISEÑO DOCUMENTACIÓN 1. Requisitos La sección de requisitos describe el problema que se está solventando junto con la solución. Esta sección de la documentación resulta interesante tanto para los usuarios como para los implementadores; no debería contener detalles sobre la estrategia de implementación en concreto. Las otras partes de la documentación del sistema no serán de interés para los usuarios, únicamente para los implementadores, los encargados del mantenimiento y demás personal. 1. Visión general Una explicación del objetivo del sistema y de la funcionalidad del mismo. 2. Especificación revisada: Si le facilitaron especificaciones detalladas del comportamiento del sistema, es probable que encuentre que ciertas partes del mismo se encuentran infraespecificadas o son ambiguas. En esta sección debería aclarar tanto cualquier suposición que haya hecho sobre el significado de los requisitos, como cualquier extensión o modificación de los mismos. 3. Manual de usuario: Una descripción detallada sobre cómo el usuario puede utilizar el sistema, qué operaciones puede llevar a cabo, cuáles son los argumentos de la línea de comando, etc. Las especificaciones detalladas de los formatos deberían relegarse al Apéndice. Cualquier suposición relativa al entorno debería explicitarse aquí: por ejemplo, observe si el programa sólo se ejecuta en ciertas plataformas, si supone que la jerarquía de un cierto directorio está presente, si existen otras aplicaciones, etc. Junto con la visión general, este manual debería proporcionar toda la información que un usuario del sistema necesita. 4. Funcionamiento (Análisis de requisitos): ¿Qué recursos necesita el sistema para una operación normal y qué espacio y tiempo se espera que consuma? 5. Análisis del problema: Una descripción clara del problema subyacente. Esto incluye el modelo conceptual que hay detrás del diseño (y posiblemente la interfaz de usuario), si no se ha tratado ya. El análisis del problema generalmente incluye uno o más modelos de objeto del problema, definiciones de sus conjuntos y relaciones y una discusión de asuntos complicados. Los objetos en los modelos de objeto del problema proceden del dominio del problema, no del código. Los modelos de objeto deberían incluir tanto diagramas como cualquier restricción textual fundamental, y deberían estar claramente expuestos para una correcta legibilidad. Esta parte también debería describir alternativas que hayan sido consideradas pero que se han rechazado, con razones, asuntos no resueltos o aspectos que no hayan sido totalmente aclarados y que vayan a solventarse más tarde. Puede que los casos de uso le resulten útiles cuando escriba la especificación revisada y/o el manual de usuario. Un caso de uso es un objetivo específico y una lista de acciones que un usuario lleva a cabo para conseguir dicho objetivo. Un cliente puede, entre otras cosas, examinar la lista de acciones para decidir si la interfaz de usuario es aceptable. Si la colección de casos de uso abarca todos los objetivos deseados por el usuario, el cliente puede tener la seguridad de que el sistema cumplirá con su objetivo. 2. Diseño La sección de diseño de su documentación proporciona un cuadro de alto nivel de su estrategia de implementación. 1. Visión general Una visión general del diseño: organización de alto nivel, cuestiones de diseño especialmente interesantes, uso de librerías y otros módulos de terceros e indicadores de aspectos no resueltos o proclives al cambio. También incluye problemas con el diseño: decisiones que pueden resultar erróneas y los análisis de las consecuencias entre la flexibilidad y el funcionamiento que pueden ser juzgadas negativamente. 2. Estructura en tiempo de ejecución: Una descripción de la estructura del estado del programa en ejecución, expresada como un modelo de objeto de código. Éste debería ocultar las representaciones de los tipos de datos abstractos; su propósito consiste en mostrar las relaciones entre objetos. Los modelos de objeto deberían incluir tanto diagramas como cualquier restricción textual fundamental, y deberían estar claramente expuestos para una correcta legibilidad. Las representaciones de los tipos de datos deberían explicarse (con sus funciones de abstracción e invariantes de representación) si esas representaciones son poco comunes, especialmente complejas o decisivas para el diseño global. Observe que las funciones de abstracción y los invariantes de representación deberían aparecer, aun así en su sitio normal en el propio código. Para explicar la descomposición y otras decisiones de diseño, exponga que aportan simplicidad, extensibilidad (facilidad para añadir características nuevas), particionalidad (los distintos miembros del equipo pueden trabajar en las diferentes partes del diseño sin necesidad de mantener una comunicación constante) u objetivos similares relativos a la ingeniería de software. 3. Pruebas La sección de pruebas de su documentación indica el enfoque que usted ha elegido para verificar y validar su sistema. (En un sistema real, esto podría incluir tanto las pruebas de usuario para determinar la idoneidad del sistema como solución al problema descrito en la sección de requisitos, como la ejecución de suites de prueba para verificar la corrección algorítmica del código). Del mismo modo que no debería comunicar el diseño de su sistema presentando el código o incluso enumerando las clases, no debería únicamente enumerar las pruebas realizadas. En vez de hacer esto, explique cómo se seleccionaron las pruebas, por qué éstas bastaron, por qué un lector debería creer que no se ha omitido ninguna prueba importante y por qué debería creer que el sistema realmente funcionará como se desee cuando se ponga en práctica. 1. Estrategia: Una explicación de la estrategia general de las pruebas: blackbox y/o glassbox, top down (de arriba hacia abajo) y/o bottom up (de abajo hacia arriba), tipos de test beds (bancos de prueba) y manejadores de tests que se han utilizado, fuentes de datos del test, suites de prueba, métrica de cobertura, comprobación en tiempo de compilación frente a sentencias en tiempo de ejecución, razonamientos sobre su código, etc. Es posible que quiera usar técnicas distintas (o combinaciones de técnicas) en las diferentes partes del programa. Justifique su decisión en cada caso. Explique qué tipo de errores espera encontrar (¡y cuáles no!) con su estrategia. Comente qué aspectos del diseño dificultaron o facilitaron la validación. 2. Resultados del test: Resumen de qué pruebas se han realizado y cuáles no, si es que queda alguna: qué módulos se han probado, y si se han probado a fondo. Indique el grado de confianza del código: ¿Qué tipo de defectos se han eliminado? ¿Cuáles son los que podrían quedar? ANALISIS DE SISTEMAS. CONCEPTOS DEL ANALISIS DE SISTEMAS. Analista de sistemas. Evalúa en forma sistemática cómo interactúan los usuarios con la tecnología y como operan las empresas. El analista debe ser capaz de trabajar con personas de todo tipo y tener experiencia en cuanto al trabajo con computadoras. Roles del analista. • Consultor: ya que posee una idea de cómo esta forma la estructura organizacional. • Experto en soporte: tener experiencia en hardware y software. • Agente de Cambio: ayuda a cambiar la forma en que se trabaja en la empresa. PROCESOS DEL CICLO DE VIDA. • • • • • • • Identificación de problemas, objetivos y oportunidadesDeterminación de los requerimientos del información del factor humanoAnálisis de las necesidades del sistema. Diseño del sistema recomendado. Desarrollo y documentación del software. Prueba y Mantenimiento. Implementación y Evaluación del sistema. Procesos principales • Adquisición • Suministro • Desarrollo • Explotación • Mantenimiento. Procesos de soporte • Documentación • Gestión de la configuración. • Aseguramiento de la calidad. Procesos de la organización • Gestión • Mejora • Infraestructura • formación MODELOS DE PROCESOS. • • • • Modelo de cascada Modelo de prototipos Modelo incremental Modelo en espiral. DESARROLLO DE SOFTWARE ORIENTADO A ASPECTOS, SERVICIOS Y OBJETOS. • Desarrollo de software orientado a aspectos. El enfoque orientado a aspectos define un mecanismo que ayuda a resolver problemas de codificación en los requisitos, los cuales son un código disperso y diseminado. Los requerimientos del aspecto definen aquellas preocupaciones globales que tienen algún efecto a través de la arquitectura del software. El desarrollo de software orientado a aspectos, conocido también como programación orientada a aspectos (POA), es un paradigma de ingeniería de software relativamente nuevo que proporciona un proceso y enfoque metodológico para definir, especificar, diseñar y construir aspectos: “mecanismo ms allá de subrutinas y herencia para localizar la expresión de una preocupación. Este modo de desarrollo permite que el producto sea reutilizable • Desarrollo de software orientado a servicios. Utilizado para sistemas distribuidos. Usado para las web services, se define la naturaleza del servicio y no la tecnología utilizada. • Desarrollo de software orientado a objetos. Enfocado a los objetos por lo cual permite una abstracción más compleja de los datos, y además se base en uml METODOS ORIENTADOS A OBJETOS. • • • Dirigidos por los datos Basado en la parte estructural de los objetos. Dirigidos por las responsabilidades. Se centra en las acciones que puede llevar a cabo un objeto. Dirigidos por los caso de uso. METODOS • OMT Comprende las fases de análisis y diseño. a) Análisis - Modelo de objetos 1- Identificar los objetos y clases. 2- Identificar asociaciones entre objetos. 3- Identificar atributos de objetos y enlaces. 4- Organizar y simplificar las clases de objetos empleado la herencia. 5- Iterar y refinar el modelo. REUTILIZACION, PATRONES DE DISEÑO, PORTABILIDAD, INTEROPERABILIDAD. • • • • Reutilización. Uso de componentes de un producto para facilitar el desarrollo de productos diferentes con diferentes con diferente funcionalidad. Puedes ser. 1. Marcos de trabajo. 2. Patrones de arquitectura. 3. Patrones de diseño. Patrones de diseño, ofrece una solución abstracta a un problema de diseño que aparece muy frecuentemente, expresada mediante un conjunto de relaciones e interrelaciones entre componente. Portabilidad. Un producto se considera portable si es significativamente menos costoso adaptarlo a una nueva plataforma que construirlo desde el principio. Interoperabilidad. Operación mutua de código abierto de diferentes vendedores, escrito en diferentes lenguajes y ejecutándose en diferentes plataformas. EJECUCIÓN DEL PROYECTO Y ADMINISTRACIÓN DEL RIESGO Preparación Antes de comenzar con la ejecución de un proyecto, es necesario tomarse el tiempo para desglosar el proyecto en tareas de manera que se pueda programar la ejecución de estas tareas y determinar los recursos que deben movilizarse. Ejecución Esta es la etapa de desarrollo del trabajo en sí. Esta etapa es responsabilidad del contratista, con la supervisión del cliente. Durante la ejecución del proyecto, se debe poner énfasis en la comunicación para tomar decisiones lo más rápido posible en caso de que surjan problemas. Así, es posible acelerar el proyecto estableciendo un plan de comunicación Documentación La documentación debe acompañar al proyecto en la entrega. En ocasiones, esta documentación está incompleta o desactualizada; sin embargo, es uno de los aspectos esenciales de un proyecto ya que constituye el punto de referencia del trabajo una vez ejecutado. Validación Una vez que el proyecto ha finalizado, es buena idea que el contratista se asegure de haber cumplido con las especificaciones. El término Pruebas de las unidades se refiere a la validación, por parte del contratista, de la conformidad del producto en función de cada una de las condiciones especificadas. Administración del riesgo La administración de riesgos son los medios a través de los cuales la incertidumbre se maneja de forma sistemática, para aumentar la probabilidad de lograr los objetivos del proyecto. Evaluación de Riesgo (se concentra en identificar los riesgos y en qué concentrarse) • • • Hacer una lista de todos los peligros potenciales que afectarán el proyecto (identificación del riesgo) Determinar la probabilidad de las consecuencias de la ocurrencia y de la pérdida del potencial de cada elemento identificado (cuantificación del riesgo) Clasificar los elementos (del más al menos peligroso) Control de Riesgos (hacer algo sobre los riesgos) • • • Establecer técnicas y estrategias para atenuar los riesgos más altos (planeación del riesgo) Ejecutar estrategias para resolver los factores de alto riesgo (respuesta del riesgo) Supervisar de la eficacia de las estrategias y de los niveles de modificación de riesgos a lo largo del proyecto La información para determinar riesgo viene de: • • • • Descripción del producto. La naturaleza del producto del proyecto tendrá un efecto mayor en los riesgos identificados. Por ejemplo, los productos que implican tecnología probada, en igualdad de circunstancias, implicarán menos riesgo que productos, cuáles requieren innovación o invención. Documentos/planes del proyecto: Las revisiones del documento de alcance, del plan del proyecto, del plan de adquisición del personal, etc. pueden revelar riesgos. Información histórica: Bases de Datos del proyecto, expedientes del proyecto, experiencia del personal. Entrevistas del Cliente y/o Usuario, así como de los estudios de viabilidad Los riesgos asociados al producto del proyecto se describen a menudo en términos de su costo e impacto en sus calendarios. Identificación del riesgo La identificación del riesgo debe considerar riesgos internos y externos. Los riesgos internos son los elementos que el equipo de proyecto puede controlar o influenciar, por ejemplo asignaciones del personal. Los riesgos externos van más allá del control o de la influencia del equipo de proyecto, tal como cambios de mercado o acciones del Gobierno. Podemos también hablar de riesgo inherente que resultan de la naturaleza de los objetivos y del alcance o riesgo adquirido que resulta del enfoque, metodologías, herramientas, técnicas, habilidades y de la experiencia que se aplican al proyecto Herramientas y técnicas para la identificación del riesgo 1. Checklists. Las listas de comprobación se agrupan típicamente por la fuente del riesgo. Algunas áreas de aplicación han sido ampliamente utilizadas para la clasificación de las fuentes del riesgo. 2. Diagramación. La diagramación puede ayudar al equipo de proyecto a entender mejor las causas y efectos de los riesgos. 3. Entrevistas.- Las entrevistas orientadas a riesgos con varios de los involucrados (personas que serán impactadas por el proyecto) pueden ayudar a identificar riesgos no identificados durante actividades normales de la planeación. Los registros de las entrevistas previas al proyecto deben estar disponibles (por ejemplo, las aplicadas durante el estudio de viabilidad). Fuentes de Riesgo Riesgos asociados al Cliente y/o Usuario • • • • • • Requerimientos (requisitos) confusos / incompletos Cambios frecuentes a los requerimientos (requisitos) del proyecto durante la ejecución del mismo Cliente y/o Usuario que no es eficiente, eficaz o completo en cumplir sus responsabilidades del proyecto --Cliente y/o Usuario que no está lo suficientemente disponible o que no conoce lo suficiente para proporcionar información precisa de los requerimientos (requisitos) y /o proceso de revisión. Cliente y/o Usuario que no tiene expectativas realistas sobre los resultados del proyecto, locuaz genera restricciones de alto riesgo. Restricciones Contractuales como penalizaciones por no lograr fechas límite o penalizaciones de la terminación. Riesgos asociados a los calendarios • • Tareas o Hitos (Milestone) faltantes Duración inexacta de la métrica • • Estimaciones no precisas Un calendario basado en cantidades exageradas de tiempo extra para todo el equipo. Riesgos asociados a los recursos • • • • • Roles y/o responsabilidades NO claras Recursos NO disponibles Habilidades y/o Conocimientos requeridos NO satisfechos o inadecuados Equipo faltante o Inadecuado Rotación del personal Riesgos asociados a la Experiencia • • • Nueva Tecnología Nuevo ambiente de desarrollo Nuevo Hardware Riesgos asociados al Proceso de Administración de Proyectos • • • • Descomposición de Tareas (WBS) – una descomposición inadecuada falla en identificar todas las actividades que son parte del proyecto. Métricas: estimaciones de tiempo y costo- las estimaciones agresivas o las desarrolladas con información insuficiente tiempo llevan a un riesgo mayor. Fallas del Flujo de Trabajo: en la entrega, en la autorización de la terminación, no cumplimiento de fechas límite. Falla de Aseguramiento de Calidad: proceso con fallas, carencia de la función de aseguramiento de calidad. IMPLEMENTACION Y ENTREGA. • • • • • • Migración de datos. Capacitación de usuarios. Puesta en marcho del nuevo software. Pruebas de usuario. Recolección y reparación de errores. Entrega de los documentos. LÓGICA DE PROGRAMACIÓN Y LENGUAJES DE PROGRAMACIÓN ACTUALES Un lenguaje de programación es un lenguaje formal diseñado para realizar procesos que pueden ser llevados a cabo por máquinas como las computadoras. Pueden usarse para crear programas que controlen el comportamiento físico y lógico de una máquina, para expresar algoritmos con precisión, o como modo de comunicación humana. Está formado por un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se prueba, se depura, se compila (de ser necesario) y se mantiene el código fuente de un programa informático se le llama programación. Programación, es el proceso de diseñar, codificar, depurar y mantener el código fuente de programas computacionales. El código fuente es escrito en un lenguaje de programación. El propósito de la programación es crear programas que exhiban un comportamiento deseado. El proceso de escribir código requiere frecuentemente conocimientos en varias áreas distintas, además del dominio del lenguaje a utilizar, algoritmos especializados y lógica formal. Programar no involucra necesariamente otras tareas tales como el análisis y diseño de la aplicación (pero sí el diseño del código), aunque sí suelen estar fusionadas en el desarrollo de pequeñas aplicaciones Algoritmos: es un conjunto prescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad. Dados un estado inicial y una entrada, siguiendo los pasos sucesivos se llega a un estado final y se obtiene una solución. Lenguaje C El lenguaje C es uno de los lenguajes de programación estructurada más utilizados en nuestros días. Elprincipal componente estructural de C es la función. En C, las funciones son bloques en los cuales ocurren las actividades de un programa. Esto nos permite separar los en tareas, lo que nos conduce a la programación modular. Otra forma de estructurar en C es usando bloques de códigos. Un bloque de código es un grupo de instrucciones conectadas lógicamente el cual es tratado como una unidad. Un bloque está construido por un conjunto de instrucciones colocadas entre llaves { }. • Es el lenguaje de programación de propósito general asociado al sistema operativo UNIX • Es un lenguaje de medio nivel. Trata con objetos básicos como caracteres, números, etc.; también con bits y direcciones de memoria. Posee una gran portabilidad Se utiliza para la programación de sistemas: construcción de intérpretes, compiladores, editores de texto, etc. • • • El lenguaje C consta de o El lenguaje C propiamente dicho: tipos de datos, expresiones y estructuras de control o Extensiones en forma de macros y un amplio conjunto de librerias predeterminadas Lenguaje C++. C++ es un lenguaje imperativo orientado a objetos derivado del C. En realidad un supe conjunto de C, que nació para añadirle cualidades y características de las que carecía. El resultado es que como su ancestro, sigue muy ligado al hardware subyacente, manteniendo una considerable potencia para programación a bajo nivel, pero se la han añadido elementos que le permiten también un estilo de programación con alto nivel de abstracción. Se añadieron facilidades de programación genérica, que se sumó a los otros dos paradigmas que ya estaban admitidos (programación estructurada y la programación orientada a objetos). Por esto se suele decir que el C++ es un lenguaje de programación multiparadigma Lenguaje Java. Los lenguajes de propósito general, son lenguajes que pueden ser usados para varios propósitos, acceso a bases de datos, comunicación entre computadoras, comunicación entre dispositivos, captura de datos, cálculos matemáticos, diseño de imágenes o páginas. Computación concurrente es la simultaneidad en la ejecución de múltiples tareas interactivas. Estas tareas pueden ser un conjunto de procesos o hilos de ejecución creados por un único programa. Las tareas se pueden ejecutar en una sola unidad central de proceso (multiprogramación), en varios procesadores o en una red de computadores distribuidos. Programación Orientada a Objetos. JAVA Java es un lenguaje de programación de propósito general, concurrente, orientado a objetos que fue diseñado específicamente para tener tan pocas dependencias de implementación como fuera posible. Su intención es permitir que los desarrolladores de aplicaciones escriban el programa una vez y lo ejecuten en cualquier dispositivo (conocido en inglés como WORA, o "write once, run anywhere"), lo que quiere decir que el código que es ejecutado en una plataforma no tiene que ser recompilado para correr en otra. Java es, a partir de 2012, uno de los lenguajes de programación más populares en uso, particularmente para aplicaciones de clienteservidor de web El lenguaje Java se creó con cinco objetivos principales: 1. Debería usar el paradigma de la programación orientada a objetos. 2. Debería permitir la ejecución de un mismo programa en múltiples sistemas operativos. 3. Debería incluir por defecto soporte para trabajo en red. 4. Debería diseñarse para ejecutar código en sistemas remotos de forma segura. 5. Debería ser fácil de usar y tomar lo mejor de otros lenguajes orientados a objetos, como C++. Operadores y expresiones, estructuras de selección, estructura de control, funciones, arreglo, listas y tablas, algoritmos de ordenación y búsqueda. Expresiones y Operadores • Expresión Una expresión es una combinación de variables, operadores y llamadas de métodos construida de acuerdo a la sintaxis del lenguaje que devuelve un valor. El tipo de dato del valor regresado por una expresión depende de los elementos usados en la expresión. • Operadores Los operadores son símbolos especiales que por lo común se utilizan en expresiones. La tabla siguiente muestra los distintos tipos de operadores que utiliza Java. Operador Significado Ejemplo Operadores aritméticos + * / % Suma Resta Multiplicación División Módulo a+b a-b a*b a/b a%b Operadores de asignación = += -= *= /= %= == != < > <= >= ++ Asignación Suma y asignación Resta y asignación Multiplicación y asignación División y asignación Módulo y asignación Operadores relacionales Igualdad Distinto Menor que Mayor que Menor o igual que Mayor o igual que Operadores especiales Incremento a=b a += b (a=a + b) a -= b (a=a - b) a *= b (a=a * b) a / b (a=a / b) a % b (a=a % b) a == b a != b a<b a>b a <= b a >= b a++ (postincremento) ++a (preincremento) -Decremento a-- (postdecremento) --a (predecremento) (tipo)expr Cast a = (int) b + Concatenación de cadenas a = "cad1" + "cad2" . Acceso a variables y métodos a = obj.var1 () Agrupación de expresiones a = (a + b) * c La tabla siguiente muestra la precedencia asignada a los operadores, éstos son listados en orden de precedencia. Los operadores en la misma fila tienen igual precedencia Operador Notas . [] () Los corchetes se utilizan para los arreglos ++ -- ! ~ ! es el NOT lógico y ~ es el complemento de bits new (tipo)expr new se utiliza para crear instancias de clases * / % Multiplicativos +Aditivos << >> >>> Corrimiento de bits < > <= >= Relacionales == != Igualdad & AND (entre bits) ^ OR exclusivo (entre bits) | OR inclusivo (entre bits) && AND lógico || OR lógico ?: Condicional = += -= *= /= %= &= ^= |= <<= >>= >>>= Asignación Todos los operadores binarios que tienen la misma prioridad (excepto los operadores de asignación) son evaluados de izquierda a derecha. Estructuras de selección En una estructura de selección/decisión, el algoritmo al ser ejecutado toma una decisión, ejecutar o no ciertas instrucciones si se cumplen o no ciertas condiciones. Las condiciones devuelven un valor, verdadero o falso, determinado así la secuencia a seguir. Por lo general los lenguajes de programación disponen de dos estructuras de este tipo: estructura de decisión simple (if), y estructura de decisión múltiple (CASE, SWITCH). IF if (condición) ejecuta esto si la condición es verdadera else ejecuta esto si la condición es falsa Case - Switch switch (valor) { case ‘1’: ejecuta esto si valor es 1 break; case ‘2’: ejecuta esto si valor es 2 break; case ‘3’: ejecuta esto si valor es 3 break; default: ejecuta esto si valor no es ninguno de los anteriores break; Estructuras de Control. En lenguajes de programación, las estructuras de control permiten modificar el flujo de ejecución de las instrucciones de un programa. Con las estructuras de control se puede: • • • • • De acuerdo a una condición, ejecutar un grupo u otro de sentencias (If-Then-Else) De acuerdo al valor de una variable, ejecutar un grupo u otro de sentencias (Select-Case) Ejecutar un grupo de sentencias mientras se cumpla una condición (Do-While) Ejecutar un grupo de sentencias hasta que se cumpla una condición (Do-Until) Ejecutar un grupo de sentencias un número determinado de veces (For-Next) Funciones Desde un punto de vista práctico, podemos decir que una función es una parte de un programa (subrutina) con un nombre, que puede ser invocada (llamada a ejecución) desde otras partes tantas veces como se desee. Un bloque de código que puede ser ejecutado como una unidad funcional. Opcionalmente puede recibir valores; se ejecuta y puede devolver un valor. Desde el punto de vista de la organización, podemos decir que una función es algo que permite un cierto orden en una maraña de algoritmos. Las declaraciones de funciones generalmente son especificadas por: Un nombre único en el ámbito: Nombre de la función con el que se identifica y se distingue de otras. No podrá haber otra función ni procedimiento con ese nombre (salvo sobrecarga o polimorfismo en programación orientada a objetos). Un tipo de dato de retorno: tipo de dato del valor que la función devolverá al terminar su ejecución. Una lista de parámetros: Especificación del conjunto de argumentos (pueden ser cero, uno o más) que la función debe recibir para realizar su tarea. El código u órdenes de procesamiento: conjunto de órdenes y sentencias que debe ejecutar la función. valor-devuelto nombre-función (lista-de-argumentos) { sentencias; // "cuerpo" de la función } Arreglos Arreglo: Es una colección de datos del mismo tipo. Sirve para manejar un número “n” de elementos en común, ya sea de tipos definidos por el Lenguaje (“int”,”float”,”String”, etc.), así como aquellos definidos por el programador. Un arreglo unidimensional es un tipo de datos estructurado que está formado de una colección finita y ordenada de datos del mismo tipo. Es la estructura natural para modelar listas de elementos iguales. El tipo de acceso a los arreglos unidimensionales es el acceso directo, es decir, podemos acceder a cualquier elemento del arreglo sin tener que consultar a elementos anteriores o posteriores, esto mediante el uso de un índice para cada elemento del arreglo que nos da su posición relativa. Un arreglo unidimensional tiene una sola dimensión, También reciben el nombre de vectores en álgebra. Un arreglo se caracteríza por : 1. Almacenar los elementos del arreglo en posiciones de memoria contínua. 2. Tener un único nombre de variable que representa a todos los elementos, y éstos a su vez se diferencian por un índice o subíndice. 3. Acceso directo o aleatorio a los elementos individuales del arreglo. Veamos cómo se agruparían estos 3 elementos en un solo arreglo: private int []x = new int[3]; private int[]x = {1,2,3}; En la primera línea, hemos creado un arreglo vacío de 3 elementos; mientras que en la segunda, creamos un arreglo de 3 elementos inicializados. SINTAXIS Declaración: [ ] < identificador > ; Creación: < identificador > = new [ tamaño ] ; Listas Una lista o secuencia es un dato abstracto que representa una secuencia ordenada de valores, donde el mismo valor puede ocurrir más de una vez. Un caso de una lista es una representación computacional del concepto matemático de una secuencia finita. Las listas son un ejemplo básico de contenedores, cuando contienen otros valores. Si el mismo valor se repite varias veces, cada ocurrencia está considerada un elemento distinto. Una simple estructura de lista enlazada, implementando una lista con 3 elementos enteros. El concepto lista es también utilizado para varias estructuras de datos que puede soler implementar listas abstractas, especialmente listas enlazadas. Una lista enlazada es una de las estructuras de datos fundamentales, y puede ser usada para implementar otras estructuras de datos. Consiste en una secuencia de nodos, en los que se guardan campos de datos arbitrarios y una o dos referencias, enlaces o punteros al nodo anterior o posterior. El principal beneficio de las listas enlazadas respecto a los vectores convencionales es que el orden de los elementos enlazados puede ser diferente al orden de almacenamiento en la memoria o el disco, permitiendo que el orden de recorrido de la lista sea diferente al de almacenamiento. Una lista enlazada es un tipo de dato autoreferenciado porque contienen un puntero o enlace (en inglés link, del mismo significado) a otro dato del mismo tipo. Las listas enlazadas permiten inserciones y eliminación de nodos en cualquier punto de la lista en tiempo constante (suponiendo que dicho punto está previamente identificado o localizado), pero no permiten un acceso aleatorio. Existen diferentes tipos de listas enlazadas: listas enlazadas simples, listas doblemente enlazadas, listas enlazadas circulares y listas enlazadas doblemente circulares. Listas enlazadas lineales Listas simples enlazadas La lista enlazada básica es la lista enlazada simple la cual tiene un enlace por nodo. Este enlace apunta al siguiente nodo (o indica que tiene la dirección en memoria del siguiente nodo) en la lista, o al valor NULL o a la lista vacía, si es el último nodo. Listas doblemente enlazadas Un tipo de lista enlazada más sofisticado es la lista doblemente enlazada o lista enlazadas de dos vías. Cada nodo tiene dos enlaces: uno apunta al nodo anterior, o apunta al valor NULL si es el primer nodo; y otro que apunta al nodo siguiente, o apunta al valor NULL si es el último nodo. En algún lenguaje de muy bajo nivel, XOR-Linking ofrece una vía para implementar listas doblemente enlazadas, usando una sola palabra para ambos enlaces, aunque esta técnica no se suele utilizar. Listas enlazadas circulares En una lista enlazada circular, el primer y el último nodo están unidos juntos. Esto se puede hacer tanto para listas enlazadas simples como para las doblemente enlazadas. Para recorrer una lista enlazada circular podemos empezar por cualquier nodo y seguir la lista en cualquier dirección hasta que se regrese hasta el nodo original. Desde otro punto de vista, las listas enlazadas circulares pueden ser vistas como listas sin comienzo ni fin. Este tipo de listas es el más usado para dirigir buffers para “ingerir” datos, y para visitar todos los nodos de una lista a partir de uno dado. Una lista enlazada circular que contiene tres valores enteros Listas enlazadas simples circulares Cada nodo tiene un enlace, similar al de las listas enlazadas simples, excepto que el siguiente nodo del último apunta al primero. Como en una lista enlazada simple, los nuevos nodos pueden ser solo eficientemente insertados después de uno que ya tengamos referenciado. Por esta razón, es usual quedarse con una referencia solamente al último elemento en una lista enlazada circular simple, esto nos permite rápidas inserciones al principio, y también permite accesos al primer nodo desde el puntero del último nodo. 1 Listas enlazadas doblemente circulares En una lista enlazada doblemente circular, cada nodo tiene dos enlaces, similares a los de la lista doblemente enlazada, excepto que el enlace anterior del primer nodo apunta al último y el enlace siguiente del último nodo, apunta al primero. Como en una lista doblemente enlazada, las inserciones y eliminaciones pueden ser hechas desde cualquier punto con acceso a algún nodo cercano. Aunque estructuralmente una lista circular doblemente enlazada no tiene ni principio ni fin, un puntero de acceso externo puede establecer el nodo apuntado que está en la cabeza o al nodo cola, y así mantener el orden tan bien como en una lista doblemente enlazada. Nodos centinelas A veces las listas enlazadas tienen un nodo centinela (también llamado falso nodo o nodo ficticio) al principio o al final de la lista, el cual no es usado para guardar datos. Su propósito es simplificar o agilizar algunas operaciones, asegurando que cualquier nodo tiene otro anterior o posterior, y que toda la lista (incluso alguna que no contenga datos) siempre tenga un “primer y último” nodo TABLAS. Una tabla es una colección de elementos homogéneos (del mismo tipo), especialmente diseñada para el acceso rápido a la información. Se puede acceder a cualquier elemento de la tabla a través de un campo clave. Una tabla de una base de datos es similar en apariencia a una hoja de cálculo, en cuanto a que los datos se almacenan en filas y columnas. Como consecuencia, normalmente es bastante fácil importar una hoja de cálculo en una tabla de una base de datos. La principal diferencia entre almacenar los datos en una hoja de cálculo y hacerlo en una base de datos es la forma de organizarse los datos. Para lograr la máxima flexibilidad para una base de datos, la información tiene que estar organizada en tablas, para que no haya redundancias. Por ejemplo, si se almacena información sobre empleados, cada empleado se insertará una sola vez en una tabla que se configurará para contener únicamente datos de los empleados. Los datos sobre productos se almacenarán en su propia tabla, y los datos sobre sucursales también tendrán su tabla aparte. Este proceso se conoce como normalización. Cada fila de una tabla se denomina registro. En los registros es donde se almacena cada información individual. Cada registro consta de campos (al menos uno). Los campos corresponden a las columnas de la tabla. Por ejemplo, puede trabajar con una tabla denominada "Empleados", en la que cada registro (fila) contiene información sobre un empleado distinto y cada campo (columna) contiene un tipo de información diferente, como el nombre, los apellidos, la dirección, o similares. Los campos se deben configurar con un determinado tipo de datos, ya sea texto, fecha, hora, numérico, o cualquier otro tipo. Otra forma de describir registros y campos es imaginando un catálogo de fichas tradicional de una biblioteca. Cada ficha del armario corresponde a un registro de la base de datos. Cada información contenida en una ficha (autor, título, etc.) corresponde a un campo de la base de datos. Operaciones sobre tablas • Crear • Recorrer los elementos • Insertar un elemento • Eliminar un elemento • Buscar un elemento por clave • Destruir ALGORITMOS DE ORDENACIÓN Y BUSQUEDA ORDENACIÓN La ordenación o clasificación de datos (sort, en inglés) es una operación consistente en disponer un conjunto — estructura— de datos en algún determinado orden con respecto a uno de los campos de elementos del conjunto. Una colección de datos (estructura) puede ser almacenada en un archivo, un array (vector o tabla), un array de registros, una lista enlazada o un árbol. Cuando los datos están almacenados en un array, una lista enlazada o un árbol, se denomina ordenación interna. Si los datos están almacenados en un archivo, el proceso de ordenación se llama ordenación externa. Una lista se dice que está ordenada por la clave k si la lista está en orden ascendente o descendente con respecto a esta clave. La lista se dice que está en orden ascendente si: i<= k[j] y se dice que está en orden descendente si: i>j implica que k[i] <= k[j] para todos los elementos de la lista. Los métodos (algoritmos) de ordenación son numerosos, por ello se debe prestar especial atención en su elección. ¿Cómo se sabe cuál es el mejor algoritmo? La eficiencia es el factor que mide la calidad y rendimiento de un algoritmo. En el caso de la operación de ordenación, dos criterios se suelen seguir a la hora de decidir qué algoritmo —de entre los que resuelven la ordenación— es el más eficiente: 1) tiempo menor de ejecución en computadora; 2) menor número de instrucciones. El mejor criterio para medir la eficiencia de un algoritmo es aislar una operación específica clave en la ordenación y contar el número de veces que se realiza. Así, en el caso de los algoritmos de ordenación, se utilizará como medida de su eficiencia el número de comparaciones entre elementos efectuados. El algoritmo de ordenación A será más eficiente que el B, si requiere menor número de comparaciones. Los métodos de ordenación se suelen dividir en dos grandes grupos: • Directos -burbuja, selección, inserción• Indirectos (avanzados) -Shell, ordenación rápida, ordenación por mezcla, RadixsortEn el caso de listas pequeñas, los métodos directos se muestran eficientes, sobre todo porque los algoritmos son sencillos; su uso es muy frecuente. Sin embargo, en listas grandes estos métodos se muestran ineficaces y es preciso recurrir a los métodos avanzados. BUSQUEDA EN LISTAS Con mucha frecuencia los programadores trabajan con grandes cantidades de datos almacenados en arrays y registros, y por ello será necesario determinar si un array contiene un valor que coincida con un cierto valor clave. El proceso de encontrar un elemento específico de un array se denomina búsqueda. En esta sección se examinarán dos técnicas de búsqueda: búsqueda lineal o secuencial, la técnica más sencilla, y búsqueda binaria o dicotómica, la técnica más eficiente. Búsqueda secuencial La búsqueda secuencial busca un elemento de una lista utilizando un valor destino llamado clave. En una búsqueda secuencial (a veces llamada búsqueda lineal), los elementos de una lista o vector se exploran (se examinan) en secuencia, uno después de otro. La búsqueda secuencial es necesaria, por ejemplo, si se desea encontrar la persona cuyo número de teléfono es 958-220000 en un directorio o listado telefónico de su ciudad. Los directorios de teléfonos están organizados alfabéticamente por el nombre del abonado en lugar de por números de teléfono, de modo que deben explorarse todos los números, uno después de otro, esperando encontrar el número 958-220000. El algoritmo de búsqueda secuencial compara cada elemento del array con la clave de búsqueda. Dado que el array no está en un orden prefijado, es probable que el elemento a buscar pueda ser el primer elemento, el último elemento o cualquier otro. De promedio, al menos el programa tendrá que comparar la clave de búsqueda con la mitad de los elementos del array. El método de búsqueda lineal funcionará bien con arrays pequeños o no ordenados. La eficiencia de la búsqueda secuencial es pobre, tiene complejidad lineal, O(n). Búsqueda binaria La búsqueda secuencial se aplica a cualquier lista. Si la lista está ordenada, la búsqueda binaria proporciona una técnica de búsqueda mejorada. Una búsqueda binaria típica es la búsqueda de una palabra en un diccionario. Dada la palabra, se abre el libro cerca del principio, del centro o del final dependiendo de la primera letra del primer apellido o de la palabra que busca. Se puede tener suerte y acertar con la página correcta; pero, normalmente, no será así y se mueve el lector a la página anterior o posterior del libro. Por ejemplo, si la palabra comienza con «J» y se está en la «L» se mueve uno hacia atrás. El proceso continúa hasta que se encuentra la página buscada o hasta que se descubre que la palabra no está en la lista. Una idea similar se aplica en la búsqueda en una lista ordenada. Se sitúa la lectura en el centro de la lista y se comprueba si la clave coincide con el valor del elemento central. Si no se encuentra el valor de la clave, se sigue la búsqueda uno en la mitad inferior o superior del elemento central de la lista. En general, si los datos de la lista están ordenados se puede utilizar esa información para acortar el tiempo de búsqueda. MANEJO DE CADENAS, RECURSIVIDAD, MANEJO DE ARCHIVOS Y REGISTROS. Recursividad: En programación, una función es recursiva cuando se llama a sí misma. A continuación un ejemplo para intentar entender recursividad Uno de los ejemplos más clásicos es él factorial de un número. Intenta seguir la explicación razonando cada paso. Para cualquier entero positivo N, el factorial de N (que se expresa como N!) es el producto (multiplicación) de todos los enteros menor a él. Es una técnica utilizada en programación que nos permite que un bloque de instrucciones se ejecute un cierto número de veces (el que nosotros determinemos). Manejo de archivos y registros. Esta sección presenta las generalidades relacionadas con archivos antes de empezar a utilizarlos y programarlos. Es necesario involucrarse con la terminología relacionada como archivo, registro, campo, etc. También es recomendable conocer las clasificaciones generales y las operaciones fundamentales con archivos. ¿Cómo surge la necesidad de utilizar archivos? Hasta antes de la materia de Administración de Archivos, muchas de las aplicaciones que los alumnos de ISC han programado han sido usando la memoria principal o memoria RAM como único medio de almacenamiento (usando variables, arreglos o estructuras de datos mas emplejas), con el inconveniente que esto representa: la volatilidad de la memoria RAM; es decir, si se apaga la computadora se pierden los datos. Además, algunas aplicaciones exigen transportar los datos de una computadora a otra. De ahí surge la necesidad dealmacenar dichos datos de forma permanente que permita retenerlos en ciertos dispositivos de almacenamiento secundario por un período de tiempo largo sin necesidad de suministrarles energía, de tal forma que permitan transportarlos y utilizarlos en otro equipo computacional. Definiciones de datos, registros y archivos • Datos: Básicamente se refieren a los testimonios individuales relacionados con hechos, ya sean características de ciertos objetos de estudio o condiciones particulares de situaciones dadas. Los elementos individuales de los archivos se llaman datos o campos. Por ejemplo un cheque de un banco tiene los siguientes campos: Cuenta habiente, Número de cheque, Fecha, Persona a la que se le paga, Monto numérico, Monto con letra, Nota, Identificación del banco, Número de cuenta y Firma. Cada campo es definido por un tipo de dato. Registro: Es el conjunto completo de datos relacionados pertenecientes a una entrada. Son estructuras cuyos componentes pueden ser de diferente tipo. Para declarar un tipo registro se debe incluir el nombre y el tipo de cada componente del mismo. En C se usa la palabra reservada struct para indicar que el tipo que se está definiendo es un registro o estructura. P. ejem. Un almacén puede retener los datos de sus productos en registros de acuerdo al formato mostrado. Archivo: En términos computacionales es una colección de datos que tiene un nombre y se guardan en dispositivos de almacenamiento secundario, los cuales pueden ser magnéticos, ópticos, electrónicos, etc. P. ejem. Diskettes, discos duros, CD´s, ZIP drives, flash drives, memory sticks, etc. FUNCIONES DE MANEJO DE ARCHIVOS EN LENGUAJE C Esta sección presenta los aspectos generales de la implementación de programas de archivos en Lenguaje C. Aunque se puede almacenar cualquier tipo de datos en archivos, aquí se muestran las operaciones del manejo de registros (struct) en archivos, por lo que las funciones que se mencionan a continuación son las mas importantes para este tipo de datos. Declaración del alias del archivo Para realizar programas de manejo de archivos en Lenguaje C se requiere el encabezado “Standard I/O” y se necesita incluirlo de la sig. forma: #include además es necesario declarar una variable de tipo FILE que opere como el apuntador a la estructura del archivo (alias), esto se logra con la sig. línea: FILE *alias; La función fopen() y modos de apertura de archivos Se usa la función fopen para abrir un archivo, determinar el modo de apertura y establecer la vía de comunicación mediante su alias correspondiente. Además determinar el tipo de contenido del archivo (texto o binario). Esta función tiene dos argumentos: el nombre del archivo y su modo, muestra los modos de apertura de archivos de texto y binarios. Los prototipos correspondientes de fopen y fclose son: FILE * fopen (const char *filename, const char *opentype); int fclose (FILE *stream); Cierre de archivos usando fclose() y fcloseall() Antes de dejar de utilizar un archivo es necesario cerrarlo. Esto se logra mediante las funciones fclose o fcloseall. Si se usa fclose es necesario indicarle el alias del archivo que se desea cerrar. La función fcloseall cierra todos los archivos abiertos. Ejemplo El siguiente programa abre un archivo que contiene un nombre y cedula de identidad. Luego abre un archivo de salida y escribe estos datos (pero en orden invertido). El archivo de entrada fue creado con un editor de texto. Archivo de entrada: entrada.txt #include int main(){ char ifilename[] = "entrada.txt"; char ofilename[] = "salida.txt"; char name[30]; int idNum; FILE *ofp, *ifp; /* Declara apuntadores a archivo */ ifp = fopen(ifilename,"r"); /* Abre archivo de entrada */ fscanf (ifp,"%s %d",name,&idNum); /* Lee datos de entrada */ ofp = fopen(ofilename,"w"); /* Abre archivo de salida */ fprintf(ofp,"%d %s\n",idNum, name); /* Escribe los datos */ fclose(ifp); fclose(ofp); /* Cierra los archivos */ return 0; } Archivo de salida: salida.txt Escritura de registros usando fwrite() La función fwrite proporciona el mecanism para almacenar todos los campos de un registro en un archivo. Cabe destacar que al utilizar esta función, se almacena una variable (de tipo struct) que representa un bloque de datos o campos; es decir, no se almacena campo por campo. Esta función tiene cuatro argumentos: la variable que se desea grabar, su tamaño en bytes, la cantidad de variables y el alias del archivo donde se desea almacenar COMUNICACIÓN EXTERNA Y PUERTOS Los Puertos de Comunicación Los puertos de comunicación son herramientas que permiten manejar e intercambiar datos entre un computador (generalmente están integrados en las tarjetas madres) y sus diferentes periféricos, o entre dos computadores. Puertos PS/2 Estos puertos son en esencia puertos paralelos que se utilizan para conectar pequeños periféricos a la PC. Su nombre viene dado por las computadoras de modelo PS/2 de IBM, donde fueron utilizados por primera vez. Características: Este es un puerto serial, con conectores de tipo Mini DIN, el cual consta por lo general de 6 pines o conectores. La placa base tiene el conector hembra. En las placas de hoy en día se pueden distinguir el teclado del Mouse por sus colores, siendo el teclado (por lo general) el de color violeta y el Mouse el de color verde. Puertos USB (Universal Serial Bus): Estándar que comenzó en 1995 por Intel, Compaq, Microsoft. En 1997, el USB llegó a ser popular y extenso con el lanzamiento del chipset de 440LX de Intel. Es una arquitectura de bus desarrollada por las industrias de computadoras y telecomunicaciones, que permite instalar periféricos sin tener que abrir la maquina para instalarle hardware, es decir, que basta con conectar dicho periférico en la parte posterior del computador. Características: • Una central USB le permite adjuntar dispositivos periféricos rápidamente, sin necesidad de reiniciar la computadora ni de volver a configurar el sistema. • El USB trabaja como interfaz para la transmisión de datos y distribución de energía que ha sido introducido en el mercado de PCs y periféricos para mejorar las lentas interfases serie y paralelo. • Los periféricos para puertos USB son reconocidos automáticamente por el computador (y se configuran casi automáticamente) lo cual evita dolores de cabeza al instalar un nuevo dispositivo en el PC. • Los puertos USB son capaces de transmitir datos a 12 Mbps. Puertos Seriales (COM): Son adaptadores que se utilizan para enviar y recibir información de BIT en BIT fuera del computador a través de un único cable y de un determinado software de comunicación. Un ordenador o computadora en serie es la que posee una unidad aritmética sencilla en la cual la suma en serie es un calculo digito a digito Características: • Los puertos seriales se identifican típicamente dentro del ambiente de funcionamiento como puertos del COM (comunicaciones). Por ejemplo, un ratón pudo ser conectado con COM1 y un módem a COM2. • Los voltajes enviados por los pines pueden ser en 2 estados, encendido o apagado. Encendido (valor binario de 1) significa que el pin esta transmitiendo una señal entre -3 y -25 voltios, mientras que apagado (valor binario de 0) quiere decir que esta transmitiendo una señal entre +3 y +25 voltios. Puertos Paralelos (LPT): Son conectores utilizados para realizar un enlace entre dos dispositivos; en el sistema lógico se le conoce como LPT. El primer puerto paralelo LPT1 es normalmente el mismo dispositivo PRN (nombre del dispositivo lógico de la impresora). Características: • Unidireccional - puerto estándar 4-BIT que por defecto de la fábrica no tenía la capacidad de transferir datos ambas direcciones. • Bidireccional - puerto estándar 8-BIT que fue lanzado con la qintroducción del puerto PS/2 en 1987 por IBM y todavía se encuentra en computadoras hoy. El puerto bidireccional es capaz de enviar la entrada 8-bits y la salida. Hoy en las impresoras de múltiples funciones este puerto se puede referir como uno bidireccional. • EPP - el puerto paralelo realzado (EPP) fue desarrollado en 1991 por Intel, Xircom y funciona cerca de velocidad de una tarjeta ISA y puede alcanzar transferencias hasta 1 a 2MB / por segundo de datos Puertos RJ-11: Es un conector utilizado por lo general en los sistemas telefónicos y es el que se utiliza para conectar el MODEM a la línea telefónica de manera que las computadoras puedan tener acceso a Internet. • El RJ11 se refiere expresamente al conector de medidas reducidas el cual está al cable telefónico y tiene cuatro contactos (pines) para cuatro hilos de cable telefónico aunque se suelen usar únicamente dos. Puertos RJ-45: Es una interfaz física utilizada comúnmente en las redes de computadoras, sus siglas corresponden a "Registered Jack" o "Clavija Registrada", que a su vez es parte del código de regulaciones de Estados Unidos. Características: • Es utilizada comúnmente con estándares como EIA/TIA-568B, que define la disposición de los pines. • Para que todos los cables funcionen en cualquier red, se sigue un estándar a la hora de hacer las conexiones. • Este conector se utiliza en la mayoría de las tarjetas de ethernet (tarjetas de red) y va en los extremos de un cable UTP nivel 5 Puertos VGA El puerto VGA es el puerto estandarizado para conexión del monitor a la PC. Características: • Su conector es un HD 15, de 15 pines organizados en 3 hileras horizontales. Puertos RCA El conector RCA es un tipo de conector eléctrico común en el mercado audiovisual. El nombre "RCA" deriva de la Radio Corporation of America, que introdujo el diseño en los 1940. Un problema del sistema RCA es que cada señal necesita su propio cable. Para evitar líos, se usan otros tipos de conectores combinados, como el euroconector (SCART), presente en la mayoría de televisiones modernas. Además, también se encuentran adaptadores RCA-SCART. HDMI La sigla HDMI proviene de ("High Definition Multimedia Interface"), lo que traducido significa interfase multimedia de alta definición. Es un puerto de forma especial con 19 ó 29 terminales, capaz de transmitir de manera simultánea videos de alta definición, así como varios cqanales de audio y otros datos de apoyo. Por el hecho de permitir la transmisión de datos entre un dispositivo externo (periférico), con la computadora, se le denomina puerto. • • • • Es una nueva generación de conector, ya que no es dedicado a únicamente el video, sino que combina la transmisión de audio y otros tipos de datos. El puerto HDMI se encarga de enviar las señales cifradas desde la computadora hacia la pantalla, ello quiere decir que de este modo es difícil copiar la señal hacia otro dispositivo con el que se quieran crear copias ilegales. Utilizan un formato de datos "PanelLink", denominado TMDS ("Transition Minimized Differential Signaling") ó señalización con transición diferencial minimizada, la cual no utiliza ningún tipo de compresión. Se encuentra integrado en las tarjetas aceleradoras de gráficos modernas. AREA DE REDES Y SISTEMAS OPERATIVOS EVOLUCIÓN Y TIPOS DE SISTEMAS OPERATIVOS Evolución Generación 0: en 1940 lenguaje maquina Generación Primera: 1945-1955 Sistemas operativos por lotes Generación Segunda: 1955-1965 por lotes, multiprocesamiento, multiprogramación Generación Tercera: 1965-1980 Multiprogramación, mayor número de tareas, dispositivos de entrada y salida, operaciones simultaneas, interfaces gráficas. Generación Cuarta: 1980-1990: Sistemas Operativos por Red, Sistemas Operativos Distribuidos, Conexiones Remotas. PROCESOS, SINCRONIZACIÓN Y COMUNICACIÓN ENTRE PROCESOS. Problema de la sección critica. Necesidad de sincronización y comunicación. • Comunicación: necesidad de transmisión de información entre procesos concurrentes. • Sincronización: necesidad de que las ejecuciones de los procesos concurrentes se produzcan según una secuenciación temporal, conocida y establecida entre los propios procesos. Sección Crítica: • Cada proceso tiene un segmento de código llamado sección crítica. • No está permitido que varios procesos estén simultáneamente en su sección critica. • Un protocolo rige la forma de entrar y salir de la sección critica. Para solucionar el problema de la sección crítica se deben cumplir con los tres requisitos: • Exclusión mutua: es decir solo un proceso ejecuta su sección crítica. • Progreso: si ningún proceso ejecuta su sección critica, podrá algún proceso hacerlo utilizando un protocolo que impida la entrada de otros a la vez. • Espera Limitada: ningún procesos debe esperar tanto para Semáforos: mecanismo cómodo y efectivo para lograr la sincronización. Problemas: • Errores de temporización. • Es posible que no se consiga la exclusión mutua. • Nos es hábil para programas grandes. • Bloqueos mutuos. Región Crítica: Mecanismo de sincronización de alto nivel. Este mecanismo declara una variable que se comparte con todos los procesos, pero a la que solo puede acceder uno. Para acceder se verifica que la RC (Región Critica) este vacía, y si no, los procesos que intentan entrar tendrán que esperar. Solo se permite la entrada a la RC si sale uno. Región Crítica Condicional (RCC): similar funcionamiento a la RC, a diferencia de que necesita que la condición de acceso sea cierta. Si la condición de evaluación es falsa, el proceso abandona la RC y permite el acceso a otros procesos. Para que el proceso con evaluación falsa ingrese de nuevo debe esperar. Limitaciones de la RCC: • Puede aparecer a lo largo de todo el programa. • No se garantiza la integridad de las estructuras de datos. • Es difícil implementar eficientemente las RCC. Monitor: mecanismo de sincronización de alto nivel. Similar al funcionamiento de los semáforos pero más fáciles de controlar. Uso de mensajes, es necesario la sincronización. Interbloqueo. Problema que afecta a procesos concurrentes que utilizan recursos en un sistema. Tipos de recursos. • Recursos reutilizables. Recursos que se usan pero no se agotan, ejemplo, procesador, impresionar. • Recursos consumibles. Cuando se adquiere un recurso este deja de existir. Ejemplo interrupciones, señales, mensajes e información en buffers. Un interbloqueo se da si se cumplen: • Exclusión mutua. • Retención y espera. • No expropiación. • Espera circular. Para solventar este problema se utilizan tratamientos como: • Garantizando que no ocurra nunca en el sistema. • Detección y recuperación. • Ignorar el problema. Utilizado por la mayoría de sistemas operativos. Inanición. Es cuando un proceso que está en medio de otros nunca llega a acceder a un recurso. GESTION DE MEMORIA, ARCHIVOS. La gestión de memoria es una de las funciones de los SO que supone cargar y descargar bloques desde y hacia el almacenamiento secundario. Memoria: amplia tabla de datos, cada uno de ellos con su propia dirección. Los procesos se referencia y estas referencias, en un intervalo de tiempo, se agrupan, en un subconjunto de espacios de direcciones, llamado localidad. Es encargada también de tratar de repartir de forma eficiente la memoria para introducir tantos procesos como sea posible. Se debe: • Tener la menor memoria desaprovechada. • Proporcionar protección y compartición. • No perjudicar el rendimiento. Memoria principal • Almacén de datos de acceso rápido, que son compartidos por la CPU y los dispositivos de E/S. • Paginación, segmentación, • Algoritmos de ubicación. GESTION DE ARCHIVOS. Archivo. Unidad de almacenamiento lógica (se graba en almacenamiento secundario) que para el usuario no constituye más que un conjunto de datos relacionados con un nombre asociado. Operación con archivos. • Creación Encontrar el espacio para el en el sistema de archivos, insertar una entrada para el nuevo archivo en el directorio. • Eliminación. • Escritura • Lectura • Posicionarse dentro del archivo. • Truncar un archivo. Otras operaciones. • Rename. SISTEMAS MUILTIPROCESADORES Y DISTRIBUIDOS. SISTEMAS MULTIPROCESADOR. • • • • Sistemas multiprocesador con más de una CPU en comunicación muy cercana. Sistemas fuertemente acoplados – Los procesadores comparten la memoria y el reloj; la comunicación por lo general se realiza a través de la memoria compartida. Multiprocesamiento simétrico (SMP). a) Cada procesador corre una copia idéntica del SO. b) Muchos procesos pueden correr a la vez sin deterioro del rendimiento. Multiprocesamiento asimétrico. a) A cada procesador se le asigna una tarea específica, el procesador maestro planifica y asigna el trabajo a los procesadores esclavos. b) El más común en sistemas muy grandes. SISTEMAS DISTRIBUIDOS. • • • • Distribuye los cálculos entre diferentes procesadores. Su objetivo principal es compartir recursos y datos entre usuarios. Sistemas débilmente acoplados – cada procesador tiene su propia memoria local, los procesadores se comunican entre sí a través de varias líneas de comunicación, tales como buses de alta velocidad o líneas telefónicas. Su característica principal es que son controlados por un solo sistema operativo que funciona en torno a él. ALGORITMOS E IMPLEMETACIÓN DE SO La planificación de la CPU tiene que ver con el problema de decidir a cuál de los procesos en la cola de listos se le asignara a la CPU. Existen varios algoritmos encargados de esto entre los cuales están: 1. 2. 3. 4. 5. Planificación del primero en llegar, primero en ser atendido. Primero el trabajo más corto. Planificación con prioridad. Planificación round-robin. Planificación de colas de niveles múltiples. 6. Planificación con colas de niveles múltiples y retroalimentación. 1. PLANIFICACION DEL PRIMERO EN LLEGAR, PRIMER EN SER ATENDIDO. (no apropiativo) DEFICIENCIAS El tiempo de espera promedio con esta política es bastante largo. 2. PLANIFICACION DE PRIMERO EL TRABAJO MAS CORTO (apropiativo y no apropiativo) El algoritmo de primero el trabajo más corto (shortest-job-first, SJF) asocia con cada proceso la longitud de su siguiente ráfaga de CPU. Cuando la CPU está disponible, se le asigna al proceso que tiene la ráfaga siguiente más pequeña de CPU. Si 2 procesos tienen la misma longitud de ráfaga se utiliza la planificación FCFS para tomar la decisión. Esta planificación SJF se emplea con frecuencia en la planificación a largo plazo. Aun cuando el algoritmo SJF es optimo, no puede implementarse a nivel de la planificación de la CPU a corto plazo. No hay forma de conocer la longitud de la siguiente ráfaga de CPU. Un enfoque consiste en tratar de aproximar la planificación SJF. Tal vez no conozcamos la longitud de la siguiente ráfaga de la CPU, pero quizá podemos predecir su valor a través de las ráfagas anteriores. Este algoritmo puede ser apropiativo o no apropiativo. La elección surge cuando llega un nuevo proceso a la cola de listos mientras un proceso previo se está ejecutando. Un algoritmo SJF apropiativo suspenderá al proceso que actualmente está en ejecución, en tanto que un algoritmo SJF no apropiativo permitirá que dicho proceso termine su ráfaga de CPU. 3. PLANIFICACION CON PRIORIDAD (apropiativo y no apropiativo) PROBLEMAS PLANIFICACION CON PRIORIDAD Un problema importante con este algoritmo de planificación por prioridades es el bloqueo indefinido o inanición. Un proceso listo para ejecución pero que carece de la CPU puede ser considerado como bloqueado, esperando por el procesador. Este algoritmo puede dejar a algunos procesos de prioridad baja esperando indefinidamente por la CPU. (Se ha corrido el rumor que cuando se apago la IBM 7094 del MIT en 1973, descubrió un proceso de prioridad baja que había sido entregado para su ejecución en 1967 y que todavía no se había ejecutado). SOLUCION A LA PLANIFICACION CON PRIORIDAD Una solución a este problema de bloqueo indefinido en los procesos de prioridad baja es el envejecimiento. Esta técnica consiste en aumentar gradualmente la prioridad de los procesos que esperan en el sistema durante mucho tiempo. Por ejemplo se podría hacer que cada 15 minutos se aumentara en 1 la prioridad de un proceso que está en espera. 4. PLANIFICACION ROUND ROBIN (apropiativo) También conocido como algoritmo de planificación por turnos o round-robin (RR) esta diseñado especialmente para sistemas de tiempo compartido. Es similar a FCFS, pero se añade apropiación para conmutar entre procesos. Aquí se define una pequeña unidad de tiempo denomina quantum, o porción de tiempo. Un quantum es por lo general de 10 a 100 milisengudos. La cola de procesos listos es tratada como una cola circular. El planificador de la CPU da vueltas sobre la cola de listos, asignando la CPU a cada proceso durante un intervalo de tiempo de hasta 1 quantum. Este algoritmo es apropiativo. Como funciona Para implementar la planificación RR, se hace una cola fifo de procesos listos. Los procesos nuevos se agregan al final de la cola de listos. El planificador de la CPU toma el primer proceso de la cola de listos, fija el valor de un temporizador para interrumpir después de 1 quantum y despacha el proceso. A continuación sucederá una de 2 cosas. El proceso tal vez tenga una ráfaga de CPU de menos de 1 quantum. En este caso el proceso mismo liberara a la CPU voluntariamente. En caso contrario, si la ráfaga de CPU del proceso actualmente está en ejecución es mayor a 1 quantum, el temporizador se apagara y provocara una interrupción que se comunica al sistema operativo. Se ejecuta un cambio de contexto, y el proceso será puesto al final de la cola de listos. El planificador de la CPU seleccionara entonces el siguiente proceso de la cola de listos. PROBLEMAS DE ROUND ROBIN El principal problema es la selección del quantum. Si el quantum es demasiado pequeño, el trabajo adicional de planificación en la forma de tiempo de cambio de contexto se vuele excesivo. 5. PLANIFICACION DE COLAS DE NIVELES MULTIPLES Estos son otra clase de algoritmos que toman en cuenta a procesos de primer plano (interactivos) y procesos de segundo plano (en lotes). Estos 2 tipos de procesos tienen distintos requerimientos de tiempo de respuesta, y por lo tanto podrían tener diversas necesidades de planificación. Un algoritmo de planificación con colas de niveles múltiples divide la cola de listos en varias colas separadas. Los procesos se asignan de forma permanente a una cola, por lo general con base a una propiedad del proceso, como el tamaño de la memoria, la prioridad del proceso, o el tipo de proceso. Cada cola tiene su propio algoritmo de planificación. Por ejemplo la cola de procesos de primer plano se podría planificar mediante un algoritmo RR, en tanto que los procesos de segundo plano se programarían mediante un algoritmo FCFS. Además debe de existir planificación entre colas, la cual se implementa comúnmente como una planificación por prioridad fija apropiativa. Por ejemplo, la cola de procesos de primer plano puede tener una prioridad absoluta sobre la cola de procesos de segundo plano. Los tipos de procesos pueden ser 1. Procesos del sistema. 2. Procesos interactivos. 3. Procesos de edición interactivos. 4. Procesos por lotes. 5. Procesos de estudiantes. Cada cola tiene prioridad absoluta sobre las colas de menor prioridad. Ningun proceso en la cola de lotes, por ejemplo, podría ejecutarse a menos que estuvieran totalmente vacías las colas de procesos del sistema, de procesos interactivos y de procesos de edición interactivos. Si un proceso de edición interactivo entrara a la cola de listos mientras estuviera en ejecución un proceso por lotes, este sería suspendido. 6. PLANIFICACION CON COLAS DE NIVELES MULTIPLES Y RETROALIMENTACION A diferencia de la planificación anterior esta planificación permite que un proceso se mueva entre colas. La idea es separar procesos con diferentes características de ráfaga de CPU. Si un proceso emplea demasiado tiempo de la CPU, será movido a una cola de menor prioridad. Este esquema deja a los procesos limitador por E/S y a los procesos interactivos en las colas de prioridad alta. De manera similar, un proceso que espera demasiado tiempo en una cola de prioridad baja puede ser movido a una cola de prioridad alta. Esta forma de envejecimiento impide la inanición. SEGURIDAD Y PROTECCIÓN. El sistema debe cumplir con los siguientes requisitos. • Confidencialidad. • Integridad. • Disponibilidad. Elementos amenazados. • Hardware • Software • Datos. • Líneas de comunicación. Aspectos que se agrupa la seguridad. • Seguridad en el uso de recursos y servicios: control de acceso. • Seguridad en el acceso al sistema. • Seguridad en el uso de redes. Amenazas a la seguridad en el acceso al sistema • Intrusos. Hackers, como lo hacen, averiguar contraseña, probar exhaustivamente, descifrar archivo de contraseñas. Intervenir líneas, usar caballos Troya. Solución. Creación de contraseñas por ordenador. Inspección activa • Programas malignos. a) Necesitan anfitrión. Forman parte de un programa. Ejemplo 1. Trampillas. Usado para acceso no autorizado. 2. Bomba lógica. Se ejecuta cuando se cumplen ciertas condiciones. 3. Caballo de Troya. Código incrustado en programa que se ejecuta b) No necesitan anfitrión Programas independientes1. Bacterias. Agotar la capacidad del procesador. 2. Gusanos. Causa daños, se propaga en la red. 3. Virus. Tipos de amenazas. • • Pasivas. Revelación de mensajes. Activas. Alteración de mensajes, suplantación. Cifrado de datos. Transforma un mensaje original en otro ilegible. Seguridad en sistemas operativos. • • Seguridad en Linux. a) Autentificación de usuarios ante el sistema. b) Configurable sin modificar la aplicación. c) Homogénea para todos los servicios. Seguridad en Windows. a) Login. b) Autoridad de cuentas de usuario. c) Gestor de cuentas de usuario. d) Monitor de referencia de seguridad. SISTEMAS OPERATIVOS DE DISPOSITIVOS MOVILES Capas 1. Kernel El núcleo o kernel proporciona el acceso a los distintos elementos del hardware del dispositivo. Ofrece distintos servicios a las superiores como son los controladores o drivers para el hardware, la gestión de procesos, el sistema de archivos y el acceso y gestión de la memoria. 2. Middleware El middleware es el conjunto de módulos que hacen posible la propia existencia de aplicaciones para móviles. Es totalmente transparente para el usuario y ofrece servicios claves como el motor de mensajería y comunicaciones, códecs multimedia, intérpretes de páginas web, gestión del dispositivo y seguridad. 3. Entorno de ejecución de aplicaciones El entorno de ejecución de aplicaciones consiste en un gestor de aplicaciones y un conjunto de interfaces programables abiertas y programables por parte de los desarrolladores para facilitar la creación de software. 4. Interfaz de usuario Las interfaces de usuario facilitan la interacción con el usuario y el diseño de la presentación visual de la aplicación. Los servicios que incluye son el de componentes gráficos (botones, pantallas, listas, etc.) y el del marco de interacción. Aparte de estas capas también existe una familia de aplicaciones nativas del teléfono que suelen incluir los menús, el marcador de números de teléfono etc... SO EN EL MERCADO 1. Android: es sin duda el líder del mercado móvil en sistemas operativos, está basado en Linux, diseñado originalmente para cámaras fotográficas profesionales, luego fue vendido a Google y modificado para ser utilizado en dispositivos móviles como los teléfonos inteligentes y luego en tablets como es el caso del Galaxy Tab de Samsung , actualmente se encuentra en desarrollo para usarse en netbooks y PCs, el desarrollador de este S.O. es Google, fue anunciado en el 2007 y liberado en el 2008; además de la creación de la Open Handset Alliance, compuesto por 78 compañías de hardware, software y telecomunicaciones dedicadas al desarrollo de estándares abiertos para celulares, esto le ha ayudado mucho a Google a masificar el S.O, hasta el punto de ser usado por empresas como HTC, LG, Samsung, Motorola entre otros. 2. iOS: es el sistema operativo que da vida a dispositivos como el iPhone, el iPad, el iPod Touch o el Apple TV. Su simplicidad y optimización son sus pilares para que millones de usuarios se decanten por iOS en lugar de escoger otras plataformas que necesitan un hardware más potente para mover con fluidez el sistema operativo. 3. Windows Phone: anteriormente llamado Windows Mobile es un S.O. móvil compacto desarrollado por Microsoft, se basa en el núcleo del sistema operativo Windows CE y cuenta con un conjunto de aplicaciones básicas, actualmente va por la versión 10. 4. Blackberry OS: es un sistema desarrollado por Research In Motion (RIM) el cual fue presentado en el WES 2010 junto con un video promocional donde se muestra algunas novedades. RIM apuesta que su BlackBerry 6 estará enfocado en el mercado corporativo y no-corporativo. 5. Symbian: fue producto de la alianza de varias empresas de telefonía móvil, entre las que se encuentran Nokia como la más importante, Sony Ericsson, Samsung, Siemens, BenQ, Fujitsu, Lenovo, LG, Motorola, esta alianza le permitió en un momento dado ser unos de los pioneros y más usados. 6. Firefox OS: es un sistema operativo móvil, basado en HTML5 con núcleo Linux, de código abierto, para smartphones y tabletas. Es desarrollado por Mozilla Corporation bajo el apoyo de otras empresas como Telefónica y una gran comunidad de voluntarios de todo el mundo. 7. Ubuntu Touch: es un sistema operativo móvil basado en Linux. Es desarrollado por Canonical Ltd.. TECNICAS Y PROCESOS DE LA INFORMACION FUNDAMENTOS DE LA TEORIA DE LA INFORMACION La teoría de la información, también conocida como teoría matemática de la comunicación (Mathematical Theory of Communication) o teoría matemática de la información, es una propuesta teórica presentada por Claude E. Shannon y Warren Weaver a finales de la década de los años 1940. Esta teoría está relacionada con las leyes matemáticas que rigen la transmisión y el procesamiento de la información y se ocupa de la medición de la información y de la representación de la misma, así como también de la capacidad de los sistemas de comunicación para transmitir y procesar información. La Teoría de la Información es una rama de la teoría matemática y de las ciencias de la computación que estudia la información y todo lo relacionado con ella: canales, compresión de datos, criptografía y temas relacionados. Una de las aplicaciones de la teoría de la información son los archivos ZIP, documentos que se comprimen para su transmisión a través de correo electrónico o como parte de los procedimientos de almacenamiento de datos. La compresión de los datos hace posible completar la transmisión en menos tiempo. En el extremo receptor, un software se utiliza para la liberación o descompresión del archivo, restaurando los documentos contenidos en el archivo ZIP a su formato original. La teoría de la información también entra en uso con otros tipos de archivos; por ejemplo, los archivos de audio y vídeo que se reproducen en un reproductor de MP3 se comprimen para una fácil descarga y almacenamiento en el dispositivo. Cuando se accede a los archivos se amplían para que estén inmediatamente disponibles para su uso. ALGORITMOS DE CODIFICACION, COMPRESION, DETECCION Y CORRECCION DE ERRORES Codificación • Shannon-Fanon • Huffman-Greedy Compresión de datos • Codificación de fuente • Códigos no-singulares • Códigos unívocamente decodificables o Extensión de código • Códigos prefijo (o códigos instantáneos) Detección de errores • Bits de redundancia o Métodos de control de errores ▪ Paridad ▪ Códigos autochequeo y autocorrectores ▪ Códigos de bloque ▪ Distancia Hamming ▪ Paridad horizontal y vertical ▪ Códigos lineales ▪ Códigos cíclicos ▪ CRC16 ▪ CRC32 SEGURIDAD INFORMATICA 3 Pilares de la Seguridad 1. Confidencialidad: Se refiere a proteger la información de ser accedida por personas no autorizadas. 2. Integridad: Se refiere a la autenticidad de la información. Significa que la información no esté alterada y que la fuente sea genuina. 3. Disponibilidad: Significa que la información siempre esté disponible para todos los usuarios autorizados. Para cumplir los 3 principios básicos de la seguridad existentes los siguientes servicios de la seguridad 1. Autenticación. 2. Autorización. 3. No Repudio (No negar que yo como usuario hice cierta acción). 4. Auditabilidad (Registro Histórico). La Autenticación busca asegurar la validez de una identificación proporcionada para acceder a cierta información proveyendo de medios para verificar la identidad de un sujeto. Esto puede hacerse por medio de lo siguiente: • Algo que el sujeto es • Por algo que el sujeto tiene • Por algo que el sujeto conoce La Autorización busca asegurarse que las personas solo puedan hacer las cosas que le están permitidas. El No repudio provee los medios y mecanismos necesarios para identificar quien ha llevado una o varias acciones en un sistema, para que los usuarios NO PUEDAN NEGAR las responsabilidades de las acciones que han llevado a cabo. La Auditabilidad proporciona los mecanismos de detección y recuperación ante posibles fallas o incidentes de la seguridad, mediante el registro de todos los eventos y acciones hechas en el sistema. VULNERABILIDADES, AMENAZAS Y ATAQUES VULNERABILIDAD Una vulnerabilidad es alguna debilidad de cualquier tipo que compromete la seguridad del sistema. Las vulnerabilidades pueden surgir por fallos en las siguientes etapas: • • • Requerimientos. Diseño. Implementación. La principal causa de errores se da en los requerimientos y se da por las siguientes causas: 1. No se hace un análisis de requerimientos. 2. La Especificación de requerimientos no está normalmente bien hecha o definida. 3. Normalmente se dejan fuera del proyecto los requerimientos de seguridad. AMENAZAS Es el escenario en que un evento o acción, deliberada o no, compromete la seguridad de un activo. Entre las amenazas existentes se encuentran: 1. 2. 3. 4. Interceptación Modificación. Interrupción. Fabricación. Este tipo de amenazas tratan de violar los 3 pilares básicos de la seguridad. El Flujo Normal de la información entre un emisor y receptor es el siguiente, en donde se dan los 3 pilares básicos de la seguridad. Confidencialidad, Disponibilidad e Integridad. INTERCEPTACION Cuando se da la amenaza de INTERCEPTACION pasa lo siguiente: a. Existe una 3er persona que recibe nuestra información, por le regular a esta técnica se le conoce como hombre en el medio. b. La Interceptación afecta la Confidencialidad. MODIFICACION En la amenaza de MODIFICACIÓN no hay Integridad. La información está alterada, o no es genuina. INTERRUPCION En este tipo de Amenazas no existe la disponibilidad. Por Ejemplo Ataques de Denegación de Servicios lo cual ocasiona la caída de los sistemas. FABRICACION Las amenazas también pueden surgir de manera remota a la organización, como de manera local. Existen las amenazas del entorno las cuales pueden ser físicas u operacionales, y las amenazas remotas. En las amenazas de entorno físicas u operacionales pueden ser causadas por personas de la misma organización como usuarios, ex empleados, piratas etc. También las catástrofes naturales son una amenaza incontrolable. RIESGO Probabilidad de que algo malo pase. Probabilidad de que un evento se materialice cuando existe una vulnerabilidad y una amenaza asociada a la misma. ATAQUES Un ataque es una acción deliberada en contra de un sistema informático. Su objetivo es violar alguna regla de los pilares de la seguridad. 1. 2. 3. 4. 5. Ataques de Penetración. Denegación de Servicios. Escaneo de la Red. Escaneo de Vulnerabilidades. Sniffers. Entre las actividades previas para la realización de un ataque se encuentran las siguientes: Herramientas de Recolección de Información. a. b. c. d. Ping. Traceroute. nslookup. Finger Es un servicio Internet que muestra información sobre un usuario o grupo de usuarios de una máquina conectada a la Red. Generalmente se usa para saber si una persona determinada tiene cuenta en un sitio determinado de Internet, ya que muestra información acerca de un usuario, o de todos los usuarios, que han iniciado una sesión en el sistema local o en un sistema remoto. Normalmente muestra el nombre completo, la última vez que se conectó el usuario, el tiempo de inactividad, la línea del terminal y la ubicación del terminal (cuando sea aplicable). Por defecto utiliza el puerto 79. e. Escaneo de Puertos Sirve para identificar los servicios que ofrecen los sistemas de destino y luego se pueden buscar las vulnerabilidades asociadas a los puertos abiertos. Entre las técnicas más conocidas están: 1. TCP connect-scan: Hace una conexión completa. 2. TCP SYN scan: Solo se envían paquetes de Sincronización SYN, a. Si ningún servicio escucha en el puerto se recibe un RST-ACK. b. Si se recibe un SYN-ACK el puerto está abierto, y luego se envía un RST-ACK para cerrar la conexión y asi el sistema no registra la conexión. 3. TCP Fin scan: Se envía un paquete FIN, se debería recibir un RST 4. Escaneo de Puertos UDP: a. Envió de Datagramas a puertos, si el puerto está cerrado, se recibe un mensaje ICMP* (port Unreachable). Listado de Posibles Ataques a. Escuchas en la Red(Sniffers por ejemplo WireShark, TcpDump, Afecta la Confidencialidad) Su principal objetivo es interceptar información que circula en la red. Se les conoce normalmente a esta técnica como sniffing. Existen 2 formas de sniffing entre las cuales están. o Eavesdropping (Escuchar secretamente): Es una forma pasiva sin modificar la información. o Snooping: Almacena la información capturada en el ordenador del atacante. Normalmente para hacer este tipo de ataques se pone la tarjeta de red en modo promiscuo. b. Suplantación de ARP (Interceptación y Posible Modificación, Afecta la Confidencialidad y la integridad). Afecta al protocolo ARP. Existen un intermediario que se hace pasar por otra persona. A esta técnica se le conoce como Man in the Middle. Posibles soluciones a este problema son: o Dynamic ARP inspection de Cisco. o ARPON: Arpón es un demonio de red basada en el sistema de ARP subyacente de gestión que ofrece el kernel que puede correr. Basically, ArpON uses custom criteria/policies to make secure the ARP protocol, and these criteria/policies are realized through the DARPI and SARPI protocols. Básicamente, Arpon utiliza criterios personalizados o políticas para asegurar el protocolo ARP, y estos criterios y políticas se realizan a través de la DARPI y protocolos de Sarpi. o Uso de tablas MAC Estaticas. c. Ataque de Fragmentación IP La Fragmentación es necesaria debido a los diferentes MTU de las distintas redes. Nota: MTU significa La unidad máxima de transferencia (Maximum Transfer Unit - MTU) es un término de redes de computadoras que expresa el tamaño en bytes de la unidad de datos más grande que puede enviarse usando un Protocolo de Internet. Cuando la capa IP obtiene un datagrama para enviar, si el tamaño del datagrama es más grande que la MTU por esta capa, la capa IP divide el datagrama disponible en varios datagramas más pequeños. Este proceso es denotado como fragmentación. La fragmentación puede tener lugar en el emisor inicial o en los routers que están entre el emisor y el receptor. Si un datagrama es fragmentado, no será ensamblado (desfragmentado) de nuevo hasta llegar al receptor. (Excepción: Un reassembly de Cortafuegos intercalados antes de transmitir los datos) Si es necesario, un paquete ya fragmentado puede ser fragmentado otra vez (por ejemplo durante un cambio de método de transmisión). Entonces esta fragmentación puede aprovecharse para burlar las técnicas básicas de inspección de datagramas Ip. Debido a que algunos dispositivos intermedios no implementan reensamblaje de datagramas Ip cuando se han fragmentado, por lo tanto no pueden analizar bien el contenido del paquete. Para Saber cuál es el PMTU ¿Path MTU? Se envía un datagrama con la bandera DON’T FRAGMENT. Donde el paquete sobrepase el MTU del router y devolverá un mensaje ICMP de error con el MTU. d. Denegación de Servicio (Afecta la Disponibilidad, Interrupción) Interrumpir un recurso o servicio para su uso a un usuario legitimo. Puede darse por un ataque interno o externo. Ejemplo: Interno --> Borrar Archivos del Sistema. Externo --> Ataques por paquete ICMP desde fuera de la organización. El objetivo de este ataque es sobrepasar los límites de capacidad de servicio. Un ejemplo de esto es lo siguiente: Imagínate que estás en un Bar junto a un amigo, bebiendo unas cervezas, aparte de ti y tu amigo hay dos personas más, un empleado público con su amante. La persona que atiende el Bar es un tipo fortachón llamado Hugo. De pronto tú y tu amigo quieren más cerveza, y llaman a Hugo, les sirven otra corrida, al mismo tiempo el empleado fiscal y su amante también piden otra corrida de cervezas heladas. Todo sigue tranquilo, cada 15 minutos aproximadamente llega una persona más al Bar y Hugo le sirve una cerveza. ¡De pronto!, aumenta la frecuencia de clientes al Bar, ya no son los 4 iniciales, ahora son 15. Hugo comienza a transpirar por tanta demanda. A poco andar, la cantidad se duplica y en el Bar sólo se escucha: "Hugo…otra corrida", “Hugo…por acá por favor", "Más Hugo", "Hugo", "Hugo por favor","che flaco” (ese era argentino). Hugo comienza a sentirse apremiado de tanta solicitud de cerveza pero atiende sin mayores problemas. El Bar tiene a esas alturas 55 personas. ¡De pronto!… llega todo un equipo de fútbol amateur a celebrar la obtención del campeonato y la misma canción: "Hugo", "hey hugo, por acá", "hugo", "hey amigo", "hugooooo", "huguitoooo". Ahora sí, Hugo comienza a dar signos de colapso. De pronto llega otro equipo más (el que perdió el campeonato) y luego los árbitros y luego todo el público que había en el estadio. Resultado: Hugo colapsado, ahora yace desmayado en una esquina del Bar, ya no puede atender a tanta gente. En eso, tú pides una cerveza pero el pobre Hugo no responde, a ti se te ha denegado el servicio a la cerveza. Hugo→ El Servidor, las 55 personas del bar → los usuarios. Los árbitros, los equipos de fúlbol y el público → falsos usuarios. Hubo alguien, mal intencionado por cierto, que envío a toda esa gente (falsos usuarios) al Bar de Hugo, sabiendo que no sería capaz, éste despreciable personaje es el atacante del Bar de Hugo, es decir, un Hacker o varios de ellos. Este tipo de Hacker tiene bastante mala fama entre sus pares, ya que es la forma más simple de echar abajo un servidor. Ahora bien, los ataques de denegación pueden ser enviados desde un PC o por varios, pero también existe la posibilidad de que potentes servidores actúen de la misma forma, a esto se le llama un ataques distribuidos. Estos servidores se les llaman zombies, ya que actúan a la orden del Hacker, el cual con antelación intervino aquella máquina sin que el administrador se diera cuenta por supuesto. Existen Diferentes Tipos de ataques de denegación de servicio entre estos están. o Flooding: Inundación de paquetes hacia una red. Ataque masivo de paquetes, estos pueden ser Ip, ICMP, TCP, Udp. o Ip Spoofing: Enviar Datagramas Ip con direcciones falsas. o Smurf: Es un ataque de denegación de servicio que utiliza mensajes de ping al broadcast con spoofing para inundar (flood) un objetivo (sistema atacado). o Tcp Syn Flood: Envió masivo de paquetes de establecimiento de conexión. ▪ Envió de varios paquetes con SYn. ▪ El destino contestara con un SYN-ACK. ▪ El atacante nunca responderá el ACK para completar el 3-way handshake. ▪ El buffer de la víctima se llena y ya no puede atender más peticiones. o o o Connection Flood: El atacante si establece la conexión. ▪ El Objetivo es mantener las conexiones abiertas y consumir recursos del servidor para que los usuarios validos no utilicen el servicio. TearDrop: Creacion de Paquetes Ip Incorrectamente fragmentados para confundir al sistema destino y hacerlo colapsar. Los sistemas más modernos ya no son vulnerables a este tipo de ataques. Ping of the death: Es de lo más conocidos, se envía un mensaje ICMP con una longitud máxima que sobrepasa lo establecido. e. Ataques Distribuidos: un grupo de sistemas bajo el control del atacante cooperan para atacar un objetivo f. Ataques de Programas Inseguros: Errores en programas como los buffers Overflows, condiciones de carrera. Un ataque de tipo Buffer Overflow es corromper la fila de ejecución de un programa para modificar el valor de retorno de una llamada a función y provocar ejecución de código arbitrario. g. Ataques Password Cracker Entre estos ataques se encuentran los siguientes: 1. Guessing (Tratar de Adivinar Passwords). 2. Ataques de Diccionario. 3. Ataques de fuerza Bruta. h. Ataques de Sql (SQL Injection) Mejor conocido como SQL Injection el cual significa insertar SQL dentro de una consulta o comando SQL previamente establecido, con el objetivo de manipular de una forma el sistema. i. Ataques de Ingeniería Social (Phishing,Pretexting) Su principal objetivo es obtener información a través de usuarios legítimos. Estas técnicas han surgido debido a que en la actualidad los usuarios han mejorado mucho en la parte de la tecnología. Entre los principales ataques de la Ingeniería Social se encuentran: 1. Phishing: Es una técnica en la cual las víctimas son engañadas por medio de un email o algún otro tipo de técnica, la cual los invita a ir a una página que no es la genuina aunque tiene el mismo look de la original, con el principal objetivo de robar información. 2. Pretexting: Llamar a alguien por teléfono para obtener información bajo un falso pretexto. j. Ataques Sistemas DNS Este tipo de ataque es una amenaza a la confidencialidad, debido a que un DNS es comprometido un atacante puede realizar un ataque Man in the Middle. Si un servidor ofrece otro servicio adicional al DNS y el servidor es comprometido, todo el tráfico que pasa por el servidor puede ser visto por el atacante. También este tipo de ataques es una amenaza a la integridad, debido a que el atacante puede realizar las siguientes acciones: 1. Alteración de los registros. 2. Redirección Web. 3. Redirección Ecommerce. También este tipo de ataque es una amenaza a la disponibilidad si el servicio DNs es comprometido. Por ejemplo se pueden dar los siguientes casos, 1. No se pueden enviar correos a las empresas. 2. No se puede acceder a sus páginas. 3. No se puede redireccionar. 4. Eliminación de Registros Mx, AX. k. Ataques SMTP Se pueden dar los siguientes Ataques: 1. Harvesting Attacks: Los ataques de recolección del directorio ocurren cuando un spammer utiliza direcciones de correo conocidas para generar otras direcciones de correo válidas de servidores de correo empresariales o de ISPs. Esta técnica permite al spammer enviar correo a direcciones generadas aleatoriamente. Algunas de estas direcciones de correo son usuarios reales de la organización, sin embargo muchas de ellas son direcciones falsas que inundan el servidor de correo de la víctima. 2. Spam. TEORIA DE REDES Y CONECTIVIDAD FUNDAMENTOS Y DEFINICIONES GENERALES DE REDES Red. Cuando dos o más dispositivos conectados por un medio de transmisión y coordinados por uno o más protocolos comparten información y recursos. Protocolos: conjunto de reglas que deben seguir los involucrados en una conversación. TCP/IP: es un conjunto de protocolos encaminados que pueden ejecutarse en distintas plataformas de software (Windows, UNIX, etc.). Protocolo IP: es un protocolo no orientado a conexión usado tanto por el origen como por el destino para la comunicación de datos a través de una red de paquetes conmutados. Dirección IP: es un número que identifica de manera lógica y jerárquicamente a una interfaz de un dispositivo (habitualmente una computadora) dentro de una red que utilice el protocolo de internet. DHCP: (Dynamic Host Configuration Protocol): es un protocolo de red que permite a los nodos de una red IP obtener sus parámetros de configuración automáticamente. Se trata de un protocolo de tipo cliente/servidor en el que generalmente un servidor posee una lista de direcciones IP dinámicas y las va asignando a los clientes conforme estas van estando libres, sabiendo en todo momento quien ha estado en posesión de esa IP, cuanto tiempo la ha tenido y a quien se la ha asignado antes. Puertos: es un numero de 16 bits, empleado por un protocolo host a host para identificar a que protocolo del nivel superior o programas de aplicación se deben entregar los mensajes recibidos. Zócalos: es un tipo especial de descriptor de ficheros que un proceso usa para solicitar servicios de red al sistema operativo. Dominios. Es la parte principal de una dirección en la web que indica la organización o compañía que administra dicha página Subnetting: división de redes en subredes. Dirección de red: es una manera estándar de hacer referencia a una red. Dirección de broadcast: dirección especial para cada red que permite la comunicación a todos los host de esa red. TIPOS DE REDES LAN significa Red de área local. Es un conjunto de equipos que pertenecen a la misma organización y están conectados dentro de un área geográfica pequeña mediante una red, generalmente con la misma tecnología (la más utilizada es Ethernet). Una red de área local es una red en su versión más simple. La velocidad de transferencia de datos en una red de área local puede alcanzar hasta 10 Mbps (por ejemplo, en una red Ethernet) y 1 Gbps (por ejemplo, en FDDI o Gigabit Ethernet). Una red de área local puede contener 100, o incluso 1000, usuarios. Al extender la definición de una LAN con los servicios que proporciona, se pueden definir dos modos operativos diferentes: • En una red "de igual a igual", la comunicación se lleva a cabo de un equipo a otro sin un equipo central y cada equipo tiene la misma función. • En un entorno "cliente/servidor", un equipo central brinda servicios de red para los usuarios. MAN (Red de área metropolitana) conecta diversas LAN cercanas geográficamente (en un área de alrededor de cincuenta kilómetros) entre sí a alta velocidad. Por lo tanto, una MAN permite que dos nodos remotos se comuniquen como si fueran parte de la misma red de área local. Una MAN está compuesta por conmutadores o routers conectados entre sí mediante conexiones de alta velocidad (generalmente cables de fibra óptica). WAN Una WAN (Red de área extensa) conecta múltiples LAN entre sí a través de grandes distancias geográficas. La velocidad disponible en una WAN varía según el costo de las conexiones (que aumenta con la distancia) y puede ser baja. Las WAN funcionan con routers, que pueden "elegir" la ruta más apropiada para que los datos lleguen a un nodo de la red. La WAN más conocida es Internet. MEDIOS DE TRANSMISIÓN DE DATOS • • • • • UTP STP CABLE COAXIAL FIBRA OPTICA ONDAS DE RADIO • COMUNICACIÓN SATELITAL PROTOCOLOS ARP (del inglés Address Resolution Protocol o, en español, Protocolo de resolución de direcciones) es un protocolo de la capa de enlace de datos responsable de encontrar la dirección hardware (Ethernet MAC) que corresponde a una determinada dirección IP. Para ello se envía un paquete (ARP request) a la dirección de difusión de la red (broadcast (MAC = FF FF FF FF FF FF)) que contiene la dirección IP por la que se pregunta, y se espera a que esa máquina (u otra) responda (ARP reply) con la dirección Ethernet que le corresponde. Cada máquina mantiene una caché con las direcciones traducidas para reducir el retardo y la carga. ARP permite a la dirección de Internet ser independiente de la dirección Ethernet, pero esto sólo funciona si todas las máquinas lo soportan. Ethernet (pronunciado /ˈiːθərnɛt/ en inglés) es un estándar de redes de área local para computadores con acceso al medio por detección de la onda portadora y con detección de colisiones (CSMA/CD). Su nombre viene del concepto físico de ether. Ethernet define las características de cableado y señalización de nivel físico y los formatos de tramas de datos del nivel de enlace de datos del modelo OSI. Internet Protocol (en español 'Protocolo de Internet') o IP es un protocolo de comunicación de datos digitales clasificado funcionalmente en la Capa de Red según el modelo internacional OSI. Su función principal es el uso bidireccional en origen o destino de comunicación para transmitir datos mediante un protocolo no orientado a conexión que transfiere paquetes conmutados a través de distintas redes físicas previamente enlazadas según la norma OSI de enlace de datos. Transmission Control Protocol (en español 'Protocolo de Control de Transmisión') o TCP, es uno de los protocolos fundamentales en Internet. Fue creado entre los años 1973 y 1974 por Vint Cerf y Robert Kahn. Muchos programas dentro de una red de datos compuesta por computadoras, pueden usar TCP para crear conexiones entre sí a través de las cuales puede enviarse un flujo de datos. El protocolo garantiza que los datos serán entregados en su destino sin errores y en el mismo orden en que se transmitieron. También proporciona un mecanismo para distinguir distintas aplicaciones dentro de una misma máquina, a través del concepto de puerto. TCP da soporte a muchas de las aplicaciones más populares de Internet (navegadores, intercambio de ficheros, clientes FTP, etc.) y protocolos de aplicación HTTP, SMTP, SSH y FTP. Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo usado en cada transacción de la World Wide Web. HTTP fue desarrollado por el World Wide Web Consortium y la Internet Engineering Task Force, colaboración que culminó en 1999 con la publicación de una serie de RFC, el más importante de ellos es el RFC 2616que especifica la versión 1.1. HTTP define la sintaxis y la semántica que utilizan los elementos de software de la arquitectura web (clientes, servidores, proxies) para comunicarse. Es un protocolo orientado a transacciones y sigue el esquema petición-respuesta entre un cliente y un servidor. Al cliente que efectúa la petición (un navegador web o un spider) se lo conoce como "user agent" (agente del usuario). A la información transmitida se la llama recurso y se la identifica mediante un localizador uniforme de recursos (URL). Los recursos pueden ser archivos, el resultado de la ejecución de un programa, una consulta a una base de datos, la traducción automática de un documento, etc. CABLEADO ESTRUCTURADO Consiste en el tendido de cables de par trenzado UTP/STP en el interior de un edificio con el propósito de implantar una red de área local. Suele tratarse de cable de par trenzado de cobre, para redes de tipo IEEE 802.3. No obstante, también puede tratarse de fibra óptica o cable coaxial. HORIZONTAL La norma EIA/TIA 568A define el cableado horizontal de la siguiente forma: El sistema de cableado horizontal es la porción del sistema de cableado de telecomunicaciones que se extiende del área de trabajo al cuarto de telecomunicaciones o viceversa. El cableado horizontal consiste de dos elementos básicos: • Rutas y Espacios Horizontales (también llamado "sistemas de distribución horizontal"). Las rutas y espacios horizontales son utilizados para distribuir y soportar cable horizontal y conectar hardware entre la salida del área de trabajo y el cuarto de telecomunicaciones. Estas rutas y espacios son los "contenedores" del cableado Horizontal. El cableado horizontal incluye: • Las salidas (cajas/placas/conectores) de telecomunicaciones en el área de trabajo (work area outlets (WAO), en inglés). • Cables y conectores de transición instalados entre las salidas del área de trabajo y el cuarto de telecomunicaciones. • Paneles de empalme (patch panels) y cables de empalme utilizados para configurar las conexiones de cableado horizontal en el cuarto de telecomunicaciones. Se deben hacer ciertas consideraciones a la hora de seleccionar el cableado horizontal: contiene la mayor cantidad de cables individuales en el edificio. VERTICAL El sistema de cableado vertical proporciona interconexiones entre cuartos de entrada de servicios de edificio, cuartos de equipo y cuartos de telecomunicaciones. El cableado del backbone incluye la conexión vertical entre pisos en edificios de varios pisos. El cableado del backbone incluye medios de transmisión (cable), puntos principales e intermedios de conexión cruzada y terminaciones mecánicas. El cableado vertical realiza la interconexión entre los diferentes gabinetes de telecomunicaciones y entre estos y la sala de equipamiento. En este componente del sistema de cableado ya no resulta económico mantener la estructura general utilizada en el cableado horizontal, sino que es conveniente realizar instalaciones independientes para la telefonía y datos. Esto se ve reforzado por el hecho de que, si fuera necesario sustituir el backbone, ello se realiza con un coste relativamente bajo, y causando muy pocas molestias a los ocupantes del edificio. El backbone telefónico se realiza habitualmente con cable telefónico multipar. Para definir elbackbone de datos es necesario tener en cuenta cuál será la disposición física del equipamiento. Normalmente, el tendido físico del backbone se realiza en forma de estrella, es decir, se interconectan los gabinetes con uno que se define como centro de la estrella, en donde se ubica el equipamiento electrónico más complejo. El backbone de datos se puede implementar con cables UTP y/o con fibra óptica. En el caso de decidir utilizar UTP, el mismo será de categoría 5e, 6 o 6A y se dispondrá un número de cables desde cada gabinete al gabinete seleccionado como centro de estrella. MODELOS POR CAPAS, MODELO OSI Y TCP/IP MODELO OSI Se divide en 7 capas el proceso de trasmisión de la información entre equipos informáticos, donde cada capa se encarga de ejecutar una determinada parte del proceso global. • • • • • • • Capa de aplicación. Proporciona la interfaz y servicios que soportan las aplicaciones de usuario. También se encarga de ofrecer acceso general a la red. Esta capa suministra herramientas que el usuario, de hecho ve. Utiliza los protocolos, SMTP, telnet, ftp, http. Capa de presentación. Considerado el traductor del modelo OSI, convierte los paquetes de la capa de aplicación a un formato genérico para que pueda ser leído por todas las computadoras. Capa de sesión. Encargada de iniciar y finalizar la comunicación o sesión entre las computadoras emisora y receptora. Capa de transporte. Controla el flujo de datos, entre los nodos que establecen una comunicación; los datos no solo deben entregarse sin errores, sino además en la secuencia que proceda. Los protocolos que trabajan en esta capa son los TCP y UDP. Capa de red. Encamina los paquetes además de ocuparse de entregarlos. La determinación de la ruta que deben seguir los datos se produce en esta capa, lo mismo que el intercambio efectivo de los mismos dentro de dicha ruta. Los routers operan en esta capa. Capa de enlace. Cuando los paquetes de datos llegan a la capa de enlace de datos, estas pasan a ubicarse en tramas (unidades de datos, que viene definidas por la arquitectura de red que se esta utilizando. Capa física. Las tramas se convierten en una secuencia única de bits que puede trasmitirse por el entorno físico de la red. La capa física también determina los aspectos físicos sobre la forma en que el cableado está enganchado a la NIC de la computadora. MODELO TCP/IP. Basado en los protocolos TCP e IP los cuales permiten poder encaminar la información de una manera segura hacia el destino asignado. • • • • • Capa física. Relacionado con la trasmisión de bits en forma física, ya sea electricidad, luz, ondas electromagnéticas, etc. En esta capa se maneja los voltajes necesarios para la transmisión o le tiempo que será utilizado para representar un bit. Capa de enlace de datos. Su función principal es tomar un medio de transmisión en bruto y transformarlo en una línea que parezca libre de errores de transmisión no detectados a la capa de red. La función la cumple debido a que divide los datos de entrada en marcos de datos. Identificador la dirección MAC (20:57:10:2A:7E:32) Capa de red. Contrala el funcionamiento de la subred. Resuelve los problemas de rutas en redes heterogéneas. Identificador la dirección IP (192.168.1.7) Capa de transporte. Identificador los puertos (:80) Capa de Aplicación. Identificador los dominios (www.pagina.com) IMPLEMENTACION FUNCIONAL DE SERVICIOS DE RED Servido de correos: Gestiona el envío y recepción de correo de un grupo de usuarios (el servidor no necesita ser muy potente). El servidor solo debe utilizar un protocolo de correo. Servidor de impresoras: Gestionan las solicitudes de impresión de los clientes. El cliente envía la solicitud de impresión, el servidor recibe la solicitud y la ubica en la cola de impresión, ordena a la impresora que lleve a cabo las operaciones y luego avisa a la computadora cliente que ya acabo su respectiva impresión. Servicio de directorio: Active Directory De forma sencilla se puede decir que es un servicio establecido en uno o varios servidores en donde se crean objetos tales como usuarios, equipos o grupos, con el objetivo de administrar los inicios de sesión en los equipos conectados a la red, así como también la administración de políticas en toda la red. Su estructura jerárquica permite mantener una serie de objetos relacionados con componentes de una red, como usuarios, grupos de usuarios, permisos y asignación de recursos y políticas de acceso. WDS: Servidor de instalación remota WSUS: Servidor de actualizaciones para los clientes Servidor web: IIS Este servicio convierte a una PC en un servidor web para Internet o una intranet, es decir que en las computadoras que tienen este servicio instalado se pueden publicar páginas web tanto local como remotamente. DNS: es un sistema de nomenclatura jerárquica para computadoras, servicios o cualquier recurso conectado a Internet o a una red privada. Este sistema asocia información variada con nombres de dominios asignado a cada uno de los participantes. Su función más importante, es traducir (resolver) nombres inteligibles para las personas en identificadores binarios asociados con los equipos conectados a la red, esto con el propósito de poder localizar y direccionar estos equipos mundialmente. DHCP: es un protocolo de red que permite a los clientes de una red IP obtener sus parámetros de configuración automáticamente. Se trata de un protocolo de tipo cliente/servidor en el que generalmente un servidor posee una lista de direcciones IP dinámicas y las va asignando a los clientes conforme éstas van quedando libres, sabiendo en todo momento quién ha estado en posesión de esa IP, cuánto tiempo la ha tenido y a quién se la ha asignado después. FTP servidor de archivos: Proporciona archivos para clientes. Si los archivos no fueran tan grandes y los usuarios que comparten esos archivos no fueran muchos, esto sería una gran opción de almacenamiento y procesamiento de archivos. El cliente solicita los archivos y el servidor los ubica y se los envía. HARDWARE Y SOFTWARE DE REDES. SERVIDORES. Servidor: es una aplicación en ejecución (software) capaz de atender las peticiones de un cliente y devolverle una respuesta en concordancia. En el sentido del hardware el servidor es el equipo dedica para realizar varias funciones, su uso se debe a que nos brinda mayor seguridad, y también que permite poder tener varios aplicaciones como el servidor web, servidor de archivos, etc. ESTACIONES DE TRABAJO. Son equipos dedicados a ser clientes dentro de un sistema de redes, las estaciones de trabajo permite el acceso a los servidores y periféricos de una red. IMPRESORAS DE RED. Son aquellas impresoras que pueden ser utilizadas por cualquier cliente dentro de un sistema de red, para su administración se utiliza un servidores de impresoras (en este caso el sistema operativos es de tipo server), para por ser usada, su uso presenta ventajas como la de utilizar solo una por varios lo cual presenta un ahorro económico, aunque la desventaja seria que si hay alguien que imprime demasiado, crear una cola lo cual desperdiciaría tiempo. INTERFACES DE CONEXIÓN DE RED. La tarjeta de red también conocida como placa de red es el periférico que actúa de interfaz de conexión entre aparatos o dispositivos y también posibilita compartir recursos entre dos o más computadoras Esta contiene un número de 48 bits el cual es llamado dirección Mac, la cual es única. CONCENTRADORES (HUB). Es el dispositivo que permite centralizar el cableado de una red de computadoras, trabaja en la capa 1 del modelo OSI Una solicitud destinada a una determinada PC de la red será enviada a todas las PC por lo cual reduce el ancho de banda. CONMUTADORES (SWITCH). Trabaja en las primeras capas del modelo OSI, distribuye los datos a cada máquina de destino, y soluciona el problema del HUB, además de eliminar los problemas de colisiones. REPETIDORES. Retrasmiten la señal digital bit a bit, utilizado para distancias largas. PUENTE. Son dispositivos que analizan la trama a nivel de enlace, permiten una cierta optimización del trafico y la interconexión de LANs de diferentes tipos. Además de interconectar redes a nivel de enlaces, es decir trabaja en la capa de enlace y para la interconexión de redes utiliza las direcciones y no las ip como el router. ENRUTADOR (ROUTER) Interconecta redes, y busca el camino más adecuado para enviar paquetes, además de tener la funcione de filtrado de protocolos con lo que lo hace una candidato para ser firewall. Trabajan en la capa 3 del modelo OSI PASARELA (GATEWAY, PUERTA DE ENLACE). Conecta dos redes entre si y para que funcionen como una interfaz entre diferentes protocolos de red, trabaja en los niveles superiores a la capa de red. Su propósitos es la de traducir la información del protocolo utilizado al protocolo usado en la red de destino. MODEM Es un periférico utilizado para transferir información entre varios equipos a través de un medio de transmisión por cable. Su funcione es la de convertir la señal telefónica en digital. CORTA FUEGOS: Es un sistema que protege a un ordenador o a una red de ordenadores contra intrusiones provenientes de redes de terceros (generalmente desde internet). SEGURIDAD EN UNA RED La Seguridad de redes consiste en las políticas adoptadas para prevenir y monitorear el acceso no autorizado, el mal uso, la modificación o la denegación de una red de computadoras y recursos de acceso de red. La seguridad de redes involucra la autorización del acceso a datos en la red, que es controlado por el administrador de red. Los usuarios escogen o son asignados con un ID y una contraseña u otra información de autenticación que les dé acceso a la información y programas dentro de su autoridad. • Firewall: Por medio de hardware o software y también puede ser mixto. • Control a acceso a internet: Que usuarios tienen acceso a internet y a qué tipo de información se tiene acceso. • Colocar todos los archivos posibles en solo lectura: Para evitar que las amenazas se propaguen e infecten más estaciones de trabajo. • Filtros: o Anti phishing. • Antivirus: Control de correo electrónico, acceso a internet y los puertos USB. • Desactivar puertos: Que no estén en uso para evitar ataques por esos medios. Tipos de ataques Las redes son objeto de ataques por parte de fuentes malignas. Estos ataques se pueden clasificar de dos formas: "pasivos" cuando un intruso intercepta datos que están viajando a través la red y "activos" cuando el intruso ejecuta comandos para alterar el funcionamiento normal de la red. Tipos de ataque: • Pasivos • Red • • • • Escucha telefónica: o pinchazo telefónico o intervención telefónica es el monitoreo de una conversación telefónica por parte de una tercera persona, usualmente en forma encubierta. Escáner de puertos: Se utiliza para detectar qué servicios comunes está ofreciendo la máquina y posibles vulnerabilidades de seguridad según los puertos abiertos. También puede llegar a detectar el sistema operativo que está ejecutando la máquina según los puertos que tiene abiertos. Escaneo libre: Es un método de escaneo de puertos TCP que consiste en enviar paquetes falsos para encontrar que servicios esta habilitados. Esto se logra mediante la suplantación de otro equipo llamado zombie (que no envía ni recibe información) y observando el comportamiento del sistema zombie. Activos • • • • Ataque de denegación de servicio: también llamado ataque DoS (de las siglas en inglés Denial of Service) o DDoS (de Distributed Denial of Service), es un ataque a un sistema de computadoras o red que causa que un servicio o recurso sea inaccesible a los usuarios legítimos. Normalmente provoca la pérdida de la conectividad de la red por el consumo del ancho de banda de la red de la víctima o sobrecarga de los recursos computacionales del sistema de la víctima. DNS spoofing: DNS cache poisoning (o DNS Poisoning) es una situación creada de manera maliciosa o no deseada que provee datos de un Servidor de Nombres de Dominio (DNS) que no se origina de fuentes autoritativas DNS. Esto puede pasar debido a diseño inapropiado de software, falta de configuración de nombres de servidores y escenarios maliciosamente diseñados que explotan la arquitectura tradicionalmente abierta de un sistema DNS. Una vez que un servidor DNS ha recibido aquellos datos no autentificados y los almacena temporalmente para futuros incrementos de desempeño, es considerado envenenado, extendiendo el efecto de la situación a los clientes del servidor. Ataque Man-in-the-middle: o JANUS (MitM o intermediario, en español) es un ataque en el que se adquiere la capacidad de leer, insertar y modificar a voluntad, los mensajes entre dos partes sin que ninguna de ellas conozca que el enlace entre ellos ha sido violado. El atacante debe ser capaz de observar e interceptar mensajes entre las dos víctimas. El ataque MitM es particularmente significativo en el protocolo original de intercambio de claves de Diffie-Hellman, cuando éste se emplea sin autenticación. Hay ciertas situaciones donde es bastante simple, por ejemplo, un atacante dentro del alcance de un punto de acceso wi-fi sin cifrar, donde éste se puede insertar como man-in-the-middle. ARP Spoofing: El principio del ARP Spoofing es enviar mensajes ARP falsos (falsificados, o spoofed) a la Ethernet. Normalmente la finalidad es asociar la dirección MAC del atacante con la dirección IP de otro nodo (el nodo atacado), como por ejemplo la puerta de enlace predeterminada (gateway). • • • • • • Cualquier tráfico dirigido a la dirección IP de ese nodo, será erróneamente enviado al atacante, en lugar de a su destino real. El atacante, puede entonces elegir, entre reenviar el tráfico a la puerta de enlace predeterminada real (ataque pasivo o escucha), o modificar los datos antes de reenviarlos (ataque activo). Ataque por salteo de VLAN: es un abuso de la seguridad computacional, un método de atacar a los recursos de una red LAN Virtual. El concepto básico detrás de todos los ataques de salto de VLAN es, para que un host atacante en una VLAN gane acceso al tráfico de otras VLANs que normalmente no serían accesibles. o Hay dos métodos principales de salto de VLAN: ▪ Interruptor Spoofing el cual es un ataque de suplantación de conmutación en el que un host atacante imita a un switch interconectado utilizando los protocolos de interconexión y etiquetado utilizados en el mantenimiento de una VLAN. Entonces el tráfico para múltiples VLANs es accesible para el host atacante. ▪ Doble etiquetado en el cual el host atacante se conecta a la interfaz 802.1q (estándar en la red que soporta las VLANs en una red Ethernet.) antepone dos etiquetas a los paquetes VLAN que transmite. El paquete (que corresponde a la VLAN del atacante) se reenvia sin la primera etiqueta, porque es la de la VLAN nativa. La segunda etiqueta es visible para el segundo switch que el paquete encuentre. Esta etiqueta le indica al switch que el paquete está destinado a un host marcado en el segundo switch. El paquete se envía luego a la host de destino como si se originó en la VLAN de destino sin pasar por los mecanismos de red que lógicamente VLANs aíslan el uno del otro. Sin embargo, este ataque permite enviar paquetes hacia el segundo interruptor, pero posibles respuestas no se envían al host atacante. Ataque smurf: es un ataque de denegación de servicio que utiliza mensajes de ping al broadcast con spoofing para inundar (flood) un objetivo (sistema atacado). El perpetrador envía grandes cantidades de tráfico ICMP (ping) a la dirección de broadcast, todos ellos teniendo la dirección de origen cambiada (spoofing) a la dirección de la víctima. Si el dispositivo de ruteo envía el tráfico a esas direcciones de broadcast lo hace en capa 2 donde está la función de broadcast, y la mayoría de los host tomarán los mensajes ICMP de echo request y lo responderán, multiplicando el tráfico por cada host de la subred Desbordamiento de búfer: (del inglés buffer overflow o buffer overrun) es un error de software que se produce cuando un programa no controla adecuadamente la cantidad de datos que se copian sobre un área de memoria reservada a tal efecto (buffer): Si dicha cantidad es superior a la capacidad preasignada, los bytes sobrantes se almacenan en zonas de memoria adyacentes, sobrescribiendo su contenido original, que probablemente pertenecían a datos o código almacenados en memoria. Esto constituye un fallo de programación. Desbordamiento de montículo: (heap overflow/overrun) es un problema aritmético que hace referencia al exceso de flujo de datos sobre un montículo, esto permite un acceso no autorizado a la memoria por parte de un comando o de un programa o script denominado shellcode. Ataque de formato String: descubierto alrededor de 1989; puede ser usado para colgar un programa o ejecutar un código maligno. Inyección SQL: es un método de infiltración de código intruso que se vale de una vulnerabilidad informática presente en una aplicación en el nivel de validación de las entradas para realizar operaciones sobre una base de datos. El origen de la vulnerabilidad radica en el incorrecto chequeo o filtrado de las variables utilizadas en un programa que contiene, o bien genera, código SQL. Es, de hecho, un error de una clase más general de vulnerabilidades que puede ocurrir en • • • • cualquier lenguaje de programación o script que esté embebido dentro de otro. Se conoce como Inyección SQL, indistintamente, al tipo de vulnerabilidad, al método de infiltración, al hecho de incrustar código SQL intruso y a la porción de código incrustado. Phishing: o suplantación de identidad es un término informático que denomina un modelo de abuso informático y que se comete mediante el uso de un tipo de ingeniería social, caracterizado por intentar adquirir información confidencial de forma fraudulenta (como puede ser una contraseña o información detallada sobre tarjetas de crédito otra información bancaria). Cross-site scripting: es un tipo de inseguridad informática o agujero de seguridad típico de las aplicaciones Web, que permite a una tercera persona inyectar en páginas web visitadas por el usuario código JavaScript o en otro lenguaje similar (ej: VBScript), evitando medidas de control como la Política del mismo origen. Este tipo de vulnerabilidad se conoce en español con el nombre de Secuencias de órdenes en sitios cruzados. Esta vulnerabilidad puede estar presente de las siguientes formas: o Directa (también llamada Persistente): este tipo de XSS comúnmente filtrado, y consiste en insertar código HTML peligroso en sitios que lo permitan; incluyendo así etiquetas como <script> o <iframe>. o Indirecta (también llamada Reflejada): este tipo de XSS consiste en modificar valores que la aplicación web utiliza para pasar variables entre dos páginas, sin usar sesiones y sucede cuando hay un mensaje o una ruta en la URL del navegador, en una cookie, o cualquier otra cabecera HTTP (en algunos navegadores y aplicaciones web, esto podría extenderse al DOM del navegador). CSRF: (del inglés Cross-site request forgery o falsificación de petición en sitios cruzados) es un tipo de exploit (fragmento de software, fragmento de datos o secuencia de comandos y/o acciones, utilizada con el fin de aprovechar una vulnerabilidad de seguridad de un sistema de información para conseguir un comportamiento no deseado del mismo) malicioso de un sitio web en el que comandos no autorizados son transmitidos por un usuario en el cual el sitio web confía. Esta vulnerabilidad es conocida también por otros nombres como XSRF, enlace hostil, ataque de un click, cabalgamiento de sesión, y ataque automático. Ataque informático: es un método por el cual un individuo, mediante un sistema informático, intenta tomar el control, desestabilizar o dañar otro sistema informático (ordenador, red privada, etcétera). AREA PROFESIONAL CONCEPTOS DE ARQUITECTURA DEL COMPUTADOR. • Es el diseño conceptual y la estructura operacional fundamental de un sistema de computadora. MODELO DE NEUMANN Y SU IMPLEMENTACION. Es una arquitectura de computadoras, la cual indica que un computador debe tener: Memoria: almacena datos e instrucciones. Unidad de control: interpreta las instrucciones en memoria para su ejecución. Unidad aritmética lógica: operación de datos binarios Unidades de entrada/salida: administra las operaciones de la unidad de control. • • • • Memoria: Constaba de 4096 palabras, cada una con 40 bits. Cada palabra podía contener dos instrucciones de 20 bits o un número entero de 39 bits y su signo. Las instrucciones tenían 8 bits dedicados a señalar el tipo de la misma y 12 bits para especificar alguna de las 4096 palabras de la memoria. Unidad de Control: Es la que supervisaba la transferencia de información y la indicaba a la unidad aritmética lógica cual operación debía ejecutar. Unidad Aritmética Lógica: Es aquella que se encarga de realizar las operaciones aritméticas y lógicas necesarias para la ejecución de una instrucción. Acumulador: 40 bits llamado en acumulador que sirven para: o Recibir datos de entrada. o Enviar datos a la salida. o Guardar el resultado de la última operación. o Una instrucción típica era sumar una palabra de la memoria al acumulador o almacenar este en la memoria. Fue utilizado en computadoras de distintas universidades como: • ILLIAC en la Universidad de Illinois, (septiembre de 1952) • AVIDAC en Laboratorios Argonne National (1953) • ORACLE en Laboratorio Nacional de Oak Ridge (junio de 1953) • JOHNNIAC en RAND Corporation (enero de 1954) • BESK en Estocolmo (1953) EVOLUCION HISTORICA DE LOS COMPUTADORES. • • • • • • Primera Generación. Periodo: 1944 – 1956. Primera computadora mark I. Uso de tubos de vacio, aparición de ibm. Segunda Generación. Periodo: 1959 - 1964. Uso de transistores, computadora más pequeñas y rápidas. Uso de cintas magnéticas. Uso de lenguajes de alto nivel como cobol y fortran Tercera Generación. Periodo: 1964 – 1971. Uso de circuitos integrados. Computadoras más pequeñas y rápidas, uso menos de energía. Surgen los programas o software. Sistemas operativos a multitarea. Cuarta Generación. Periodo: 1971 – 1981. Microprocesador, computadoras personales o PC, Revolución del desarrollo de software. INTEL crea el primer chip de 4bits, inicio de MS-DOS. Quinta Generación. Periodo: 1982 – 1989. Surgimiento de internet. Computadoras portátiles, mayor almacenamiento, CD para almacenar música y video. Sexta Generación. Periodo: 1990 a la actualidad. Arquitecturas paralelas, vectoriales EVALUACION DE LA EFICIENCIA EN EQUIPOS DE CÓMPUTO Y LA LEY DE AHMDAHL. Para la verificación de la eficiencia, es necesario la utilización de herramientas que nos ayuden a realizar esta tarea. Las áreas a evaluar son: • • • • • • • • Prueba global, es decir todo el computador. Rendimiento del microprocesador. Memoria Ram. Aceleración 3D y motor gráfico. Sonido. Almacenamiento. Calidad de imagen. Batería (Para las portátiles.) Ley de Amdhal. Es un modelo matemático que describe la relación entre la aceleración esperada de la implementación paralela de un algoritmo y la implementación serial del mismo algoritmo. Evalúa como cambia el rendimiento al mejorar una parte de la computadora. Técnicamente la ley de amdahl trata sobre la aceleración S que se puede alcanzar a partir de las modificaciones (mejoras) de una porción P de un cálculo. Define el speedup (aceleración) que se puede alcanzar al utilizar cierta mejora 𝑆𝑝𝑒𝑒𝑑𝑢𝑝 = 𝑅𝑒𝑛𝑑𝑖𝑚𝑖𝑒𝑛𝑡𝑜 𝑎𝑙 𝑢𝑠𝑎𝑟 𝑙𝑎 𝑚𝑒𝑗𝑜𝑟𝑎 𝑅𝑒𝑛𝑑𝑖𝑚𝑖𝑒𝑛𝑡𝑜 sin 𝑢𝑠𝑎𝑟 𝑙𝑎 𝑚𝑒𝑗𝑜𝑟𝑎 Alternativamente 𝑆𝑝𝑒𝑒𝑑𝑢𝑝 = 𝑇𝑖𝑒𝑚𝑝𝑜 𝑑𝑒 𝑒𝑗𝑒𝑐𝑢𝑐𝑖ó𝑛 𝑠𝑖 𝑙𝑎 𝑚𝑒𝑗𝑜𝑟𝑎 𝑇𝑖𝑒𝑚𝑝𝑜 𝑑𝑒 𝑒𝑗𝑒𝑐𝑢𝑐𝑖ó𝑛 𝑐𝑜𝑛 𝑙𝑎 𝑚𝑒𝑗𝑜𝑟𝑎 Depende de dos factores: 1. La fracción del proceso original que puede ser mejorado. Si la mejora afecta 20 segundos de un proceso que tarda 60 segundos, entonces Fracción mejora = 20/60 2. Aceleración de la fracción que puede ser mejorada. Si la mejora hace que la parte que tardaba 20 segundos ahora es 12, Speedup mejora = 20/12 El tiempo de ejecución mejorado es igual al tiempo que no se usa la mejora más el tiempo que si usa la mejora. 𝑇𝑖𝑒𝑚𝑝𝑜 𝑑𝑒 𝑒𝑗𝑒𝑐𝑢𝑐𝑖ó𝑛𝑛𝑢𝑒𝑣𝑜 = (𝑇𝑖𝑒𝑚𝑝𝑜 𝑑𝑒 𝑒𝑗𝑒𝑐𝑢𝑐𝑖ó𝑛𝑣𝑖𝑒𝑗𝑜 ) ∗ ((1 − 𝐹𝑟𝑎𝑐𝑐𝑖ó𝑛𝑚𝑒𝑗𝑜𝑟𝑎 ) + ( 𝐹𝑟𝑎𝑐𝑐𝑖ó𝑛𝑚𝑒𝑗𝑜𝑟𝑎 )) 𝑆𝑝𝑒𝑒𝑑𝑢𝑝𝑚𝑒𝑗𝑜𝑟𝑎 ARQUITECTURA CISC Y RISC Arquitectura RISC En la arquitectura computacional, RISC (del inglés Reduced Instruction Set Computer) es un tipo de microprocesador con las siguientes características fundamentales: • Instrucciones de tamaños fijos y presentados en un reducido número de formatos. • Sólo las instrucciones de carga y almacenamiento acceden a la memoria de datos. El objetivo de diseñar máquinas con esta arquitectura es posibilitar la segmentación y el paralelismo en la ejecución de instrucciones y reducir los accesos a memoria. Características: En pocas palabras esto significa que para cualquier nivel de desempeño dado, un chip RISC típicamente tendrá menos transistores dedicados a la lógica principal. Esto permite a los diseñadores una flexibilidad considerable; así pueden, por ejemplo: • • • • Incrementar el tamaño del conjunto de registros. Mayor velocidad en la ejecución de instrucciones. Implementar medidas para aumentar el paralelismo interno. Añadir cachés enormes. • • • Añadir otras funcionalidades, como E/S y relojes para minicontroladores. Construir los chips en líneas de producción antiguas que de otra manera no serían utilizables. No ampliar las funcionalidades, y por lo tanto ofrecer el chip para aplicaciones de bajo consumo de energía o de tamaño limitado. Las características que generalmente son encontradas en los diseños RISC son: • Codificación uniforme de instrucciones, lo que permite una de codificación más rápida. • Un conjunto de registros homogéneo, permitiendo que cualquier registro sea utilizado en cualquier contexto y así simplificar el diseño del compilador. • Modos de direccionamiento simple con modos más complejos reemplazados por secuencias de instrucciones aritméticas simples. • Los tipos de datos soportados en el hardware no se encuentran en una máquina RISC. • Los diseños RISC también prefieren utilizar como característica un modelo de memoria Harvard, donde los conjuntos de instrucciones y los conjuntos de datos están conceptualmente separados. Entre las ventajas de RISC tenemos las siguientes: • • • La CPU trabaja más rápido al utilizar menos ciclos de reloj para ejecutar instrucciones. Utiliza un sistema de direcciones no destructivas en RAM. Eso significa que a diferencia de CISC, RISC conserva después de realizar sus operaciones en memoria los dos operandos y su resultado, reduciendo la ejecución de nuevas operaciones. Cada instrucción puede ser ejecutada en un solo ciclo del CPU Arquitectura CISC En la arquitectura computacional, CISC (Complex Instruction Set Computer) es un modelo de arquitectura de computadora. Los microprocesadores CISC tienen un conjunto de instrucciones que se caracteriza por ser muy amplio y permitir operaciones complejas entre operandos situados en la memoria o en los registros internos, en contraposición a la arquitectura RISC. Este tipo de arquitectura dificulta el paralelismo entre instrucciones, por lo que, en la actualidad, la mayoría de los sistemas CISC de alto rendimiento implementan un sistema que convierte dichas instrucciones complejas en varias instrucciones simples del tipo RISC, llamadas generalmente microinstrucciones. Para realizar una sola instrucción un chip CISC requiere de cuatro a diez ciclos de reloj. Entre las ventajas de CISC destacan las siguientes: • • • • • Reduce la dificultad de crear compiladores. Permite reducir el costo total del sistema. Reduce los costos de creación de software. Mejora la compactación de código. Facilita la depuración de errores. HARDWARE EMPRESARIAL Clasificación de las computadoras. • Supercomputadores. • Mainframes. • Computadores medianas. • Microcomputadores. • Computadores portátiles. Dispositivos de entrada. • Teclado. • Ratón, TrackBall • Pantalla sensible al tacto (touch). • Captación de imágenes. • Reconocimiento de voz. Dispositivos de salida. • Monitores. • Impresoras. • Bocinas. Medios de almacenamiento. • Cintas magnéticas. • Discos magnéticos. • Cinta óptica. • Memoria flash. • Discos. El hardware tiene que ser escalable al momento de alguna actualización. SOFTWARE EMPRESARIAL Por software empresarial se entiende generalmente cualquier tipo de soporte lógico (software) que está orientado a ayudar a una empresa o a una organización a mejorar su productividad y/o a medirla. El término engloba una amplia variedad de aplicaciones informáticas que incluyen desde programas de contabilidad y de ofimática, hasta sistemas de planificación de recursos empresariales (ERP), pasando por programas de gestión de clientes (CRM) y de recursos humanos, así como programas de administración de la cadena de suministros (SCM), etc. Corresponde señalar que el software empresarial no siempre es un progicial (contracción de producto y logicial, logicial es un soporte lógico), si bien es cierto que una buena parte del software empresarial es progicial empresarial; en efecto, es claro que en el primero de estos conceptos también tiene cabida el logicial a medida. MAQUINAS MULTI-NIVEL NIVEL 0: Nivel de lógica digital Su objeto de estudio es el hardware • • • Puertas lógicas Circuitos Integrados Circuitos combinacionales • • • • • Circuitos aritméticos Relojes Memorias Microprocesadores Buses NIVEL 1: Nivel de microprogramación • Conforma el verdadero nivel de lenguaje de máquina. • Aparece el concepto de MICROPROGRAMA, cuya función es interpretar las instrucciones del nivel 2 • El número de microinstrucciones es REDUCIDO, unas 20, dependiendo del procesador que sea objeto de estudio.- (instrucciones de operaciones matemáticas sencillas, lógicas y desplazamiento de datos) NIVEL 2: Nivel de máquina convencional • Cada máquina de nivel 1, tiene uno o más microprogramas que pueden ejecutarse en ella • Cada microprograma, define IMPLICITAMENTE un lenguaje de nivel 2. • Cada fabricante publica un manual para cada procesador. Este manual recibe el nombre de Manual de Referencia del lenguaje de Máquina del Procesador XXXX NIVEL 3: Nivel del sistema operativo • Añade nuevas posibilidades al nivel 2. • Estas tareas las lleva a cabo un intérprete, llamado SO • Existen instrucciones que las ejecuta directamente el nivel 2. • Este nivel, es a veces, llamado nivel híbrido Nota: estos niveles (0 al 3), no están diseñados para que los usen los programadores corrientes en la resolución de problemas (Programadores de Aplicaciones). Estas concebidos para personas llamadas Programadores de Sistema, que son especialistas en diseñar y construir máquinas virtuales. NIVEL 4: Nivel ensamblador • Los lenguajes contienen palabras y abreviaturas, a diferencia de los niveles anteriores, que solo toleran números. • El lenguaje ensamblador, es una forma SIMBOLICA de los lenguajes subyacentes (o que están por debajo) • El programa que realiza la traducción se llama ENSAMBLADOR. NIVEL 5: Nivel de lenguajes de alto nivel • Nivel orientado a los programadores de aplicaciones. • Estos lenguajes, se denominan, lenguajes de Alto Nivel(C, Pascal, Visuales, etc) Estos lenguajes se traducen por interpretación o compilación PARALELISMO Es una función que realiza el procesador para ejecutar varias tareas al mismo tiempo. Es decir, puede realizar varios cálculos simultáneamente, basado en el principio de dividir los problemas grandes para obtener varios problemas pequeños, que son posteriormente solucionados en paralelo. Tipos de paralelismo informática 1. Nivel de bit. 2. Nivel de instrucción. 3. Nivel de datos. 4. Nivel de tarea. El paralelismo o procesamiento paralelo ha sido empleado durante muchos años, sobre todo para la computación de alto rendimiento, teniendo en cuenta las generaciones de procesadores y sus características. Desventajas 1. Requieren de un gran número de ciclos de procesamiento o acceso a una gran cantidad de datos. 2. Encontrar un hardware y un software que permitan brindar estas utilidades comúnmente proporciona inconvenientes de costos, seguridad y disponibilidad. Ventajas 1. Brinda a las empresas, instituciones y usuarios en general el beneficio de la velocidad. 2. Ventaja competitiva, provee una mejora de los tiempos para la producción de nuevos productos y servicios. 3. Colaboración y flexibilidad operacional. MULTIPROCESAMIENTO SIMETRICO (SMP) La arquitectura SMP (también llamada UMA, del inglés Uniform Memory Access, en español "acceso uniforme a memoria") se caracteriza por el hecho de que varias unidades de procesamiento comparten el acceso a la memoria, compitiendo en igualdad de condiciones por dicho acceso, de ahí la denominación "simétrico". Los sistemas SMP permiten que cualquier procesador trabaje en cualquier tarea sin importar su localización en memoria; con un propicio soporte del sistema operativo, estos sistemas pueden mover fácilmente tareas entre los procesadores para garantizar eficientemente el trabajo. Una computadora SMP se compone de microprocesadores independientes que se comunican con la memoria a través de un bus compartido. Dicho bus es un recurso de uso común. Por tanto, debe ser arbitrado para que solamente un microprocesador lo use en cada instante de tiempo. Si las computadoras con un único microprocesador tienden a gastar considerable tiempo esperando a que lleguen los datos desde la memoria, SMP empeora esta situación, ya que hay varios parados en espera de datos. Ventajas con respecto a la arquitectura monoprocesador • Prestaciones: proporciona mejor desempeño si el trabajo puede organizarse de forma que partes de este se puedan ejecutar en paralelo. • Disponibilidad: Un fallo en un procesador no hará que el computador se detenga. • Crecimiento Incremental: se pueden aumentar las prestaciones del sistema añadiendo más procesadores. • Escalado: los fabricantes pueden ofrecer una gama de productos con precios y prestaciones diferentes en función del número de procesadores que configuran el sistema. Desventajas: La principal son las prestaciones, puesto que todas las referencias a memoria pasan por el bus, en consecuencia la velocidad del sistema está limitada por el tiempo de ciclo. Para mejorar las prestaciones se equipa a cada procesador con una memoria cache, que reduce drásticamente el número de accesos. Aunque esto involucra una serie de procedimientos para asegurar la coherencia de las cache. COMPUTACIÓN VECTORIAL Y CLUSTER CLUSTER Son conjuntos o conglomerados de computadoras mediante la utilización de hardwares comunes y que se comportan como si fuesen una única computadora. La tecnología de clústeres ha evolucionado en apoyo de actividades que van desde aplicaciones de súper cómputo y software de misiones críticas, servidores web y comercio electrónico, hasta bases de datos de alto rendimiento, entre otros usos. El cómputo con clústeres surge como resultado de la convergencia de varias tendencias actuales que incluyen la disponibilidad de microprocesadores económicos de alto rendimiento y redes de alta velocidad, el desarrollo de herramientas de software para cómputo distribuido de alto rendimiento, así como la creciente necesidad de potencia computacional para aplicaciones que la requieran. Simplemente, un clúster es un grupo de múltiples ordenadores unidos mediante una red de alta velocidad, de tal forma que el conjunto es visto como un único ordenador, más potente que los comunes de escritorio. Los clústeres son usualmente empleados para mejorar el rendimiento y/o la disponibilidad por encima de la que es provista por un solo computador típicamente siendo más económico que computadores individuales de rapidez y disponibilidad comparables. De un clúster se espera que presente combinaciones de los siguientes servicios: 1. Alto rendimiento 2. Alta disponibilidad 3. Balanceo de carga 4. Escalabilidad La construcción de los ordenadores del clúster es más fácil y económica debido a su flexibilidad: todos pueden tener la misma configuración de hardware y sistema operativo (clúster homogéneo), diferente rendimiento pero con arquitecturas y sistemas operativos similares (clúster semihomogéneo), o tener diferente hardware y sistema operativo (clúster heterogéneo), lo que hace más fácil y económica su construcción. Para que un clúster funcione como tal, no basta solo con conectar entre sí los ordenadores, sino que es necesario proveer un sistema de manejo del clúster, el cual se encargue de interactuar con el usuario y los procesos que corren en él para optimizar el funcionamiento. COMPUTACIÓN VECTORIAL A inicios de los 50', comenzó la necesidad de crear computadoras que resuelvan problemas matemáticos de procesos reales, tales como los que aparecen en disciplinas como la aerodinámica, sismología, meteorología, física atómica, nuclear y de plasmas. Estos problemas se caracterizan por necesitar una precisión elevada y programas que realicen de forma repetitiva operaciones aritméticas en coma flotante con grandes matrices de números. Para manejar este tipo de problemas se han desarrollado supercomputadoras, capaces de realizar cientos de millones de operaciones en como flotante por segundo, pero estas máquinas tienen un uso limitado y debido a su precio un mercado limitado. Otro tipo de sistema diseñado para las necesidades de la computación vectorial se trata de los computadores matriciales, estos no realizan procesamiento escalar y están configurados como dispositivos periféricos para que los usuarios de grandes computadoras y minicomputadoras puedan ejecutar partes vectorizadas de sus programas. ¿Cuál es la principal tarea de estos computadores? Es realizar operaciones sobre matrices o vectores numéricos en como flotante. Estas operaciones consistirán en funciones aritméticas y lógicas aplicadas sobre las componentes de los vectores. La diferencia entre un procesador vectorial y uno escalar estriba en que el procesador vectorial puede decodificar instrucciones cuyos operandos son vectores completos. Organización de los procesadores vectoriales ALU segmentada: puesto que las operaciones en coma flotante son bastante complejas, existe la posibilidad de descomponer una operación en coma flotante en etapas (comparar, desplazar, sumar, normalizar), de manera que las diferentes etapas puedan operar concurrentemente sobre conjunto de datos distintos. Debe de quedar claro que esta organización es adecuada para el procesamiento vectorial, ya que una ALU segmentada ganara tiempo solo si se alimenta con una secuencia de datos de posiciones consecutivas. La ejecución de una única operación en coma flotante aislada no se acelera con un cauce. El aumento de velocidad se consigue cuando se presenta a la ALU hasta que se ha procesado el vector completo. La operación del cauce se puede mejorar si los elementos del vector están disponibles en registros en lugar de la memoria principal. Una aproximación es el encadenamiento que nos dice que una operación vectorial puede empezar tan pronto como el primer elemento del operando vectorial esté disponible y la unidad funcional (suma, resta, multiplicación, división) esté libre. El encadenamiento hace que los resultados generados por una unidad funcional pasen inmediatamente a alimentar otra unidad funcional, y así sucesivamente. ALU paralelas: otra forma de conseguir el procesamiento vectorial es con el uso de varias ALU en un solo procesador, bajo el control de una única unidad de control. En este caso, la unidad de control en ruta los datos hacia la ALU para que puedan funcionar en paralelo. Es también posible utilizar segmentación de cauce en cada una de las ALU paralelas. Procesadores paralelos: es necesario dividir la tarea en múltiples procesos que se ejecutan en paralelo. Esta organización es eficiente solo si se dispone de software y hardware para la coordinación efectiva de los procesadores paralelos. Múltiples unidades de control implican múltiples procesadores, por lo tanto si múltiples procesadores pueden cooperar en la ejecución de una tarea dada, se denominan procesadores paralelos. APLICACION ELECTRONICAS EN OS SISTEMAS DE INFORMACION. Subsistema fisico de un sistema de informatico. Cuando estamos utilizando un Ordenador, no solo debemos pensar en la parte física, los componentes electrónicos y todo lo relativo a la Tecnología, sino que debemos considerar a ello como una parte de un todo, y esta generalidad que abarca al resto es justamente un concepto que es definido como Sistema Informático, contemplando distintos sectores. Es por ello que debemos pensar en el establecimiento de un Sistema como el conjunto de las distintas partes relacionadas entre sí, considerándose por un lado a las partes físicas, definidas bajo el concepto de Hardware, mientras que por otro lado tenemos las otras partes lógicas interactuando con ellas (Software) que a su vez interaccionan entre sí en todo momento. La interacción de las mismas con el Usuario es definida entonces bajo el concepto de Humanware, un término algo controvertido, y que estaría ligado al uso y provecho que pueda hacerse del equipo, siendo relativo entonces a los Recursos Humanos y a la productividad que encuentra el usuario cuando utiliza un Sistema Informático. Entonces, debemos definir a este último punto también considerándose no solo al equipo, sino a su interacción con el Sistema Operativo, las herramientas que ofrece, el mayor provecho que se le pueda sacar a los Dispositivos Físicos del sistema, y claro está, las Aplicaciones que allí estén instaladas y el rendimiento que un usuario puede obtener de su utilización. En lo que respecta al Sistema Informático, debemos pensar en su eficacia no solo en lo que respecta a su uso cotidiano, sino también en lo que es el Soporte Técnico, y las necesidades que posee su Mantenimiento para tener siempre el mismo rendimiento, o bien la eficiencia que se emplea para poder alcanzar un objetivo o una meta determinada con dicho sistema en particular. SUBSISTEMA Es por ello que dentro de un Sistema Informático debemos también analizar en particular los distintos Subsistemas que nos permitirán elaborar un análisis del rendimiento y eficacia del mismo: Subsistema Físico: Relativo a lo que es la parte física del equipo, contemplando el Hardware no solo en sus partes fijas, sino también los Periféricos (Dispositivos de Entrada y Salida) y su relación con el usuario Subsistema Lógico: Además de analizar cómo funcionan los componentes físicos del equipo, debemos pensar en las Aplicaciones y los Programas que están instalados en el sistema, considerándose justamente al Sistema Operativo, pero también contemplando las Aplicaciones que ofrece, la productividad que se alcanza con ella, las Bases de Datos que se pueden obtener y el uso de los mismos. Medios o canales de transmisión de información Los medios de transmisión son las vías por las cuales se comunican los datos. Dependiendo de la forma de conducir la señal a través del medio o soporte físico, se pueden clasificar en dos grandes grupos: • medios de transmisión guiados o alámbricos. • medios de transmisión no guiados o inalámbricos. En ambos casos las tecnologías actuales de transmisión usan ondas electromagnéticas. En el caso de los medios guiados estas ondas se conducen a través de cables o “alambres”. En los medios inalámbricos, se utiliza el aire como medio de transmisión, a través de radiofrecuencias, microondas y luz (infrarrojos, láser); por ejemplo: puerto IrDA (Infrared Data Association), Bluetooth o Wi-Fi. Según el sentido de la transmisión, existen tres tipos diferentes de medios de transmisión: • símplex. • semi-dúplex (half-duplex). • dúplex o dúplex completo (full-duplex). También los medios de transmisión se caracterizan por utilizarse en rangos de frecuencia de trabajo diferentes. Medios de transmisión guiados Los medios de transmisión guiados están constituidos por cables que se encargan de la conducción (o guiado) de las señales desde un extremo al otro. Las principales características de los medios guiados son el tipo de conductor utilizado, la velocidad máxima de transmisión, las distancias máximas que puede ofrecer entre repetidores, la inmunidad frente a interferencias electromagnéticas, la facilidad de instalación y la capacidad de soportar diferentes tecnologías de nivel de enlace. La velocidad de transmisión depende directamente de la distancia entre los terminales, y de si el medio se utiliza para realizar un enlace punto a punto o un enlace multipunto. Debido a esto, los diferentes medios de transmisión tendrán diferentes velocidades de conexión que se adaptarán a utilizaciones dispares. Dentro de los medios de transmisión guiados, los más utilizados en el campo de las telecomunicaciones y la interconexión de computadoras son tres: • cable de par trenzado • cable coaxial • fibra óptica Medio de transmisión Razón de datos total Ancho de banda Separación entre repetidores (km) Cable de par trenzado 4 Mbps 3 MHz 2 a 10 Cable coaxial 10 Mbps 350 MHz 1 a 10 Cable de fibra óptica 2 Gbps 2 GHz 10 a 100 El cable de par trenzado consiste en un conjunto de pares de hilos de cobre, conductores cruzados entre sí, con el objetivo de reducir el ruido de diafonía. A mayor número de cruces por unidad de longitud, mejor comportamiento ante el problema de diafonía El cable coaxial Conductor central rodeado por una capa conductora cilíndrica. Se emplea en sistemas troncales o de largo alcance que portan señales múltiplex con gran número de canales. La fibra óptica es un enlace hecho con un hilo muy fino de material transparente de pequeño diámetro y recubierto de un material opaco que evita que la luz se disipe. Por el núcleo, generalmente de vidrio o plásticos, se envían pulsos de luz, no eléctricos. Hay dos tipos de fibra óptica: la multimodo y la monomodo. En la fibra multimodo la luz puede circular por más de un camino pues el diámetro del núcleo es de aproximadamente 50 µm. Por el contrario, en la fibra monomodo sólo se propaga un modo de luz, la luz sólo viaja por un camino. El diámetro del núcleo es más pequeño (menos de 5 µm). Medios No guiados En este tipo de medios, la transmisión y la recepción de información se lleva a cabo mediante antenas. A la hora de transmitir, la antena irradia energía electromagnética en el medio. Por el contrario, en la recepción la antena capta las ondas electromagnéticas del medio que la rodea. Para las transmisiones no guiadas, la configuración puede ser: • direccional, en la que la antena transmisora emite la energía electromagnética concentrándola en un haz, por lo que las antenas emisora y receptora deben estar alineadas; y • omnidireccional, en la que la radiación se hace de manera dispersa, emitiendo en todas direcciones, pudiendo la señal ser recibida por varias antenas. Generalmente, cuanto mayor es la frecuencia de la señal transmitida es más factible confinar la energía en un haz direccional. La transmisión de datos a través de medios no guiados añade problemas adicionales, provocados por la reflexión que sufre la señal en los distintos obstáculos existentes en el medio. Resultando más importante el espectro de frecuencias de la señal transmitida que el propio medio de transmisión en sí mismo. Según el rango de frecuencias de trabajo, las transmisiones no guiadas se pueden clasificar en tres tipos: • Radiofrecuencia u ondas de radio; • microondas o terrestres o satelitales; • luz o infrarroja y o láser. Banda de Nombre de frecuencia Modulación Razón de datos Aplicaciones principales frecuencia ASK 30-300 LF 0,1-100 FSK Navegación kHz (low frecuency) bps MSK ASK 300-3000 MF 10-1000 FSK Radio AM comercial kHz (medium frecuency) bps MSK ASK 3-30 HF 10-3000 FSK Radio de onda corta MHz (high frecuency) bps MSK 30-300 VHF FSK Hasta 100 * Televisión VHF MHz (very high frecuency) PSK kbps * Radio FM 300-3000 UHF Hasta 10 * Televisión UHF PSK MHz (ultra high frecuency) Mbps * Microondas terrestres 3-30 SHF Hasta 100 * Microondas terrestres PSK GHz (super high frecuency) Mbps * Microondas satelitales 30-300 EHF Hasta 750 Enlaces cercanos con punto a PSK GHz (extremely high frecuency) Mbps punto experimentales Radiofrecuencias En radiocomunicaciones, aunque se emplea la palabra “radio”, las transmisiones de televisión, radio (radiofonía o radiodifusión), radar y telefonía móvil están incluidas en esta clase de emisiones de radiofrecuencia. Otros usos son audio, video, radionavegación, servicios de emergencia y transmisión de datos por radio digital; tanto en el ámbito civil como militar. También son usadas por los radioaficionados. Microondas Además de su aplicación en hornos microondas, las microondas permiten transmisiones tanto con antenas terrestres como con satélites. Dada sus frecuencias, del orden de 1 a 10 Ghz, las microondas son muy direccionales y sólo se pueden emplear en situaciones en que existe una línea visual entre emisor y receptor. Los enlaces de microondas permiten grandes velocidades de transmisión, del orden de 10 Mbps. Infrarrojos Esta tecnología está basada en rayos luminosos que se mueven en el espectro infrarrojo. Los estándares IrDA soportan una amplia gama de dispositivos eléctricos, informáticos y de comunicaciones; permiten la comunicación bidireccional entre dos extremos a velocidades que oscilan entre los 9600 bit/s y los 4 Mbit/s. Esta tecnología se encontraba en muchas computadoras portátiles y en teléfonos móviles de finales de los años 1990 y principios de los 2000, sobre todo en los dispositivos de fabricantes líderes de ese momento, como Nokia y Ericsson; fue gradualmente desplazada por tecnologías como Wi-Fi y Bluetooth. Modo de transmisión según su sentido (señales) Símplex Este modo de transmisión permite que la información discurra en un solo sentido y de forma permanente. Con esta fórmula es difícil la corrección de errores causados por deficiencias de línea (por ejemplo, la señal de televisión). Semi-dúplex En este modo la transmisión fluye en los dos sentidos, pero no simultáneamente, solo una de las dos estaciones del enlace punto a punto puede transmitir. Este método también se denomina en dos sentidos alternos o símplex alternativo (p. ej., el walkie-talkie). Dúplex (completo) Es el método de comunicación más aconsejable puesto que en todo momento la comunicación puede ser en dos sentidos posibles, es decir, que las dos estaciones simultáneamente pueden enviar y recibir datos y así pueden corregir los errores de manera instantánea y permanente (p. ej., el teléfono). ELECTRONICA DE RED. Conmutador (switch) es el dispositivo digital lógico de interconexión de equipos que opera en la capa de enlace de datos del modelo OSI. Su función es interconectar dos o más segmentos de red, de manera similar a los puentes de red, pasando datos de un segmento a otro de acuerdo con la dirección MAC de destino de las tramas en la red y eliminando la conexión una vez finalizada esta. Los conmutadores se utilizan cuando se desea conectar múltiples tramos de una red, fusionándolos en una sola red. Al igual que los puentes, dado que funcionan como un filtro en la red y solo retransmiten la información hacia los tramos en los que hay el destinatario de la trama de red, mejoran el rendimiento y la seguridad de las redes de área local (LAN). Concentrador (hub) es el dispositivo que permite centralizar el cableado de una red de computadoras, para luego poder ampliarla. Trabaja en la capa física (capa 1) del modelo OSI o la capa de acceso al medio en el modelo TCP/IP. Esto significa que dicho dispositivo recibe una señal y repite esta señal emitiéndola por sus diferentes puertos (repetidor). En la actualidad, la tarea de los concentradores la realizan, con frecuencia, los conmutadores (switches). Un router —también conocido como enrutador o encaminador de paquetes— es un dispositivo que proporciona conectividad a nivel de red o nivel tres en el modelo OSI. Su función principal consiste en enviar o encaminar paquetes de datos de una red a otra, es decir, interconectar subredes, entendiendo por subred un conjunto de máquinas IP que se pueden comunicar sin la intervención de un encaminador (mediante puentes de red), y que por tanto tienen prefijos de red distintos. SISTEMAS DE PROTECCÍON ELECTRONICAS EN LOS SITEMAS DE INFORMACIÓN INFRAESTRUCTURA DE UN LABORATORIO DE COMPUTACION. • • • • • • • Piso falso: debe ser robusto, in deforme, resistencia a la humedad, debe tener una altura de 0.05 a 0.075. Controlar el ruido: para ello solo basta con colocar de manera estratégica los equipos con las impresoras, los teléfonos y el papeleo. También se puede con insonoracion del techo, suelo y paredes, uso de mobiliario de madera, insonoracion de las máquinas. Instalación eléctrica, se distribuye la carga, distribución de energía, uso de ups. Temperatura. De estar entre los 23 a 26 grados. Buena iluminación. No debe haber mucho polvo. Restringir la entrada de comida y bebida, debe haber espacio. Aire acondicionado. INFRAESTRUCTURA DE UN CUARTO DE SERVIDORES Y TELECOMUNICACIONES. • • • Ubicación y características generales. a) Piso falso, hecho de madera o metal recubierto por plástico, es anti polvo, resiste a la humedad y corrosión, es semiaislante. b) Ruido. Insonoracion del techo, suelo y paredes. No techos de vidrio. Uso de mobiliario de madera, insonoracion de las máquinas. c) Se debe contar, alarmas, monitoreo, ventanas a prueba de rotura. Instalaciones eléctricas y temperatura. a) Toma a tierra, b) Generadores de energía c) UPS. d) Aire acondicionado, nos ayuda con la temperatura, la humedad y el polvo. (se debe tener al menos dos). Seguridad. a) Riesgos naturales. Procedentes del entorno natural • Uso de UPS, detectores de incendios, de humedad y agua, generadores de electricidad y resguardo del equipo tecnológico. b) Riesgos de vecindad. Procedentes del entorno creado por el hombre. Aislamiento físico, colocar cables dentro de las paredes o bajo el suelo y techo, tecnología para restringir la entrada a la sala. Controles de acceso. a) Uso de candado y cerrojos convencionales. b) Control de acceso por código, por tarjetas, por detectores biométricos (detectores de huellas dactilares, la mano o retina). c) Control de acceso físico, de acuerdo a las normas de la empresa, d) Uso de guardias, detectores de metales, sistema biométricos, seguridad con animales, Protección electrónica (Cercas Electrificadas). SISTEMAS DE PROTECCION ELECTRICA. Lo primero que hay que tomar en cuenta al instalar un cuarto de servidor o de computadores es su ubicación, tener idea del lugar nos da la posibilidad de saber si estamos propenso a rayos o no. Si el lugar es propenso a rayos, es necesario contar con un pararrayos, como su nombre lo indica evitan que los rayos dañen el equipos • Tierra Física. Se usa debido a cualquier derivación indebida de la corriente eléctrica. • UPS: nos ayudan en la caída y subida de tensión, además funcionan como baterías, las cuales le dan alimentación a lo que esté conectado (servidores, PC) en un tiempo determinado. • Generadores Eléctricos. Utilizados mayormente cuando el sistema eléctrico se corta por más tiempo. Funcionan generalmente por diésel. • Líneas Independientes de suministros. • Energía Estática: se combate con espray antiestáticos PLAN DE CONTINGENCIA Ciclo de PDCA El plan de contingencias sigue el conocido ciclo de vida iterativo PDCA (plan-do-check-act, es decir, planificarhacer-comprobar-actuar). Nace de un análisis de riesgo donde, entre muchas amenazas, se identifican aquellas que afectan a la continuidad del negocio. Sobre dicha base se seleccionan las contramedidas más adecuadas entre diferentes alternativas, siendo plasmadas en el plan de contingencias junto con los recursos necesarios para ponerlo en marcha. El plan debe ser revisado periódicamente. Generalmente, la revisión será consecuencia de un nuevo análisis de riesgo. En cualquier caso, el plan de contingencias siempre es cuestionado cuando se materializa una amenaza, actuando de la siguiente manera: • Si la amenaza estaba prevista y las contramedidas fueron eficaces: se corrigen solamente aspectos menores del plan para mejorar la eficiencia. • Si la amenaza estaba prevista pero las contramedidas fueron ineficaces: debe analizarse la causa del fallo y proponer nuevas contramedidas. • Si la amenaza no estaba prevista: debe promoverse un nuevo análisis de riesgos. Es posible que las contramedidas adoptadas fueran eficaces para una amenaza no prevista. No obstante, esto no es excusa para evitar el análisis de lo ocurrido en una vaca. Contenido El plan de contingencias comprende tres subplanes. Cada plan determina las contramedidas necesarias en cada momento del tiempo respecto a la materialización de cualquier amenaza: • El plan de respaldo. Contempla las contramedidas preventivas antes de que se materialice una amenaza. Su finalidad es evitar dicha materialización. • El plan de emergencia. Contempla las contramedidas necesarias durante la materialización de una amenaza, o inmediatamente después. Su finalidad es paliar los efectos adversos de la amenaza. • El plan de recuperación. Contempla las medidas necesarias después de materializada y controlada la amenaza. Su finalidad es restaurar el estado de las cosas tal y como se encontraban antes de la materialización de la amenaza. Por otra parte, el plan de contingencias no debe limitarse a estas medidas organizativas. También debe expresar claramente: • Qué recursos materiales son necesarios. • Qué personas están implicadas en el cumplimiento del plan. • Cuáles son las responsabilidades concretas de esas personas y su rol dentro del plan. • Qué protocolos de actuación deben seguir y cómo son. Ejemplo Este ejemplo no es ni mucho menos exhaustivo. Supongamos una pequeña compañía que se dedica a la producción de prendas textiles. Un análisis de riesgos identificaría (entre otras cosas) lo siguiente: Activos e interdependencias: Oficinas centrales → Centro de proceso de datos → Computadoras y almacenamiento → Información de pedidos y facturación → Proceso de negocio de ventas → Imagen corporativa Este análisis demuestra que una amenaza materializada en las oficinas centrales podría llegar a afectar al proceso de negocio dedicado a la venta. Aunque esto no impida a la compañía seguir comercializando productos, supondría una interrupción temporal de las ventas. Además afectaría negativamente a la imagen corporativa provocando la pérdida de clientes. Así, se evaluaría la siguiente amenaza y su impacto: Amenaza: Incendio. (Los activos afectados son los anteriores y los futuros). Impacto: (es un ejemplo ficticio) • Perdida de un 10% de clientes. • Imposibilidad de facturar durante un mes. • Imposibilidad de admitir pedidos durante un mes. • Reconstrucción manual de pedidos y facturas a partir de otras fuentes. • Sanciones por accidente laboral. • Inversiones en equipamiento y mobiliario. • Rehabilitación del local. Todas estas consecuencias pueden valorarse en términos monetarios, que junto a la probabilidad de materialización ofrecen una estimación del riesgo. El plan de contingencias contendría someramente las siguientes contramedidas: • Medidas técnicas: o Extintores contra incendios. o Detectores de humo. o Salidas de emergencia. o Equipos informáticos de respaldo. • Medidas organizativas: o Seguro de incendios. o Precontrato de alquiler de equipos informáticos y ubicación alternativa. o Procedimiento de copia de respaldo. o Procedimiento de actuación en caso de incendio. o Contratación de un servicio de auditoría de riesgos laborales. • Medidas humanas: o Formación para actuar en caso de incendio. o Designación de un responsable de sala. o Asignación de roles y responsabilidades para la copia de respaldo. (Etc.) Los subplanes contendrían las siguientes previsiones: • Plan de respaldo: o Revisión de extintores. o Simulacros de incendio. o Realización de copias de respaldo. o Custodia de las copias de respaldo (por ejemplo, en la caja fuerte de un banco). o Revisión de las copias de respaldo. • Plan de emergencia: o Activación del precontrato de alquiler de equipos informáticos. o Restauración de las copias de respaldo. o Reanudación de la actividad. • Plan de recuperación: o Evaluación de daños. o Traslado de datos desde la ubicación de emergencia a la habitual. o Reanudación de la actividad. o Desactivación del precontrato de alquiler. o Reclamaciones a la compañía de seguros. AUDITORIA DE SISTEMAS CONCEPTOS DE AUDITORÍAS DE SISTEMAS. Auditor: persona que audita o realiza auditoria. Auditoria: Revisión de las cuentas de una empresa, hecha por decisión de un tribunal o a instancias de particular. • La verificación de controles en el procesamiento de la información, desarrollo de sistemas e instalación con el objetivo de evaluar su efectividad y presentar recomendaciones a la Gerencia. • La actividad dirigida a verificar y juzgar información. • El examen y evaluación de los procesos del Area de Procesamiento automático de Datos (PAD) y de la utilización de los recursos que en ellos intervienen, para llegar a establecer el grado de eficiencia, efectividad y economía de los sistemas computarizados en una empresa y presentar conclusiones y recomendaciones encaminadas a corregir las deficiencias existentes y mejorarlas. • El proceso de recolección y evaluación de evidencia para determinar si un sistema automatizado: • La auditoria en informática es la revisión y la evaluación de los controles, sistemas, procedimientos de informática; de los equipos de cómputo, su utilización, eficiencia y seguridad, de la organización que participan en el procesamiento de la información, a fin de que por medio del señalamiento de cursos alternativos se logre una utilización más eficiente y segura de la información que servirá para una adecuada toma de decisiones. PLANEACION DE LA AUDITORIA DE SISTEMAS. Antes de la ejecución de la auditoria, se debe terminar el objeto de esta, así como el diseño de los métodos, técnicas y procedimientos necesarios para llevarlas a cabo y para preparar los documentos que servirán de apoyo para su ejecución. • • • • • • • Identificar el Origen de la Auditoria. a) Interna. (a petición de accionistas, socios, dirección general, gerencias) b) Externa. (autoridades judiciales, autoridades fiscales) c) Por emergencia. d) Por riesgo y contingencias informáticas. (riesgo del personal, físico, software) e) Por planes de contingencia. (por la carencia, elaboración o aplicación de planes de contingencia) f) Por otras auditorias g) Por parte del plan de auditorias Realizar una vista preliminar al área que será evaluada. a) Vista preliminar de arranque b) Contacto con el personal del área. c) Identificación del problema del área. d) Objetivos iniciales de la auditoria. e) Calculo de recursos y personas necesarias para la auditoria. Establecer los objetivos de la auditoria. a) Objetivo general b) Objetivos particulares. c) Objetivos específicos de la auditoria. Determinar los puntos que serán evaluados en la auditoria. a) Evaluación de las funciones y actividades del personal del área de sistemas. b) Evaluación de las áreas y unidades administrativas del centro de cómputo. c) Evaluación de la seguridad de los sistemas de información. d) Evaluación de la información, documentación y registros de lo sistemas. e) Evaluación de los sistemas, equipos, instalación y componentes. 1- Evaluación de los recursos humanos del área de sistemas. 2- Evaluación del hardware. 3- Evaluación del software. 4- Evaluación de la información y las bases de datos. 5- Evaluación de otros recursos informáticos. 6- Evaluación de equipos, instalaciones y demás componentes. f) Elegir los tipos de auditorías que serán utilizados. g) Determinar los recursos que serán evaluados en la auditoria. h) Elaborar planes, programas y presupuestos para realizar la auditoria. Identificar y seleccionar los métodos, procedimientos, instrumentos y herramientas necesarios para la auditoria. Asignar los recursos y sistemas computacionales para la auditoria. FASES DE LA AUDITORIA • • Planeación. Esta fase nos permite saber el porqué de la auditoria, donde y con quienes se trabajara la auditoria, que trata de cumplir la auditoria, que evaluara, en qué forma se realizara y con qué recursos se contara además también nos permite saber con qué se realizara. Ejecución. Se lleva a cabo todo lo establecido en la etapa de la planeación. Lo que se realiza en esta fase es: a) b) c) d) e) • Realizar las acciones programadas para la auditoria. Aplicar los instrumentos y herramientas para la auditoria. Identificar y elaborar los documentos de desviaciones. Elaborar el dictamen preliminar y presentarlo a discusión. Integrar el legajo de papeles de trabajo de la auditoria. Dictamen. Es la última fase de la auditoria, en el cual se le presenta de una manera detallado las desviaciones encontradas. a) Analizar la información y elaborar un informe de situaciones detectadas. b) Elaborar el dictamen. c) Presentar el informe de auditoría. AUDITORIA DE LA FUNCION INFORMATICA Funciones de la auditoría en informática: En cualquiera de las estructuras mencionadas hay que asegurar al negocio un conjunto de acciones mínimas que vuelvan rentable la auditoría en informática. Funciones mínimas. Evaluación y verificación de los controles y procedimientos relacionados con la función de informática dentro de la organización. La validación de los controles y procedimientos utilizados para el aseguramiento permanente del uso eficiente de los sistemas de información computarizados y de los recursos de informática dentro de la organización. a) Evaluación, verificación e implantación oportuna de los controles y procedimientos que se requieren para el aseguramiento del buen uso y aprovechamiento de la función de informática. b) Aseguramiento permanente de la existencia y cumplimiento de los controles y procedimientos que regulan las actividades y utilización de los recursos de informática de acuerdo con las políticas de la organización. c) Desarrollar la auditoría en informática conforme normas y políticas estandarizadas a nivel nacional e internacional. d) Evaluar las áreas de riesgo de la función de informática y justificar su evaluación con la alta dirección del negocio. e) Elaborar un plan de auditoria en informática en los plazos determinados por el responsable de la función. f) Obtener la aprobación formal de los proyectos del plan y difundidos entre los involucrados para su compromiso. g) Administrar o ejecutar de manera eficiente los proyectos contemplados en el plan de la auditoría en informática. Nota: Se debe aclarar que las estructuras y funciones mencionadas sólo son sugerencias ilustrativas y enunciativas, no limitativas. Una vez formalizada la función en cualquiera de las situaciones organizacionales señaladas, se define un mecanismo de administración y control de la función. Dicho mecanismo garantizará que todos los recursos y proyectos involucrados en el proceso de desempeño y gestión de la auditoría en informática, obedezcan los principios básicos de un proceso administrativo. Entre otros, los elementos más importantes e indispensables son la planeación, el personal, el control y el seguimiento del desempeño. Objetivos principales de la administración de la auditoría en informática: • Asegurar que la función de auditoría cubra y proteja los mayores riesgos y exposiciones existentes en el medio informático en el negocio. • Asegurar que los recursos de informática (hardware, software, telecomunicaciones, servicios, personal, etc.) sean orientados al logro de los objetivos y las estrategias de las organizaciones. • Asegurar la formulación, elaboración y difusión formal de las políticas, controles y procedimientos inherentes a la auditoría en informática que garanticen el uso y aprovechamiento óptimo y eficiente de cada uno de los recursos de informática en el negocio. • Asegurar el cumplimiento formal de las políticas, controles y procedimientos definidos en cada proyecto de auditoría en informática mediante un seguimiento oportuno. • Asegurar que se den los resultados esperados por el negocio mediante la coordinación y apoyo reciproco con: 1. Auditoría. 2. Asesores externos. 3. Informática. 4. Alta dirección. Con el fin de que los objetivos y metas de la función de auditoría en informática se lleven a cabo con éxito, es necesario considerar lo siguiente: • Elaborar y formalizar los planes de auditoría en informática. • Organizar y administrar la función de manera eficiente. • Dirigir y controlar los proyectos de auditoría en informática con oportunidad. • Revisar y evaluar de manera periódica el desempeño de los auditores en informática. • Evaluar el desempeño de la función de informática. • Otros. Resumidamente, las funciones del Departamento de Auditoria Informática serán: • • • • • • • • • • • • • • Evaluar los sistemas que aseguran el cumplimiento de las políticas, planes, procedimientos, normas y reglamentos, emitiendo sugerencias de mejora en los controles internos establecidos. Vigilar el cumplimiento de las normas e instrucciones establecidas por la Dirección de la Sociedad, realizando el seguimiento de las recomendaciones emitidas. Revisar y evaluar la fiabilidad del sistema contable establecido y que éste responde a la normativa legal e interna. Evaluar, asimismo, a través de la auditoria informática, la adecuación, utilidad, eficiencia, fiabilidad y salvaguarda de la información mecanizada de la Sociedad así como la organización de los servicios que la elaboran y procesan. Verificar la existencia de los activos y revisar los medios de salvaguarda de los mismos. Colaborar con los auditores externos, integrando su labor con los objetivos del Departamento de Auditoria Interna. El auditor externo debe tener acceso a los informes de auditoría interna y debe ser informado de cualquier asunto que, estando en conocimiento de los auditores internos, pueda afectar a su trabajo. De igual manera, los auditores externos deberán comunicarles cualquier asunto que pudiera afectar a la auditoría interna. Deberán estar coordinados para evitar duplicidades en el trabajo a realizar, por medio de reuniones periódicas y la puesta en común de técnicas de auditoria, métodos y terminología. Asistir a los miembros de la organización, proporcionándoles análisis, recomendaciones, consejo e información concerniente a las actividades revisadas. Evaluar la posibilidad de establecer (y en caso afirmativo, implantarlo) un sistema de control a distancia para asegurar el mantenimiento de un seguimiento permanente, por medios informáticos, de operaciones anómalas, al objeto de prevenir y detectar rápidamente incidencias de normativa, mediante un modelo de indicadores ponderado que permita ejercer un seguimiento permanente sobre determinadas situaciones que por su gravedad pueden perjudicar sustancialmente a la organización o pueden provocar pérdidas de rentabilidad o de negocio. Sugerir las medidas de control interno necesarias para garantizar el cumplimiento de la normativa en la elaboración y publicación de la información financiera, proporcionando un grado razonable de control en el cumplimiento de fechas y plazos legales de la documentación a entregar por parte de Sociedad al Organismo Supervisor. Proporcionar un grado razonable de seguridad acerca del cumplimiento de las leyes y normativa en vigor aplicable. Informar a la Dirección de cuantas anomalías o irregularidades se detecten, recomendando las mejores acciones correctoras. Evaluar que la organización cuenta con los medios humanos y materiales que garanticen la adecuada gestión del negocio, a través de la oportuna segregación de funciones. Elaborar un Código de Conducta a nivel corporativo, que sea aprobado por el Consejo de Administración de la Sociedad y evaluar periódicamente el cumplimiento del mismo. En caso preciso, la ejecución de investigaciones especiales. EVALUACION DE LOS SISTEMAS DE INFORMACION. Qué es la evaluación ¿Qué es evaluar? • Evaluación es señalar o estimar el valor de una cosa. Tratar la evaluación, supone utilizar la medición para ponderar una cosa. • La evaluación es aquel proceso mediante el cual se intenta obtener un juicio de valor o una preciación de la bondad de un objeto de una actividad, de un proceso o de sus resultados. (Swanson, 1975) Qué se persigue con la evaluación: Objetivos • Medir la consecución de los objetivos previamente establecidos: Se determina si se cumple la evaluación con los factores de eficacia, eficiencia o factor de impacto de un servicio o sistema de información. o Concordancia con los objetivos operativos o Coste del sistema de información o Consecución de los objetivos planteados o Logra mejorar servicios o sistemas precedentes o Qué impacto tiene en la organización y sus usuarios • Disponer de un instrumento para diagnosticar los puntos débiles en el funcionamiento: El instrumento puede ser el propio sistema de información o metodología específica para la medición de factores o indicadores de actividad, calidad, servicio, producción, etc. o Se obtienen resultados de calidad y por lo tanto los resultados deseados o Se llevan a cabo correctamente las operaciones y actividades documentales o Puede el sistema de información o servicio ofrecer soluciones y respuestas a las necesidades de los usuarios • Facilitar el proceso de la toma de decisiones: Utilizando información objetiva, no basadas en opiniones o suposiciones. o Mantener o eliminar un servicio que se ha evaluado o Optar por el uso de un procedimiento u otro en función de su rendimiento y beneficios o Modificar estrategias o Establecer nuevos sistemas de información. o Introducir nuevas técnicas o procedimientos para mejorar el funcionamiento de los servicios y unidades de información y documentación. • Permitir la comparación entre sistemas mediante la construcción de estándares de referencia: Evaluar la unidad de información y documentación en función de trabajos de evaluación de otras bibliotecas, centros de documentación o archivos. Por lo tanto se fijan unos indicadores comunes por los que determinar la eficiencia y eficacia de los servicios y procesos de la UID. Éste método también ha sido denominado evaluación exógena (Manuela de la Mano, 1998). • Justificar la existencia de los sercicios y sistemas de información: Evaluar para justificar el buen funcionamiento y mantenimiento de un servicio en función de su rendimiento económico, difusión o alcance, resultados operativos, calidad de servicio y respuesta al usuario. Todo ello implica como resultado la satisfacción del usuario. Tipos de evaluación Además de la concepción general de la evaluación que aquí se expone, hay que considerar otros tipos de evaluación que si bien comparten el mismo origen y finalidad, tienen objetivos más especializados. De hecho no es lo mismo evaluar la UID desde un punto de vista económico, que efectuar un estudio cualitativo de sus servicios o procesos. Teniendo en cuenta esta consideración, definimos los siguientes tipos de evaluación especializada: • • • • • • • Evaluación económica de la UID: Consiste en la definición de indicadores en los que se mide el coste, la inversión, los beneficios o el balance de los servicios, actividades y productos que se llevan a cabo en la UID. El objetivo de la evaluación económica es mejorar el rendimiento económico de la UID, recortando costes sin perjudicar la eficiencia de los servicios de información o la calidad de los productos resultantes, de tal forma que los beneficios resultantes puedan ser reinvertidos en la mejora y eliminación de las debilidades del centro, definidas en los análisis DAFO. Evaluación de servicios de la UID: Consiste en la definición de indicadores que miden la eficacia, eficiencia, capacidad de respuesta, satisfacción y calidad de los servicios activos de la UID. El objetivo es obtener datos cuantitativos del funcionamiento de los servicios, satisfacción de las necesidades de información del usuario, tiempo de respuesta, pertinencia y exhaustividad de los resultados. Dichos datos permiten diagnosticar si el PNT (Procedimiento Normalizado de Trabajo) es el adecuado, qué mejoras y rutinas hay que incluir para mejorar el resultado final del servicio, de cara a cumplir con los objetivos del plan estratégico-operativo. Evaluación de PNTs en la UID: Implica la evaluación de los pasos y rutinas del PNT, comprobando si se cumplen en la actividad habitual de los miembros de la UID. Durante la comprobación de los pasos del PNT puede detectarse su ejecución o no. Este fenómeno puede deberse a múltiples circunstancias y factores como una mala redacción del PNT o la existencia de algún paso susceptible de ser eliminado o bien por simplicidad del proceso o inutilidad en la consecución final de los objetivos. Por otro lado también pueden detectarse problemas de formación o falta de comunicación con los miembros de la UID. Evaluación de sistemas informáticos para la gestión de contenidos e información: Es la evaluación de los programas informáticos, procesos de automatización y sistemas de gestión integral de bibliotecas, centros de documentación, archivos y museos. Desde el funcionamiento del OPAC, hasta la página web de la UID, se pueden enmarcar dentro de este apartado. Estos sistemas exigen modelos de evaluación adaptados que sean capaces de medir su adaptación al entorno de la UID, detección de errores de ejecución, Evaluación de usuarios de información y documentación: Consiste en la obtención de información sobre los usuarios potenciales y reales de la UID, conociendo sus opiniones, comportamiento, necesidades de información y consideraciones con respecto a los servicios y sistemas de información y documentación proporcionados. Evaluación de recursos y fuentes de información: La evaluación de recursos y fuentes de información en red constituyen un apartado unívoco correspondiente al servicio de información y referencia de la UID. Evaluar tales contenidos permite conocer qué fuentes preferentes se deben consultar en primer lugar para resolver una demanda informativa. Determinar la disposición de metadatos Dublin Core, Web Semántica RDF, Ontologías OWL, la accesibilidad del recurso, la extensión y cantidad de información, la aplicación de procesos de steaming y análisis de frecuencias, así como la organización de los contenidos publicados con una estructura clasificatoria normalizada constituyen algunos de los factores estudiados en este apartado. Evaluación de la interacción usuario y recuperación de información: Es la evaluación de la satisfacción de las necesidades de información del usuario, dicho de otra forma, que la información obtenida por el IRS (Information Retrieval System) sea pertinente y realmente útil ante las consultas planteadas al sistema. Son objeto de medición el número de respuestas útiles o pertinentes, el número total de respuestas del sistema, el comportamiento del usuario, tiempo medio de permanencia en páginas de resultados, contabilización de backspaces o retornos de página, perseverancia de las consultas, número de veces que se reformuló una consulta, capacidad de recuperación del sistema de información, etc. De todos los enfoques de la evaluación, serán objeto de estudio en esta asignatura los siguientes: • Evaluación mediante estudios de usuarios • • • Evaluación de procesos y servicios de la UID: Estudio de indicadores, INPUT y OUTPUT Evaluación de recursos y fuentes de información Evaluación de los sistemas de recuperación y el comportamiento de los usuarios EVALUACIÓN DEL PROCESO DE DATOS Y DE LOS EQUIPOS DE CÓMPUTO ¿QUE ES AUDITORIA DE SISTEMAS? La auditoría en informática es la revisión y la evaluación de los controles, sistemas, procedimientos de informática; de los equipos de cómputo, su utilización, eficiencia y seguridad, de la organización que participan en el procesamiento de la información, a fin de que por medio del señalamiento de cursos alternativos se logre una utilización más eficiente y segura de la información que servirá para una adecuada toma de decisiones. La auditoría en informática deberá comprender no sólo la evaluación de los equipos de cómputo, de un sistema o procedimiento específico, sino que además habrá de evaluar los sistemas de información en general desde sus entradas, procedimientos, controles, archivos, seguridad y obtención de información. La auditoría en informática es de vital importancia para el buen desempeño de los sistemas de información, ya que proporciona los controles necesarios para que los sistemas sean confiables y con un buen nivel de seguridad. Además debe evaluar todo (informática, organización de centros de información, hardware y software). PLANEACIÓN DE LA AUDITORÍA EN INFORMÁTICA Para hacer una adecuada planeación de la auditoria en informática, hay que seguir una serie de pasos previos que permitirán dimensionar el tamaño y características de área dentro del organismo a auditar, sus sistemas, organización y equipo. En el caso de la auditoria en informática, la planeación es fundamental, pues habrá que hacerla desde el punto de vista de los dos objetivos: • • Evaluación de los sistemas y procedimientos. Evaluación de los equipos de cómputo. Para hacer una planeación eficaz, lo primero que se requiere es obtener información general sobre la organización y sobre la función de informática a evaluar. Para ello es preciso hacer una investigación preliminar y algunas entrevistas previas, con base en esto planear el programa de trabajo, el cual deberá incluir tiempo, costo, personal necesario y documentos auxiliares a solicitar o formular durante el desarrollo de la misma. INVESTIGACIÓN PRELIMINAR Se deberá observar el estado general del área, su situación dentro de la organización, si existe la información solicitada, si es o no necesaria y la fecha de su última actualización. Se debe hacer la investigación preliminar solicitando y revisando la información de cada una de las áreas basándose en los siguientes puntos: ADMINISTRACIÓN Se recopila la información para obtener una visión general del departamento por medio de observaciones, entrevistas preliminares y solicitud de documentos para poder definir el objetivo y alcances del departamento. Para analizar y dimensionar la estructura por auditar se debe solicitar a nivel del área de informática • • • • • • • • • • • • • • Objetivos a corto y largo plazo. Recursos materiales y técnicos Solicitar documentos sobre los equipos, número de ellos, localización y características. Estudios de viabilidad. Número de equipos, localización y las características (de los equipos instalados y por instalar y programados) Fechas de instalación de los equipos y planes de instalación. Contratos vigentes de compra, renta y servicio de mantenimiento. Contratos de seguros. Convenios que se tienen con otras instalaciones. Configuración de los equipos y capacidades actuales y máximas. Planes de expansión. Ubicación general de los equipos. Políticas de operación. Políticas de uso de los equipos. SISTEMAS Descripción general de los sistemas instalados y de los que estén por instalarse que contengan volúmenes de información. • • • • • • • Manual de formas. Manual de procedimientos de los sistemas. Descripción genérica. Diagramas de entrada, archivos, salida. Salidas. Fecha de instalación de los sistemas. Proyecto de instalación de nuevos sistemas. En el momento de hacer la planeación de la auditoria o bien su realización, debemos evaluar que pueden presentarse las siguientes situaciones. • • • • • • • • • Se solicita la información y se ve que: No tiene y se necesita. No se tiene y no se necesita. Se tiene la información pero: No se usa. Es incompleta. No está actualizada. No es la adecuada. Se usa, está actualizada, es la adecuada y está completa. En el caso de No se tiene y no se necesita, se debe evaluar la causa por la que no es necesaria. En el caso de No se tiene pero es necesaria, se debe recomendar que se elabore de acuerdo con las necesidades y con el uso que se le va a dar. En el caso de que se tenga la información pero no se utilice, se debe analizar por qué no se usa. En caso de que se tenga la información, se debe analizar si se usa, si está actualizada, si es la adecuada y si está completa. El éxito del análisis crítico depende de las consideraciones siguientes: • • • • Estudiar hechos y no opiniones (no se toman en cuenta los rumores ni la información sin fundamento) Investigar las causas, no los efectos. Atender razones, no excusas. No confiar en la memoria, preguntar constantemente. • Criticar objetivamente y a fondo todos los informes y los datos recabados. PERSONAL PARTICIPANTE Una de las partes más importantes dentro de la planeación de la auditoria en informática es el personal que deberá participar y sus características. Uno de los esquemas generalmente aceptados para tener un adecuado control es que el personal que intervengan esté debidamente capacitado, con alto sentido de moralidad, al cual se le exija la optimización de recursos (eficiencia) y se le retribuya o compense justamente por su trabajo. Con estas bases se debe considerar las características de conocimientos, práctica profesional y capacitación que debe tener el personal que intervendrá en la auditoria. En primer lugar se debe pensar que hay personal asignado por la organización, con el suficiente nivel para poder coordinar el desarrollo de la auditoria, proporcionar toda la información que se solicite y programar las reuniones y entrevistas requeridas. Éste es un punto muy importante ya que, de no tener el apoyo de la alta dirección, ni contar con un grupo multidisciplinario en el cual estén presentes una o varias personas del área a auditar, sería casi imposible obtener información en el momento y con las características deseadas. También se debe contar con personas asignadas por los usuarios para que en el momento que se solicite información o bien se efectúe alguna entrevista de comprobación de hipótesis, nos proporcionen aquello que se está solicitando, y complementen el grupo multidisciplinario, ya que se debe analizar no sólo el punto de vista de la dirección de informática, sino también el del usuario del sistema. Para completar el grupo, como colaboradores directos en la realización de la auditoria se deben tener personas con las siguientes características: • • • • Técnico en informática. Experiencia en el área de informática. Experiencia en operación y análisis de sistemas. Conocimientos de los sistemas más importantes. En caso de sistemas complejos se deberá contar con personal con conocimientos y experiencia en áreas específicas como base de datos, redes, etc. Lo anterior no significa que una sola persona tenga los conocimientos y experiencias señaladas, pero si deben intervenir una o varias personas con las características apuntadas. Una vez que se ha hecho la planeación, se puede utilizar el formato señalado en el anexo 1, el figura el organismo, las fases y subfases que comprenden la descripción de la actividad, el número de personas participantes, las fechas estimadas de inicio y terminación, el número de días hábiles y el número de días/hombre estimado. El control del avance de la auditoria lo podemos llevar mediante el anexo 2, el cual nos permite cumplir con los procedimientos de control y asegurarnos que el trabajo se está llevando a cabo de acuerdo con el programa de auditoria, con los recursos estimados y en el tiempo señalado en la planeación. El hecho de contar con la información del avance nos permite revisar el trabajo elaborado por cualquiera de los asistentes. PASOS A SEGUIR Se requieren varios pasos para realizar una auditoría. El auditor de sistemas debe evaluar los riesgos globales y luego desarrollar un programa de auditoria que consta de objetivos de control y procedimientos de auditoria que deben satisfacer esos objetivos. El proceso de auditoria exige que el auditor de sistemas reúna evidencia, evalúe fortalezas y debilidades de los controles existentes basado en la evidencia recopilada, y que prepare un informe de auditoría que presente esos temas en forma objetiva a la gerencia. Asimismo, la gerencia de auditoria debe garantizar una disponibilidad y asignación adecuada de recursos para realizar el trabajo de auditoria además de las revisiones de seguimiento sobre las acciones correctivas emprendidas por la gerencia. INFORME En si todos los encuestados respondieron la totalidad de las preguntas. Todos tienen la misma respuesta en la pregunta sobre la inteligencia artificial, todos dicen prácticamente lo mismo acerca de lo que es la auditoria de sistemas en que es un sistema de revisión, evaluación, verificación y evalúa la eficiencia y eficacia con que se está operando los sistemas y corregir los errores de dicho sistema. Todos los encuestados mostraron una características muy similares de las personas que van a realizan la auditoria; debe haber un contador, un ingeniero de sistemas, un técnico y que debe tener conocimientos, práctica profesional y capacitación para poder realizar la auditoria. Todos los encuestados conocen los mismos tipos de auditoria, Económica, Sistemas, Fiscal, Administrativa. Para los encuestados el principal objetivo de la auditoria de sistemas es Asegurar una mayor integridad, confidencialidad y confiabilidad de la información mediante la recomendación de seguridades y controles. Mirando en general a todos los encuestados se puede ver que para ellos la auditoria de sistemas es muy importante porque en los sistemas esta toda la información de la empresa y del buen funcionamiento de esta depende gran parte del funcionamiento de una empresa y que no solo se debe comprender los equipos de cómputo sino también todos los sistemas de información desde sus entradas, procedimientos, controles, archivos, seguridad y obtención de información. La auditoría de los sistemas de informática es de mucha importancia ya que para el buen desempeño de los sistemas de información, ya que proporciona los controles necesarios para que los sistemas sean confiables y con un buen nivel de seguridad. CONTROLES Los datos son uno de los recursos más valiosos de las organizaciones y aunque son intangibles, necesitan ser controlados y auditados con el mismo cuidado que los demás inventarios de la organización. Se debe tener presente: a) La responsabilidad de los datos es compartida conjuntamente por alguna función determinada de la organización y la dirección de informática. b) Un problema que se debe considerar es el que se origina por la duplicidad de los datos y consiste en determinar los propietarios o usuarios posibles (en el caso de redes y banco de datos) y la responsabilidad de su actualización y consistencia. c) Los datos deberán tener una clasificación estándar y un mecanismo de identificación que permita detectar publicidad y redundancia dentro de una aplicación. d) Se deben relacionar los elementos de los datos con las bases de datos donde estén almacenados, así como los reportes y grupos de procesos donde son generados. CONTROL DE LOS DATOS FUENTES Y MANEJO DE CIFRAS DE CONTROL La mayoría de los delitos por computadora son cometidos por modificaciones de datos fuente al: • Suprimir u omitir datos • Adicionar datos • Alterar datos • Duplicar procesos Esto es de suma importancia en caso de equipos de cómputo que cuentan con sistemas en línea, en los que los usuarios son los responsables de la captura y modificación de la información al tener un adecuado control con señalamiento de responsables de los datos, con clave de acceso de acuerdo a niveles EVALUACIÓN DE LA SEGURIDAD En el momento de evaluar la seguridad de los sistemas informáticos (SI) de una organización, o de proceder a la implementación de las políticas de seguridad sobre estos SI, conviene conocer cuál es la terminología que se emplea, cuáles son las áreas en las que se puede aplicar y cuál es el entorno normativo y legislativo en el que nos podemos mover. El objetivo de este artículo es precisamente la aclaración de estos puntos. En primer lugar se repasan los principales estándares (ISO 27000) y legislaciones, que nos ayudarán a tener una visión global de los elementos que intervienen en la infraestructura de seguridad y los controles que pueden establecerse. Con todo lo anterior podemos pasar a evaluar nuestra infraestructura de seguridad para detectar y clasificar nuestros activos de información y verificar el grado de cumplimiento de los requisitos de seguridad o el grado de madurez de la organización respecto a la seguridad de los SI. Como resumen del modo en que la organización gestiona la seguridad de sus SI, que es a la vez un elemento normativo consensuado y de obligado cumplimiento para los integrantes de la organización, tenemos la Política de seguridad, tratada en el último apartado de este artículo. Conceptos principales en Seguridad de la Información • • • • • • • • • • Activo (Asset). Algo que tiene valor para una organización. Recurso del sistema de información necesario para el funcionamiento apropiado de la organización y la consecución de los objetivos previstos. Los activos de información pueden estar sujetos a amenazas tanto internas como externas. Estos riesgos pueden afectar a uno o más de los tres atributos fundamentales de un activo: disponibilidad (availability), confidencialidad e integridad. Amenaza (threat). Evento que puede desencadenar un incidente en la organización, produciendo daños o pérdidas materiales o inmateriales en sus activos. Confidencialidad (reliability). Hace referencia a la habilidad para proteger, haciéndolos no visibles o no disponibles, los datos de aquellos que no están autorizados a acceder a ellos. Disponibilidad (availability). Es la capacidad de poder acceder a los activos informativos en el momento en que se necesiten y de poder usarlos correctamente (aquellos debidamente autorizados). Gestión de la seguridad de la información (Information security management) es la parte de la gestión de IT (IT gobernance) encargada de la protección y la seguridad de los activos informativos de una organización (information assets). Impacto. Consecuencia para un activo de la materialización de una amenaza. Integridad. Es la habilidad de prevenir la modificación de los activos por aquellos que no están autorizados o que estándolo los modifican de forma incorrecta. Esta habilidad implica la posibilidad de revertir o deshacer los cambios realizados. ISMS. Information Security Management System. Es la parte de la gestión de un sistema, basada en un análisis de riesgos, encargada de establecer, implementar, operar, monitorizar, revisar, mantener y mejorar la seguridad de la información. Un ISMS sirve para asegurar la confidencialidad, disponibilidad e integridad de la información de la organización Riesgo. Es la posibilidad de que se produzca un impacto determinado en un activo. Salvaguarda (countermeasure). Acción, procedimiento o dispositivo físico o lógico que reduce el riesgo. • • • Seguridad de la Información (information security), según el estándar ISO 27001 es la preservación de la confidencialidad, integridad y disponibilidad (availability) de la información. Otras propiedades implicadas son la autenticidad, responsabilidad (accountability), no-repudiación y confiabilidad (reliability). Seguridad, en su sentido más general quiere decir proteger nuestros activos, lo que implica preservarlos de atacantes, de desastres naturales, de condiciones ambientales adversas, de interrupción del suministro eléctrico, del robo o el vandalismo, etc. La seguridad es al mismo tiempo el conjunto de medidas tomadas contra posibles ataques, espionaje, sabotaje, etc. Vulnerabilidad. Debilidad de un activo que puede ser explotada por una amenaza para materializar una agresión sobre dicho activo. Conceptos principales en seguridad y sus relaciones, según ISO 15408. Principales organismos dedicados a la seguridad en las Tecnologías de la Información COBIT (Control Objectives for Information and related Technology). Conjunto de Mejores Prácticas para el manejo de información, creado por Information Systems Audit and Control Association (ISACA) y el IT Governance Institute (ITGI) en 1992 que contiene un conjunto de 34 objetivos de algo nivel, uno para cada uno de los procesos de IT. La seguridad de los sistemas se divide en objetivos de control, como identificación, autenticación, gestión de cuentas, clasificación de datos, etc. COBIT especifica el examen de la efectividad, eficiencia, confidencialidad, integridad, disponibilidad, cumplimiento y confiabilidad de los objetivos de control. En el modelo se definen cuatro dominios: planificación y organización, adquisición e implementación, entrega y soporte, y monitorización. Cada uno de estos dominios tiene definidos procesos, actividades y tareas. National Institute of Standards and Technology (NIST, http://csrc.nist.gov). Este instituto gubernamental de USA emite una serie de publicaciones a modo de guías (NIST Guidelines), entre las cuales las más destacadas en relación con la seguridad son las de la serie 800, como: Information Security Handbook: A Guide for Managers (800-100), Recommended Security Controls for Federal Information Systems (800-53), Guide to Information Technology Security Services (800-35), Risk Management Guide for Information Technology Systems (800-30), Engineering Principles for Information Technology Security (800-27), Guide for Developing Security Plans for Federal Information Systems (800-18), Generally Accepted Principles and Practices for Securing Information Technology Systems (800-14), and An Introduction to Computer Security: The NISTHandbook (800-12). La titulada Security Self-Assessment Guide for Information Technology Systems (800-26), publicada desde el 2001, es una checklist de 137 preguntas para examinar un sistema. La Recommended Security Controls for Federal Information Systems (800-53) mapea estas cuestiones con los controles de seguridad más útiles. Describe 17 familias de controles, como controles de acceso, sensibilización y formación, auditoría, evaluación de riesgos, seguridad del personal, etc. Cada familia se subdivide en controles específicos que normalmente hacen referencia a otros documentos más específicos del NIST. Guías de la ENISA. Conjunto de guías generadas por la European Network of Information Security Agency, que busca establecer estándares y difundir Mejores Prácticas para el mejoramiento de las redes y la seguridad de la información en la Unión Europea (Enisa, 2011). Top 20 de las fallas de seguridad. Presentación anual de los fallos de seguridad informática más críticas hecha por el SysAdmin Audit, Networking and Security (SANS) de los Estados Unidos (SANS, 2011). OSSTMM (Open Standard Security Testing Model). Manual de la Metodología Abierta de Testeo de Seguridad desarrollado por ISECOM (Institute for Security and Open Methodologies), que brinda una referencia para realizar análisis de seguridad informática en diferentes niveles. ISM3 (Information Security Management Maturity Model). Estándar para la creación de sistemas de gestión de la seguridad de la información basados en ITIL, ISO27001 o Cobit, a través de metodologías de análisis de riesgo que tienen como objetivo garantizar la consecución de los objetivos del negocio. ITIL (Information Technology Infrastructure Library). Conjunto de conceptos y buenas prácticas para la gestión de servicios, el desarrollo y/o las operaciones relacionadas con las tecnologías de la información (APM Group, 2007). El conjunto lo constituyen 44 libros. No se dedica exclusivamente a temas de seguridad pero hay una sección dedicada a ellos e indica cómo implementar controles sobre los procesos de gestión de servicios de IT. Information Security Forum (ISF) Standard of Good Practice for information Security. Es una guía que contiene un checklist de las políticas que las compañías y empleados deben implementar. Se divide la gestión de la seguridad en 5 partes: aplicaciones críticas para el negocio, instalaciones de computadores, redes, sistemas, y desarrollo. Estas partes se subdividen a su vez en 30 áreas y las áreas en 135 secciones. Basel II. Es una compilación del Second Report from the Basel Committee on Banking Supervision, Risk Management Principles for Electronic Banking. Estudia y detalla los riesgos de seguridad relacionados con el negocio bancario. Con objeto de armonizar los diferentes marcos y estándares se elaboró el Calder—Moir IT Governance Framework como una clasificación gráfica que relaciona los principales tópicos como estrategia de negocio, riesgos, estrategia de IT, operaciones, capacidades y gestión de cambios Principios y Requisitos de la infraestructura de seguridad Infraestructura de Seguridad El conjunto de elementos normativos, procedimentales, físicos, lógicos, etc., que conforman la infraestructura de seguridad de una organización se pueden situar en una pirámide en la que los elementos superiores determinan y conforman los inferiores. De este modo los elementos tácticos (políticas de seguridad) determinan los estratégicos (clasificación y organización de los activos de seguridad, conformidad con normativas y legislaciones) y éstos sirven para definir los elementos operativos (gestión de la seguridad del entorno, de los sistemas, de las operaciones,…; gestión de incidencias y continuidad), como se ve en la imagen siguiente: Las regulaciones o reglamentos (Regulations) son mandatos o normas de obligado cumplimiento que deben ser implementadas, de lo contrario pueden dar lugar a multas, cierre del negocio o incluso encarcelamiento. Ejemplos de reglamentos son la Sarbanes–Oxley Act (SOX), la Gramm–Leach–Bliley Act (GLBA), o la Health Insurance Portability and Accountability Act (HIPAA). Las políticas (policies) son declaraciones documentadas de requerimientos de alto nivel (high-level requirements) e intenciones de gestión. Los estándares proporcionan instrucciones o indicaciones basadas en las políticas o en otros estándares, de manera que enlazan las políticas con los procedimientos. Un ejemplo es el estándar ISO 27001, dedicado a la seguridad de la información. Los procedimientos (procedures) son instrucciones para la ejecución paso a paso de procesos. Son más detallados que las políticas e indican la forma concreta de implementarlas. Las directrices (Guidelines) son ejemplos de implementación para casos concretos de ciertos procedimientos. Constituyen un conjunto de buenas prácticas que se recomienda seguir en determinadas circunstancias. Requisitos Básicos de Seguridad de la Información (Infosec Basics) Requisitos mínimos de seguridad que deben implementarse en organizaciones de cualquier tamaño: • Disponer de una política de seguridad. • Establecimiento de responsabilidades y procedimientos. • Clasificación de la información e identificación de los propietarios. • Los contratos y los acuerdos con terceros deben incluir la seguridad de la información. • Proporcionar seguridad física a los sistemas de información. • Mantener actualizado el software antivirus. • Implementar y hacer cumplir los controles de acceso físicos. • Implementar y hacer cumplir los controles de acceso a los sistemas. • • • • • • Gestionar las vulnerabilidades. Disponer de un procedimiento de respuesta a las incidencias. Disponer de un plan de continuidad del negocio y de un plan de recuperación de desastres. Monitorizar el cumplimiento. Documentar las políticas, procesos y procedimientos. Asegurarse de que los usuarios son entrenados y conscientes de sus responsabilidades. Principios Generales de Seguridad de la Información (Generally Accepted Information Security Principles, GAISP) • Principio de penetración (The pervasive principle): ha de existir un conjunto claramente definido de responsabilidades en materia de seguridad de la información. • Principio de concienciación (The awareness principle): todos los empleados tienen que tener un conocimiento adecuado de las políticas de seguridad de la información. También deben ser informados de las amenazas que puedan existir sobre la seguridad de los dato. • Principio ético (The ethics principle): usuarios y administradores deben usar la información de forma éticamente responsable. • Principio multidisciplinario (The multidisciplinary principle): todo el personal esencial de las diferentes unidades de negocio debe ser implicado en el programa de seguridad de la información. • Principio de proporcionalidad (The proportionality principle): los análisis de riesgos son esenciales para determinar la protección más adecuada para los activos de información y la porción de recursos apropiada que se ha de dedicar a estos activos. • Principio de integración (The integration principle): debe haber un programa de seguridad de la información que abarque toda la organización, coordinado e integrado con cada unidad de negocio. • Principio de puntualidad (The timeliness principle): los agujeros de seguridad deben manejarse de una forma eficiente y en un tiempo razonable. • Principio de valoración (The assessment principle): deben evaluarse los riesgos periódicamente y cuando ocurran cambios en los sistemas o en la tecnología aplicada. • Principio de equidad (The equity principle): los sentimientos personales no deben interferir en el manejo de la seguridad de la información INTERPRETACIÓN DE LA INFORMACIÓN y SELECCIÓN DE LA ESTRATEGIA Técnicas para la interpretación de la información El análisis crítico de los hechos sirve para discriminar y evaluar la información, se basa en las siguientes preguntas: Pregunta finalidad que determina Que Donde Cuando Quien Como Cuanto Pregunta finalidad que determina el propósito el lugar el orden y el momento la persona responsable los medios la cantidad Las respuestas deben ser sometidas a la pregunta "Por qué” para justificar la información obtenida, cada interrogante debe ser debe descomponer de la siguiente manera: 1. Propósito a) Que se hace b) Por qué se hace c) Que otra cosa podría hacerse d) Que debería hacerse 2. Lugar a) Donde se hace b) Por qué se hace ahí c) En que otro lugar podría hacerse d) Donde debería hacerse 3. Sucesión a) Cuando se hace b) Por qué se hace entonces c) Cuando podría hacerse d) Cuando debería hacerse 4. Persona a) Quien lo hace b) Por qué lo hace esa persona c) Que otra persona podría hacerlo d) Quien debería hacerlo 5. Medios a) Como se hace b) Por qué se hace de ese modo c) De que otro modo podría hacerse d) Como debería hacerse 6. Cantidad e) Cuanto se hace f) Por qué se hace esa cantidad (volumen) g) Cuanto podría hacerse h) Cuanto debería hacerse EVALUACIÓN DE LOS SISTEMAS Se debe evaluar la información obtenida en los sistemas para poder: • Determinar el objetivo y compararlo con lo obtenido • Buscar la interrelación con otros sistemas • Evaluar la secuencia y flujo de las interacciones Para esto se debe: 1. Evalúe el objetivo: Evalué el objetivo general y el alcance del sistema funcional en forma clara y precisa. 2. Evalué la interacción con otros sistemas: Se debió analizar la información con el propósito de encontrar las interacciones y sus contactos con otros sistemas a fin de determinar si existe un sistema integral de información, sistemas asilados, o simplemente programas o si existe redundancia o ruido y si existen controles. 3. Evalúe si se obtiene la secuencia y flujo de las interacciones: Es necesario establecer el flujo de información a través del sistema graficándolo de tal manera que refleje un periodo de tiempo así como el orden de ocurrencia. 4. Evalué el sistema funcional: Verificar la congruencia del objetivo. 5. Evalúe la modularidad del sistema: Ver que el objetivo particular de cada módulo es buscar el objetivo general del sistema. 6. Evalué la segmentación del sistema: Deben evaluarse aquellas funciones que son realizadas para distintos módulos, cada función extraída del módulo debió ser consistente y validad con el usuario. 7. Evalué la fragmentación del sistema: Se deben evaluar las funciones haciendo énfasis en “que hace" y no en como lo hace. 8. Evalué el flujo de información del sistema funcional: Identifique en cada documento su origen y su seguimiento a través de las diferentes entidades o departamentos por donde transita. 9. Evalúe los documentos de entrada y el contenido de los reportes: Verificar que los reportes o pantallas de salida contengan todos los datos necesarios sin importar de donde provienen. 10. Evalúe los controles de operación del sistema: Ver en el proceso operacional si se llevan a cabo controles, es decir se evalúa su razón de ser, su método y su grado de sensibilidad. 11. Cuantifique el volumen de información que se manejara: Debe tener una idea en la aproximación de los recursos que se necesitan si están siendo usados correctamente. 12. Evaluación de los archivos Señalar los atributos, propiedades, estructura, clasificación, organización, factor de bloque, frecuencia de uso, campos, códigos, tamaños de los archivos. 13. Evaluación de reportes: Se evaluaran la infraestructura de salida de reportes, por ejemplo los programas que lo generan, los archivos usados, frecuencia. Usuario y contenido. EVALUACION DE LOS SISTEMAS DE INFORMACION Busca comprobar que la aplicación cumpla las especiaciones requeridas por el usuario, que se haya desarrollado dentro de lo presupuestado y que efectivamente cumpla con los objetivos y beneficios esperados. 1. Evaluación en la ejecución: Se refiere al uso de cuestionarios para recabar datos acerca de la actuación de la aplicación en la computadora, con objeto de conocer que tan bien o que tan mal está siendo usada y opera eficientemente. 2. Evaluación en el impacto: Se hace sobre la manera en que afecta a la gente que interviene en la aplicación, para determinar como la implementación y el uso afecta a la organización. Controles Se dividen en generales, operativos y técnicos. Los controles generales se aplican a todo el procesamiento de la información y son independientes de las aplicaciones, incluyen: • • Planeación Organización • • • • • Políticas y Procedimientos Estándares Administración de recursos Seguridad Confidencialidad. Los controles operativos comprenden cada uno de los sistemas en forma individual y constan de: • • • • • • • • • • • • • • • • • • • Control y flujo de la información y tabla de decisiones Control de Proyectos Organización del proyecto Reporte de avances Revisiones del diseño del sistema Control de cambios a programa Requisición de cambio Bitácora de cambios Mantenimiento y documentación Producción Controles de documentación Documentación Mantenimiento y acceso a la documentación Control de sistemas y programas Sistemas en lote Sistemas en línea Controles de entrada Control de programa Controles de salida. Los controles técnicos son: • • • • • • • Controles de operación y uso de la computadora Supervisor Capturistas Bibliotecario Operadores Mesa de control Controles de entrada y salida