2. Cuestionario
1- ¿Que es la ingeniería de Software según NATO?
Es un enfoque sistemático, disciplinado y cuantificado en el desarrollo
operación y matemático del software.
2- ¿ Que es la ingeniería de Software según PARNAS?
La construcción de múltiples versiones de un software llevada a cabo por
múltiples personas.
3-¿ Que es la ingeniería de Software según GHEZZI?
Construcción de software de una envergadura o complejidad tales que debe de
ser construido por equipos de ingenieros.
Luis Alberto Valeriano Aguilar Ing.: David Enrique Mendoza Gutiérrez
3. 4- ¿Que es la ingeniería de Software según JACKSON?
La ingeniería tradicional es altamente especializada y se basa en
colecciones de diseños estándar o normalizados. Hay especialidades en
la información o cualquier hace cualquier cosa. Esto se basa en la
producción de software en diseños estándares.
5- ¿Desarrollo de Software en Dimensión Industrial?
• Sistemas reactivos: Dirigidos por eventos.
• Sistema en los cuales, el espacio y el tiempo son recursos escasos.
• Las aplicaciones deben de mantener la integridad de cientos o miles de registros de
información manteniendo la consistencia ante múltiples actualizaciones
• Sistema para la gestión y el control de entidades del mundo real
• Ciclo de vida Largo
Luis Alberto Valeriano Aguilar Ing.: David Enrique Mendoza Gutiérrez
4. 6- ¿ Que hace el ingeniero de Software?
Los ingenieros de software de ordenador se encargan de analizar, diseñar, crear y probar los
sistemas informáticos y de software por lo general trabajan en equipo para diseñar los programas
más complejos, y luego comienzan a escribir el programa o programas.
7- ¿ Paramentos fundamentales para la estructura para programa?
Requerimientos de Usuario “R”: Es un documento donde describes “qué” debe hacer el sistema
en términos no técnicos y debe ser lo más detallado posible para evitar ambigüedades. En la
mayoría de empresas también llaman a los requerimientos de usuario RU o especificación
de requerimientos de usuario.
Diseño de la estructura del programa “D”: Estas son secuencia de acciones (instrucciones) que
manipulan un conjunto de objetos (datos). Bloque de declaraciones: en este se detallan todos los
objetos que utiliza el programa (constantes, variables, archivos)
Especificación funcional del programa “S”: Éste sirve como un contrato entre el comprador del
sistema y el desarrollador de software. es una descripción abstracta del diseño del software que es
una base para un diseño e implementación detallados.
Programa “P”: Son Implementaciones ya verificadas de S y D con la finalidad ya terminada. la
finalización del software.
Luis Alberto Valeriano Aguilar Ing.: David Enrique Mendoza Gutiérrez
5. 8- ¿Qué debe de Conocer un Ingeniero de Software?
• Dominar a fondo las técnicas de descripción
• Entender que hace dentro de la descripción particular sirve o no para un
propósito determinado
• Moverse distintos niveles de abstracción
• Describir modelos mediante lenguajes formales
• Verificar propiedades de los modelos
9- ¿Ingenieria vs Artesania de Software?
Los ingenieros de software de ordenador se encargan de analizar, diseñar, crear y
probar los sistemas informáticos y de software. Además, escriben programas
de software para satisfacer las necesidades de un cliente o para resolver un problema
particular.
Artesanía de software es un enfoque del desarrollo de software que enfatiza las
habilidades de producir código de los propios desarrolladores de software o
programadores.
Luis Alberto Valeriano Aguilar Ing.: David Enrique Mendoza Gutiérrez
6. Recientemente me he estado encontrando cada vez más seguido dos ideas: “Hacker
Centric Culture” (tienen que leer este ensayo de Paul Graham) y “Software
craftmanship”. Las dos, en mi opinión, tienen la misma base aunque la “artesanía de
software” es una propuesta con más forma (hasta tienen un manifiesto).
Ambas ideas tratan de darle importancia al buen desarrollador (i.e. Hacker). La artesanía
de software ve a la formación de un programador como un proceso gradual de
desarrollo de habilidades y adquisición de conocimientos; ve al desarrollo más como un
arte emergente y menos como una ciencia exacta: Valora a la práctica como la mejor
forma de aprender.
Ambas se centran en el hacker; en el practicante; en el “artesano”; y no en una ciencia o
ingeniería que es capaz de dictar cómo hacer las cosas.
Simplemente concentrándose en identificar y retener a los buenos “artesanos” y dejar
de ver a los desarrolladores como trabajadores intercambiables. Después de todo, ya hay
empresas que hacen esto. Paul Graham nos nombra algunas: Microsoft, Google,
Facebook.
El problema es que la mayoría de las empresas de desarrollo necesitan de esta cultura
solo para dejar de ser mediocres pero no para sobrevivir. Y por lo tanto no tenemos
garantía de que eso algún día suceda…
Luis Alberto Valeriano Aguilar Ing.: David Enrique Mendoza Gutiérrez
7. 10- ¿Mitos de los Proyectos de Software?
• Mito: Nuestra gente dispone de herramienta de desarrollo de software mas
avanzados, después de todo los comparamos con las computadoras nuevas
• Realidad: Se necesita mas que el ultimo modelo de la computadora grande “o
una PC” para hacer desarrollo de software de gran calidad, las herramientas de
ingeniería de software asistida por computadora “CASE”, aunque no se usen la
mayoría, son mas importantes que el hardware para conseguir buena calidad y
productividad.
11- ¿Esencialmente diferencia a las otras ingeniería?
La ciencia “formal” que subyace a la ingeniería de software es la lógica formal
La ciencia “fáctica” que subyace la ingeniería tradicional es la física
Esto lo diferencia cualitativa esencial en la mayoría de las otras ingeniera.
El ingeniero se concentra en definir la solución.
Los ingenieros de software deben de concentrarse en definir el problema.
Luis Alberto Valeriano Aguilar Ing.: David Enrique Mendoza Gutiérrez
8. 12- ¿Qué son métodos formales?
La importancia de los métodos formales en la Ingeniería de Software se
incrementó en los últimos años: se desarrollan nuevos lenguajes y herramientas
para especificar y modelar formalmente, y se diseñan metodologías maduras para
verificar y validar. Los modelos que se diseñan y construyen de esta forma, desde
las fases iniciales del desarrollo de software, son esenciales para el éxito del futuro
proyecto; ya que en la actual Ingeniería de Software constituyen la base que
sustenta las subsiguientes fases del ciclo de vida, y porque los errores surgidos en
ella tienen gran impacto en los costos del proyecto (Perry, 2006).
Desde hace varias décadas se utilizan técnicas de notación formal para modelar
los requisitos, principalmente porque estas notaciones se pueden verificar
“fácilmente” y porque, de cierta forma, son más “comprensibles” para el usuario
final (Felleisen et al., 2001). Además, el paradigma Orientado por Objetos en la
programación parece ser el más utilizado en la industria, y una forma de
incrementar la confiabilidad del software y, en general de los sistemas, es utilizar
los métodos formales en la ingeniería aplicada (Kuhn et al., 2002).
Luis Alberto Valeriano Aguilar Ing.: David Enrique Mendoza Gutiérrez
9. 13- ¿Lenguajes de especificación formal?
• Una Sintaxis formal y estandarizada
• Una semántica formal descripta en términos operativos denotaciones o
lógicos
• Un aparato deductivo, formal que nos permite manipular los elementos de
lenguaje según su sintaxis para demostrar teoremas
• El lenguaje de especificación formal se usan casi siempre para escribir la
funcionalidad de un programa.
Luis Alberto Valeriano Aguilar Ing.: David Enrique Mendoza Gutiérrez