Hasta la vista baby

Hey Ken, how you doin’, It’s late over here and this post is kinda overdue but here I am typing. I hope you are having a good day/night when you are reading this because I sure am writing this post from the bottom of my heart. I really like the way you teach your class, the freedom you give and how it really makes you think about the system that is currently implemented in our school.

Honestly what I really love about the class is that, any topic, honestly ANY topic that comes up you can say something about it that lets us learn a bit further. That is something that no other teacher I’ve seen has, true interest and knowledge in topics beyond what the course is supposed to teach us, how you set up calls with people that have been in the industry for years and letting them tell us their experiences is something no other professor has ever done. I truly appreciate everything you do for the Computación community in Tec and hope I can see you around and maybe even in class again. I wish you the best Ken and I truly will never forget this experience, thank you so much.

And yeah you already saw the video and many of my classmates posted it as well BUT HERE IT IS SO YOU CAN WATCH IT AGAIN

 


Verificación y validación de software

Es un conjunto de procesos de comprobación y análisis que aseguran que el software que se desarrolla está acorde a su especificación y cumple las necesidades de los cliente.
Los objetivos de las actividades de verificación y validación son valorar y mejorar la calidad de los productos del trabajo generados durante el desarrollo y modificación del software.

Los atributos de la calidad deben ser la corrección, la perfección, la consistencia, la confiabilidad, la utilidad, la eficacia, el apego a los estándares y la eficacia de los costos totales.

Hay dos tipos de verificación: formal y del ciclo de vida. Esta última consiste en el proceso de determinar el grado de los productos de trabajo de una fase dada del ciclo de desarrollo cumplen con las especificaciones establecidas durante las fases previas. La verificación formal es una rigurosa demostración matemática de la concordancia del código fuente con sus especificaciones.

La verificación y validación implican la valoración de los productos de trabajo para determinar el apego a las especificaciones, incluyen las especificaciones de requisitos, la documentación del diseño, diversos principios generales de estilo, estándares del lenguaje de instrumentación, estándares del proyecto, estándares organizacionales y expectativas del usuario, al igual que las meta especificaciones para los formatos y notaciones utilizadas en la especificación de productos diversos.


La interfaz de software

user-interface

El diseño de interfaz de usuario o ingeniería de la interfaz es el diseño de computadoras, aplicaciones, máquinas, dispositivos de comunicación móvil, aplicaciones de software, y sitios web enfocado en la experiencia de usuario y la interacción.

Normalmente es una actividad multidisciplinar que involucra a varias ramas es decir al diseño y el conocimiento como el diseño gráfico, industrial, web, de software y la ergonomía; y está implicado en un amplio rango de proyectos, desde sistemas para computadoras, vehículos hasta aviones comerciales.

Su objetivo es que las aplicaciones o los objetos sean más atractivos y además, hacer que la interacción con el usuario sea lo más intuitiva posible, conocido como el diseño centrado en el usuario. En este sentido las disciplinas del diseño industrial y gráfico se encargan de que la actividad a desarrollar se comunique y aprenda lo más rápidamente, a través de recursos como la gráfica, los pictogramas, los estereotipos y la simbología, todo sin afectar el funcionamiento técnico eficiente.


Mantaining your software

14724632_1876897182539710_6732196383538323444_n

En ingeniería del software, el mantenimiento de software es la modificación de un producto de software después de la entrega, para corregir errores, mejorar el rendimiento, u otros atributos. El mantenimiento del software es una de las actividades más comunes en la ingeniería de software.

El mantenimiento de software es también una de las fases en el ciclo de vida de desarrollo de sistemas o System Development Life Cycle – un tema que ya vimos en este curso- que se aplica al desarrollo de software. La fase de mantenimiento es la fase que viene después del despliegue (implementación) del software en el campo.

Una percepción común del mantenimiento es que se trata meramente de la corrección de defectos. Sin embargo, un estudio indicó que la mayoría, más del 80%, del esfuerzo de mantenimiento es usado para acciones no correctivas. Esta percepción es perpetuada por usuarios enviando informes de problemas que en realidad son mejoras de funcionalidad al sistema.


Open Source Software

open-source-windows-word-cloud

Codigo abierto es el código fuente donde el que tiene los derechos lo hace disponible para cambiar o distribuir libremente el software a quien sea con cualquier propósito. El código abierto es el software distribuido y desarrollado libremente Hay muchas licencias abiertas

La idea del código abierto se centra en la premisa de que al compartir el código, el programa resultante tiende a ser de calidad superior al software propietario,

  1. Acceso al código fuente: Para modificarlo, corregirlo u añadir más prestaciones.
  2. Gratuidad: El software puede obtenerse libremente.
  3. La posibilidad de evitar monopolios de software propietario: Para no depender de un único fabricante de software.
  4. Un modelo de avance: Por lo cual la información no se oculta.

Requisitos para que un código sea libre.

  • Libre redistribución: el software debe poder ser regalado o vendido libremente.
  • Código fuente: el código fuente debe estar incluido u obtenerse libremente.
  • Trabajos derivados: la redistribución de modificaciones debe estar permitida.
  • Integridad del código fuente del autor: las licencias pueden requerir que las modificaciones sean redistribuidas sólo como parches.
  • La licencia no debe discriminar a ninguna persona o grupo: nadie puede dejarse fuera.
  • Sin discriminación de áreas de iniciativa: los usuarios comerciales no pueden ser excluidos.
  • Distribución de la licencia: deben aplicarse los mismos derechos a todo el que reciba el programa

