viernes, 24 de abril de 2020

Creación de clases a partir de análisis

Ya vimos las pautas de seguir para descomponer un programa como una serie de clases que se relacionan entre sí. Sin embargo, para el programa de la agenda una descomposición en clases sería muy forzada debido a la poca complejidad del programa.

Pero se puede optar por separar la parte visual (aplicación principal) y la parte lógica (lista de personas) para reutilizar la mayor cantidad posible de código por si se creara otra versión del programa en el entorno gráfico o con otra interfaz. Para ello es posible crear una clase lista de personas que cargue y guarde datos permitiendo el acceso a ellos. Así los datos pasarían de se un struct a una clase con los mismos campos pero con métodos que permitieran obtener y fijar los valores de los campos al igual que simplificar la búsqueda.



A continuación aquí dejo el enlace del vídeo que corresponde a esta imagen que explica de manera clara como construir un deagrama de clases: https://youtu.be/Q1kH7XKxK5I


martes, 21 de abril de 2020

Decisión de tareas a partir del análisis.

Una vez analizados los requisitos que debe cumplir el programa, el siguiente paso consiste es decidir las estructuras básicas que van a emplearse.
El programa propuesto es simple, podría ser realizado es pocas horas, de modo que la fase de diseño podría reducirse a qué estructuras de datos usar y en qué funciones descomponer el cuerpo del programa.
Más adelante, se planteará el programa como una serie de objetos que colaboran entre ellos, con la ayuda de un diagrama de clases.

La estructura de datos podría ser la siguiente:

-Cada dato individual se almacena en un struct, y para que se puedan almacenar todos los datos que se desean, los struct se almacenan en un vector.

Y las funciones en las que se descompondría podrían ser:

-mostarMenu: muestra la lista de opciones disponibles.
-nuevaFicha: pide los datos de una nueva persona.
-verFichas: muestra en pantalla la primera ficha. Al pulsar sobre ciertas teclas, el usuario podrá consultar la ficha anterior, posterior, modificar la actual...
-modificar: pide los campos de la ficha que se indique como parámetro. Si no se desea cambiar algún datos, bastará con pulsar Intro para conservarlo como está.
-buscarTexto: pide al usuario el texto que desea buscar y muestra las fichas de una en una. Si no existe una siguiente ficha, la opción de continuar desaparece.
-buscarCumpleMes: muestra las fechas de nacimiento y los nombres y apellidos de las personas que cumplen años en cierto mes.
-guardar: vuelca todos los datos a un fichero, reemplazando el contenido anterior de dicho fichero. También es posible guardar los datos tras cada modificación, siempre que el contenido del fichero esté actualizado.
-cargar: lee todos los datos desde fichero.









Diagrama de casos de uso


Un documento de especificación puede ser incomprensible para un cliente que no posea este tipo de conocimientos. Por este motivo, se suelen elaborar diagramas con un contenido más visual.
Uno de los más habituales es el diagrama de casos de uso. En estos, el sistema se representa como un rectángulo, las acciones se incluyen dentro de elipses y se dibujan figuras para simbolizar a diferentes tipos de personas que pueden interactuar con el sistema.
Por ejemplo, una versión mejorada del programa podría incluir al usuario normal, que tendría la capacidad de ver y manipular datos; también podría incluir a un administrador, que éste podría consultar y añadir datos.






viernes, 17 de abril de 2020

Análisis. (segunda parte)

Refinamiento. 

En las empresas de desarrollo de software, suele existir un analista, experto encargado de hablar con el cliente. También formula las preguntas adecuadas para que el proceso de refinamiento sea el más correcto posible.
En empresas pequeñas es posible que no exista, por lo tanto es habitual que los programadores independientes no identifiquen las necesidades de los clientes. En estos casos, una segunda lectura pormenorizada puede contribuir a afinar detalles. Por ejemplo, se podrían detectar las siguientes carencias:

¿No se podrán consultar los datos si no se hace una búsqueda?
¿Qué datos de cada persona que cumpla años deben mostrarse?
¿Los datos se guardarán automáticamente?
¿Es necesario guardar los datos en un fichero?
¿No será necesario modificar ni borrar datos? Etc...

Así en la realización de un proyecto real es cada vez mas habitual repetir varias veces la secuencia análisis-diseño-implementación-verificación, proceso con el fin de que los errores y las carencias del programa puedan ser detectadas cuanto antes.



Prototipos visuales.


Una herramienta que puede resultar útil para contribuir a la detección de errores o malentendidos en la especificación de requisitos son los prototipos visuales. Estos consisten en la creación de maquetas de pantalla con las que se muestra al cliente una idea aproxima de cómo va a ser el resultado a nivel visual.
Así los prototipos visuales permiten al usuario detectar si falta algún detalle o si el vocabulario es incorrecto.Por ejemplo, para la agenda contactos, pueden contribuir prototipos visuales de pantalla de menú , de visualización de datos...
Los prototipos pueden dar una idea tanto de los textos que aparecerían en pantalla como de la forma en la que el usuario interactuaría con el programa .





miércoles, 15 de abril de 2020

Análisis

Características del análisis de requisitos

Para crear un programa en un tiempo limitado y con unos costes limitados, el primer paso consiste en pensar que tareas debe realizar.
Crear una lista con los requisitos que debe cumplir el programa favorece la orientación del trabajo , la determinación de qué tareas son más importantes cuales no deben hacerse, así como el establecimiento del momento en el que el proyecto se podrá dar por terminado. Este último aspecto es muy importante en un programa a medida, evita que crezca de indefinidamente por el hecho del que el cliente añada nuevas características.
Una vez estimado el tiempo necesario y el presupuesto, las características nuevas que el cliente desee deben anotarse para su realización de una versión posterior del proyecto.




