
NOMBRE: LIDISE MARTINEZ
MODULO:seguridad del software 2
TUTOR:
ING. María Segura
CURSO: Octavo ’’A’’ Informática
AGRADECIMIENTOS.
Le agradezco a
Dios por haberme acompañado y guiado a lo largo de mi carrera, por ser mi fortaleza
en los momentos de debilidad y por brindarme una vida llena de aprendizajes, experiencias
y sobre todo felicidad.
Le doy gracias
a mis padres por apoyarme en todo momento, por los valores
que me han
inculcado, y por haberme dado la oportunidad de tener una excelente educación en
el transcurso de mi vida. Sobre todo por ser un excelente ejemplo de vida a
seguir. A mis hermanos por ser parte importante de mi vida y representar la
unidad familiar. A mis hermanos por llenar mi vida de alegrías y amor cuando
más lo he necesitado. A mis tutores que
han sido pilar fundamental en mi educación.
DEDICATORIA
Dedico este trabajo
principalmente a Dios, por haberme dado la vida y
Permitirme el haber llegado hasta este momento tan
importante de mi Formación profesional .A
mi madre, por ser el pilar más
importante y por demostrarme siempre su
cariño y apoyo incondicional sin importar nuestras diferencias de opiniones. A mi padre, que está siempre está apoyándome en todo lo que me propongo. A mis
hijos Damaris y Abel que son i vida y motor para salir adelante. A mi maestra
que me ha enseñado o que se gracias a su apoyo y por los conocimientos
brindados
Lidise
Martínez
INTRODUCCIÓN
El software es una producción inmaterial del conocimiento humano y tal vez una de las estructuras más complicadas que el mundo conoce. De
hecho, los especialistas en computación aún no entienden del todo sobre su
funcionamiento, su comportamiento y sus límites. Básicamente, el software es
un plan de funcionamiento para un tipo especial de
maquina virtual. Una vez escrito mediante algún lenguaje de programación, el software crea su
funcionamiento en ordenadores, que temporalmente se convierten en una máquina
para la que el programa sirve de plan.
El software hace la interacción entre el ser
humano y la maquina y las computadoras entre sí. Sin el conjunto de instrucciones
que son programadas, los ordenadores serían objetos inútiles, sin la capacidad
siquiera de poder mostrar algo en la pantalla.
La comunicación entre ordenadores se hace
mediante códigos binarios, algo que para el ser humano no es una forma
comprensible. Si bien en aquellos tiempos heroicos con la salida de estos
ordenadores las personas no tenían más remedio que adaptarse, pero los
programadores ya no escriben sus códigos en lenguajes binarios, pues es un poco
incomodo, poco creativo y muy sujeto a errores.
Capitulo l
OBJETIVOS
Objetivo general
El objetivo
principal de diseño y actualización de software de forma sistemática y
productiva, asegurando su calidad, fiabilidad y facilidad de uso, se centran en
el análisis de los procesos de desarrollo y mantenimiento, así como de las
técnicas integrales y de apoyo al servicio de la obtención de productos de alta
calidad que satisfagan al usuario.
Objetivos específicos
Asegurar la calidad, fiabilidad y facilidad de uso, analizando los
procesos de desarrollo y mantenimiento Del software.
Capitulo ll
Marco teórico
Concepto de Software:
El software es un ingrediente indispensable
para el funcionamiento del computador. Está formado por una serie de
instrucciones y datos, que permiten aprovechar todos los recursos que el
computador tiene, de manera que pueda resolver gran cantidad de problemas. Un
computador en si, es sólo un conglomerado de componentes electrónicos; el
software le da vida al computador, haciendo que sus componentes funcionen de
forma ordenada.
El software es un conjunto de instrucciones detalladas que controlan la operación de un sistema computacional.
El software es un conjunto de instrucciones detalladas que controlan la operación de un sistema computacional.
Funciones del software:
- Administrar los recursos de computacionales
- Proporcionar las herramientas para optimizar estos recursos.
- Actuar como intermediario entre el usuario y la información almacenada.
Función instructiva. Todos los programas educativos orientan y regulan él aprendizaje de
los estudiantes ya que, explícita o implícitamente, promueven determinadas
actuaciones de los mismos encaminadas a facilitar el logro de unos objetivos
educativos específicos. Además condicionan el tipo de aprendizaje que se realiza pues, por ejemplo,
pueden disponer un tratamiento global de la información (propio de los medios
audiovisuales) o a un tratamiento
secuencial (propio de los textos escritos). Con todo, si bien el ordenador
actúa en general como mediador en la construcción del conocimiento y el
metaconocimiento de los estudiantes, son los programas tutoriales los que
realizan de manera más explícita esta
función instructiva, ya que dirigen las actividades de los estudiantes
en función de sus respuestas y
progresos.
Función motivadora. Generalmente los estudiantes se sienten
atraídos e interesados por todo el software educativo, ya que los programas
suelen incluir elementos para captar la
atención de los alumnos, mantener su
interés y, cuando sea necesario, focalizarlo hacia los aspectos más importantes de las actividades. Por lo tanto
la función motivadora es una de las más características de este tipo de materiales didácticos, y resulta
extremadamente útil para los profesores.
Función evaluadora. La interactividad
propia de estos materiales, que les permite responder inmediatamente a las
respuestas y acciones de los
estudiantes, les hace especialmente adecuados para evaluar el trabajo
que sé va realizando con ellos. Esta evaluación puede ser de dos tipos:
·
Implícita, cuando el estudiante detecta sus errores,
se evalúa, a partir de las respuestas que le da el ordenador.
·
Explícita, cuando el programa presenta informes
valorando la actuación del alumno. Este
tipo de evaluación sólo la realizan los programas que disponen de módulos
específicos de evaluación.
Función investigadora. Los programas no
directivos, especialmente las bases de
datos, simuladores y programas constructores, ofrecen a los estudiantes
interesantes entornos donde investigar: buscar determinadas informaciones, cambiar los valores de las variables de un
sistema, etc.
Función expresiva. Dado que los ordenadores son unas máquinas capaces de procesar los símbolos mediante los cuales las
personas representamos nuestros conocimientos y nos comunicamos, sus
posibilidades como instrumento Expresivo. son muy amplias.
Función metalingüística. Mediante el uso de los sistemas operativos (MS/DOS, WINDOWS) y los
lenguajes de programación (BASIC, LOGO...) los estudiantes pueden aprender los
lenguajes propios de la informática.
Función lúdica. Trabajar con los ordenadores realizando actividades educativas es una labor que a menudo tiene
unas connotaciones lúdicas y festivas para los estudiantes.
Función innovadora. Aunque no siempre sus planteamientos pedagógicos resulten
innovadores, los programas educativos se pueden considerar materiales
didácticos con esta función ya que utilizan una tecnología
Programas de Software
Programa: conjunto de argumentos o instrucciones para la computadora,
almacenado en la memoria primaria de la computadora junto con los datos
requeridos para ser ejecutado, en otras palabras hacer que las instrucciones
sean realizadas por la computadora.
Tipos de Software
- Software del sistema:Es un conjunto de programas que administran los recursos de la computadora. Ejemplos: Unidad central de proceso, dispositivos de comunicaciones y dispositivos periféricos, el software del sistema administra y controla al acceso del hardware.
- Software de aplicaciones:Programas que son escritos para o por los usuarios para realizar una tarea específica en la computadora. Ejemplo: software para procesar un texto, para generar una hoja de cálculo, el software de aplicación debe estar sobre el software del sistema para poder operar.
- Software de usuario final: Es el software que permiten el desarrollo de algunas aplicaciones directamente por los usuarios finales, el software del usuario final con frecuencia tiene que trabajar a través del software de aplicación
y
finalmente a través del software del sistema
Proceso para el desarrollo de software
Un proceso para el desarrollo de software,
también denominado ciclo de vida del
desarrollo de software es una estructura aplicada al desarrollo de un
producto de software. Hay varios modelos a
seguir para el establecimiento de un proceso para el desarrollo de software,
cada uno de los cuales describe un enfoque diferente para diferentes
actividades que tienen lugar durante el proceso. Algunos autores consideran un
modelo de ciclo de vida un término más general que un determinado proceso para
el desarrollo de software. Por ejemplo, hay varios procesos de desarrollo de
software específicos que se ajustan a un modelo de ciclo de vida de espiral.
Modelos de desarrollo de software
Hay varios modelos
para perfilar el proceso de desarrollo, cada uno de las cuales cuenta con pros
y contras. El proyecto debería escoger el más apropiado para sus necesidades.
En ocasiones puede que una combinación de varios modelos sea apropiado.
Modelo de cascada
El modelo de
cascada muestra un proceso donde los desarrolladores han de seguir las
siguientes fases de forma sucesiva:
4. Integración
Siguiendo el
modelo de cascada de forma estricta, sólo cuando se finaliza una fase, comienza
la otra. En ocasiones se realiza una revisión antes de iniciar la siguiente
fase, lo que permite la posibilidad de cambios (lo que puede incluir un proceso
de control formal de cambio). Las revisiones también se utilizan para asegurar
que la fase anterior ha sido totalmente finalizada; los criterios para
completar una fase se conocen frecuentemente con el término inglés
"gate" (puerta). Este modelo desaconseja revisitar y revisar fases
que ya se han completado. Esta falta de flexibilidad en un modelo de cascada
puro ha sido fuente de crítica de los defensores de modelos más flexibles.
Modelo de Procesos Incrementables
El modelo
incremental
Combina elementos
del modelo en cascada aplicado en forma iterativa. El modelo incremental aplica
secuencias lineales de manera escalonada conforme avanza el tiempo en el
calendario. Cada secuencia lineal produce "incrementos" del software.
Por ejemplo, el software procesador de texto, desarrollado con el paradigma
incremental en su primer incremento, podría realizar funciones básicas de
administración de archivos, edición y producción de documentos; en el segundo
incremento, ediciones más sofisticadas, y tendría funciones más complejas de
producción de documentos; en el tercer incremento, funciones de corrección
ortográfica y gramatical; y en el cuarto, capacidades avanzadas de
configuración de página.
Modelo de espiral
La principal
características del modelo en espiral es la gestión de riesgos de forma
periódica en el ciclo de desarrollo. Este modelo fue creado en 1988 por Barry Boehm, combinando algunos
aspectos clave de las metodologías del modelo de cascada y del desarrollo rápido de aplicaciones, pero dando
énfasis en un área que para muchos no jugó el papel que requiere en otros
modelos: un análisis iterativo y concienzudo de los riesgos, especialmente en
el caso de sistema complejos de gran escala.
La espiral se
visualiza como un proceso que pasa a través de algunas iteraciones con el
diagrama de los cuatro cuadrantes representativos de las siguientes
actividades:
a)
crear planes con el propósito de
identificar los objetivos del software, seleccionados para implementar el
programa y clarificar las restricciones en el desarrollo del software;
b)
Análisis de riesgos: una evaluación
analítica de programas seleccionados, para evaluar como identificar y eliminar
el riesgo;
c)
la implementación del proyecto:
implementación del desarrollo del software y su pertinente verificación;
Modelo de espiral
con énfasis en los riesgos, haciendo hincapié en las condiciones de las
opciones y limitaciones para facilitar la reutilización de software, la calidad
del software puede ayudar como una meta propia en la integración en el
desarrollo del producto. Sin embargo, el modelo en espiral tiene algunas
limitaciones, entre las que destacan:
1.
El énfasis se sitúa en el análisis de
riesgo, y por lo tanto requiere de clientes que acepten este análisis y actúen
en consecuencia. Para ello es necesaria confianza en los desarrolladores así
como la predisposición a gastar más para solventar los temas, por lo cual este
modelo se utiliza frecuentemente en desarrollo interno de software a gran
escala.
2. Si la
implementación del riesgo de análisis afectará de forma esencial los beneficios
del proyecto, no debería utilizarse este modelo.
3. Los
desarrolladores de software han de buscar de forma explícita riesgos y
analizarlos de forma exhaustiva para que este modelo funcione.
La primera fase es
la búsqueda de un plan para conseguir los objetivos con las limitaciones del
proyecto para así buscar y eliminar todos los riesgos potenciales por medio de
un cuidadoso análisis, y si fuera necesario incluyendo la fabricación de un
prototipo. Si es imposible descartar algunos riesgos, el cliente ha de decidir
si es conveniente terminar el proyecto o seguir adelante ignorando los riesgos.
Por último, se evalúan los resultados y se inicia el diseño de la siguiente
fase.
Desarrollo iterativo e incremental
El desarrollo
iterativo recomienda la construcción de secciones reducidas de software que
irán ganando en tamaño para facilitar así la detección de problemas de
importancia antes de que sea demasiado tarde. Los procesos iterativos pueden
ayudar a desvelar metas del diseño en el caso de clientes que no saben cómo
definir lo que quieren.1
Desarrollo ágil
El desarrollo ágil
de software utiliza un desarrollo iterativo como base para abogar por un punto
de vista más ligero y más centrado en las personas que en el caso de las
soluciones tradicionales. Los procesos ágiles utilizan retroalimentación en
lugar de planificación, como principal mecanismo de control. La
retroalimentación se canaliza por medio de pruebas periódicas y frecuentes
versiones del software.
Codificación y corrección
El desarrollo de
codificación y corrección (en inglés "Code and fix") es, más que una
estrategia predeterminada, el resultado de una falta de experiencia o presión
que se ejerce sobre los desarrolladores para cumplir con una fecha de entrega.
Sin dedicar tiempo de forma explícita para el diseño, los programadores
comienzan de forma inmediata a producir código. Antes o después
comienza la fase de pruebas de software (a menudo de
forma tardía) y los inevitables errores que se encuentran
han de eliminarse antes de poder entregar el software.
Modelos de mejora de procesos
El Capability Maturity Model
Integration (CMMI), en español
«Integración de Modelos de Madurez de Capacidades» es uno de los modelos
líderes basados en mejores prácticas. Son evaluaciones independientes las que
confirman el grado con el que una organización siguen sus propios procesos, que
no evalúa la calidad de los procesos o del software que se produce. CMMI ha
reemplazado a CMM y tiene un ámbito
global, no sólo en procesos destinados al desarrollo del software.
ISO 9000
ISO 9000 describe
estándares para un proceso organizado formalmente para resultar en un producto
y los métodos de gestión y monitoreo del progreso. Aunque este estándar se creó
inicialmente para el sector de producción, los estándares de ISO 9000 también se
han aplicado al desarrollo del software. Al igual que CMMI, que una
organización está certificada con el ISO 9000 no garantiza la calidad del
resultado final, sólo confirma que se ha seguido los procesos establecidos.
ISO
15504
ISO 15504, también conocido
como Software Process Improvement Capability Determination (SPICE), en
español «Determinación de la Capacidad de Mejora del Proceso de Software» es un
marco para la evaluación de procesos de software. Este estándar tiene como
objetivo un modelo claro para poder comparar procesos. SPICE se utiliza como en
el caso de CMMI. Modela procesos para gestionar, controlar, guiar y monitorear
el desarrollo del software. Este modelo se utiliza entonces para medir lo que
una organización o proyecto hace durante el desarrollo del software. Esta
información se analiza para identificar puntos débiles y definir acciones para
subsanarlos. También identifica puntos fuertes que pueden adoptarse en el resto
de la organización.
Métodos formales
Los métodos
formales son soluciones matemáticas para resolver problemas de software y
hardware a nivel de requisitos, especificación y diseño. Ejemplos de métodos
formales incluyen el Método B, la red de
Petri, la demostración automática de teoremas, RAISE y el VDM. Hay varias
notaciones de especificaciones formales, tales como el lenguaje Z. Más
generalmente, se puede utilizar la teoría de autómatas para aumentar y
validar el comportamiento de la aplicación diseñando un sistema de autómata
finito.
Las metodologías
basadas en los autómatas finitos permiten especificación de software ejecutable
y evitar la creación convencional de código.
Los métodos
formales se suelen aplicar en software de aviación, especialmente si es
software de seguridad crítico. Los estándares de aseguramiento del software de
seguridad, tales como DO178B demandan métodos
formales en el nivel más alto de categorización (Nivel A).
La formalización
del desarrollo de software está ganando en fuerza poco a poco, en otros
ámbitos, con la aplicación del lenguaje de especificación OCL2.0 (y
especializaciones tales como Java Modeling Language) y
particularmente con Model-driven Architecture, que permite la
ejecución de diseños, incluso especificaciones.
Otra tendencia que
está surgiendo en el desarrollo de software es la redacción de especificaciones
en algún tipo de lógica (normalmente una variación de FOL), para acto seguido
ejecutar esa lógica como si se tratase de un programa. El lenguaje OWL, basado en lógica
descriptiva, es un buen ejemplo. También se está trabajando en enlazar un
idioma natural de forma automática con lógica, lógica que puede ejecutarse.
Ejemplo en este campo es el Attempto Controlled English, una lógica de
negocios de Internet, que no busca controlar el vocabulario o la sintaxis. Una
características de los sistemas que apoyan el vínculo bidireccional
inglés-lógica y ejecución directa de la lógica es que pueden explicar sus
resultados en inglés en un nivel de negocios o científicos.
Conclusiones personales
En la actualidad el diseño de software se ha
constituido en la principal fuente de tecnología de los países desarrollados, y
la mayor parte de la economía depende de él. La mayoría de los sistemas de
automatización dependen o son controlados por software. Esto obliga a utilizar
técnicas y procedimientos que permitan obtener un software que sea funcional,
confiable y de calidad, para satisfacer las necesidades de las empresas,
industrias, instituciones, profesionales.
. a mayoría de los sistemas de automatización dependen o son controladospor software. Esto obliga a utilizar técnicas y procedimientos que permitan obtenerun software que sea funcional, confiable y de calidad.
ResponderEliminar