Experiencia práctica en ingeniería de software.

Tabla de contenido

  Prefacio

1. Los modelos comunes del ciclo de vida del desarrollo de software incluyen:

2. Análisis de requisitos

3. Seguridad y confidencialidad del software

4. Retos y futuro de la ingeniería de software

5. Preparación del proyecto

6. Demostración del código del proyecto de noticias.

Resumir


  Prefacio

La práctica de la ingeniería de software se refiere al proceso de aplicar el conocimiento y la tecnología de la ingeniería de software en el trabajo práctico. Incluye trabajos de desarrollo, pruebas, mantenimiento y gestión de software. La práctica y la teoría de la ingeniería de software cooperan entre sí: la primera verifica la teoría a través de la práctica y la segunda proporciona orientación y apoyo para la práctica. En la práctica de la ingeniería de software, es necesario considerar muchos aspectos, como la gestión de proyectos, la programación, el control de calidad, la gestión de la configuración, las pruebas y el análisis de requisitos. Estos aspectos involucran los principios, métodos y tecnologías básicos en la ingeniería de software, como el desarrollo ágil, el diseño orientado a objetos, las pruebas de software, la integración continua, etc. La práctica de la ingeniería de software requiere que los desarrolladores optimicen y mejoren continuamente los procesos y métodos de trabajo a través de la práctica continua y la acumulación de experiencia, para lograr el propósito de mejorar la calidad del software, mejorar la eficiencia del desarrollo y reducir los costos de desarrollo.

Modelo del ciclo de vida del desarrollo de software El
modelo del ciclo de vida del desarrollo de software se refiere a un modelo que divide el proceso de desarrollo de software en diferentes etapas y actividades, y combina estas etapas y actividades en un proceso completo y ordenado para estandarizar el proceso de desarrollo de software.

1. Los modelos comunes del ciclo de vida del desarrollo de software incluyen:

Modelo en cascada: ejecución secuencial, cada etapa se completa antes de pasar a la siguiente.

Modelo iterativo: similar al modelo en cascada, pero se realizan múltiples iteraciones en cada etapa y se agregan nuevas características en cada iteración.

Modelo incremental: dividido en múltiples iteraciones, solo una parte de la funcionalidad se completa en cada iteración y cada iteración es un producto completo y entregable.

Modelo Espiral: Basado en ciclos, cada ciclo consta de cuatro fases: planificación, evaluación de riesgos, ejecución y evaluación.

Modelo ágil: enfatiza la iteración rápida y la flexibilidad, y fomenta la colaboración estrecha con los clientes.

El modelo a elegir debe considerarse de manera integral en función de las necesidades del proyecto específico, el tiempo, la mano de obra, los recursos y otros factores.

Análisis y especificación
de requisitos El análisis de requisitos se refiere al análisis y comprensión de las necesidades del usuario para determinar qué funciones y características de rendimiento debe tener el sistema. Es una de las etapas importantes de la ingeniería de software y su objetivo principal es determinar qué debe hacer el sistema, proporcionar a los desarrolladores orientación para el desarrollo y evitar desperdicios y redundancias en el proceso de desarrollo. El resultado del análisis de requisitos es la especificación de requisitos, que es una descripción detallada de las necesidades del usuario, incluidos los requisitos para las funciones del sistema, el rendimiento, las interfaces, los datos, la seguridad y otros aspectos.

Una especificación es un documento o especificación que describe en detalle los requisitos y el diseño de un sistema de software. Incluye los requisitos para las funciones del sistema, el rendimiento, la interfaz, los datos, la seguridad y otros aspectos, y es la base del desarrollo de software. La función principal de las especificaciones es proporcionar una guía y una base de evaluación detallada y completa para el desarrollo del sistema, evitando así errores y desviaciones en el proceso de desarrollo y facilitando el mantenimiento y las actualizaciones del sistema.

El análisis y la especificación de requisitos son etapas indispensables en el desarrollo de software. Sólo sobre la base de una comprensión total de las necesidades del usuario podemos ofrecerles productos de software satisfactorios. Al mismo tiempo, las especificaciones son un puente entre desarrolladores y usuarios y pueden aclarar la comunicación y la cooperación entre las dos partes, haciendo que el proceso de desarrollo de software sea más fluido y eficiente.

