viernes, 13 de marzo de 2020

Auditoría de Sistemas - Introducción

Profesora: Mg. Bibiana Anselmo
Magister de informática y
bibiana.anselmo.usal@gmail.com

Materia cuatrimestral, viernes de 19hs a

1 parcial
1 trabajo practico grupal -> 4 personas
        Se compone de dos partes: Carta/Informe auditor - Presentación a la gerencia.
                                                    Presentación oral.

No es promocionarle.


Auditoria


La auditoria es una función independiente de control, ya que no depende de ningún área, del funcionamiento de un sistema.
Los auditores verifican que el sistema hace lo que dice que tiene que hacer, para lo que fue diseñado.

El Objeto de la auditoria en nuestro caso es el Sistema, "de Sistemas".
El Sujeto, el auditor, puede ser externo o interno, los auditores pueden ser externos pero las empresas pueden tener auditores internos.

La principal fuente conocimiento del auditor es el flujo de transacciones, las entradas y las salidas de la información. Para el auditor el proceso en si es una caja negra.

Proceso de auditoria

Lo primero que se establece en una auditoria son los objetivos de esta. En estos se define que procesos y sistemas se van a revisar.
Para auditar un negocio primero lo tengo que entender, recién entendiéndolo voy a poder establecer la estrategia. Se establece que puede salir mal en el negocio, se buscan los riesgos, y se plantean las estrategias.
Luego se ejecutan los procedimientos planificados.
Finalizar la auditoria, cerrando los procedimientos y enviando el informe final con las observaciones.


"El riesgo se reduce, se mitiga, pero no desaparece."


Técnicas de auditoria

En tiempos primigenios la auditoria se realizaba en papel y lápiz, eso ya casi no sucede.
Pruebas sobre herramientas, donde cada vez se usa mas el test off one, donde se dejo de probar 25 veces para probar una sola vez con sistemas automáticos.

CAATs o ASL son programas para auditoría. ASL es un excel en la cual los datos no se podían modificar. Queda una copia impoluta de los datos y un registro de quien y cuando hizo que modificación en el archivo.








miércoles, 4 de marzo de 2020

Metodología Orientada a objetos


Metodología Orientada a objetos

No solo nos referimos a la programación orientada a objetos si no que se la metodología incluye el Análisis Orientado a Objetos, el Diseño Orientado a objetos y la Programación Orientada a objetos.

Programación Orientada a Objetos, un paradigma de programación que permite desarrollar aplicaciones complejas manteniendo un código más claro y manejable que otros paradigmas anteriores.

La programación Orientada a objetos se define como un paradigma de la programación, una manera de programar específica, donde se organiza el código en unidades denominadas clases, de las cuales se crean objetos que se relacionan entre sí para conseguir los objetivos de las aplicaciones.

La programación Orientada a objetos (POO) es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación.

Para la implementacion de esta metodología vamos a requerir los siguiente mecanismos: 
  • Objetos: encapsulamiento de datos y métodos. Los objetos son ejemplares de una clase cualquiera. Cuando creamos un ejemplar tenemos que especificar la clase a partir de la cual se creará. Esta acción de crear un objeto a partir de una clase se llama instanciar (que viene de una mala traducción de la palabra instace que en inglés significa ejemplar). 
  • Clases: declaraciones de objetos, también se podrían definir como abstracciones de objetos. Esto quiere decir que la definición de un objeto es la clase. Cuando programamos un objeto y definimos sus características y funcionalidades en realidad lo que estamos haciendo es programar una clase. 
  • Mensajes: comunicación (colaboración) entre objetos. Un mensaje en un objeto es la acción de efectuar una llamada a un método.
  • Métodos: funcionalidades asociadas a los objetos. Cuando estamos programando las clases las llamamos métodos. Los métodos son como funciones que están asociadas a un objeto.
Los Objetos están compuestos principalmente por:
  • Identidad: dato que lo hace único al objeto.
  • Estado: propiedades y atributos, datos y valores del objeto en un momento dado.
  • Comportamiento: métodos y funciones de objetos (que es lo que hace el objeto).

