jueves, 26 de abril de 2018

¿QUÉ IMPORTANCIA TIENE EL ANÁLISIS Y DISEÑO DE SISTEMAS PARA EL ÉXITO DE LOS PROYECTOS DE SOFTWARE?

El diseño de sistemas tiene gran importancia desde el espacio cotidiano hasta el laboral y profesional, queriendo con esto demostrar que hoy en día es aptamente aplicado desde lugares como café Internet, rentas de películas, pasando por la mediana empresa con desarrollo de software contable y terminando en las grandes empresas ó monstruos empresariales como IBM (international business machines, big blue), Departamentos de Estado, etc.
Sin duda el diseño de sistemas constituye un papel importante en el desarrollo de software empresarial. Por otro lado el diseño de sistemas adopta campos como el de la ciencia (investigaciones de comportamientos físicos, meteorológicos, sismológicos etc.) la filosofía (medios abstractos de estructuración, desarrollo y proyección) cuyos contenidos permitan configurar y establecer aquellos elementos que serán utilizados para ofrecer satisfactores necesidades específicas del cliente
Es por tanto que dentro de los objetivos del diseño de sistemas es obligatorio encontrar recursos suficientes para el desarrollo de software en cuyos contenidos explícitos se encuentren los parámetros, establecimientos dirigidos ó encaminados hacia el desarrollo ideal de un producto.


DejSoft.importancia del diseño de sistemas: recuperado el 25 de abril del 2018 de 
http://puertoparalelo-rawde.blogspot.mx/2009/05/diseno-de-sistemas-2.html

APORTACIONES DE GRADY BOOCH, JAMES RUMBAUGH E IVAR JACOBSON ALA INGENIERIA EN SOFTWARE



Los 3 amigos (Grady Booch, James Rambaugh e  Ivar Jacobson).



El lenguaje UML comenzó a gestarse en octubre de 1994, cuando Rumbaugh se unió a la compañía Rational fundada por Booch (dos reputados investigadores en el área de metodología del software).

El objetivo de ambos era unificar dos métodos que habían desarrollado: el método Booch y el OMT (Object Modelling Tool ). El primer borrador apareció en octubre de 1995. En esa misma época otro reputado investigador, Jacobson, se unió a Rational y se incluyeron ideas suyas. Estas tres personas son conocidas como los “tres amigos”. Además, este lenguaje se abrió a la colaboración de otras empresas para que aportaran sus ideas. Todas estas colaboraciones condujeron a la definición de la primera versión de UML.

Es un lenguaje de modelado visual que se usa para especificar, visualizar, construir y documentar artefactos de un sistema de software. Se usa para entender, diseñar, configurar, mantener y controlar la información sobre los sistemas a construir.
UML capta la información sobre la estructura estática y el comportamiento dinámico de un sistema. Un sistema se modela como una colección de objetos discretos que interactúan para realizar un trabajo que finalmente beneficia a un usuario externo.
El lenguaje de modelado pretende unificar la experiencia pasada sobre técnicas de modelado e incorporar las mejores prácticas actuales en un acercamiento estándar.
UML no es un lenguaje de programación. Las herramientas pueden ofrecer generadores de código de UML para una gran variedad de lenguaje de programación, así como construir modelos por ingeniería inversa a partir de programas existentes.
S.A (2016). Historia de UML. Recuperado el: 25 de abril de 2018. En línea: http://alvearjofre.galeon.com/

UML (Unified Modeling Language)

¿Qué es UML (Unified Modeling Language)? 