Diseño y arquitectura
de software El diseño de software se refiere al proceso de diseñar la estructura, composición, interfaz, función, operación, tecnología de implementación y otros elementos relacionados de todo el sistema de software en función de los requisitos después de determinar los requisitos del sistema de software. La arquitectura de software se refiere a la estructura y composición de un sistema de software, es el núcleo del diseño de software y determina características importantes como el rendimiento, la mantenibilidad y la escalabilidad del sistema de software. En el diseño y la arquitectura de software, es necesario considerar cómo dividir razonablemente varias funciones en módulos, cómo diseñar interfaces, cómo diseñar estructuras de datos y algoritmos, etc., para cumplir con el rendimiento, la seguridad, la confiabilidad, etc. los requisitos del sistema de software. Al mismo tiempo, la mantenibilidad y escalabilidad del sistema de software también deben considerarse durante las etapas de diseño y arquitectura para que, cuando sea necesario realizar modificaciones y actualizaciones en el futuro, se puedan implementar de forma rápida y segura.

Codificación y depuración
La codificación y la depuración son dos aspectos importantes del proceso de desarrollo de software. La codificación se refiere al proceso de convertir documentos de diseño en código de programa real. Los desarrolladores utilizan lenguajes de programación para crear aplicaciones de software basadas en requisitos y especificaciones funcionales.

La depuración se refiere al proceso de descubrir errores o fallas en el código durante el desarrollo del programa y luego reparar estos problemas. La depuración es un proceso muy importante y necesario que requiere que los desarrolladores analicen cuidadosamente el código e inspeccionen su proceso en ejecución paso a paso para identificar errores o fallas.

Existe una estrecha conexión entre la codificación y la depuración. Al codificar, los desarrolladores deben considerar cuidadosamente los problemas que puedan surgir en su código y utilizar las mejores prácticas siempre que sea posible para evitarlos. Pero ni siquiera los mejores desarrolladores pueden evitar todos los errores, por lo que la depuración es crucial. La depuración ayuda a los desarrolladores a encontrar errores en su código y corregirlos para garantizar que el software funcione correctamente.

En resumen, la codificación y la depuración son dos aspectos inseparables del proceso de desarrollo de software. Sólo mediante el uso racional de técnicas y herramientas durante la codificación y depuración se puede garantizar la eficiencia, confiabilidad y calidad del desarrollo de software.

Pruebas de software y garantía de calidad
Las pruebas de software consisten en descubrir e informar defectos o errores en el software para garantizar que cumpla con los requisitos de calidad específicos. Es un vínculo muy importante en el proceso de desarrollo de software, que puede garantizar que la confiabilidad, disponibilidad, estabilidad y otros aspectos del software estén totalmente garantizados.

El aseguramiento de la calidad del software es un trabajo integral destinado a garantizar la calidad general del software. Incluye monitorear y administrar todos los aspectos del proceso de desarrollo de software para garantizar que el software pueda entregarse a tiempo, satisfacer las necesidades del usuario y lograr la calidad esperada.

El objetivo principal de las pruebas de software y el control de calidad es garantizar la calidad de los productos de software, mejorar la confiabilidad y estabilidad del software, reducir los defectos y fallas del software, mejorando así la satisfacción y la confianza del usuario.

Gestión de configuración y control de versiones
La gestión de configuración es un sistema para rastrear los diversos elementos utilizados en el proceso de desarrollo de software, incluido el código fuente, la documentación, los compiladores, los enlazadores y otras herramientas. Asegura que estos elementos estén actualizados y que las relaciones y dependencias entre ellos se mantengan correctamente.

El control de versiones es un sistema que registra los cambios en cada versión del código fuente o de los archivos, lo que permite a los desarrolladores volver a versiones anteriores y realizar un seguimiento del historial de cambios del código. Ayuda a los equipos a colaborar y al mismo tiempo garantiza la coherencia y la trazabilidad del código.

