Introducción a la Ingeniería de Software (01)
HTML-код
- Опубликовано: 11 сен 2024
- Presentación de conceptos muy básicos y generales sobre la Ingeniería de Software. Definición de Ingeniería de Software; conocimientos y habilidades del ingeniero de software; las cuatro descripciones fundamentales de un programa; fracasos y éxitos de la Ingeniería de Software; posibles causas del estado actual de la disciplina; introducción a los métodos formales.
Gracias Profesor por compartir su tiempo y su conocimiento. Es algo muy valioso. Saludos desde Formosa.
Gracias a vos por visitar el canal.
Le agradezco muchísimo por su labor. Excelente video. Definitivamente, no se trata solo de programar sino que como autodidactas en este mundo del desarrollo debemos formarnos en lo que realmente nos llevará a crear software de calidad.
Muchas t a vos por visitar el canal!
Muchas t a vos por visitar el canal!
Muchas gracias por compartir tan valioso conocimiento, ojala vengan muchos mas videos y podamos tener la suerte de seguir aprendiendo.
Gracias a vos por visitar el canal. De a poco voy a ir subiendo más vídeos.
Muchas gracias, es usted una inspiración para mi.
@@Sam-hu3xt gracias a vos por tu comentario
Muchas gracias por el video! quedé enganchado al tema
Gracias a vos por visitar el canal.
Mi estimado le agradesco mucho por este material y contenido, encerio muchas gracias porque así estoy aprendiendo poco a poco para progresar en este mundo de la programación.
Estudiaré este año la carrera fe ing. De sistemas e informática. Gracias...💪👌
Me alegra que te sirva. Gracias a vos por visitar el canal.
Compa que donde eres??? tambien queria estudiar ing. en sistemas pero me siento viejo ya. tengo unos 28 años
Que bien que explicas, gracias por subir este contenido !
Gracias a vos por visitar el canal.
Que grande profe! No se da una idea de lo mucho que ayuda democratizar el conocimiento! Si existe una manera de retribuirle lo que nos da estaría encantado. Le deseo una gran vida.
Tu comentario es la única retribución que espero. Gracias por visitar el canal.
Excelente labor profesor!!! gracias a personas como usted muchos podemos formarnos hasta siendo autodidactas
Qué bueno! Gracias a vos por visitar el canal.
Profesor!! Muchas gracias por darse el tiempo de hacer esto!! Excelente aporte!!
Gracias a vos por seguir visitando el canal.
Excelente explicacion, gracias ojala sigas realizando mas videos, te seguiré!
Gracias a vos por visitar el canal. Revisá el canal, hay más videos que te pueden interesar.
Gran exposición, me deja en claro mucho de lo que se supone debí ver en la universidad
En este canal tenés la oportunidad de ver algunas de esas cosas. Saludos.
Buenas qué tal Maximiliano! Te felicito por esta gran explicación, me ha servido mucho en verdad. Una pregunta que me he planteado desde hace tiempo, ¿La ingeniería de software es más especializada en todos los lenguajes de programación, es decir, es posible tanto crear desarrollo web, móvil, videojuegos e inteligente artificial, o es algo en concreto? Gracias y saludos!
La ingeniería de software aplica a todos esos campos que vos enumerás (desarrollo web, móvil, videojuegos e inteligente artificial) y a muchos otros. Es una disciplina general aunque con el tiempo se irán generando especialidades. Aunque no aplica, por ejemplo, al software que hagas vos para tu uso personal. Tampoco es conveniente aplicarla cuando se trata de un desarrollo incipiente cuando aun no estás seguro si será comercialmente viable o no. Por ejemplo si estás pensando en una aplicación móvil nueva para la cual no sabés si habrá mercado o interés de los potenciales usuarios. Pero en estas circunstancias es más una cuestión económica-comercial que técnica. Es decir técnicamente es perfectamente razonable usar ingeniería de software para el desarrollo de aplicaciones nuevas sin mercado asegurado, pero económicamente tal vez no sea conveniente.
También es cierto que en algunos de los campos que vos mencionás hay técnicas y métodos específicos de la ingeniería de software que son mejores que otros y problemas que son más complejos que en otros. Por ejemplo, el problema de la portabilidad de aplicaciones es más complejo en el ambiente móvil que en otros ambientes; en videojuegos la portabilidad también es importante pero más relacionada a las placas gráficas que el juego debe soportar; en aplicaciones web el problema de la seguridad es mucho más importante que en los otros ambientes; etc.
¡Gracias por este gran material!
Gracias a vos por visitar el canal.
BUEN VIDEO MASTER!!!, BUENA EXPLICACIÓN, GRACIAS...
Gracias a vos por visitar el canal.
Gracias profesor mi segunda clase muy buenos conceptos
De nuevo gracias a vos.
Hola Profe!, como esta?,hasta que pude ver todo el video,con el trabajo es dificil,me gustaria saber programar de la mejor manera que exista aunque me lleve años aprender por el trabajo no importa,solo es una meta que quiero cumplir ,por suerte lo encontrea usted ;un profesional,bueno ,hoy tengo franco voy a seguir viendo los videos de matematica para programadores,cuidese.Adios y que Dios lo bendiga.
Gracias por visitar el canal. Lleva tiempo, trabajes o no. Programar (bien) no es fácil, aunque haya una especie de cultura que presenta la programación como algo fácil que cualquiera puede hacer bien.
Muy útil, generalmente uno trata de abarcar todo el problema en su cabeza sin pasar por S y D, entender estos conceptos te ayudan a la hora de desarrollar. Muchas gracias.
Gracias a vos por visitar el canal. Te sugiero entonces que le pegues una mirada a los videos sobre matemática para programadores y diseño de software, en particular aquellos sobre patrones de diseño.
Muchas gracias por este material.
Gracias a vos por visitar el canal
Excelente contenido. Tengo una duda que espero aclarar en otros vídeos: si respetaramos el rombo, es decir, hacemos todos los pasos R -> S,D -> P, esperando reducir muchos errores, pero ¿Qué nos garantiza que después de hacer una especificación formal, bien hecha, y correctamente probada, y después hacer la implementación final pero con errores, no por la mala implementación, sino por otra cuestión?, Y acá es donde uno ve la inmensa complejidad de este oficio, tendría que tener pruebas para S, P, e incluso D, espero haberme hecho entender. Mil gracias de nuevo
El paso más complejo y riesgoso es de R a S. La razón es que R es una descripción informal del sistema; o sea, en el mejor de los casos, es un buen documento escrito en castellano (u otro idioma). Cualquier texto en castellano medianamente complejo tiene inconsistencias, ambigüedades, contradicciones y, más que nada, múltiples interpretaciones. De ahí uno tiene que escribir una fórmula, sea S o P. Es decir de algo que es inconsistente, ambiguo, contradictorio y que no sé bien cómo interpretarlo, tengo que escribir una fórmula de matemática o lógica. Es siempre va a ser difícil. Lo que propone esta forma de entender la Ingeniería de Software es que es mucho más difícil y riesgoso ir de R a P.
Por otro lado, una vez que tenés S es posible derivar P sin errores. Ver por ejemplo, CompCert (compcert.inria.fr/) o seL4 (sel4.systems/). Con una salvedad: sin errores significa que P se comporta tal y como dice S, aunque S no necesariamente es la interpretación correcta de R. Es decir, le mostrás P es perfecto respecto a S pero se lo mostrás al usuario y te dice "pero esto no es lo que yo quería". El problema es que vos especificaste R interpretando el texto en castellano de una forma que no era la que el usuario tenía en la cabeza. Como el paso de R a S es necesariamente informal (no matemático) siempre existe este riesgo.
Pero para que quede claro: si S es una fórmula de lógica es posible obtener un programa ejecutable P que sea perfecto respecto a S. Cero errores. No es solo posible en la teoría sino que se ha hecho en muchos sistemas críticos.
Sí, tenés que tener pruebas (es decir, demostraciones matemáticas mecanizadas) para S y P. Sí, es difícil. Sí, requiere aproximarse a la construcción de software de una manera completamente distinta a como lo hace la industria. Pero, cuando terminaste se corregir el último error en tu sistema, ¿cuánto te terminó costando? ¿Cuánto tiempo te terminó llevando? ¿Lo que le habías dicho a tu cliente antes de empezar? No creo. ¿Vale la pena hacer todo este desarrollo matemático para todos los sistemas? No, de ninguna forma.
Saludos y gracias por tu comentario.
Excelente contenido 👌 Muchas Gracias
Gracias a vos por visitar el canal.
Excelente como siempre gracias
Gracias por tu interés.
Me das mucho apoyo con estos videos , quedria saber más aobre estao temás ya que entrare a esta carrera
En general son temas más o menos avanzados así que vas a tener tiempo de ir viéndolos. Gracias por visitar el canal.
"la parte dificil de construir software es especificarlo, diseñarlo y verificarlo" cuanta razon tiene
Esperemos... pocos lo entienden así. Gracias por visitar el canal.
Buenas tardes, Maximiliano. Estoy sumamente agradecido por poder acceder a clases grabadas en torno a la ingeniería de software. Hace un año empecé a formarme de forma autodidacta en programación web. Por el momento estoy empezando a entender el lenguaje de Javascript y en 2022 empiezo la carrera de sistemas en la Universidad de Lanús. Además de todos los videos que publicaste, cómo te parece que puedo seguir formándome en especificación funcional?
Si aún no empezaste la universidad te diría que te concentres en seguir aprendiendo a programar. Podés probar con Java.
@@MaximilianoCristiaIS Muchísimas gracias por la respuesta! Voy a seguir devorándome los vídeos de este canal y quedando a la espera por los futuros videos. Un abrazo!
@@estebanvillarreal8926 gracias a vos por visitar el canal.
Oro puro
Gracias!
Hola Profe! Gracias por explicar tan bien, tengo una pregunta ¿Esta lista de videos es lo primero que tenemos que ver antes de estudiar otra lista?
No sé cuál lista estás viendo porque yo veo tu comentario relacionado con el vídeo y no con la lista.
@@MaximilianoCristiaIS Vale profe estoy viendo la Introducción a la ingeniería de Software, Profe que me recomiendas quiero hacer todo en Orden
@@juliocesararenasborrero3852 me parece bien empezar por esa lista. Luego podes ver lo relacionado con diseño y arquitectura de software.
Que lenguaje sería es más útil para desarrollar Software ? Para empezar de cero .
Creo que Python es el que más te conviene
Muchas Gracias. Excelente..
Gracias a vos por visitar el canal.
Muy bueno!, algun libro que recomiende para leer (si es posible en español).
Sobre Ingeniería de Software en general el libro que recomiendo solo está en inglés: Fundamentals of Software Engineering de Ghezzi, Jazayeri y Mandrioli. En castellano podés leer el de Somerville pero no es el que más me gusta.
@@MaximilianoCristiaIS Gracias!
Excelente!....
Gracias por visitar el canal.
La gráfica del minuto 23:00 es lo que se le conoce a waterfall?
No, no es el modelo de cascada (waterfall). Es solo una representación gráfica de las relaciones básicas entre requerimientos, especificación, diseño y programa.
Es decir, por ejemplo, la especificación (S) se deriva de los requerimientos (R) sin importar si vos seguís el modelo de cascada o una metodología ágil. Y el programa (P) se deriva de la especificación (S) y del diseño (D) sin importar si vos seguís el modelo de cascada o una metodología ágil. Claramente vos podés decidir no escribir ni S ni D en cuyo caso derivás todo de R. Pero si decidís escribir S o D, el gráfico muestra las relaciones básicas entre ellos.
Buenazo
Los requerimientos de usuario (R), ¿es lo mismo que pseudocódigo?
No, el pseudo-código es una forma de describir un algoritmo. Los requerimientos del usuario (R) son una descripción de lo que el sistema tiene que hacer y bajo qué restricciones lo tiene que hacer. Por ejemplo un requerimiento del usuario podría ser: el sistema deberá emitir un informe con todas las transacciones del día cuyo monto supere los 10.000 pesos informando en cada caso, la hora, el monto y el agente que originó la transacción. Dado este R luego vos podrías escribir pseudo-código para describir con más precisión qué se debe programar. De todas formas, el pseudo-código está desaconsejado para sistemas que no sean muy muy simples.
Hola tengo una duda recién empiezo y. O estoy seguro pero entiendo que la ingeniería de software abarca ingeniería de requisitos, modelado de negocios y gestión de proyectos.
Sí, abarca eso que mencionás pero también arquitectura y diseño de software, verificación y validación de software, etc. Las primeras son cuestiones menos técnicas que las últimas.
@@MaximilianoCristiaIS y dónde entran las metodologías y el si lo de vida del software?
Quise decir ciclo, no si lo...
@@marcosalejandrofernandezpi8917 el ciclo es cómo se ordenan y relacionan esas actividade. Por ejemplo el diseño se hace sobre la base de los requerimientos (y no al revés). Las metodologías en general se centran en alguna de esas actividades. Por ejemplo hay metodologías para hacer relevamiento de requerimientos, y metodologías de verificación de software.
@@MaximilianoCristiaIS y en cuál de los cursos que tienes explicas todo eso? Es que apenas estoy empezando a revisarlos. Sigo el flujo de la lista de reproducción de ingeniería de software. No sé si sea lo mejor.
Hee hee
Saludo profe.¿Que es lo primero que hay que tener definido para estudiar IGN.en Software y cuáles son los principios básicos que debo tener en cuenta ?
Gracias!