Proyecto de Ingeniería de Software individual

proyecto contenido
Esta obra pertenece a los cursos de ingeniería de software del Norte Primavera 2020 Computer Software Engineering Institute (Roger Ren Jianxin)
Los requisitos de este trabajo, por favor haga clic en el enlace para ver la ingeniería de software 2020BUAA trabajo proyecto individual
clases de enseñanza 005
Dirección del proyecto github https://github.com/syncline0605/IntersectProject
Mi objetivo en este curso La capacidad de mejorar su código, el proceso de aprendizaje del desarrollo del trabajo en equipo
Este trabajo me ayudó a alcanzar los objetivos de los aspectos específicos campo de prácticas de PSP, estar familiarizado con el proceso desarrollado en C ++ con VS, VS familiarizado con las distintas herramientas

mesa de PSP

Antes de empezar la aplicación del programa, en el siguiente formulario para registrar tu PSP se estima que se gasta en el desarrollo de los diversos módulos del tiempo del programa

PSP2.1 Etapas del Proceso de Software Personal Estimado de consumo de tiempo (minutos) Los que consumen mucho tiempo reales (minutos)
Planificación plan
- Estimación - ¿Cuánto tiempo se estima que la tarea requiere
Desarrollo desarrollar 660 930
- Análisis - análisis de necesidades (incluyendo el aprendizaje de nuevas tecnologías) 180 240
- Diseño de especificaciones - Generar documentos de diseño 30 30
- Revisión de diseño - Diseño de la crítica (y sus colegas revisaron los documentos de diseño) 30 0
- Estándar de Codificación - especificación de códigos (para desarrollar una especificación apropiada para el desarrollo actual) 60 0
- Diseño - diseño específico 60 60
- Codificación - codificación específica 120 420
- Revisión de código - Opiniones de Código 60 0
- Prueba - prueba (autocomprobación, modificar el código, enviar modificaciones) 120 180
la presentación de informes informe 180 210
- Informe de prueba - Informe de prueba 120 120
- Medición de Tamaño - esfuerzo computacional 30 30
- Postmortem & Process Plan de Mejora - retrospectiva, y proponer plan de mejora de procesos 30 60
total 840

fase de pre-diseño de un tiempo más relajado, se puede seguir modificando el diseño, un nuevo método de consulta, y mientras el trabajo de diseño al escribir el blog. Después de la caída de una versión del diseño y eliminado el blog se ha escrito, así que pasé mucho tiempo. En la etapa de codificación, ya que no está familiarizado con el lenguaje C ++, trato con la sintaxis del coste de error C ++ un gran tiempo, a veces un par de horas buscando una por lo demás muy simples errores pequeños, pero hablando en general, debido a que el pre've elaboró ​​la estructura del código, aparte de los errores de sintaxis no es mucho obstáculo. En el análisis, la fase de prueba, el tiempo restante es bastante inadecuada porque no hay tiempo para completar totalmente el proceso de PSP, no pudo hacer el análisis de estilo de código, análisis operativo y las pruebas unitarias.

En términos generales, en este proyecto personal, profundamente entiendo que el "diseño primera codificado" superioridad; pero, por una parte debido al largo tiempo con pre-diseñado, el lenguaje mediados no está familiarizado con los errores de codificación en exceso, lo que resulta en la falta de energía , decepcionante, no completaron el trabajo requerido en las últimas etapas de análisis y pruebas, el programa no elimina completamente la advertencia. En el momento en que el trabajo continuará para completar esta sección cuidadosamente.

Descripción de las ideas de resolución de problemas

análisis de necesidades (incluyendo el aprendizaje de nuevas tecnologías)

1, después de leer la obra proyecto personal, en primer lugar para las reglas de puntuación, planes de estudiar las siguientes nuevas tecnologías:

2, el programa de entrada es un parámetro de línea de comandos, es necesario diseñar y escribir una función para analizar los argumentos de línea de comandos

  • Debido a que el programa debe tener una entrada (-i) y una salida (= O), esto puede ser la base de un procedimiento simplificado