Visibilidad de atributos y métodos (public, protected y private).

En una clase podemos definir nuestros atributos y métodos como públicos, protegidos o privados (public, protected o private) en función de la visibilidad que queremos que tengan en el resto del código. 

Diferencias entre public, protected y private:

Public: podemos acceder a las propiedades y métodos desde cualquier lugar, desde la clase actual, clases que heredan de la clase actual y desde otras clases.
Protected: se puede acceder al atributo o método desde la clase que lo define y desde cualquier otra que herede de esta clase.
Private: los atributos o métodos solo son accesibles desde la clase que los define.

Características de la POO

La abstracción es la generaliacion de los objetos que como resultado nos define las clases. Consiste en aislar un elemento de su contexto o del resto de los elementos que lo acompañan. En programación, el término se refiere al énfasis en el "¿qué hace?" 

La encapsulación es un mecanismo que consiste en organizar datos y métodos de una estructura, conciliando el modo en que el objeto se implementa, es decir, evitando el acceso a datos por cualquier otro medio distinto a los especificados. Por lo tanto, la encapsulación garantiza la integridad de los datos que contiene un objeto.
La implementacion del encapsulamiento se realiza declarando los datos de la clase como privados para que no se pueda acceder a ellos y los métodos de retorno de información y de trabajo como públicos.

La herencia sirve para crear objetos que incorporen propiedades y métodos de otros objetos. Así podremos construir unos objetos a partir de otros sin tener que reescribirlo todo. Responde a la pregunta "es un ...".
Siempre voy a tener una estructura jerárquica donde voy a tener una clase padre/base y una o mas clases derivadas.

El polimorfismo sirve para que no tengamos que preocuparnos sobre lo que estamos trabajando, y abstraernos para definir un código que sea compatible con objetos de varios tipos.
El polimorfismo puede ser estático o dinámico.

Se denomina "modularidad" a la propiedad que permite subdividir una aplicación en partes más pequeñas (llamadas módulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicación en sí y de las restantes partes. Estos módulos se pueden compilar por separado, pero tienen conexiones con otros módulos.

Principio de ocultación. Cada objeto está aislado del exterior, es un módulo natural, y cada tipo de objeto expone una "interfaz" a otros objetos que especifica cómo pueden interactuar con los objetos de la clase. El aislamiento protege a las propiedades de un objeto contra su modificación por quien no tenga derecho a acceder a ellas; solamente los propios métodos internos del objeto pueden acceder a su estado. Esto asegura que otros objetos no puedan cambiar el estado interno de un objeto de manera inesperada, eliminando efectos secundarios e interacciones inesperadas. Algunos lenguajes relajan esto, permitiendo un acceso directo a los datos internos del objeto de una manera controlada y limitando el grado de abstracción. La aplicación entera se reduce a un agregado o rompecabezas de objetos.


Interacción entre objetos (Asociación)

La asociación se podría definir como el momento en que dos objetos se unen para trabajar juntos y así, alcanzar una meta.

Agregación
La agregación es un tipo de asociación que indica que una clase es parte de otra clase. Los componentes pueden ser compartidos por varios compuestos (de la misma asociación de agregación o de varias asociaciones de agregación distintas). Un punto a tomar muy en cuenta es que ambos objetos son independientes entre sí, la destrucción del compuesto no conlleva la destrucción de los componentes.
Para validar la asociación, la frase “Usa un”, debe tener sentido:

  • El ingeniero usa una computadora
  • El cliente usa tarjeta de crédito.
En la agregación se crea el objeto antes de agregarlo (este ya debe existir).




Composición
Composición es una forma fuerte de composición donde la vida de la clase contenida debe coincidir con la vida de la clase contenedor. Los componentes constituyen una parte del objeto compuesto. De esta forma, los componentes no pueden ser compartidos por varios objetos compuestos. La supresión del objeto compuesto conlleva la supresión de los componentes.
En esta situación, la frase “Tiene un”, debe tener sentido:

  • El auto tiene llantas
  • La portátil tiene un teclado.
La creación del objeto se realiza en el objeto principal.
 



Introducción a la materia

Materia: Programación Avanzada
Formato: Anual

Herramientas:
Java 8 E.E.
Eclipse (Neon o superior)

Fecha parcial
Primero: 10/06
Notas: 17/06
Recuperatorio: 24/06

Segundo: 04/11
Notas: 11/11
Recuperatorio: 18/11

Todo en PC.
La duración es de 2 hs.
El final debe compilar.

3 o 4 Preguntas teóricas y el resto practicas.

Unidades

Unidad I – Programación Orientada a Objetos (OO). Revisión
Conceptos y características de la metodología orientada a objetos.
Clases. Objetos. Datos y Funciones miembros.
Abstracción. Encapsulamiento. Herencia. Polimorfismo.

Unidad II – Interfaces y Clases internas.
Conceptos de Interfaces. Declaración e implementación. Herencia múltiple.
Herencia de interfaces. Interfaces vs Clases Abstractas. Enlace dinámico implementado con interfaces.
Clases Internas. Definición y clasificación: Estáticas, Miembro, Locales y Anónimas. Características de cada una.

Unidad III – Modelo de Aplicaciones.
a) Modelo Vista Controlador.
Conceptos básicos. Descripción y colaboración entre componentes. Modelo de dominio y modelo de aplicación. DAO y DTS. Interacción entre componentes. Implementación en JAVA.
b) Diagnóstico y Excepciones.
Introducción. Características referentes a la depuración de errores.
Manipulación de errores. Las sentencias try-catch-finally. Tipos de excepciones. Manejo de excepciones. Creación y sobreescritura de Excepciones. Propagación de excepciones. Aseveraciones (assertions).
Depuración o debugging de un programa.

