AdSense_BarHorizontal

Mostrando entradas con la etiqueta ingenieria de sistemas. Mostrar todas las entradas
Mostrando entradas con la etiqueta ingenieria de sistemas. Mostrar todas las entradas

miércoles, 4 de octubre de 2017

Bibliotecas de libros de programación

En esta nueva entrada de DatoByte les quiero compartir  un grupo de enlaces de interes acerca de libros relacionados con programación.



En la inmensidad de internet hay muchos recursos para aprender y enrolarnos en el mundo de la programación, la modalidad de estos por lo general son por medio de libros y vídeos, en los cuales  muchas personas no solo buscan apoyo para aprender a programar, sino poder aprender muchas otras cosas.

En el dia de hoy les quiero compartir una amplia variedad de enlaces de interes con material en formato PDF, faciles de descargar y organizados en una amplia biblioteca por el tema deseado, inclusive algunos de estos libros son de mucha ayuda al momento en que estes decidido a obtener alguna certificacion.

Los libros están en formatos PDF, entres los libros encontramos aquellos que nos enseñan sobre: MYSQL, SQL SERVER, PHP, HTML, CSS, C#, C++, JAVASCRIPT, JAVA, RUBY, PYTHON, VISUAL VASIC, ARDUINO, ANDROID, entre otros libros muy importantes.

A continuación les comparto 2 link con una recopilación de estos libros:

Biblioteca de libros en Mega

Biblioteca 1 de libros en GitHub
Biblioteca 2 de libros de GitHub

Adicionalmente les comparto una pagina en donde diariamente se publican libros de gran interes los invito a que se incriban, sin embargo los podran encontrar en INGLES, asi que espero sea de vuestro interes.

https://www.packtpub.com

Cada día pueden acceder a reclamar su libro gratis

https://www.packtpub.com/packt/offers/free-learning

martes, 16 de agosto de 2016

Glosario (segunda parte) y apuntes

En esta nueva entrada de DatoByte les comparto nuevos conceptos relacionados con el mundo de sistemas (Hardware y software) adicional de unos apuntes del segundo capitulo del libro Ingenieria de Software 9na Edicion

Iniciemos con los conceptos:

Ingeniería del software: este término fue acuñado para definir la necesidad de una disciplina científica que, como ocurre en otras áreas, permita aplicar un enfoque sistemático, disciplinado y cuantificable al desarrollo, operación y mantenimiento del software.

Gestión Predictiva de proyectos: es una disciplina formal de gestión, basada en la planificación, ejecución y seguimiento a través de procesos sistemáticos y repetibles.

Producción basada en procesos: se crean modelos de procesos basados en el principio de Pareto, empleado con buenos resultados en la producción industrial. Dicho principio nos indica que la calidad del resultado depende básicamente de la calidad de los procesos.

Desarrollo guiado por pruebas de software, o Test-driven development (TDD): es una práctica de ingeniería de software que involucra otras dos prácticas: Escribir las pruebas primero (Test First Development) y Refactorización (Refactoring). Para escribir las pruebas generalmente se utilizan las pruebas unitarias (unit test en inglés). En primer lugar, se escribe una prueba y se verifica que las pruebas fallan. A continuación, se implementa el código que hace que la prueba pase satisfactoriamente y seguidamente se refactoriza el código escrito. El propósito del desarrollo guiado por pruebas es lograr un código limpio que funcione. La idea es que los requisitos sean traducidos a pruebas, de este modo, cuando las pruebas pasen se garantizará que el software cumple con los requisitos que se han establecido.

Glosario Programacion

XPath
XSLT



Apuntes

Actividades fundamentales en la Ingenieria de Software

Existen muchos diferentes procesos de software, pero todos deben incluir cuatro actividades
que son fundamentales para la ingeniería de software:
1. Especificación del software Tienen que definirse tanto la funcionalidad del software
como las restricciones de su operación.
2. Diseño e implementación del software Debe desarrollarse el software para cumplir
con las especificaciones.
3. Validación del software Hay que validar el software para asegurarse de que cumple
lo que el cliente quiere.
4. Evolución del software El software tiene que evolucionar para satisfacer las necesidades
cambiantes del cliente.


Causas Principales de los Fracasos en los proyectos de Software

Según el informe de Standish, las diez causas principales de los fracasos, por orden de importancia, son:
-Escasa participación de los usuarios
-Requerimientos y especificaciones incompletas
-Cambios frecuentes en los requerimientos y especificaciones
-Falta de soporte ejecutivo
-Incompetencia tecnológica
-Falta de recursos
-Expectativas no realistas
-Objetivos poco claros
-Cronogramas irreales
-Nuevas tecnologías

Principios del Manifiesto Agil

Individuos e interacciones sobre procesos y herramientas
Software que funciona sobre documentación exhaustiva
Colaboración con el cliente sobre negociación de contratos
Responder ante el cambio sobre seguimiento de un plan

lunes, 11 de mayo de 2015

Cursos online relacionados con el desarrollo de software

