Está en la página 1de 7

Principios de ingeniera de software

Apuntan al proceso de ingeniera y el producto final: el proceso correcto ayudar a


obtener el producto correcto. Asimismo, el producto afectar la eleccin de qu
proceso usar.
Los principios son afirmaciones abstractas que describen propiedades deseables del
proceso y del producto. Para aplicarlas, los ingenieros deben contar con mtodos y
tcnicas que incorporen dichos principios.

Mtodos: guas para la ejecucin de alguna actividad, aproximaciones


rigurosas, sistemticas y disciplinadas.
Tcnicas: son ms mecnicas que los mtodos y tienen aplicabilidad ms
restringida.

Ambos se usan como sinnimos.


Los mtodos y tcnicas se encapsulan para crear metodologas, que sirven para
promover una aproximacin a la solucin de problemas, preseleccionando los
mtodos y tcnicas a usar.
Las herramientas son desarrolladas para apoyar la aplicacin de los 3 niveles
anteriores.

Lo que se busca con este anlisis es la confiabilidad de las aplicaciones. Tambin se


supone que las aplicaciones sern lo suficientemente grandes para descomponerlas
en partes manejables.
Todo esto hace que la confiabilidad y la evolucin sean importantes y que
afirmemos que la eleccin de principios y tcnicas son determinantes para las
metas de calidad del software.
1. Rigor y formalidad.
El rigor es un complemento de la creatividad en la ingeniera. Con la
aproximacin rigurosa podremos tener productos ms confiables y mejores
controles (de tiempo, costos, etc.). El rigor mejora la creatividad,
optimizando la confianza en los resultados creativos, una vez analizados en
base a una planificacin rigurosa.
Hay varios grados de rigurosidad. El ms alto es la formalidad, que es un
requerimiento ms restrictivo que el rigor, que exige que el proceso de soft
sea dirigido y evaluado con leyes matemticas. La formalidad implica rigor,
pero uno puede ser riguroso e informal.
En ingeniera, el proceso de diseo son pasos bien definidos y con bases
slidas. En cada paso el ingeniero sigue algn mtodo o tcnica basados en

resultados tericos de un modelado formal de la realidad o en ajustes


empricos de fenmenos no considerados por el modelo, o en reglas
heursticas que dependen de la experiencia. Todo est resuelto en una
aplicacin rigurosa y sistemtica (metodologa), fcilmente explicada y
aplicada una y otra vez.
El ingeniero debe saber cmo y cundo ser formal, adems de entender el
nivel de rigurosidad y formalidad a alcanzar, dependiendo de la dificultad de
la tarea y su criticidad. Ej.: podemos ser muy formales para las partes
crticas de un problema y para las partes estandarizadas aplicar una
aproximacin ms simple.
La formalidad aventaja al rigor en el sentido de que la primera puede ser la
base para mecanizar procesos. La nica fase del desarrollo de software
donde se usa aproximacin formal es en la programacin. Los programas
son objetos formales, escritos en lenguajes cuya sintaxis y semntica estn
definidos. Estas operaciones mecnicas, posibles por usar la formalidad,
pueden mejorar la confiabilidad y verificabilidad de los productos software.
El rigor y la formalidad benefician tambin la mantenibilidad, reusabilidad,
portabilidad, comprensin e interoperabilidad del software. Ej.: la
documentacin nos permite prever la evolucin del proyecto, los recursos a
usar, etc., as como nos ayuda a mantener el producto, al usarla para
cualquier modificacin que se requiera; y por ltimo nos permite monitorear
el software en forma precisa, para garantizar el cumplimiento de los puntos
de control y mejorar la productividad.
2. Separacin de intereses.
Es involucrarse con distintos aspectos de un problema para concentrarse en
ellos separadamente. En cada proyecto debemos separar aspectos: primero,
aislar los factores relacionados ms dbilmente y luego considerar los
factores en la medida en que impactan el anlisis.

Separacin en base al tiempo: permite planificar las actividades de