Unidad IV – Manejo de Archivos
Introducción. Archivos y Stream. Lectura y escritura. Captura de información desde un archivo texto con ancho fijo o con separadores. Almacenamiento de información en un archivo texto. Redireccionamiento de entrada y salida.
Manejo de archivos binarios.

Unidad V – Genéricos y Colecciones
Concepto y uso de Genéricos. Tipos Genéricos. Ventajas y Desventajas. Boxing.
Motivos de Uso. Clases Genéricas. Restricciones.
Colecciones: Conceptos básicos. Características. Framework: clases e interfaces:
Set, List, LinkedList, Iterator, Map, ArrayList. Manejo de ArrayList: Métodos y constructores. Algoritmos predefinidos en colecciones.

Unidad VI – Interfaz Gráfica en Java
Swing y AWT. Componentes de una aplicación: JFrame, JPanel, JTextField, JLabel, JTextArea, JButton, JComboBox, JCheckBox, JRadioButton, JList, JOptionPane, JTable. Programación dirigida por Eventos. Listeners.
Manejadores: distintas formas de declaración e implementación. Modelo Vista Controlador. Generación de menús: JMenu, JMenuBar, JMenuItem.

Unidad VII – Acceso a Base de Datos
Conceptos básicos de Base de Datos. Modelo de aplicaciones. JDBC (Java Database Connectivity). Tipos de Drivers JDBC.
Conexión a Base de Datos. Clases Connection, Statement, PreparedStatement, CallableStatement. Consultas, actualizaciones y transacciones. ResultSets.
Excepciones.

Unidad VIII – Expresiones Lambda
Introducción y conceptos básicos. Implementación en paradigma funcional.
Sintaxis obligatoria y opcional. Ventajas y desventajas. Clasificación de las expresiones Lambda. Consumidores. Productores. Funciones. Predicado.
Métodos referenciados. API Stream: características, operaciones y usos.