Especificación

Es habitual elaborar un documento en el que se recopilen los requisitos que debe cumplir el programa. Estos requisitos pueden reflejarse en una lista de cosas que el programa debe hacer. Sin embargo es habitual distinguir entre los requisitos funcionales (lo que hará el programa) y los requisitos técnicos (limitaciones físicas).
Para un programa no muy complicado se puede partir de la siguiente lista:

-El programa será una agenda de contactos que guardará datos y se podrán consultar posteriormente.
-Deberá almacenar los datos personales de cada persona (nombre, apellidos, domicilio...), siendo el nombre el único dato obligatorio.
-Permitirá guardar una elevada cantidad de datos.
-Los datos deberán guardarse en fichero para poder acceder a ellos cunado sea necesario.
-Permitirá buscar datos a partir de cualquier palabra introducida en la búsqueda.
-Buscará las personas que cumplan años en los próximos treinta días.
-El programa deberá haberse creado en C++ y permitirá trabajar en modo texto, de forma que se pueda compilar en Windows, LliureX o Linux.





lunes, 10 de febrero de 2020

Programación estructurada

Lenguajes, compiladores e intérpretes.

  •  Lenguajes de bajo nivel y de alto nivel 
Un programa es una secuencia de instrucciones. Un lenguaje de programación se conoce como algoritmo o secuencia de pasos para resolver un problema.
Hay dos tipos de lenguaje de progamación:

-Bajo nivel: parecido al código máquina (ceros y unos), difícil de entender.
-Alto nivel: lenguaje parecido al de los humanos, fácil de entender.

  • Compiladores e intérpretes
Los compiladores son las herramientas encargadas de convertir nuestro programa escrito en lenguaje de alto nivel(=programa fuente) a código máquina, a través de lo cual se obtiene un programa ejecutable.

Los intérpretes son otro tipo de traductor, pero éstos no crean ningún programa ejecutable capaz de funcionar por sí mismo.

Por lo tanto, un programa interpretado comenzará a funcionar antes que un programa compilado (pues no es necesario traducir todo el programa para empezar), pero será más lento en los programas de cálculo intenso (porque cada orden se tiene que traducir tantas veces como se ejecute).

  • Pseudocódigo 
A pesar de quje los lenguajes de alto nivel se asemejan al lenguaje natural que los seres humanos empleamos para hablar, es habitual no usar ningún lenguaje de programación concreto cuando queremos plantear inicialmente los pasos necesarios para resolver un problema , sino emplear un lenguaje de programación ficticio , no tan escrito , en muchos casos escrito incluso en lenguaje castellano. Este lenjuaje recibe el nombre de pseudocódigo.

ej: Pedir número 1
     Pedir número 2
     si número 2 es distinto de 0
     Escribir "su división es", número 1/ número 2
     Si no
     Escribir "no se puede dividir entre cero"

martes, 4 de febrero de 2020

Esquema.UD4



1. La seguridad de la información

-Confidencialidad
-Integridad
-Disponibilidad
-Autentificación
-Autorización
-Cifrado
-No repudio
-Vulnerabilidad
-Seguridad de la información

2. Amenazas a la seguridad

-Tipos de amenazas:

Humanas 

·Ataques pasivos: Usuarios con conociminetos básicos
Hackers

·Ataques activos: Antiguos empleados de una organización
Crackers y otros atacantes


Lógicas 

·Software malicioso
·Vulnerabilidades del software

Físicas

·Fallos en los dispositivos
·Accidentes
·Catástrofes Naturales

-Conductas a la seguridad:

·Activa:

-Control de acceso
-Encriptación
-Software de seguridad informática
-Firmas y certificados digitales
-Protocolos seguros

·Pasiva:

-Herramientas delimpieza
-Copias de seguridad
-Sistemas de alimentación ininterrumpida
-Dispositivos NAS
-Sistemas redundantes

 
3. Malware

-Tipos de Malware:

·Virus
·Gusano
·Troyano
·Spyware
·Adware
·Ransomware
·Rogue
·Rootkit


-Otros tipos:

·Phishing
·Pharming
·Spam
·Hoax

4.Ataques a los sistemas informáticos:

-Tipos de ataques

·Interrupción
·Intercepción 
·Modifiación
·Suplantación

-Ingienería social

-Ataques remotos

·Inyección de código
·Escaneo de puertos
·Denegación de servico
·Escuchas de red
·Spooting
·Fuerza bruta
·Elevación de privilegios

5. Protección contra el malware

-Políticas de seguridad
-Antivirus

6. Cifrado de la información 

-Criptografía , Criptología y Criptoanálisis

-Tipos de criptología:

·Simétrica
·Asimétrica
·Pública

7.Firma eléctronica y certificado digital

La firma electrónica 
Certificado digital
Autroridades de certificación

8.Navegación segura:

-Buenas prácticas de navegación ...
-Navegación privada
-Navegación anónima
-Navegación Proxy

9.Privacidad de la información:

-Amenazas a la privacidad:
-Antiespías

10. Protección de las conexiones en red

-Cortafuegos
-Red privada virtual
-Certificados SSL/TLS de servidor web y HTTPS