manera precisa.
Separacin en trminos de calidades: manejar separadamente la
eficiencia y la correccin de un programa, diseando software
cuidadoso y estructuradamente, tal que su correccin est
garantizada a priori y luego reestructurada para mejorar su eficiencia.
Separacin por vistas: separar los datos que fluyen de una actividad
a otra en el flujo de control que gobierna la sincronizacin de las
actividades.

La separacin implica separacin de responsabilidades para tratar los


distintos aspectos. Es la base para la asignacin del trabajo en asignaciones
especficas para distintas personas con distintas habilidades.
3. Modularidad.
Divisin de un sistema en partes ms simples (mdulos). Esto nos permite
separar los contextos en fases: cuando relacionamos cada mdulo aislado y
cuando relacionamos todos los mdulos globalmente, analizando sus
conexiones e integracin.
Objetivos de la modularidad:

Capacidad de descomposicin de un sistema complejo: divisin del


problema original en subproblemas y luego dividir cada subproblema.
Composicin de un sistema a partir de componentes existentes:
partir de componentes elementales hasta llegar al sistema terminado.
Cuando un componente falla, se reemplaza por uno nuevo. Podemos
usar mdulos de una biblioteca, que al ser reutilizables, aceleran el
proceso de construccin.
Comprensin del sistema mirndolo en partes: Nos facilita la
reparacin y modificacin, al buscar los errores en un componente en
particular.

Para lograr los tres objetivos, los mdulos deben tener:

Alta cohesin: sus elementos internos estn muy relacionados y


agrupados por razones lgicas.
Bajo acoplamiento: es la relacin entre mdulos y mide la
interdependencia entre 2 mdulos. La idea es lograr que los mdulos
tengan un nivel bajo.

Las estructuras que cumplan esto nos permiten ver los mdulos como cajas
negras cuando describimos la estructura total y verlos separadamente
cuando analizamos la funcionalidad de cada uno.
4. Abstraccin.
Es identificar los aspectos importantes de un fenmeno e ignorar los
detalles. Esto depende de cada persona o de cada enfoque o propsito que
se le d a un problema.
Los modelos que construimos son abstracciones de la realidad, vlidas
tambin para modelos de software.
Los lenguajes de programacin son abstracciones que nos permiten construir
sin preocuparnos por los detalles de hardware.
Este principio es importante para aplicarlo a productos y procesos software.
Cuando la documentacin de un programa o procedimiento se analiza, se
supone que suministra toda la informacin necesaria para entender las otras
partes del programa que usan ese procedimiento.
5. Anticipacin al cambio.
Se refiere a la mantenibilidad. Es poder predecir los cambios y trabajar para
que los cambios futuros sean fciles de aplicar.
Esto es importante en el software, ya que los productos estn en ambientes
donde permanentemente surgen nuevos requerimientos.
La reusabilidad tambin se ve afectada por esto. Un componente es reusable
si se puede emplear para generar un nuevo producto o si solo requiere
pequeos cambios para ello. La reusabilidad es la capacidad de evolucionar
que tienen los componentes.
Para anticiparse al cambio debemos contar con herramientas de
administracin de versiones y revisiones de software. Debemos poder
almacenar y recuperar informacin, mdulos fuente y objetos, todo desde
una base de datos central.

Asimismo se afecta al proceso de soft, al considerar el mantenimiento de


una aplicacin y asignando estructura y costos para apoyar la evolucin del
software.
6. Generalidad.
Poder descubrir un problema ms general en la resolucin de un primer
problema. Este puede ser menos complejo y proveer soluciones reutilizables.
Puede surgir de un paquete ya existente o lo podemos crear nosotros.
Sin embargo, puede ser ms costoso en trminos de velocidad de ejecucin,
requerimientos de memoria o tiempos de desarrollo.
Este principio es fundamental si se busca desarrollar herramientas software
para uso amplio en el mercado.
Si el problema puntual se puede reformular como una instancia de un
problema general, es conveniente adoptar el paquete en vez de una solucin
especfica.
7. Incrementalidad.
Desarrollar paso a paso con incrementos,
sucesivas. Esto nos da un proceso evolutivo.

