Desarrollar Es Mucho Más Que Programar
Enviado por ghost777 • 3 de Abril de 2012 • 296 Palabras (2 Páginas) • 476 Visitas
Ingeniería de Software
Desarrollar Es Mucho Más Que Programar
¿Qué conocimientos se necesitan para desarrollar software? Esta pregunta
atormenta a muchos, desde jóvenes estudiantes hasta personal de
recursos humanos. Hay quienes piensan que basta con saber programar
en algún lenguaje. Sin embargo, todos aquellos con experiencia en este
medio reconocen que para desarrollar software de calidad, más que de
programadores se requiere de ingenieros de software.
Y entonces, ¿qué conocimientos
debe tener un ingeniero de
software? Precisamente esto
es lo que busca responder el Software
Engineering Body of Knowledge (SWEBOK),
un proyecto auspiciado por la
IEEE para lograr un consenso mundial
de lo que es esta disciplina y el lugar
que tiene junto a otras ingenierías.
Requerimientos de Software
Los requerimientos de software expresan
las necesidades y restricciones
que debe satisfacer un producto
para contribuir a la solución de un
problema real. Esta área de conocimiento
considera la obtención, análisis,
especificación y validación de los
requerimientos, así como el rol que
juegan dentro del proceso de desarrollo
de software. Un especialista en
requerimientos tiene conocimiento y
experiencia en técnicas para obtener,
cuantificar, negociar, clasificar, priorizar,
modelar, documentar y validar los
requerimientos de software. Además
debe saber administrar adecuadamente
los cambios a éstos.
Diseño de Software
El diseño juega un rol clave en el desarrollo
de software ya que es donde se generan modelos que sirven como
“planos” para la construcción. Típicamente
se divide en dos tipos:
• Diseño arquitectónico - Describe la
estructura y organización de alto nivel
de un sistema. Identifica los componentes
e interfaces entre éstos.
• Diseño detallado - Describe individualmente
cada componente con suficiente
detalle para ser construido.
Esta área concentra una gran cantidad
de conocimiento. Para empezar, el diseño
de software requiere entender a fondo
principios como la abstracción, acoplamiento,
cohesión, descomposición y
encapsulación, ya que son la base para
diseñar sistemas robustos. También
es necesario saber resolver aspectos
prácticos como la persistencia de datos,
sistemas distribuidos, peticiones
concurrentes, manejo de eventos, recuperación
a fallas, etc. Por último, un
diseñador que no quiera “reinventar la
rueda” cada vez que se le presente
...