NRC: 3700 Tema: Desarrollo de Software Profesional Varias personas escriben programas, por ejemplo en una empresa se crean programas de hojas de cálculo para agilizar su trabajo, científicos e ingenieros crean programas para procesar datos experimentales o a su vez la mayoría de personas crea programas o aplicaciones para interés propio. Sin embrago esta actividad, de crear software, se lo hace siempre a nivel profesional creando software para motivos específicos como los sistemas de CAD. Este software está destinado a ser usado por personas diferentes al desarrollador y por lo general estos proyectos se los hace en equipos en vez de individualmente. La ingeniería de software busca apoyar el desarrollo de software a nivel profesional incluyendo técnicas que apoyan la especificación, el diseño y la evolución del programa. Varias personas piensan que la palabra software está limitada a ser un sinónimo de los programas de una computadora, sin embrago va más allá de ser un sinónimo, llega a ser la documentación asociada y los datos de configuración requeridos para que el programa opere de una manera correcta. El software es más que solo un programa este puede incluir un determinado número de programas separados junto con archivos de configuración que ayudan a la instalación del programa, así también como la documentación respectiva para dar una idea de cómo opera el mismo, además de sitios web donde se puede descargar información reciente del producto. Una de las diferencias entre el desarrollo de software profesional y el de aficionado es que al realizar un programa de forma individual no tendremos que preocuparnos de la documentación ni de la elaboración de guías del mismo, al contrario si se desarrolla software a nivel profesional se deberá ofrecer una guía o información adicional sobre el programa, al igual que el código del mismo ya que este va a ser modificado por otros ingenieros. La mayoría de ingenieros de software se interesan por el desarrollo de productos de software, es decir, que pueden ser vendidos a un cliente. Existen dos tipos de productos de software: 1. Productos genéricos.- Son sistemas independientes producidos por una organización de desarrollo y pueden ser vendidos a cualquier cliente que desee comprarlos. Ejemplos de estos programas incluyen software para PC, como bases de datos, procesadores de texto paquetes de dibujo y herramientas de administración de proyectos. También se incluye dentro de esta clasificación a las aplicaciones verticales que tienen un fin específico como los sistemas de información de librerías, sistemas contables o sistemas de registros dentales. 2. Productos personalizados (o a la medida).- Estos sistemas están destinados a un cliente en particular, por lo general estos productos los realiza un contratista de software. Ejemplos de estos productos incluyen los sistemas de control de dispositivos electrónicos y sistemas de control de tráfico aéreo. La diferencia más importante de estos dos tipos de productos es que, en los productos genéricos, la organización creadora del software es la que controla sus especificaciones; a comparación de los personalizados estos son controlados por la organización que compro el software por lo que los desarrolladores deben seguir trabajando en el mismo. En la actualidad cada vez más sistemas personalizados son creados con un producto genérico como base, para luego ajustarse a las necesidades del cliente. Los sistemas de planeación de recursos empresariales son el mejor ejemplo de este enfoque. El sistema grande y complejo se adapta a las necesidades del cliente al insertar las reglas y procesos empresariales, así como los reportes requeridos, etcétera. Al hablar de la calidad del software profesional se debe tomar en cuenta que el software es usado y cambiado por personas, incluidos sus desarrolladores. La calidad del software no solo radica en lo que hace sino también en cómo se ejecuta, la estructura y organización de los programas del sistema junto con la documentación asociada. Un ejemplo de esto es la respuesta del software ante la necesidad del usuario. Los atributos necesarios del software dependen de su aplicación. Por ejemplo un sistema bancario debe ser seguro, un juego interactivo debe tener capacidad de respuesta, etcétera.