UML son las siglas de “Unified Modeling Language” o “Lenguaje Unificado de Modelado”. Se trata de un estándar que se ha adoptado a nivel internacional por numerosos organismos y empresas para crear esquemas, diagramas y documentación relativa a los desarrollos de software (programas informáticos).
El término “lenguaje” ha generado bastante confusión respecto a lo que es UML. En realidad el término lenguaje quizás no es el más apropiado, sino una serie de normas y estándares gráficos respecto a cómo se deben representar los esquemas relativos al software. Mucha gente piensa por confusión que UML es un lenguaje de programación y esta idea es errónea: UML no es un lenguaje de programación. Como decimos, UML son una serie de normas y estándares que dicen cómo se debe representar algo.
UML es una herramienta propia de personas que tienen conocimientos relativamente avanzados de programación y es frecuentemente usada por analistas funcionales (aquellos que definen qué debe hacer un programa sin entrar a escribir el código) y analistas-programadores (aquellos que, dado un problema, lo estudian y escriben el código informático para resolverlo en un lenguaje como Java, C#, Python o cualquier otro).

TIPOS DE DIAGRAMAS EN UML

Diagramas de casos de uso: representan a los actores y casos de uso (procesos principales) que intervienen en un desarrollo de software.

Diagramas de clases: para UML una clase es una entidad, no una clase software. Un diagrama de clases UML puede ser un diagrama del dominio o representación de conceptos que intervienen en un problema, o también un diagrama de clases software. El sentido de un diagrama UML se lo da la persona que lo construye.

Diagramas de secuencia: suelen usarse para representar objetos software y el intercambio de mensajes entre ellos, representando la aparición de nuevos objetos de izquierda a derecha.

Diagramas de colaboración: suelen usarse para representar objetos o clases y la forma en que se transmiten mensajes y colaboran entre ellos para cumplir un objetivo.

Diagramas de estados: suelen usarse para representar cómo evoluciona un sistema (cómo va cambiando de estado) a medida que se producen determinados eventos.




González, V. (2014) modelo UML (Unified Modeling Language). Recuperado el: 25 de abril de 2018. En línea: https://www.ibm.com/support/knowledgecenter/es/SSZJPZ_11.3.0/com.ibm.swg.im.iis.bge.doc/topics/c_UML_model.html

S.A(2017). ¿Qué es y para qué sirve UML? Versiones de UML (Lenguaje Unificado de Modelado). Tipos de diagramas UML.. Recuperado el: 25 de abril de 2018. En línea: https://www.aprenderaprogramar.com/index.php?option=com_content&view=article&id=688:ique-es-y-para-que-sirve-uml-versiones-de-uml-lenguaje-unificado-de-modelado-tipos-de-diagramas-uml&catid=46&Itemid=163

Paradigma de programación orientado a objetos


       ¿ Qué es el paradigma de programación orientado a objetos?


 Es un paradigma de la programación de computadores que tiene como objetivo el desarrollo computacional basado en una colección de objetos que están interrelacionados y trabajan conjuntamente para resolver un problema. Surge dentro de los paradigmas de la programación como un enfoque diferente al momento de obtener soluciones computacionales.


Herencia: herencia describe la capacidad de crear clases nuevas a partir de una clase existente. La nueva clase hereda todas las propiedades, métodos y eventos de la clase base, y se puede personalizar con propiedades y métodos adicionales.
Polimorfismo: El polimorfismo implica la posibilidad de tener varias clases que se pueden usar de forma intercambiable, incluso si cada clase implementa las mismas propiedades o métodos de formas distintas. El polimorfismo es esencial para la programación orientada a objetos, ya que permite usar elementos con los mismos nombres, sin importar qué tipo de objeto esté en uso en ese momento.
Abstracción: Expresa las características esenciales de un objeto, las cuales distinguen al objeto de los demás
Encapsulación. La encapsulación implica el tratamiento de un grupo de propiedades, métodos y otros miembros como una única unidad u objeto. Los objetos pueden controlar el modo en que se cambian las propiedades y se ejecutan los métodos. Por ejemplo, un objeto puede validar valores antes de permitir cambios en propiedades. La encapsulación facilita también el cambio de implementación posterior al permitir ocultar los detalles de implementación de los objetos (ocultación de la información).

H. Espinosa (abril 12, 2011) Programación orientada a objetos (C# y Visual Basic). Recuperado el: 25/04/18 de https://programacionorientadaaobjetos.wordpress.com/tag/encapsulacion/
S.A. (28 de Septiembre de 2009) POO: Herencia, Abstraccion y Polimorfismo. Recuperado el: 25/04/18 de https://es.slideshare.net/equipo2/poo-herencia-abstraccion-y-polimorfismo

Paradigma de programación

¿Qué es un paradigma de programación?

Los paradigmas de programación solo son propuestas tecnológicas adoptadas por la Comunidad de des arrolladores que se enfocan a resolver uno o varios problemas definidos y delimitados. Existen muchos paradigmas de programación diferentes, posiblemente el más amplia mente utilizado hoy en día sea el de la programación orientada a objetos.

Ejemplo

Probablemente el paradigma de programación que actualmente es el más usado a todos los niveles es la orientación a Objeto. El núcleo central de este paradigma es la unión de datos y procesamiento en una entidad llamada "objeto", relacionable a su vez con otras entidades "objeto". Tradicionalmente datos y procesamiento se han separado en áreas diferente del diseño y la implementación de software. Esto provocó que grandes desarrollos tuvieran problemas de fiabilidad, mantenimiento, adaptación a los cambios y escalabilidad. Con la orientación a objetos y características como el encapsulado, polimorfismo o la Herencia se permitió un avance significativo en el desarrollo de software a cualquier escala de producción. La orientación a objeto parece estar ligado en sus orígenes con lenguajes como Lisp y Simula aunque el primero que acuño el titulo de programación orientada a objetos fue Smaltalk

Tipos de paradigmas

  • Programación Imperativa
  • Programación funcional
  • Programación lógica
  • Declarativo
  • POO Orientado a Objetos
  • Por procedimientos
Habitualmente se mezclan todos los tipos de paradigmas a la hora de hacer la programación. De esa manera se origina la programación multiparadigma, pero el que actualmente es más usado de todos esos paradigmas es el de la programación orientada a objetos.



R.Hernández.(06/15/2012) PARADIGMAS DE PROGRAMACIÓN. Recuperado  el: 26/04/18 de https://www.mindmeister.com/es/176377774/paradigmas-de-programaci-n
26
S.A. (22 de Marzo del 2018) Paradigma de programación. Recuperado el: 26/04/18 de http://wiki.uqbar.org/wiki/articles/paradigma-de-programacion.html

miércoles, 14 de marzo de 2018

empresa de software


Con sede en Florida, Chetu es un proveedor global de servicios de la tecnología informática rentables y de alta calidad. Chetu ofrece una gama de conocimientos orientados a ayudar a los clientes a rediseñar y reinventar sus negocios para competir con éxito en un mercado en constante cambio. Gracias a su gran éxito en locaciones en Estados Unidos y Europa, han decidido expandir sus servicios a América Latina y proveer sus más efectivas prácticas de desarrollo de software de clase mundial.    Con amplia experiencia desde el año 2000 han logrado aceptar y ejercer cualquier reto tecnológico que se les presenta. Son pioneros en el modelo de servicios globales de desarrollo y soporte que implementa el enfoque 'Lo mejor de ambos mundos'​ al proporcionar soluciones de TI rentables y de alta calidad sin comprometer la interacción cara a cara con el cliente. Chetu se jacta de tener una de las tasas más altas de retención de clientes en la industria. Su profesionalidad y tenacidad les ha permito haber recibido distinguidos reconocimientos como; Mejores 5000 Empresas Privadas de Más Rápido Crecimiento por Inc. 5000, Mejor Lugar Para Trabajar 2018 por SFBJ, Mejor Empresa Especializada en Desarrollo de Software 2017 por US Business, entre otras

Cuadro comparativo de los modelos y metodologías de desarrollo de software

Cuadro comparativo de los modelos y metodologías de desarrollo de software 



Métodos y metodologías en el desarrollo de software.
Nombre.
Cascada
Espiral
Extreme Programming
Metodologías Ágiles
Descripción.
Básicamente, el estilo del modelo en cascada, es que no podrás avanzar a  la siguiente fase, si la anterior no se encuentra totalmente terminada, pues no tiene porque haber vuelta atrás.
Encontramos por fuera cuatro fases bien organizadas, las cuáles siempre deben llevar ese orden que se estipula desde el principio. Una determinación de objetivos, un análisis de riesgos, el desarrollo y las pruebas, junto con la planificación, la cual dependerá de los resultados de la iteración para saber como se actuará en la siguiente vuelta al espiral.
Esta metodología es posiblemente la más destacada de las metodologías ágiles y esto se debe a su gran capacidad de adaptación ante cualquier tipo de imprevisto que surja. Pues la idea no es mantener ciertos requisitos desde que se está elaborando el proyecto, sino que durante el proceso, estos vayan cambiando o vayan evolucionando gradualmente sin complicaciones. Básicamente los creadores de esta metodología XP, consideran que es mejor adaptarte en el proceso a los requisitos que vayan apareciendo, que iniciar con requisitos y desarrollar un proyecto en base a eso.
Las metodologías ágiles como su nombre lo indica es que pretenden reducir y optimizar el tiempo empleado en el desarrollo del sistema.
Algunos ejemplos de estas metodologías son: Scrum, Kamban,XP.
Etapas.
1.       Análisis de requisitos.
2.       Diseño del sistema.
3.       Diseño del programa.
4.       Codificación.
5.       Ejecución de pruebas.
6.       Verificación.
7.       Mantenimiento.
1.       Determinar objetivo.
2.       Análisis de riesgo.
3.       Desarrollar, validar y probar.
4.       Planificación.
1.       Tipo de desarrollo iterativo e incremental.
2.       Pruebas unitarias.
3.        Trabajo en equipo.
4.       Alguien del equipo deberá trabajar como cliente.
5.       Corrección de errores.
6.       Reestructuración del código.
7.       El código es de todos.
8.       Código simple es la clave.
Al ser un conjunto de metodologías es primordial identificar que metodología emplear para así poder desglosar
Roles.
Especificación, desarrollo, validación y evolución.  En todo ello interviene el analista, diseñador y el jefe del proyecto así como también el grupo de desarrolladores.
Toda la atención está enfocada hacia el análisis de riesgos, pues el objetivo primario será reducir los riesgos.  Los roles principales recaen en el analista, desarrolladores, el diseñador y el jefe del proyecto.
·         Programador.
·         Tester.
·         Tracker.
·         Entrenador.
·         Consultor.
·         Gestor.
·         Programador.
·         Tester.
·         Tracker.
·         Entrenador.
·         Consultor.
·         Gestor.
Ventajas.
·         Permite llevar una documentación detallada a cada paso que se realiza desde el análisis y definición de los requerimientos hasta el buen funcionamiento y mantenimiento del programa desarrollado.
·         Permite identificar elementos abstractos que son fundamentales para el software y sus relaciones.
·         Permite desarrollar una correcta implementación inicial la cual puede irse refinando hasta obtener un sistema adecuado.
·         Reduce riesgos en el proyecto.
·         Incorpora modelos de calidad.
·         Da lugar a una programación sumamente organizada.
·         Ocasiona eficiencias en el proceso de planificación y pruebas.
·          Cuenta con una tasa de errores muy pequeña.
·         Propicia la satisfacción del programador.
·         Permite ahorrar mucho tiempo y dinero.
·         Facilita los cambios.
·         Fomenta la comunicación entre los clientes y los desarrolladores.
·         Los modelos de desarrollo suelen ser muy flexibles.
·         El proyecto se divide en pequeñas tareas desarrolladas por grupos independientes que trabajan simultáneamente e interaccionan entre ellos.
·         Es especialmente útil cuando el objetivo del proyecto no está claramente definido
Desventajas.
·         Al ser una metodología antigua consta de mucha documentación y esto hace que resulte tediosa.
·         Requiere de frecuentes pruebas y reuniones lo cual implica tiempo extra y que muchas veces hace que el proyecto se detenga en ciertos momentos.
·         Este modelo resulta muy costoso.
·         Genera mucho tiempo en el desarrollo del sistema.
·         Requiere alta experiencia en cuando a la identificación de riesgos en el sistema.
·         Es recomendable emplearla solo en proyectos a corto plazo.
·         En caso de fallar, las comisiones son muy altas.
·          Requiere de un rígido ajuste a los principios de XP.
·         Puede no siempre ser más fácil que el desarrollo tradicional.
·         Muestra una estructura muy débil.
·         la comunicación, la implicación personal y la colaboración se necesitan para garantizar el éxito del proyecto.
·         Son mucho más dependientes de la presencia de las mismas personas desde el principio hasta el final del proyecto.
Número de integrantes de los equipos.
No tiene límite pero se recomienda utilizarse solo en proyectos pequeños ya que resulta más ágil en ello.
No tiene límite pero el equipo debe contar con experiencia que permita reducir los riesgos del sistema.
Los necesarios de acuerdo a los roles y necesidades del proyecto.
Los necesarios de acuerdo a los roles y necesidades del proyecto.
¿En la construcción de qué tipo de aplicaciones se usa?
Aplicaciones de ámbito académico así como también en la industria de software.
Muy apto en el diseño de Sistemas operativos, Navegadores y controladores aeronáuticos.  
Industria financiera. El desarrollo rápido de software lo suficientemente flexible como para adaptarse a los continuos cambios de la industria sería vital.
De todo tipo ya que estas son flexibles y se adaptan más a las necesidades actuales.
Nombre de la empresa que la emplea.

Google
BBVA
Toyota, VUHL,BBC, BellSouth, British Telecom, DoubleYou, Motorola, Nokia.
País que emplea dicha metodología.
EUA, Alemania, México,España.
EUA, Alemania, México,Francia, etc
EUA, Alemania, México,Rusia, etc.
La mayoría de paísesde primer mundo.




Referencias
S.A (septiembre del 2007) Modelos de desarrollo de software. Recuperado el 14 de marzo del 2018 de http://moodle2.unid.edu.mx/dts_cursos_mdl/lic/IEL/SI/AM/06/Modelos.pdf

  S.A.(S.F.), Metodologías del Desarrollo de Software. Recuperado el: 14 de marzo del 2018 de https://okhosting.com/blog/metodologias-del-desarrollo-de-software/#Cuales_son_modelos_del_Ciclo_de_vida_del_Software_tradicionales


 Valdéz (S.F) modelos y metodología para del desarrollo de software. Recuperado el 14 de marzo del 2018 de http://www.eumed.net/tesis-doctorales/2014/jlcv/software.htm


meteorologistas

 

Meteorologistas 

 

A mediados de los años 80, no existían los ingenieros de software, y los de sistemas se dedicaban a la parte de equipos. Los que programaban en esa época portaban títulos en otras disciplinas como la ingeniería electrónica e industrial. 


Hoy hay una clara definición entre los ingenieros de sistemas y los ingenieros de software. Los primeros piensan en la solución completa, el diagnóstico del problema, la formulación de la solución. Los segundos identifican la arquitectura del software requerida para la implementación de la solución, toman en consideración la interacción con las bases de datos, y elaboran el programa. Sin embargo, no están pendientes de procedimientos, cultura organizacional ni nada por el estilo.

Con el movimiento de certificación ISO 9000 y en general la implementación de Sistemas de Gestión de Calidad se generó una tendencia con enfoque en los procesos para desarrollar aplicaciones. Se requería un desarrollo bastante estructurado e incluyen procesos complejos y documentados. Este esquema es ideal para grupos de desarrollo grandes, tanto en tamaño como en complejidad, porque resuelve problemas de comunicación. Para equipos de desarrollo pequeño, esta modalidad se convierte más bien en un lastre. Hoy además tenemos el marco de referencia que propone el CMMI, todavía con mayor alcance y más complejo que los procesos de ISO 9000 pero más pertinentes.





J. Daccach.(S.F.) Tendencias en el Desarrollo de Software. Recuperado el 7 de marzo del 2018 de http://www.deltaasesores.com/articulos/tecnologia/326-tendencias-en-el-desarrollo-de-software

¿Qué es un método de desarrollo de software?

 

¿Qué es un método de desarrollo de software?


Un Método se compone de diversos aspectos que nos permitirán conseguir una meta o lograr un objetivo. Se define más claramente como un conjunto de herramientas, las cuales, utilizadas mediante las técnicas correctas, permiten la ejecución de procesos que nos llevarán a cumplir los objetivos que buscamos.

Un método de desarrollo de software es una forma de realizar software siguiendo técnicas, proceso para la obtención de un objetivo, ya que para realizar software existen muchos métodos para realizarlo algunos de forma más compleja otros de forma más fácil, esto ayudado a facilitar el desarrollo de software. Lo que se requiere es distribuirse el trabajo y realizar el software por partes análisis y diseño, implementación, pruebas, adaptar, mejorar, corregir si es que hay errores al final del software.
un ejemplo es el de la siguiente imagen:





S.A (30/12/2006). Metodologias de software. Recuperado el: 14 de marzo del 2018 de http://www.um.es/docencia/barzana/IAGP/Iagp2.html

viernes, 9 de marzo de 2018

¿Qué es un metodología de desarrollo de software?


¿Qué es un metodología de desarrollo de software?



Las metodologías de desarrollo de software son un conjunto de procedimientos, técnicas y ayudas a la documentación para el desarrollo de productos software.

Es como un libro de recetas de cocina, en el que se van indicando paso a paso todas las actividades a realizar para lograr el producto informático deseado, indicando además qué personas deben participar en el desarrollo de las actividades y qué papel deben de tener. Además detallan la información que se debe producir como resultado de una actividad y la información necesaria para comenzarla.

Actualmente es imprescindible considerar los riesgos, aunque habitualmente las empresas, no han sido concienciadas de los riesgos inherentes al procesamiento de la información mediante ordenadores, a lo que han contribuido, a veces, los propios responsables de informática, que no han sabido explicar con la suficiente claridad las consecuencias de una política de seguridad insuficiente o incluso inexistente. Por otro lado, debido a una cierta deformación profesional en la aplicación de los criterios de coste/beneficio, el directivo desconocedor de la informática no acostumbra a autorizar inversiones que no lleven implicito un beneficio demostrable, tangible y mensurable.

Las técnicas indican cómo debe ser realizada una actividad técnica determinada identificada en la metodología. Combina el empleo de unos modelos o representaciones gráficas junto con el empleo de unos procedimientos detallados. Se debe tener en consideración que una técnica determinada puede ser utilizada en una o más actividades de la metodología de desarrollo de software. Además se debe tener mucho cuidado cuando se quiere cambiar una técnica por otra.
cocina, en el que se van indicando paso a paso todas las actividades a realizar para lograr el producto informático deseado, indicando además qué personas deben participar en el desarrollo de las actividades y qué papel deben de tener. Además detallan la información que se debe producir como resultado de una actividad y la información necesaria para comenzarla.

Referencias
Metodología de desarrollo de software. Actualizado 2006/12/30.consultado el 9 de marzo de 2018