3, para la línea y la intersección de la línea recta, solución de programación lineal para el problema círculo de intersección, el círculo y el círculo de intersección, después de aprender decidido aplicar los métodos siguientes:

  • La idea general: primero determina si hay una intersección, la intersección si la intersección coordenadas de recálculo, muchos intermedios de datos calculados de este modo no se calcula en varias ocasiones y la función de cálculo para determinar la escritura no por separado,

  • Punto en una línea recta de proyección

    • Línea de \ (P_1 \) puntos \ (P_2 \) unidad de vector es e, dos puntos en una línea recta \ (P_1, P_2 \) , los puntos a ser resuelto \ (P \) , el punto de proyección \ (P_R \)
    • Determina el vector \ (<P_1, P> \ ) vector de proyección en la dirección e \ (<P_1, P_R> \) , la unión \ (P_1 \) coordenadas, \ (P_R \) coordenadas buscarán fácilmente fuera
  • Las líneas rectas y intersección de líneas

    • Cuando no existen dos idénticos o dos pendiente de la línea cuando la pendiente de la línea, la intersección de dos línea recta sin

    • Si una línea recta a través de dos puntos \ (P_1, P_2 \) , a continuación, que se expresa como \ (Ax + By + C = 0 \) en la forma de

    • \ (A = P_1.y - P_2.y, B = P_2.x - P_1.x, C = P_1.x * P_2.y - P_2.x * P_1.y \)

    • Si dos líneas de intersección rectas \ (A_0x + B_0y + C_0 = 0 \) y \ (+ B_1y A_1x c_l = 0 + \) , su intersección es \ ((X, Y) \ )

      \ (X = (B_0 * C_1 - B_1 * C_0) / D \)

      \ (Y = (A_1 * C_0 - A_0 * C_1) / D \)

      \ (D = (B_1 A_0 * - * B_0 A_1) \) (D es 0 si las dos rectas paralelas)

  • Linear y la intersección circular

    • En primer lugar buscar centro \ (P \) punto en una línea recta proyectada \ (PR \) coordenadas, entonces podemos encontrar la Vector <p, pr>longitud de matriz \ (m \) , esta longitud módulo \ (m \) radio \ (R & lt \) Comparar
    • Si \ (m \) mayor que el radio \ (R & lt \) , hay intersección
    • Si \ (m \) igual al radio \ (R & lt \) , hay un punto de intersección, el punto proyectado \ (PR \) es el punto de intersección
    • Si \ (m \) menor que el radio \ (R & lt \) , hay dos puntos de intersección, el primero usando el teorema de Pitágoras, de acuerdo con \ (m \) y (& lt \ R) \ media longitud círculo del segmento de línea se determina, y luego sobre la base de este dirección de la longitud del vector de la línea, las coordenadas del punto de proyección y una línea recta para obtener las coordenadas de dos puntos de intersección de
  • Ronda y la intersección ronda

    • Ver el blog siguiente
  • Aprendizaje Referencia blog:

El diseño y la implementación de procesos

el modo de almacenamiento de datos de diseño

  • struct Point (struct Vector)
    • Cuando se calcula en un sistema de coordenadas, Vector es un concepto muy importante. A partir de los datos, es el mismo punto con un eje horizontal double x, un eje vertical double yse puede expresar, pero también debe ser parada longitud troqueldouble length
  • struct Línea

  • struct Círculo

  • Por STL vectorel ahorro de cada estructura de datos entradas
    • vector <Línea>
    • vector <Circle>
  • Por STL setel ahorro de estructura de datos en cada intersección, el cruce no se repetirá para asegurar que el almacenado
    • conjunto <Punto>

Función de diseño

  • función de línea de comandos de análisis
  • manejador de entrada
  • Buscando un vector que conecta los dos puntos
    • Entrada: Point A,Point B
    • salida:Vector M
  • Buscando un punto en una línea proyectada función de coordinar
    • Entrada:Point A ,Line l
    • salida:point M
  • Buscando distancia en línea recta entre la función de punto
    • Entrada:Point A ,Line l
    • salida:int distance
  • función de evaluación en función del número de intersecciones de dos líneas rectas / cruzar el / función de demanda de puntos círculo de línea el número de intersecciones de dos círculos
    • Salida: el número de intersecciones
    • Intersección coordenada obtenida por referencia a una función como un parámetro

diseño de prueba de la unidad

  • No es una unidad completa probar todas las funciones, utilizando principalmente los casos de prueba basados ​​simplemente en alguna unidad pequeña función de prueba

el diseño de casos de prueba

rendimiento de los programas

Usando un conjunto de prueba generada al azar contiene más de un millar de piezas de datos, una carrera minutos (es decir, terminar antes de correr).

Obviamente, el programa utilizará la mayor parte del tiempo en el conjunto de elementos insertados en

Además, con base en el valor exacto determinó la reescritura iguales importancia también ocupan mucho tiempo

Pensé en una forma tan óptima en la fase de diseño, pero al final no tuvo tiempo para darse cuenta

  • Siempre que el calculado dos recta \ (L_1, L_2 \) una intersección o lineal (L \) \ círculo \ (C \) después de intersección, la intersección puede ser determinada
    • No se ha determinado si el restante (L_1 \) \ la intersección, y \ (L_2 \) en una intersección de la línea recta, si la pueden grabarse no tiene que ser calculado y determinado (porque no puede haber sólo dos líneas rectas una intersección)
    • No se ha determinado si el restante (L \) \ en la intersección línea recta, supra

código Descripción

  • Encuentra la intersección de dos líneas rectas

  • Encuentra la intersección de la línea con el círculo

Supongo que te gusta

Origin www.cnblogs.com/syncline/p/12457802.html
Recomendado
Clasificación