Estos dos conceptos a menudo se usan juntos: en el proceso de desarrollo de software, el control de versiones se usa para administrar la modificación y colaboración del código y otros archivos, y la administración de configuración se usa para administrar todos los elementos utilizados en el proceso de desarrollo de software.

Gestión de proyectos y colaboración en equipo
La gestión de proyectos y la colaboración en equipo son conceptos estrechamente relacionados porque la gestión de proyectos requiere integrar las capacidades y recursos de los miembros del equipo para lograr los objetivos del proyecto. A continuación se incluyen algunas preguntas frecuentes y consejos sobre la gestión de proyectos y la colaboración en equipo:

1. ¿Cómo mantener la comunicación entre los miembros del equipo?

Recomendación: utilice herramientas de colaboración en línea como Slack, Microsoft Teams o Zoom para facilitar la comunicación en tiempo real entre los miembros. Organice reuniones con regularidad y determine acuerdos de trabajo, responsabilidades e hitos del proyecto claros, asegúrese de que cada miembro tenga claras sus responsabilidades y tareas laborales y supervise el progreso del proyecto.

2. ¿Cómo garantizar la cooperación de los miembros del equipo?

Recomendación: una de las mejores formas de promover la colaboración en equipo es construir buenas relaciones y confianza entre los miembros del equipo. Las actividades grupales periódicas, las reuniones entre departamentos, las actividades de formación de equipos, etc. son buenas formas de mejorar el espíritu de equipo.

3. ¿Cómo afrontar posibles conflictos de equipo?

Recomendación: una de las mejores formas de identificar y resolver problemas de equipo es adaptar su enfoque al tipo de problema. Utilice técnicas de resolución de conflictos como comunicación, negociación, compromiso y compromiso para minimizar y resolver conflictos entre los miembros del equipo.

4. ¿Cómo monitorear y evaluar el desempeño laboral de los miembros del equipo?

Recomendación: Revise periódicamente el desempeño laboral para garantizar que los miembros del equipo completen las tareas y responsabilidades laborales de manera oportuna. Brinde comentarios positivos y sugerencias para promover el desarrollo personal y el trabajo en equipo de los miembros. Haga un resumen y una evaluación al final del proyecto para proporcionar referencia para proyectos futuros.
 

2. Análisis de requisitos


Requisitos del sistema: son todas las actividades que el sistema debe realizar/soportar y las restricciones que deben cumplirse. Generalmente se divide en requisitos funcionales y requisitos no funcionales.

Requisitos funcionales: Las actividades que debe realizar el sistema. Tomando como ejemplo el sistema de gestión de nómina, puede incluir pago electrónico, cálculo de salarios, cálculo de impuestos sobre la nómina, mantenimiento de información relacionada con los empleados, seguridad social, seguro médico, pago de fondos de previsión, etc.

Los requisitos funcionales se determinan en función de los procesos y las reglas comerciales de la empresa para realizar transacciones comerciales. A veces estas reglas están bien documentadas y son fáciles de identificar y describir; otras reglas pueden estar ocultas y ser difíciles de detectar. Descubrir dichas reglas lo antes posible es una tarea importante del análisis de requisitos.

Requisitos no funcionales: son características inherentes de un sistema que son distintas de las actividades que el sistema debe realizar o soportar. Distinguir requisitos funcionales/no funcionales no es fácil, y se han desarrollado algunas arquitecturas para identificar y clasificar requisitos, como la arquitectura FURPS+ (un acrónimo de Funcionalidad, Disponibilidad, Confiabilidad, Rendimiento, Soportabilidad).

3. Seguridad y confidencialidad del software


La seguridad y la confidencialidad del software son muy importantes porque el software contiene información confidencial de empresas, agencias gubernamentales e individuos. La seguridad del software significa que el software no es vulnerable a ataques, no puede ser explotado fácilmente por piratas informáticos o malware y no filtra información privada de los usuarios. Confidencialidad significa que sólo el personal autorizado puede acceder y utilizar el software.

Para garantizar la seguridad y confidencialidad del software se deben tomar una serie de medidas de seguridad. A continuación se muestran algunas medidas de seguridad comunes:

Cifrado: cifre datos confidenciales utilizando algoritmos de cifrado para evitar la fuga de datos.

Autenticación y autorización: solo los usuarios autenticados y autorizados pueden acceder al software.

Codificación segura: garantice la funcionalidad y seguridad de su software siguiendo las mejores prácticas y especificaciones de codificación.

Pruebas de seguridad: realice pruebas de seguridad periódicas para identificar posibles vulnerabilidades y problemas de seguridad.

Actualizaciones de seguridad: actualizaciones oportunas de software y sistemas para abordar vulnerabilidades y fallas de seguridad conocidas.

Capacitación en concientización sobre seguridad: brinde a los empleados capacitación sobre seguridad y confidencialidad del software para mejorar su concientización sobre la seguridad y sus capacidades de prevención.

La seguridad y la confidencialidad del software son muy importantes para cualquier organización y, por lo tanto, deben considerarse parte del trabajo y recibir la atención y los recursos adecuados cuando corresponda.

4. Retos y futuro de la ingeniería de software

1. Complejidad
La complejidad de los sistemas de software es uno de los principales desafíos de la ingeniería de software. A medida que los sistemas de software crecen en tamaño, su complejidad continúa aumentando. Esto requiere que los equipos de desarrollo adopten tecnologías más complejas y avanzadas para hacer frente a estos desafíos, como la inteligencia artificial y el aprendizaje automático.

2. Seguridad
Con el rápido desarrollo de Internet y la digitalización, la seguridad de los sistemas de software se ha convertido en una cuestión cada vez más importante. Los equipos de desarrollo deben utilizar las mejores prácticas de seguridad, como prácticas de codificación segura y técnicas de cifrado, para garantizar la seguridad de los sistemas de software.

3. Automatización
Con el avance y desarrollo de la tecnología, la automatización se ha convertido en una tendencia en la ingeniería de software. La automatización puede mejorar la eficiencia y la calidad de los sistemas de software y reducir la carga de trabajo de los equipos de desarrollo. La automatización incluye pruebas automatizadas, implementación automatizada, mantenimiento automatizado, etc.

La ingeniería de software del futuro prestará cada vez más atención a la aplicación de tecnología de automatización e inteligencia artificial. A medida que se desarrolle la tecnología de inteligencia artificial, los equipos de desarrollo podrán utilizar tecnologías más avanzadas para desarrollar y mantener sistemas de software. Al mismo tiempo, la ingeniería de software seguirá creciendo y evolucionando para satisfacer las crecientes necesidades y desafíos.
 

5. Preparación del proyecto

Crear un nuevo proyecto

 

 Preparar experto

6. Demostración del código del proyecto de noticias.

<template>

  <div id="tab-bar">
    <tab-bar-item path="/home">
      <i slot="item-icon-active" class="el-icon-message-solid" />
      <i slot="item-icon" class="el-icon-bell" />
      <div slot="item-text">首页</div>
    </tab-bar-item>

    <tab-bar-item path="/my">
      <i slot="item-icon-active" class="el-icon-user-solid" />
      <i slot="item-icon" class="el-icon-user" />
      <div slot="item-text">我的</div>
    </tab-bar-item>

  </div>

</template>

<script>
import TabBarItem from '@/components/TabBar/tabBarItem'
export default {
  name: 'TabBar',
  components: { TabBarItem },
  data() {
    return {

    }
  },
  methods: {

  }
}

</script>

<style>
#tab-bar {
  display: flex;
  background-color: #f6f6f6;
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  box-shadow: 0 -1px 1px rgba(100, 100, 100, 0.08);
}
</style>
<template>
  <div class="tab-bar-item" @click="itemClick">
    <div v-if="!isActive">
      <slot name="item-icon" />
    </div>
    <div v-else>
      <slot name="item-icon-active" />
    </div>
    <div><slot name="item-text" /></div>
  </div>
</template>