En esta nueva entrada de DatoByte les quiero comentar acerca de diversos cursos por Internet o mas bien plataformas que ofrecen cursos por Internet relacionados con el desarrollo de software, algunos te permitirán adquirir certificados.
Resultado de imagen para cursos online

Antes de comenzar cabe resaltar que muchos de los cursos se ofrecen en plataformas académicas, y de estas plataformas académicas existen diversas maneras de aprendizaje cada una con ventajas y desventajas, Como por ejemplo algunas plataformas educativas ofrecen solo vídeos de asesoría, mientras que otras pueden también ofrecerte posibles reuniones, chat y foros con los docentes encargados del curso, todo dependerá en si de la plataforma en la que te sientas mas a gusto.


Desarrollo de software orientado a un lenguaje en común (Java, C#, php, Android).



Microsoft Virtual Academy:(Ofrece certificado) El sitio oficial de los cursos de Microsoft que antes se denominaba desarrollados 5 estrellas ha cambiado para ofrecer todo un paquete completo de cursos relacionados con diversas facetas del desarrollo de software, ademas del uso de herramientas de Microsoft.


MiríadaX: Esta plataforma ofrece diversos cursos (No solo de sistemas) de manera gratuita sin embargo cabe resaltar que en ella se expiden 2 tipos de certificados, el "Certificado de participación" y el "Certificado de Superación" (Diferencia entre certificado de participación y de superación), en resumidas cuentas el de Participación es gratuito y lo adquieres con cumplir al menos el 75% de las evaluación del curso, mientras que el de Superación NO ES GRATUITO y cabe resaltar que solo podrás acceder a este si has completado el 100% del curso, de igual manera cabe resaltar que a nivel de enseñanza es ideal esta plataforma debido a que son cursos impartidos por docentes de universidades reconocidas.
Actualmente sugiero los cursos de:

Coursera:(Ofrece certificado de realización Gratuito) Por ultimo esta la plataforma Coursera, que al igual que Miriada es una plataforma que brinda diversos cursos Con sus respectivos certificados de las universidades (Nuevamente juega el certificado verificado vs la certificacion de realizacion) El certificado de realizacion es completamente Gratuito, pero EL CERTIFICADO VERIFICADO SI TIENE UN COSTO, Sin embargo el acceso a los cursos, y evaluaciones para medirte son totalmente Gratuitos.


Resultado de imagen para aprendizaje por internet

Otros Cursos de Desarrollo de softwares (Bases de datos, Conceptos como UML, Arquitectura de software, Testing y otros)



Iniciemos en esta seccion con los cursos ofrecidos por la plataforma del SENA: SenaSofiaPlus  (Ofrece Certificado)
En este buscador en la seccion donde enuncia ¿Que le gustaria estudiar? podemos seleccionar que solo aparezcan cursos online y basta con ingresar palabras como por ejemplo "programación" "UML", "Bases de datos" U otros, Tener en cuenta que todos estos tienen una fecha de  iniciación continua, es decir apenas se finalice el curso en proceso automáticamente inicia otro con los alumnos previamente inscritos.

Resultado de imagen para aprendizaje por internet

Cursos transversales relacionados con el desarrollo de software(Marketing online, Posicionamiento y redes sociales)


Autoformacion Colnodo:(Incluye certificado) Colnodo es una institución Colombia con larga trayectoria nacional e internacional, actualmente tiene abierto determinados cursos entre los cuales te sugiero:

1. Empresarismo social para Centros TIC.
2. Recursos de apoyo para el trabajo TIC.
3. Organización y puesta en marcha del Centro TIC.

Espero te inscribas en alguno que te llame la atención,  si conoces otras plataformas te invito a que nos la dejas en los comentarios, al igual que compartas con tus amigos esta información.



domingo, 10 de mayo de 2015

Entornos de desarrollo, Lenguajes de Programacion y Bases de datos

En esta nueva entrada de DatoByte les quiero comentar acerca de Entornos de desarrollo, Lenguajes de Programación y bases de datos.

Comencemos entonces definiendo estos 3 conceptos.
(Las siguientes definiciciones son tomadas de Wikipedia)

¿Que es un entorno de desarrollo?

Resultado de imagen para Integrated development environment
Un entorno de desarrollo, también conocido como IDE (Integrated development environment ), "por sus siglas en inglés", es una aplicación de software, que proporciona servicios integrales para facilitarle al programador de computadora el desarrollo de software. Normalmente, un IDE consiste de un editor de código fuente, herramientas de construcción automáticas y un depurador. La mayoría de los IDEs tienen auto-completado inteligente de código.

Algunos IDEs contienen un compilador, un intérprete, o ambos, tales como NetBeans y Eclipse; otros no, tales como SharpDevelop y Lazarus. El límite entre un entorno de desarrollo integrado y otras partes del entorno de desarrollo de software más amplio no está bien definido. Muchas veces, a los efectos de simplificar la construcción de la interfaz gráfica del usuario (Interfaz gráfica de usuario (GUI -"por sus siglas en inglés"-) se integran un sistema controlador de versión y varias herramientas. Muchos IDEs modernos también cuentan con un navegador de clases, un buscador de objetos y un diagrama de jerarquía de clases, para su uso con el desarrollo de software orientado a objetos.

¿Que es un lenguaje de programación?

Resultado de imagen para lenguaje de programacionUn lenguaje de programación es un lenguaje formal diseñado para expresar 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.

También la palabra programación se define como el proceso de creación de un programa de computadora, mediante la aplicación de procedimientos lógicos, a través de los siguientes pasos:

El desarrollo lógico del programa para resolver un problema en particular.
Escritura de la lógica del programa empleando un lenguaje de programación específico (codificación del programa).
Ensamblaje o compilación del programa hasta convertirlo en lenguaje de máquina.
Prueba y depuración del programa.
Desarrollo de la documentación.
Existe un error común que trata por sinónimos los términos 'lenguaje de programación' y 'lenguaje informático'. Los lenguajes informáticos engloban a los lenguajes de programación y a otros más, como por ejemplo HTML (lenguaje para el marcado de páginas web que no es propiamente un lenguaje de programación, sino un conjunto de instrucciones que permiten estructurar el contenido de los documentos).

¿Que es una Base de datos?

Resultado de imagen para SGBDUn sistema de gestión de bases de datos (SGBD) 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.

Estos sistemas también proporcionan métodos para mantener la integridad de los datos, para administrar el acceso de usuarios a los datos y para recuperar la información si el sistema se corrompe. Permiten presentar la información de la base de datos en variados formatos. La mayoría incluyen un generador de informes. También pueden incluir un módulo gráfico que permita presentar la información con gráficos y tablas.

Hay muchos tipos distintos según cómo manejen los datos y muchos tamaños distintos de acuerdo a si operan en computadoras personales y con poca memoria o grandes sistemas que funcionan en mainframes con sistemas de almacenamiento especiales.

En mi opinión:

Teniendo en cuenta lo anterior, la idea del desarrollo de un nuevo software deberá pasar por la elección de estos 3 aspectos, decisiones que son de gran análisis por los arquitectos de software teniendo en cuenta diferentes aspectos como conocimientos del equipo de desarrollo, Escalabilidad del software, Compatibilidad con otros softwares, Costos y licencias, entre otros, de acuerdo al análisis de estos aspectos surge entonces la decisión de en que entorno y lenguaje se va a trabajar, notese que estas decisiones no se pueden tomar a la ligera, No es cuestión de sentarse y que todos los involucrados comentes que IDE, que lenguaje y que SGBD desean usar, Que por cierto, iniciar un debate de cual es el mejor en cada uno de estos 3 aspectos, es considerado la perdida de tiempo mas grande que se pueda realizar en cuanto al desarrollo de software se refiere, a mi modo personal No hay un lenguaje mejor que el otro (Hablando de lenguajes de alto Nivel http://datobyte.blogspot.com/2015/04/glosario.html) de igual manera no hay un IDE o SGBD que sea el  mejor de todos, Sin embargo si cabe resaltar que si hay lenguajes mas usados que otros y se preguntaran, que tiene que ver que sea mas usado, lo que intereza en este punto es que si es mas usado, probablemente vas a encontrar mas documentación acerca de el, y en temas de lenguajes de programación, la documentación en un aspecto muy importante a destacar. sin embargo por ultimo debes saber que como dije en su momento estas elecciones los arquitectos de softwares las tomaran de acuerdo al equipo de trabajo y al tipo de proyecto que se va a realizar.

LA MANZANA DE LA DISCORDIA EN UN GRUPO DE DESARROLLADORES DE SOFTWARE ES PREGUNTAR CUAL ES EL MEJOR EN CADA UNO DE ESTOS ASPECTOS.

Cabe tambien mencionar en este post cuales son las combinaciones (IDE, lenguaje de programación Y SGBD) mas usadas en el desarrollo de softwares.

Iniciemos entonces comentando cuales son los lenguajes, IDE y SGBD mas conocidos:

IDE  Visual Studio, NetBeans y Eclipse
 Lenguajes de programacion  PHP, .Net, Java, Android
SGBD Oracle, MySql y SQL Server, SQLite 

 Las combinaciones mas usadas en el mercado son:
Visual Studio - .Net (C# y VB)  - SQL Server

Netbeans  - Java- MySQL, Oracle

Eclipse - PHP- Oracle

Eclipse - Android - SQLite,MySQL


Las anteriores combinaciones son las mas usadas en el mercado, sin embargo no son las unicas usadas, bien es sabido que existes muchos Lenguaes, SGBD e IDEs, Por ello hacer una elección nuevamente dependerá de el tipo de proyecto a realizar, teniendo en cuenta las diferentes ventajas y desventajas de cada uno de estos aspectos.

Que combinación de estos 3 aspectos sugieres?

Mencion Honorifica para desarrollo de videojuegos: Unity(IDE) - C#