logrando

aproximaciones

Debemos identificar subconjuntos primarios tiles para desarrollar y


distribuir a los clientes, de manera de obtener realimentacin temprana.
Esto nos permite que la aplicacin evolucione de manera controlada, en
casos donde los requerimientos iniciales no se comprendieron bien.
Las etapas intermedias son prototipos del producto final, lo cual beneficia el
entendimiento de los requerimientos y permite usar un modelo de desarrollo
iterativo ms flexible.
Debemos tener mucho cuidado en la manipulacin de documentos,
programas, datos de prueba y todo lo que usemos en las distintas versiones.
Cada paso incremental significativo debe ser registrado.

Qu es el software?
Programas, estructuras de datos, documentacin y ms.
Caractersticas:

desarrollo, no manufactura.
Desgaste, no gasto.
Principalmente desarrollado a medida.
Mantenibilidad: debe poder evolucionar y seguir cumpliendo sus
especificaciones.
Confiabilidad: no debe causar daos fsicos ni econmicos en caso de fallos.
Eficiencia: no debe desperdiciar los recursos del sistema.
Utilizacin adecuada: debe contar con una interfaz adecuada y
documentacin.
Acta como un diferenciador en los negocios, es estratgico.
Captura informacin, produce informacin y es informacin en s mismo.

Productos Software

Genricos: son producidos por una organizacin para venderlos en el


mercado.
A medida: desarrollados bajo pedido a un desarrollador especfico.

La mayor parte del gasto del software es en productos genricos, pero hay ms
esfuerzo en el desarrollo a medida.
Componentes:

Mitos del software:

Estndares y procedimientos bastan.


Tecnologa de punta basta.
Ms gente para ponerse al da.
Programacin inmediata.
Fcil acomodo de los cambios.
Programacin: fin del trabajo.

Calidad: solo del ejecutable.


El cdigo es el nico producto.
Evolucin del software:

Software vs. Hardware:

Ingeniera de software
Establecer y usar principios con caracteres de ingeniera para obtener,
eficientemente, software confiable, que opere eficaz y eficientemente en mquinas
reales.
Objetivos: maximizar la calidad, maximizar productividad, minimizar riesgos.
Implicancias:

Constructores bsicos ms poderosos.


Mejores tcnicas de control de calidad.
Mejores herramientas y mtodos.
Filosofa Global enfoque de procesos?

Principios:

Hacer de la calidad el primer objetivo.


El software de alta calidad es posible.

Entregar tempranamente productos a los clientes.


Determinar el problema antes de describir los requerimientos.
Evaluar alternativas de diseo.
Usar un modelo apropiado.
Usar lenguajes diferentes para fases diferentes.
Minimizar la distancia intelectual.
Decidir las tcnicas antes que las herramientas.
Hacerlo correcto antes que hacerlo rpido.
Inspeccionar diseo y cdigo.
La gestin es ms importante que la tecnologa.
Gente: clave del xito.
Adoptar tcnicas y metodologas con cuidado.
Asumir responsabilidad.
Comprender prioridades de los clientes.
Clientes-Usuarios: ms ven, ms necesitan.
Planificar para desechar parcialmente.
Disear para el cambio.
Diseo sin documentacin no es diseo.
Usar herramientas con realismo.
Evitar trucos.
Encapsular.
Usar acoplamiento y cohesin.
Usar mediciones de complejidad.
No probar el software propio.
Analizar causas de errores.
Asumir que la entropa del software aumenta.
Gente y tiempo no son intercambiables.
Esperar y demandar excelencia.

Costos del software


Los costos del software a menudo dominan el costo del sistema y superan muchas
veces el valor de una PC.
Cuesta ms mantener el software que desarrollarlo. Para sistemas con larga vida,
este costo se multiplica.
La ingeniera de software concierne a un desarrollo efectivo en cuanto a costos.

También podría gustarte