<script>
export default {
  name: 'TabBarItem',
  props: {
    path: {
      type: String,
      default: ''
    }
  },
  data() {
    return {
    }
  },
  computed: {
    // 判断当前条目是否被选中
    isActive() {
      return !this.$route.path.indexOf(this.path)
    }
  },
  methods: {
    // 跳转路由
    itemClick() {
      this.$router.replace(this.path)
    }
  }

}
</script>

<style>
.tab-bar-item {
  display: flex;
  flex: 1;
  justify-content: center;
  text-align: center;
  height: 49px;
  line-height: 49px;
  cursor: pointer;
}
</style>

js

import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)

export const constantRoutes = [

  {
    path: '',
    redirect: '/home'
  },

  {
    path: '/home',
    component: () => import('@/views/news/home'),
    meta: {
      keepAlive: true
    }
  },

  {
    path: '/news',
    component: () => import('@/views/news/news')
  },

  {
    path: '/my',
    component: () => import('@/views/news/my')
  },

  {
    path: '/register',
    component: () => import('@/views/news/register')
  },

  {
    path: '/list',
    component: () => import('@/views/news/list')
  },

  {
    path: '/401',
    component: () => import('@/views/401'),
    hidden: true
  },

  {
    path: '/404',
    component: () => import('@/views/404'),
    hidden: true
  }
]

const createRouter = () => new Router({
  mode: 'history', // require service support
  // scrollBehavior: () => ({ y: 0 }),
  routes: constantRoutes
})

export const router = createRouter()

// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465
export function resetRouter() {
  const newRouter = createRouter()
  router.matcher = newRouter.matcher // reset router
}

export default router

const my = {
  state: {
    // 存储浏览历史
    histroy: [],
    // 存储我的收藏
    favourite: [],
    // 是否已登录
    logined: false
  },

  mutations: {

    SET_HISTROY: (state, histroy) => {
      state.histroy.unshift({ createTime: new Date(), histroy: histroy })
    },
    SET_FAVOURITE: (state, favourite) => {
      state.favourite.unshift(favourite)
    },
    SET_LOGIN: (state, login) => {
      state.logined = login
    }

  },

  actions: {
    setHistroy({ commit }, histroy) {
      return new Promise(resolve => {
        commit('SET_HISTROY', histroy)
      })
    },

    setFavourite({ commit }, favourite) {
      return new Promise(resolve => {
        commit('SET_FAVOURITE', favourite)
      })
    },

    setLogin({ commit }, login) {
      return new Promise(resolve => {
        commit('SET_LOGIN', login)
      })
    }
  }
}

export default my

Resumir
 

La ingeniería de software es una disciplina de ingeniería que involucra todos los aspectos de la producción de software.
Los productos de software no son solo programas, sino también documentos relacionados. Los atributos básicos de los productos de software son mantenibilidad, confiabilidad, seguridad de la información, eficiencia y aceptabilidad.
El proceso de software incluye todas las actividades involucradas en el desarrollo de un producto de software. Las actividades en el proceso del software incluyen principalmente: descripción, desarrollo, verificación efectiva y evolución del software.
Los conceptos básicos de la ingeniería de software son universalmente aplicables a todo tipo de desarrollo de sistemas. Estos conceptos básicos incluyen procesos de software, confiabilidad, seguridad de la información, requisitos y reutilización.
Hay muchos tipos de sistemas en el mundo. El desarrollo de cada tipo de sistema requiere de herramientas y técnicas de ingeniería de software adecuadas. Casi no existen técnicas universales de diseño e implementación de software mágico.
Las ideas básicas de la ingeniería de software se aplican a todos los sistemas de software. Estas ideas básicas incluyen procesos de software gestionados, confiabilidad del software y seguridad de la información, ingeniería de requisitos y reutilización del software.
Los ingenieros de software tienen una responsabilidad con la industria de la ingeniería de software y con la sociedad en su conjunto, y no deberían preocuparse únicamente por las cuestiones técnicas.
Un código de conducta emitido por una asociación profesional establece un conjunto de normas de conducta que se espera que respeten los miembros de la asociación.
 

Supongo que te gusta

Origin blog.csdn.net/xiranmoo/article/details/131370673
Recomendado
Clasificación