Unidad IX – Programación WEB
c) HTML
Conceptos básicos de internet y HTML. Uso de etiquetas: párrafos, imágenes, enlaces, listas, tablas, formularios. Estructura de programas en HTML. HTML y JavaScript. HTML y CSS.
b) JavaScript
Conceptos básicos. Uso de JavaScript con HTML. Elementos básicos:
objetos, array, function, sentencias. Gestión de eventos. Objetos predefinidos: windows, history, document, location, form. Programación Orientada a Objetos en JavaScript.
c) JSP y Servelts
Conceptos básicos. Funcionamiento. Componentes. Expresiones.
Declaraciones. Scriptles. Directivas. Etiquetas. Objetos implícitos: request, response, out, session. HTML y JSP. Comparación entre JSP y Servelts.
Redireccionamiento a paginas JSP desde Servelts

Unidad X – Programación para dispositivos móviles - J2ME
Introducción. Componentes. Máquinas virtuales: KVM y CVM.
Configuraciones: CDC y CLDC. Perfiles: Foundation, Personal, RMI, PDA y MIDP


Trabajos Prácticos

1° (Obligatorio) -> 01/04

1° Seg cuatrimestre (Obligatorio)












lunes, 2 de marzo de 2020

Introducción a la materia Sistemas Operativos


Materia: Sistemas Operativos

Profesores:
Mg. Bibiana Anselmo  -  bibiana.anselmo.usal@gmail.com
Ing. Alejandro Rodriguez  -  alejandro.rodriguez@usal.edu.ar


Modalidad de la materia

2 parciales / 2 recuperatorios
No es promocionable


La materia consta de una parte teórica y de una practica, la practica va a ser sobre linux (distribución debian).

¿Que es un sistema operativo?
Un sistema operativo es un programa que controla la ejecución de los aplicativos/procesos y funciona como interfaz entre el software y el hardware.

* Objetivos de un Sistema Operativo:

  • Conveniencia.
  • Eficiente: Que permita realizar un uso eficiente de los recursos.
  • Facilidad en el desarrollo y la evolución.


* Interfaz: Enmascarar la complejidad del hardware.

* Servicios:

  • Desarrollo -> facilita herramientas para el desarrollo.
  • Ejecución de programas (procesos).
  • Accesos a dispositivos In/Out.
  • Accesos controlados a archivos.
  • Accesos al sistemas.
  • Detección de errores y respuestas.
  • Contabilidad (administración del uso de recursos).

* Principales interfaces 
  • ISA -> Instrucciones relacionadas con la arquitectura (el hard). Accedida por aplicaciones y utilitarios.
  • ABI -> Interfaz binaria, relacionada a la portabilidad, accedida por los sistem call.
  • API -> Conjunto de funciones utilizadas por las aplicaciones.


* Software: Es igual a todos los programas excepto que delega frecuentemente el control y depende del procesador para recuperarlo.


* Evolución histórica:

  • Procesamiento serial. El programador decidía que se procesaba. 
  • Batch simple. (por lotes) basado el uso de un programa monitor que reducía los tiempos de configuración y de ejecución. El programador al final de la ejecución del programa debía llamar al monitor.
  • Evolución de hardware: protección de memoria, creación del temporizador, se implementaron las interrupciones y las instrucciones privilegiadas.  
  • Batch Multiprogramado: Va metiendo los programas uno detrás de otro a medida que se desocupa el procesador en vez de esperar a que terminen los procesos totales. Esto mejoraba los tiempos de ejecución.
  • Tiempo compartido: Múltiples usuarios con múltiples procesos. (Hoy casi todos los sistemas operativos del mercado).
  • Virtual Machine: Software que distribuye recursos entre varios sistemas operativos corriendo cada uno en una maquina virtual.




Nota: Diferencia entre multiprogramado y multiprocesamiento:
Multiprogramado me da la sensación de que tengo varios procesos ejecutando al mismo tiempo en un solo procesador.
Multiprocesado es cuando tengo varios procesadores y cada uno procesa independientemente.
Multicore son múltiples núcleos que procesan pedazos mas chicos del proceso.

Listado de cases de Bases de datos y sus temas

 Listado de clases de Sistemas de Bases de Datos Clase Clases de 02/04 Clase Clase Temas: Claves foráneas. Clase Clas...