Software implementation

802516

Una implementación es la instalación de una aplicación informática, realización o la ejecución de un plan, idea, modelo científico, diseño, especificación, estándar, algoritmo o política.

(Distíngase siempre el término implementación de implantación, puesto que una implantación se realiza de forma impuesta u obligatoria al usuario sin importar su opinión; en cambio en la implementación se involucra al usuario en el desarrollo de lo que se está realizando).

En ciencias de la computación, una implementación es la realización de una especificación técnica o algoritmos como un programa, componente software, u otro sistema de cómputo. Muchas implementaciones son dadas según a una especificación o un estándar. Por ejemplo, un navegador web respeta (o debe respetar) en su implementación, las especificaciones recomendadas según el World Wide Web Consortium, y las herramientas de desarrollo del software contienen implementaciones de lenguajes de programación.

La implementación del software lleva acabo la ejecución, método o cualquier diseño, idea, modelo, especificación, estándar para hacer algo. Es la acción que debe seguir preliminarmente el pensamiento en orden de hacer que algo pase. Es aquí donde el código comienza y se empieza a implementar los diseños especificados del programa. Es poner en acción todo lo anteriormente hablado.


Software testing

software-testing

Las pruebas de software son las investigaciones empíricas y técnicas cuyo objetivo es proporcionar información objetiva e independiente sobre la calidad del producto a la parte interesada o stakeholder. Es una actividad más en el proceso de control de calidad.

Las pruebas son básicamente un conjunto de actividades dentro del desarrollo de software. Dependiendo del tipo de pruebas, estas actividades podrán ser implementadas en cualquier momento de dicho proceso de desarrollo. Existen distintos modelos de desarrollo de software, así como modelos de pruebas. A cada uno corresponde un nivel distinto de involucramiento en las actividades de desarrollo.

El software testing es el proceso de ejecutar un programa para encontrar  cualquier bug o error y para comprobar que el software cumple todas las funciones para las que fue hecho. El testing tiene dos tipos de clasificación, estática y dinámica. La estática es examinar el source  code, algo implícito porque los editores de texto checan automáticamente la sintaxis. La dinámica es examinar la ejecución del programa, es usado para verificar que el programa funcione con respecto a los requerimientos funcionales. Algunos ejemplos de acercamientos de testeo de software son: test de unidad(básico), test funcional( checar el output) test de humo, test de regresión(bugs) test de aceptación ( del usuario).


Software design patterns

designpatterns02

Los patrones de diseño son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces.

Un patrón de diseño resulta ser una solución a un problema de diseño. Para que una solución sea considerada un patrón debe poseer ciertas características. Una de ellas es que debe haber comprobado su efectividad resolviendo problemas similares en ocasiones anteriores. Otra es que debe ser reutilizable, lo que significa que es aplicable a diferentes problemas de diseño en distintas circunstancias.

Los patrones del diseño de software es una solución general a un problema común en el diseño del software, es una plantilla general que puede ser usada para resolver problemas comunes.

Los software design patterns son soluciones generales a problemas que salen a la luz comúnmente durante el desarrollo de software, como un template que puede ser usado para diseñar software.

Existen 3 tipos de patrones de diseño: estructura, comportamiento y de creación.


Software Architecture

arquitectura

En los inicios de la informática, la programación se consideraba un arte y se desarrollaba como tal, debido a la dificultad que entrañaba para la mayoría de las personas, pero con el tiempo se han ido descubriendo y desarrollando formas y guías generales, con base a las cuales se puedan resolver los problemas. A estas, se les ha denominado Arquitectura de Software, porque, a semejanza de los planos de un edificio o construcción, estas indican la estructura, funcionamiento e interacción entre las partes del software. En el libro “An introduction to Software Architecture”, David Garlan y Mary Shaw definen que la Arquitectura es un nivel de diseño que hace foco en aspectos “más allá de los algoritmos y estructuras de datos de la computación; el diseño y especificación de la estructura global del sistema es un nuevo tipo de problema”.

La arquitectura del software es la fase final del diseño. En esta etapa se define una solución estructurada que cumpla con todos los requerimientos. Se toman una serie de decisiones que envuelve el impacto en la calidad, mantenibilidad y rendimiento. Se da la relación entre todos los elementos y requerimientos del sistema. La Arquitectura del software significa definir lo que queremos que el sistema haga y el diseño de cómo lograremos eso.


What is software design?

SONY DSC

El diseño de software tiene un papel importante en el desarrollo de software, ya que permite que ingenieros de software produzcan modelos distintos que moldean una clase de plano de la solución a ser implementado. Podemos analizar y valorar a estos modelos para determinar cual de estos permitirá o no, cumplir con una gama de requerimientos

También podemos revisar y valorar las soluciones alternativas y los intercambios. Definitivamente, se puede usar los modelos para planear las actividades de desarrollo siguientes, además de usarlos como entrada y punto de partida de la construcción y hacer pruebas.

En el diseño de software decides cuál será la función de tu software, para qué fin y cómo se verá junto con las metodologías que usarás, checando la seguridad de tu programa, compatibilidad con los sistemas actuales que posee la empresa o el cliente y si el rendimiento será adecuado. Se considera también resolver problemas que salgan a lo largo del desarrollo.