En esta nueva entrada de DatoByte les quiero Compartir la solucion a los ejercicios del capitulo 1 del libro Ingenieria de software - Ian Sommervile (9na Edicion)
Actualmente me encuentro leyendo este libro el cual tengo que decir que su contenido me ha parecido muy interesante, espero a medica que finalice cada capitulo estarles compartiendo las respuestas a las preguntas.
1.1. Explique por qué el software profesional no sólo son programas que se desarrollan para un cliente.
Muchos suponen que el software es tan sólo otra palabra para los programas de cómputo. No obstante, cuando se habla de ingeniería de software, esto no sólo se refiere a los programas en sí, sino también a toda la documentación asociada y los datos de configuración requeridos para hacer que estos programas operen de manera correcta. Un sistema de software desarrollado profesionalmente es usualmente más que un solo programa. El sistema por lo regular consta de un número de programas separados y archivos de configuración que se usan para instalar dichos programas. Puede incluir documentación del sistema, que describe la estructura del sistema; documentación del usuario, que explica cómo usar el sistema, y los sitios web para que los usuarios descarguen información
reciente del producto.
1.2. ¿Cuál es la principal diferencia entre desarrollo de productos de software genéricos y desarrollo de software personalizado? ¿Qué significa esto en la práctica para los usuarios de productos de software genérico?
Una diferencia importante entre estos tipos de software es que, en productos genéricos, la organización que desarrolla el software controla la especificación del mismo. Para los productos personalizados, la organización que compra el software generalmente desarrolla y controla la especificación, por lo que los desarrolladores de software deben trabajar siguiendo dicha especificación.
1.3. ¿Cuáles son los cuatro atributos importantes que debe tener todo software profesional? Sugiera otros cuatro atributos que en ocasiones sean significativos.
Mantenimiento
El software debe escribirse de tal forma que pueda evolucionar para satisfacer las necesidades cambiantes de los clientes. Éste es un atributo crítico porque el cambio del software es un requerimiento inevitable de un entorno empresarial variable.
Confiabilidad y seguridad
La confiabilidad del software incluye un rango de características que abarcan fiabilidad, seguridad y protección. El software confiable no tiene que causar daño físico ni económico, en caso de falla del
sistema. Los usuarios malintencionados no deben tener posibilidad de acceder al sistema o dañarlo.
Eficiencia
El software no tiene que desperdiciar los recursos del sistema, como la memoria y los ciclos del procesador. Por lo tanto, la eficiencia incluye capacidad de respuesta, tiempo de procesamiento, utilización de memoria, etcétera.
Aceptabilidad
El software debe ser aceptable al tipo de usuarios para quienes se diseña. Esto significa que necesita ser comprensible, utilizable y compatible con otros sistemas que ellos usan.
1.4. Además de los retos de la heterogeneidad, cambio empresarial y social, y confianza y seguridad, identifique otros problemas y retos que sea probable que enfrente la ingeniería de software en el siglo XXI. (Sugerencia: piense en el ambiente).
Pregunta abierta:
Pensando en el ambiente ->Tecnologia con obsolecencia programada
Sin pensar en el medio ambiente -> Capacidad de procesamiento
1.5. Con base en su conocimiento de algunos tipos de aplicación estudiados en la sección 1.1.2, explique, con ejemplos, por qué diferentes tipos de aplicación requieren técnicas especializadas de ingeniería de software, para apoyar su diseño y desarrollo.
Para cada tipo de sistema se usan distintas técnicas de ingeniería de software, porque el software tiene características muy diferentes. Por ejemplo, un sistema de control embebido en un automóvil es crítico para la seguridad y se quema en la ROM cuando se instala en el vehículo; por consiguiente, es muy costoso cambiarlo. Tal sistema necesita verificación y validación muy exhaustivas, de tal modo que se minimicen las probabilidades de volver a llamar para revisión a automóviles, después de su venta, para corregir los problemas del software. La interacción del usuario es mínima (o quizás inexistente), por lo que no hay necesidad de usar un proceso de desarrollo que se apoye en el prototipo de interfaz de usuario.
1.6. Explique por qué existen ideas fundamentales de la ingeniería de software que se aplican a todos los tipos de sistemas de software.
Las nociones fundamentales de la ingeniería de software son universalmente aplicables a todos los tipos de desarrollo de sistema.
1.7. Explique cómo el uso universal de la Web cambió los sistemas de software.
Los sistemas basados en la Web podían desarrollarse donde se tuviera acceso a dichos sistemas usando un navegador Web, en lugar de una interfaz de usuario de propósito específico. Esta situación condujo al desarrollo de una gran variedad de nuevos productos de sistemas que entregaban servicios innovadores, a los cuales se ingresaba desde la Web.
Así como estos productos de sistemas, el desarrollo de navegadores Web que corrieran pequeños programas y realizaran cierto procesamiento local condujo a una evolución en los negocios y el software organizacional. En lugar de elaborar software e implementarlo en las PC de los usuarios, el software se implementaba en un servidor Web. Este avance hizo mucho más barato cambiar y actualizar el software, pues no había necesidad de instalar el software en cada PC. También redujo costos, ya que el desarrollo de interfaces de usuario es bastante caro. En consecuencia, dondequiera que fuera posible hacerlo, muchos negocios se mudaron a la interacción basada en la Web con sistemas de software de la compañía.
1.8. Analice el hecho de si los ingenieros profesionales deben ser certificados en la misma forma que los médicos o abogados.
Rotundamente si, pues sobra decir que debe mantener estándares normales de honestidad e integridad. No debe usar sus habilidades y experiencia para comportarse de forma deshonesta o de un modo que desacredite la profesión de ingeniería de software. Sin embargo, existen áreas donde los estándares de comportamiento aceptable no están acotados por la legislación, sino por la noción más difusa de responsabilidad profesional.
1.9. Para cada una de las cláusulas del Código de ética ACM/IEEE que se muestra en la figura 1.3, sugiera un ejemplo adecuado que ilustre dicha cláusula.
Pregunta abierta:
-Publico: No realizar software que vaya en contra de la destruccion del ser humano, "Software para maquinas que destruyan a la sociedad"
-Cliente y empleador: Laborar bajo la modalidad de OutSourcing
-Producto: Desarrollar Softwares que sea certificable.
-Juicio: No usar las habilidades para cometer delitos informaticos
-Gestion: Actuar en pro del desarrollo de software profesional
-Profesion: Ejercer profesionalmente y promover el continuo desarrollo de la profesion
-Colegas: Trabajo en equipo de forma colaborativa
-Uno mismo: Autoaprendizaje en el campo de accion de la ingenieria de software
1.10. Para ayudar a contrarrestar el terrorismo, muchos países planean o desarrollaron sistemas de cómputo que siguen la pista a gran cantidad de sus ciudadanos y sus acciones. Claramente esto tiene implicaciones en cuanto a la privacidad. Discuta la ética de trabajar en el desarrollo de este tipo de sistema.
Pregunta abierta
Un conflicto ético es la participación en el desarrollo de sistemas militares y nucleares. Al respecto, algunas personas se sienten muy afectadas por estos temas y evitan participar en el desarrollo de algún sistema asociado con los sistemas militares. Otras más trabajarán en los sistemas militares, pero no en los de armamento. Incluso otras sentirán que la seguridad nacional es un principio fundamental y no tienen objeciones éticas para trabajar en sistemas de armamento.
En tal situación es importante que tanto empleadores como empleados dejen en claro con antelación sus percepciones o puntos de vista. Cuando una organización participa en trabajo militar o nuclear, debe contar con la capacidad de especificar que los empleados tienen la voluntad de aceptar cualquier trabajo asignado. De igual forma, si un empleado toma la responsabilidad y deja en claro que no quiere trabajar en tales sistemas, los empleadores no tendrán que presionarlo para que éste lo haga más tarde.
AdSense_BarHorizontal
Mostrando entradas con la etiqueta Ingeniero de sistemas. Mostrar todas las entradas
Mostrando entradas con la etiqueta Ingeniero de sistemas. Mostrar todas las entradas
martes, 14 de junio de 2016
Solucionario Ejercicios Capitulo 1 Ingenieria de software - Ian Sommervile (9na Edicion)
Etiquetas:
9na Edicion,
ACM/IEEE,
Codigo de etica,
Ian Sommervile,
Ingenieria de software,
Ingeniero de sistemas,
Ingeniero de software,
Software profesional,
Solucionario
jueves, 19 de mayo de 2016
10 Preguntas Claves que debe saber un ingeniero de software
Para esta publicación dare por sentado que conoces algo de programación por ende quiero iniciar esta entrada trayendo como recuerdo el día en el que por primera vez observaste el algoritmo para mostrar "HOLA MUNDO", quiero mencionar que a nivel personal visualice un mundo de posibilidades y me motive aun mas para conocer el mundo de la ingeniería de software.
Son muchas las habilidades que debe tener un Ingeniero de software, un pequeño listado de estas habilidades es el sgte
– Dirige y coordina proyectos de desarrollo y mantenimiento de software.
– Supervisa las etapas de la vida de un proyecto de desarrollo de software.
– Dirige equipos de trabajo compuestos por analistas, diseñadores y programadores.
– Analiza y selecciona nuevas técnicas y herramientas existentes en el mercado tecnológico y del software.
– Analiza y diseña aplicaciones de software.
– Realiza pruebas de verificación, integración y rendimiento de las aplicaciones de software.
– Integra sistemas existentes susceptibles de interrelacionarse.
– Brinda asesoría a usuarios en la resolución de problemas relacionados con los sistemas de software.
– Realiza consultoría individual o en colaboración con otros profesionistas.
– Administra sistemas de bases de datos.
– Participa en formular políticas de seguridad y técnicas criptográficas en empresas e instituciones donde se desempeñe.
– Verifica que el software desarrollado cumpla con la legislación en vigor.
y ni que decir de su campo laboral, sin embargo
Ahora bien a continuación les comparto 10 preguntas claves que todo ingeniero de software
debe saber responder.
Los productos de software se desarrollan para un cliente en particular o para un mercado en general.
Aproximadamente 60% de los costos del software son de desarrollo, y 40% de prueba. Para el software elaborado específicamente, los costos de evolución superan con frecuencia los costos de desarrollo.
Bibliografia:
Ingenieria de software, 9na edicion - Ian Sommerville.
Son muchas las habilidades que debe tener un Ingeniero de software, un pequeño listado de estas habilidades es el sgte
– Dirige y coordina proyectos de desarrollo y mantenimiento de software.
– Supervisa las etapas de la vida de un proyecto de desarrollo de software.
– Dirige equipos de trabajo compuestos por analistas, diseñadores y programadores.
– Analiza y selecciona nuevas técnicas y herramientas existentes en el mercado tecnológico y del software.
– Analiza y diseña aplicaciones de software.
– Realiza pruebas de verificación, integración y rendimiento de las aplicaciones de software.
– Integra sistemas existentes susceptibles de interrelacionarse.
– Brinda asesoría a usuarios en la resolución de problemas relacionados con los sistemas de software.
– Realiza consultoría individual o en colaboración con otros profesionistas.
– Administra sistemas de bases de datos.
– Participa en formular políticas de seguridad y técnicas criptográficas en empresas e instituciones donde se desempeñe.
– Verifica que el software desarrollado cumpla con la legislación en vigor.
y ni que decir de su campo laboral, sin embargo
Ahora bien a continuación les comparto 10 preguntas claves que todo ingeniero de software
debe saber responder.
¿Qué es software?
Programas de cómputo y documentación asociada.Los productos de software se desarrollan para un cliente en particular o para un mercado en general.
¿Cuáles son los atributos del buen software?
El buen software debe entregar al usuario la funcionalidad y el desempeño requeridos, y debe ser sustentable, confiable y utilizable.¿Qué es ingeniería de software?
La ingeniería de software es una disciplina de la ingeniería que se interesa por todos los aspectos de la producción de software.¿Cuáles son las actividades fundamentales de la ingeniería de software?
Especificación, desarrollo, validación y evolución del software.¿Cuál es la diferencia entre ingeniería de software y ciencias de la computación?
Las ciencias de la computación se enfocan en teoría y fundamentos; mientras la ingeniería de software se enfoca en el sentido práctico del desarrollo y en la distribución de software.¿Cuál es la diferencia entre ingeniería de software e ingeniería de sistemas?
La ingeniería de sistemas se interesa por todos los aspectos del desarrollo de sistemas basados en computadoras, incluidos hardware, software e ingeniería de procesos. La ingeniería de software es parte de este proceso más general.¿Cuáles son los principales retos que enfrenta la ingeniería de software?
Se enfrentan con una diversidad creciente, demandas por tiempos de distribución limitados y desarrollo de software confiable.
¿Cuáles son los costos de la ingeniería de software?
Aproximadamente 60% de los costos del software son de desarrollo, y 40% de prueba. Para el software elaborado específicamente, los costos de evolución superan con frecuencia los costos de desarrollo.¿Cuáles son los mejores métodos y técnicas de la ingeniería de software?
Aun cuando todos los proyectos de software deben gestionarse y desarrollarse de manera profesional, existen diferentes técnicas que son adecuadas para distintos tipos de sistema. Por ejemplo, los juegos siempre deben diseñarse usando una serie de prototipos, mientras que los sistemas críticos de control de seguridad requieren de una especificación completa y analizable para su desarrollo. Por lo tanto, no puede decirse que un método sea mejor que otro.¿Qué diferencias ha marcado la Web a la ingeniería de software?
La Web ha llevado a la disponibilidad de servicios de software y a la posibilidad de desarrollar sistemas basados en servicios distribuidos ampliamente. El desarrollo de sistemas basados en Web ha conducido a importantes avances en lenguajes de programación y reutilización de software.Bibliografia:
Ingenieria de software, 9na edicion - Ian Sommerville.
jueves, 21 de mayo de 2015
Avances y novedades tecnológicas Mayo-2015
En esta nueva entrada de DatoByte les quiero comentar acerca de 4 noticias de interes en el mes de Mayo.
Videollamadas en Facebook
Iniciamos esta tanda de noticias con la activación de la función de Videollamada para Facebook, activación que ha tardado mucho tiempo y que a estas alturas tiene fuertes competencias como Skype(Microsoft) y Hangout(Google).
La compañía había anunciado esta nueva función desde el pasado mes de abril. Sin embargo, el servicio estaba disponible solo para 18 países. Estados Unidos, México y Uruguay fueron los primeros países en donde se probó la opción de videollamadas en Messenger
A partir de ahora, los usuarios de Facebook podrán realizar videollamadas sin ningún costo, desde la aplicación Messenger para dispositivos Android y iOS, y también a través de la web.
Las videollamadas no consumirán minutos del plan del usuario, pero sí datos. Por tal razón, es preferible que se conecte a una red wifi para probar esta función.
Para realizar una videollamada, los usuarios pueden tocar un botón que aparece en la parte superior derecha de la ventana de conversación.
Predicción: Se espera que en un futuro se realice una buena integración de Facebook con WhatSapp, la cual hasta la fecha no se ha publicado una integración exitosa.
Nintendo lanzará juegos para teléfonos en 2017
Comienzo diciendo que esta si que es una noticia muy esperada por muchos usuarios-gamer, es especial aquellos que hemos crecido jugando juegos como Mario Bros, Celda, Pokemon, Donkey Kong entre muchos, ya que muchos optabamos por elegir emuladores en las cuales reproducir estos juegos, inclusive actualmente hay emuladores para Android o IOs, El hecho de que Nintendo haya decidido incursionar en juegos para SmartPhones Considero una gran maniobra para ganar mas terreno en la clasica batalla de Consolas entre Sony, Microsoft y Nintendo.
La compañía planea lanzar cinco juegos de teléfonos inteligentes a finales de su próximo año fiscal, que concluye en marzo 2017. Como se ha anunciado antes, Nintendo está colaborando con la empresa japonesa de juegos móviles Dena, y lanzará su primer juego de teléfonos inteligentes a finales de este año.
“Usted puede pensar que es un número pequeño,” dijo Nintendo de los cinco títulos previstos en su informe de resultados “, pero cuando nuestro objetivo es hacer cada título un éxito, y porque queremos operar a fondo cada uno de ellos por una cantidad significativa de tiempo después de sus lanzamientos, esto no es un número pequeño en absoluto y debe demostrar nuestro compromiso serio con el negocio de dispositivos inteligentes “.
Nintendo no ha dado ningún detalle sobre los juegos, o incluso de cual personajes de Nintendo que protagonizaran estos mismos. Sin embargo, la compañía ha insistido en que no creará puertos simples de sus juegos de la consola, y reiteró que espera que los juegos de teléfonos inteligentes se pueda “crear un puente” para su propio hardware.
Para ello, Nintendo está trabajando en un servicio de suscripción que le ate sus juegos juntos en todas las plataformas, incluyendo teléfonos inteligentes, la Nintendo 3DS, Wii U, y una próxima consola con nombre en código “NX”. Para los juegos que están disponibles en varios dispositivos, los usuarios serán capaces de comprarlos una vez y jugar en cualquier lugar – una larga característica solicitada para los juegos de la consola virtual en eShop de Nintendo.
Porqué esto es importante: Nintendo está tratando de lograr un equilibrio con el número de juegos de teléfonos inteligentes que saca. En declaraciones anteriores del mes de marzo, el presidente y CEO Satoru Iwata dijo que la mayoría de los fabricantes de juegos móviles se basan en un solo título por nocaut, mientras que Nintendo puede recurrir a un gran elenco de personajes reconocibles. Al mismo tiempo, la compañía no quiere colocar demasiadas apuestas y el riesgo de devaluar su contenido. Si Nintendo extiende las cosas, parece que los usuarios pueden esperar un juego nuevo de teléfonos inteligentes cada pocos meses aproximado.
La reencarnación de Internet explorer
Y no es para mas pues bien sabido Internet explorer es considerado el navegador mas lento comparándolo con los otros navegadores del mercado, razón por la que hace algún tiempo Microsoft tomo la decisión de replantearse su navegador e inicio la puesta en marcha de su proyecto Spartan llamado actualmente Microsoft Edge.
Ya anunciaron desde la compañía de Redmond que el nuevo Microsoft Edge estaba desarrrollado partiendo de cero con un motor de navegación no probado con Internet Explorer. Se trata del navegador web que llegará por defecto con Windows 10 y que, por el momento, ya podemos probar en las Technical Preview. Como adelantábamos, Microsoft tiene en su punto de mira a Firefox y Chrome, sus dos grandes rivales con los que batallará por la cuota de mercado. Por el momento, antes del lanzamiento de la versión final, Microsoft ya presenta los resultados de rendimiento.
Es tan solo uno de los aspectos clave del navegador web, la carga de JavaScript, pero es un terreno donde Microsoft ya ha demostrado, con estos datos, que está por encima de sus competidores. Ahora bien, “no sólo de JavaScript vive el hombre”, como es evidente. Lo que sí es evidente es que Microsoft ha atacado en uno de los puntos clave, puesto que la carga de otros elementos es más ligera para su software y también el de la competencia.
¿Por qué Microsoft Edge es más rápido?
De nuevo repetiremos que hablamos tan soplo de la carga de JavaScript, pero en este sentido es el motor Chakra, desarrollado en exclusiva para Microsoft Edge, el que permite la mayor velocidad de carga con respecto al resto de navegadores web de 64 bits. Como podemos apreciar en la captura que acompaña, Microsoft Edge es 1,6 veces más rápido que Safari de Apple (Jet Stream) y 2,25 veces más rápido que Chrome (octano 2.o). Todo ello, como anunció Microsoft, se debe al nuevo motor de navegación, el cual, sin duda, veremos brillar con todo su esplendor cuando llegue la versión final.
Microsoft office 2016
Bueno la siguiente Noticia es mas bien una posibilidad de que aquellas personas que por X o Y motivo no han podido acceder a una versión de Office, les quiero comentar que Microsoft Actualmente esta ofreciendo la facilidad de que accedas a la versión de prueba del Nuevo Office 2016.
Entre las funciones que modernizan a Office 2016 destacan una serie de funciones colaborativas que permiten que varios usuarios editen un documento u hoja de cálculo de forma conjunta en tiempo real, función similar a Google Docs. Otras características que facilitarán las labores del usuario son “Tell Me” (Dime, en español), función que ofrecerá al usuario comandos predictivos de forma inteligente, y “Clutter” (Desorden, en español), utilidad para Outlook, que analizará los patrones de correo electrónico del usuario para filtrar los mensajes por su importancia.
Bibliografia
http://www.adslzone.net/2015/05/21/la-ultima-version-de-microsoft-edge-es-mas-rapida-que-firefox-y-chrome/
http://www.pcworldenespanol.com/2015/05/11/nintendo-lanzara-juegos-para-telefonos-en-2017/
http://www.parentesis.com/noticias/software_aplicaciones/Microsoft_ofrece_version_demo_de_Office_2016_para_Windows
http://www.eltiempo.com/tecnosfera/novedades-tecnologia/videollamadas-de-facebook-messenger-ya-estan-disponibles-a-nivel-global/15788877
http://www.eltiempo.com/tecnosfera/novedades-tecnologia/videollamadas-de-facebook-messenger-ya-estan-disponibles-a-nivel-global/15788877
miércoles, 6 de mayo de 2015
Antes de crear un proyecto de software
En esta nueva entrada de DatoByte les quiero enseñar acerca de como "Iniciar tu proyecto de desarrollo de software" teniendo aspectos formales partiendo desde una idea hasta aquellos conocimientos técnicos que deberías saber antes de iniciar, Todo esto mirado desde el punto de vista de un desarrollador de software, cabe resaltar, esta es solo una de las tantas propuestas que puedes encontrar en internet.
Para ello iniciemos entonces con los siguientes interrogantes:
- ¿Que vas a realizar?
- ¿Como lo voy a realizar?
- ¿Que conocimientos tengo de lo que voy a realizar?
El objetivo de la Planificación del proyecto de Software es proporcionar un marco de trabajo que permita al gestor de planificación hacer estimaciones razonables de recursos, costos y planificación temporal y esta se logra mediante un proceso de descubrimiento de la información que lleve a estimaciones razonables.
Estas estimaciones se hacen dentro de un marco de tiempo limitado al comienzo de un proyecto de software, y deberían actualizarse regularmente a medida que progresa el proyecto. Además las estimaciones deberían definir los escenarios del mejor caso, y peor caso, de modo que los resultados del proyecto pueden limitarse.
Para ello existen múltiples formas, desde algo rustico hasta algo mas profesional y procedimental, los expertos en el tema comentan que lo ideal es desarrollar un "Modelo de negocio", en este punto los pasos entonces serian:
Idea >>>Modelo de Negocio>>> proyecto Formal
Ahora bien pasemos de la Idea a el modelo de negocio, una de las modelos de negocios mas usados, es el Modelo Canvas, el cual ha sido muy popular en diversos campos actuales, ademas por así decirlo es una tendencia que ha sido usada por diversos proyectos que hoy en día son considerados exitosos.
Podemos definir con estas 3 preguntas gran parte del inicio de nuestro proyecto de desarrollo de software y para ello planear bien la solución a cada uno de los interrogantes antes mencionados.
Antes de abordar los interrogantes quiero mencionar el concepto de una planeación efectiva de un proyecto de software, la cual depende de una correcta planeación detallada de todos los aspectos de un proyecto de software, anticipando problemas que puedan surgir y preparando con anticipación soluciones tentativas a ellos. Se supondrá que el administrador del proyecto es responsable de la Planeación desde la definición de requisitos hasta la entrega del sistema terminado.
Habiendo definido pautas para poder planear en detalle nuestro proyecto de desarrollo de software, procederíamos entonces a modelar nuestra idea para convertirla en un proyecto la pregunta entonces es ¿como convertir esta idea en un proyecto Formal?
En esta entrada no profundizaremos acerca del modelo Canvas para ello me permito referenciar la sgte pagina web.
http://www.leanstart.es/business-model-canvas-una-herramienta-eficaz-para-trazar-tu-modelo-de-negocio/
En ella encontraras mas información acerca de su proceso de elaboración, pues como comente anteriormente teniendo un modelo Canvas Validado Podemos iniciar con mas base la redacción de un proyecto formal.
Volviendo a los interrogantes iniciales el primer interrogante ¿Que vas a realizar? la respuesta comienza con una idea, cabe resalta que las ideas las podemos separar en ideas Innovadoras e ideas Conocidas, Una idea innovadora es en resumidas cuentas crear un producto Nuevo, Mientras que una idea conocida es prácticamente Ofrecer un producto similar a otro que ya esta en el mercado obviamente puntuando ciertas diferencias que resulten significativas al momento de vender tu producto. llevado a términos de desarrollo de software seria crear softwares Nuevos VS softwares parecidos pero Valores agregados.
Dicho lo anterior aun no hemos resuelto nuestro interrogante, ¿Que vas a realizar?, ello nos da la tentativa de comenzar a plantear nuestra idea, sencillamente para este interrogante hay que usar la imaginación y analizar los pro y contras para hacer fluir esa idea, No hay mejor aliado que la imaginación que ofrece un punto de vista Creativo, adicionando a los análisis de la idea que nos ofrece el punto de vista complementario, la realidad, sin embargo lo ideal de este proceso es pensar de cierta manera en la unión de la propuesta de valor y del la sección de clientes de nuestro modelo canvas (Clientes, relaciones cliente, canales de distribución y PROPUESTA DE VALOR)
"Sentarnos a imaginar no es lo mismo que Pensar y analizar"
A nuestro segundo interrogante ¿Como lo voy a realizar?, Es un tema que muchos desarrolladores de softwares aveces omitimos, Pues tal vez fuimos programados en nuestra cabeza solo para tirar y tirar lineas de código (Que posiblemente no lleguen a ser usadas jamas). Cabe mencionar que "Tenemos que planear cada paso de nuestro proyecto, Cada día a día, Cada linea de Código". Este interrogante nos conlleva de cierta manera definir la parte de Infraestructura de nuestro modelo canvas (Alianzas, actividades y recursos)
Por ultimo y no menos importante tenemos nuestro tercer interrogante ¿Que conocimientos tengo de lo que voy a realizar?. Este interrogante pretende abarcar una parte mas técnica de nuestro proyecto de software pues en el nos permite hacer una revisión principalmente de 2 aspectos el estado actual e histórico que posiblemente ha tenido nuestra idea, y a su vez el estado actual de los Conocimientos internos acerca del desarrollo de software, En cuanto al primer aspecto podría comentar que todo es cuestión de buscar referencias de nuestra idea, procesos previos y demás con el fin de construir un completo "Estado del arte" acerca de lo que realmente quiero construir, y en cuanto al segundo aspecto sencillamente es cuestión de interiorizar y analizar como me encuentro yo o mi equipo para afrontar el proyecto de desarrollo de software, en ello sugiero el siguiente vinculo de referencia bibliografica:
http://blog.koalite.com/2013/12/cinco-cosas-que-deberias-aprender-para-dedicarte-al-desarrollo-de-software/
Si has llegado hasta esta parte te invito a compartir este post con tus amigos y/o darle +1 y/o hacer un comentario al respecto
Bibliografia:
http://www.wikilearning.com/articulo/planificacion_de_proyectos-planeacion_y_estimacion_de_proyectos_informaticos/9597-1
http://blog.koalite.com/2013/12/cinco-cosas-que-deberias-aprender-para-dedicarte-al-desarrollo-de-software/
http://www.idearium30.com/5-pasos-para-convertir-una-idea-en-un-negocio-i68
martes, 14 de abril de 2015
Glosario
En esta nueva entrada de DatoByte
les quiero exponer diversos conceptos relacionados con programación que a
diario como programador nos topamos y aun así los utilizamos e ignoramos el
verdadero significado, si consideras algún concepto relevante y que no se encuentre en este Glosario, te sugiero lo adiciones en los comentarios.
CONCEPTOS RELACIONADOS CON
EL COMPUTADOR
Bit: Un bit es un dígito del sistema de numeración binario. Las
unidades de almacenamiento tienen por símbolo bit.
Mientras que en el sistema de
numeración decimal se usan diez dígitos, en el binario se usan
solo dos dígitos, el 0 y el 1. Un bit o dígito binario puede representar uno de
esos dos valores: 0 o 1
Byte: Un byte es
la unidad fundamental de datos en los ordenadores personales, un byte son ocho
bits contiguos. El byte es también la unidad de medida básica para memoria,
almacenando el equivalente a un carácter, en otras palabras un byte puede ser
considerado un Dato
ASCII: Código
Estándar Americano para el Intercambio de Información, Asigna valores numéricos
a las letras, números, signos de puntuación y otros símbolos con los que el
computador trabaja.
CONCEPTOS BÁSICOS DE PROGRAMACIÓN
Lenguaje Maquina: Son
aquellos cuyas instrucciones son directamente entendibles por la computadora y
no necesitan traducción posterior para que la CPU pueda
comprender y ejecutar el programa. Las instrucciones en lenguaje maquina
se expresan en términos de la unidad de memoria más pequeña el bit
(dígito binario 0 ó 1).
Lenguaje Ensamblador o de Bajo
Nivel: En este lenguaje las instrucciones se escriben en códigos
alfabéticos conocidos como mnemotécnicos para las operaciones y direcciones
simbólicas.
Lenguaje de Alto Nivel: Los lenguajes
de programación de alto nivel (BASIC, pascal, cobol, fortran,
etc.) son aquellos en los que las instrucciones o sentencias a la computadora
son escritas con palabras similares a los lenguajes humanos (en general en
ingles), lo que facilita la escritura y comprensión del programa.
Algoritmo: La solución a cualquier problema de
cómputo involucra la ejecución de una serie de acciones en orden
especifico. Un procedimiento para resolver un problema en términos
de: a) Las acciones a ejecutarse y b) el orden en el cual estas acciones deben
ejecutarse se llama algoritmo.
Pseudocódigo: Mezcla de lenguaje de programación
y español (o ingles o cualquier otro idioma) que se emplea, dentro de
la programación estructurada, para realizar el diseño de un programa. En
esencial, el pseudocódigo se puede definir como un lenguaje de especificaciones
de algoritmos.
Es la representación narrativa de
los pasos que debe seguir un algoritmo para dar solución a un problema
determinado. El pseudocódigo utiliza palabras que indican
el proceso a realizar.
WebServices: Es una tecnología que
utiliza un conjunto de protocolos y estándares que sirven para intercambiar
datos entre aplicaciones. Distintas aplicaciones de software desarrolladas en
lenguajes de programación diferentes, y ejecutadas sobre cualquier plataforma,
pueden utilizar los servicios web para intercambiar datos en redes de ordenadores como Internet. La interoperabilidad se consigue mediante la adopción de estándares abiertos.
XML: Es un lenguaje de marcas desarrollado por el World Wide Web Consortium (W3C) utilizado para almacenar datos en forma legible. Permite definir la gramática de lenguajes específicos (de la misma manera que HTML) para estructurar documentos grandes. A diferencia de otros lenguajes, XML da soporte a bases de datos, siendo útil cuando varias aplicaciones deben comunicarse entre sí o integrar información.
WSDL: Son las siglas de Web Services Description Language, un formato XML que se utiliza para describir servicios Web, WSDL describe la interfaz pública a los servicios Web. Está basado en XML y describe la forma de comunicación, es decir, los requisitos del protocolo y los formatos de los mensajes necesarios para interactuar con los servicios listados en su catálogo. Las operaciones y mensajes que soporta se describen en abstracto y se ligan después al protocolo concreto de red y al formato del mensaje.
SOAP: (siglas de Simple Object Access Protocol) Es un protocolo estándar que define cómo dos objetos en diferentes procesos pueden comunicarse por medio de intercambio de datos XML, tambien considerado como un estandar para manipular determinados WebServices.
REST: (Representational State Transfer) o REST es una técnica de arquitectura software para sistemas hipermedia distribuidos como la World Wide Web. en la actualidad se usa en el sentido más amplio para describir cualquier interfaz web simple que utiliza XML y HTTP
UDDI: Son las siglas del catálogo de negocios de Internet denominado Universal Description, Discovery and Integration. El registro en el catálogo se hace en XML.
Imagen tomada de http://arquivo.devmedia.com.br/
METODOLOGIAS, ESTÁNDARES Y OTROS CONCEPTOS RELACIONADOS CON UN ÁREA DE DESARROLLO DE SOFTWARE
BI -
Bussines Inteligence: Es la habilidad para transformar los datos en información, y la información en conocimiento, Abarca la comprensión del funcionamiento actual de la empresa, bien como la anticipación de acontecimientos futuros, con el objetivo de ofrecer conocimientos para respaldar las decisiones empresariales
BPM: Es una metodología corporativa y disciplina de gestión, cuyo objetivo es mejorar el desempeño (eficiencia y eficacia) y la optimización de los procesos de negocio de una organización, a través de la gestión de los procesos que se deben diseñar, modelar, organizar, documentar y optimizar de forma continua. Por lo tanto, puede ser descrito como un proceso de optimización de procesos.
SOA: Arquitectura Orientada a Servicios, es un paradigma de arquitectura para diseñar y desarrollar sistemas distribuidos. Permite la creación de sistemas de información altamente escalables que reflejan el negocio de la organización, a su vez brinda una forma bien definida de exposición e invocación de servicios (comúnmente pero no exclusivamente servicios web), lo cual facilita la interacción entre diferentes sistemas propios o de terceros.
SaaS: Software como Servicio, es un modelo de distribución de software donde el soporte lógico y los datos que maneja se alojan en servidores de una compañía de tecnologías de información y comunicación (TIC), a los que se accede via Internet desde un cliente. La empresa proveedora TIC se ocupa del servicio de mantenimiento, de la operación diaria y del soporte del software usado por el cliente.
SCRUM: Es un modelo de referencia que define un conjunto de prácticas y roles, y que puede tomarse como punto de partida para definir el proceso de desarrollo que se ejecutará durante un proyecto, dividiendo el proyecto en pequeñas momentos del tiempo denominados Sprint.
RUP: El Proceso Racional Unificado es un proceso de desarrollo de software , constituye la metodología estándar más utilizada para el análisis, diseño, implementación y documentación de sistemas orientados a objetos.
El RUP no es un sistema con pasos firmemente establecidos, sino un conjunto de metodologías adaptables al contexto y necesidades de cada organización.
CMMI: Es una guía que ayuda en la mejora de procesos, pero como en cualquier receta cada quién le puede poner de su propio sazón. El enfoque del modelo permite evolucionar desde un proceso en crisis a un proceso controlado, estandarizado, medido y optimizado que sienta las bases de la mejora continua y permite a la organización adoptar nuevas prácticas sobre un proceso estable y controlado que está institucionalizado.
PMBOK: La Guía de los fundamentos de la dirección de proyectos (más conocida como PMBOK®) es el estándar más ampliamente reconocido para manejar y administrar proyectos. Resulta curioso que este texto tenga la fama de ser un manual para dirigir proyectos, o bien que se trata de un texto rigorista y dogmático. En realidad, se trata de una obra realizada por personas con un agudo sentido práctico, y que tiene incorporada la concepción de que un proyecto exitoso va a ser resultado de la colaboración (y los conflictos) de todo el personal.
COBIT: Es una guía de mejores prácticas presentado como framework, dirigida al control y supervisión de tecnología de la información (TI). Tiene una serie de recursos que pueden servir de modelo de referencia para la gestión de TI, incluyendo un resumen ejecutivo, un framework, objetivos de control, mapas de auditoría, herramientas para su implementación y principalmente, una guía de técnicas de gestión.
ITIL: Es un conjunto de conceptos y buenas prácticas para la gestión de servicios de tecnologías de la información, el desarrollo de tecnologías de la información y las operaciones relacionadas con la misma en general. ITIL da descripciones detalladas de un extenso conjunto de procedimientos de gestión ideados para ayudar a las organizaciones a lograr calidad y eficiencia en las operaciones de TI. Estos procedimientos son independientes del proveedor y han sido desarrollados para servir como guía que abarque toda infraestructura, desarrollo y operaciones de TI.
TOGAF: Es un esquema (o marco de trabajo) de Arquitectura Empresarial que proporciona un enfoque para el diseño, planificación, implementación y gobierno de una arquitectura empresarial de información. Esta arquitectura está modelada, por lo general, en cuatro niveles o dimensiones: Negocios, Tecnología (TI), Datos y Aplicaciones. Cuenta con un conjunto de arquitecturas base que buscan facilitarle al equipo de arquitectos cómo definir el estado actual y futuro de la arquitectura.
OTROS CONCEPTOS
GUI: Interfaz Gráfica de usuario, se llama GUI a el conjunto de componentes visibles al usuario que usa cualquier programa, estos permiten la interacción con el sistema, Puede denominarse como componentes de entrada y salida de información.
Cluster: En informática un Cluster se aplica a los conjuntos o conglomerados de computadoras unidos entre sí normalmente por una red de alta velocidad y que se comportan como si fuesen una única computadora.
En el mundo laboral un Cluster es Una agrupación de empresas e instituciones relacionadas entre sí, pertenecientes a un mismo sector o segmento de mercado, que se encuentran próximas geográficamente y que colaboran para ser más competitivos
UML: Lenguaje Unificado de Modelado es el lenguaje de modelado de sistemas de software más conocido y utilizado en la actualidad.
Es un lenguaje gráfico para visualizar, especificar, construir y documentar un sistema. UML ofrece un estándar para describir un "plano" del sistema (modelo), incluyendo aspectos conceptuales tales como procesos de negocio, funciones del sistema, y aspectos concretos como expresiones de lenguajes de programación, esquemas de bases de datos y compuestos reciclados.
Caso de Uso: Es una descripción de los pasos o las actividades que deberán realizarse para llevar a cabo algún proceso. Los personajes o entidades que participarán en un caso de uso se denominan actores. En el contexto de ingeniería del software, un caso de uso es una secuencia de interacciones que se desarrollarán entre un sistema y sus actores en respuesta a un evento que inicia un actor principal sobre el propio sistema. Los diagramas de casos de uso sirven para especificar la comunicación y el comportamiento de un sistema mediante su interacción con los usuarios y/u otros sistemas. O lo que es igual, un diagrama que muestra la relación entre los actores y los casos de uso en un sistema. Una relación es una conexión entre los elementos del modelo, por ejemplo la especialización y la generalización son relaciones. Los diagramas de casos de uso se utilizan para ilustrar los requerimientos del sistema al mostrar cómo reacciona a eventos que se producen en su ámbito o en él mismo.
Requisito Funcional: Define una función del sistema de software o sus componentes. Una función es descrita como un conjunto de entradas, comportamientos y salidas. Los requerimientos funcionales pueden ser: cálculos, detalles técnicos, manipulación de datos y otras funcionalidades específicas que se supone, un sistema debe cumplir. Los requerimientos de comportamiento para cada requerimiento funcional se muestran en los casos de uso. Son complementados por los requisitos no funcionales, que se enfocan en cambio en el diseño o la implementación.
Como se define en la ingeniería de requisitos, los requisitos funcionales establecen los comportamientos del sistema.
Requisito No funcional: es, en la ingeniería de sistemas y la ingeniería de software, un requisito que especifica criterios que pueden usarse para juzgar la operación de un sistema en lugar de sus comportamientos específicos, ya que éstos corresponden a los requisitos funcionales. Por tanto, se refieren a todos los requisitos que no describen información a guardar, ni funciones a realizar.
Algunos ejemplos de requisitos no funcionales típicos son los siguientes:
Rendimiento, disponibilidad, seguridad, accesibilidad, usabilidad, estabilidad, portabilidad,
costo, operatividad, interoperabilidad, escalabilidad, concurrencia, mantenibilidad, interfaz
Bueno eso es todo en este glosario, espero les sea de muchísima ayuda, en especial en momentos que quieras pegar un repaso a los conceptos que rodean el mundo de la programación.
NOTA:
Existen muchos mas conceptos, por el momento he adicionado aquellos mas comunes en el mundo del desarrollo de software, si consideras algún concepto relevante y que no se encuentre en este Glosario, te sugiero lo adiciones en los comentarios.
Bibliografia:
Mucha de la información anterior fue Obtenida en la biblioteca de Wikipedia seleccionando la información mas relevante, si deseas ampliar tus conocimientos, te recomiendo busques cada concepto y hagas comparaciones con otros nuevos conceptos.
Etiquetas:
Conceptos Informáticos,
Desarrollador de software,
Glosario,
Ingeniero de sistemas,
Programación,
Programador,
Que debe saber un programador
jueves, 26 de marzo de 2015
Iniciando
Saludos a todos los seguidores, en esta primera entrada quiero agradecerle a varios compañeros que me han motivado a iniciar la creación de este blog para compartir diversas facetas del día a día como programador, espero que toda esta información sea de ayuda para sus labores cotidianas,
Lo principales temas que se publicaran en este blog seran detalles acerca de como optimizar algunas partes de nuestros codigos, tratando diversos lenguajes y entornos de desarrollo (IDE).
Asi que sin mas palabras los invito a echarse la pasadita.
Lo principales temas que se publicaran en este blog seran detalles acerca de como optimizar algunas partes de nuestros codigos, tratando diversos lenguajes y entornos de desarrollo (IDE).
Asi que sin mas palabras los invito a echarse la pasadita.
Suscribirse a:
Entradas (Atom)









