6.5 Estructura organizativa estática

En las tres primeras secciones, explicamos tres modelos de organización de programas: estrictamente jerárquico, en componentes y distribuido. Dentro del equipo, estamos acostumbrados a llamarlo "distribución en capas y dividida" por simplicidad. La combinación de estas tres estrategias básicamente puede determinar la relación de organización estática de cada módulo de software en un producto. Por lo tanto, la "distribución en capas y dividida" es una estructura de organización estática. En la actualidad, aunque tienen sus propias prioridades, casi todos los productos desarrollados por nuestro equipo siguen la estructura organizativa estática de "estratificado, bloque a paso".

Inserte la descripción de la imagen aquí
¿Por qué sigue evolucionando esta organización de programas estáticos? Después de revisar todo el proceso evolutivo, descubrí que este modelo no está tanto diseñado como desarrollado.

En el mundo real, las demandas se repiten constantemente, pero los recursos humanos siempre son escasos. Para permitir que menos personas realicen más trabajo, la I + D basada en plataformas y los módulos de alta reutilización son casi nuestras opciones más naturales. Después de comer la dulzura una vez, querremos comer más, y el ciclo positivo una y otra vez nos empujará al estado actual. Esto es lo que enfatizaré repetidamente cuando me comunique con muchos amigos. No se preocupe por el caos actual. Mientras podamos agarrar firmemente algunas manos clave, el tiempo hará que parezca que alguna vez envidiamos.

La estructura organizativa estática de "distribución en capas y dividida" no solo proporciona un modelo de organización de programas, sino que también afecta sutilmente nuestro modelo de investigación y desarrollo.

Uno de los puntos centrales de la estructura organizativa estática de "distribución en capas y dividida" es la I + D basada en plataformas. La denominada I + D basada en plataformas no debe tomar un solo producto como tarea de I + D, al menos una dirección de campo como tarea de I + D. Por ejemplo, el enfoque de este libro son los productos de protección de microcomputadoras, que en realidad incluyen muchos tipos de productos, no solo la protección integral contra sobrecorriente y la protección diferencial mencionadas en este libro, sino también la protección del motor, la protección de la barra colectora, la protección del motor, la protección de distancia, etc. Tipo de tipo. Basado en el concepto de I + D basado en la plataforma, al desarrollar productos de protección de microcomputadoras, primero se construirá una plataforma común y luego se desarrollarán rápidamente varios productos basados ​​en la plataforma común.

A veces, la I + D basada en plataformas incluso cruzará direcciones de campo. Por ejemplo, tenemos un producto de máquina de gestión de comunicaciones para la industria de la energía. Basado en el concepto de I + D basado en plataformas, este producto ha atravesado muchos campos. Se coloca en la industria de los medidores como un sistema de lectura de medidores, como colectores y concentradores. Puesto en la industria del campo petrolero es el producto RTU del campo petrolero, cada protocolo de campo y unidad pueden ser diferentes, pero la estructura general y el concepto de diseño son básicamente los mismos. Como se muestra en la figura siguiente, el marco rojo es la dirección del campo RTU del campo petrolero. Al igual que en el campo petrolífero RTU, basado en I + D basado en plataforma, otros productos también son un subconjunto de configuración de la biblioteca de productos de código.

Inserte la descripción de la imagen aquí
Otro punto central de la estructura organizativa estática de "distribución dividida y en capas" es la alta reutilización. De hecho, el modelo de I + D basado en plataformas también es un catalizador para la construcción de módulos de alta reutilización. Para que la plataforma sea más aplicable, tenemos que optimizar iterativamente varios módulos básicos de la plataforma. Con más iteraciones, naturalmente nacerán muchos módulos de software excelentes de alta reutilización.

Según el modelo de I + D basado en la plataforma y las características de alta reutilización, la estructura de organización del personal del equipo de I + D también se adaptará lentamente. En el pasado, el concepto de I + D se basaba en los límites del producto. Naturalmente, se formaron muchos equipos de proyecto y cada equipo de proyecto era responsable de un producto. Basado en el modelo de I + D basado en plataforma, el personal de I + D comenzó a diferenciarse en dos tipos de personal de I + D, plataforma y campo, porque cada persona puede centrarse mejor en su propio campo, nacerán muchos expertos de campo y porque a menudo es necesario considerar los productos de varias industrias en su conjunto. Así que también dará a luz a algunos arquitectos. Con estos excelentes arquitectos y expertos en el dominio, puede retroalimentar aún más los productos, no solo para mejorar la eficiencia de la investigación y el desarrollo, sino también para iniciar la investigación y el desarrollo de algunos productos de alto nivel, que es precisamente el más escaso en el campo industrial nacional.

◇◇◇

Basado en el modelo de I + D basado en plataforma, se pueden derivar posibilidades ilimitadas. En la práctica, derivamos un módulo de software especial: dispositivo virtual. El dispositivo virtual se divide en dos partes: hardware virtual y aplicaciones virtuales, que se pueden ejecutar por separado. Como se muestra en la figura siguiente:
Inserte la descripción de la imagen aquí
El desarrollo de software integrado depende del hardware, lo que traerá muchas dificultades a la organización del proyecto. Desde el comienzo del proyecto hasta ver la primera placa de hardware completa, un proyecto debe pasar por muchos enlaces, como análisis de demanda, diagrama esquemático, placa PCB, prueba de soldadura. Incluso en este momento, debe completar el controlador antes de poder iniciar la depuración del código de la aplicación. ¿Este proceso hace que el equipo de software espere tontamente?

Una mejor estrategia es agregar un módulo de hardware virtual para simular un dispositivo completo en una computadora de escritorio. Con la ayuda de módulos de hardware virtual, la eficiencia del trabajo del grupo de software se puede mejorar enormemente. En nuestro equipo, casi el 80% del código se desarrolla en base a dispositivos virtuales, la mayoría de los cuales están sincronizados con el grupo de hardware. Después de fabricar la nueva placa, solo se necesita I + D de controladores adicional, y luego puede ingresar rápidamente al enlace de prueba de integración de todo el equipo.
Inserte la descripción de la imagen aquí
El hardware virtual no solo puede mejorar la eficiencia del grupo de software, sino que también proporciona un entorno de prueba adicional. Por ejemplo, el módulo de muestreo AD de un producto que desarrollamos, encontró que la precisión del cálculo es muy alta cuando la entrada es de alrededor de 50 Hz, pero la precisión del cálculo comienza a disminuir rápidamente cuando la frecuencia de referencia está compensada. Es necesario saber que hay muchos componentes de alta frecuencia cuando falla el sistema de energía. Esto afectará la precisión de la acción de protección del microordenador.

Basándonos en el hardware virtual, hicimos dos pruebas: en primer lugar, confirmamos que la precisión del cálculo de los componentes de alta frecuencia en el hardware virtual cumple con los requisitos, lo que indica que el algoritmo está bien; en segundo lugar, use los datos de simulación del hardware virtual en lugar del muestreo AD para calcular en el dispositivo y descubra que la precisión del cálculo también cumple con los requisitos Reclamación. Por lo tanto, podemos determinar que el problema ocurre en el bucle de muestreo de AD de hardware.

Más tarde se descubrió que el bucle de muestreo AD del hardware es un filtro, y el filtro tiene un impacto en la amplitud de la señal de entrada de diferentes frecuencias, que es la curva de espectro que se menciona a menudo en el procesamiento de señales digitales. Nuestro bucle de muestreo AD se muestra en la siguiente figura, que es un bucle de filtro RC de segundo orden típico.

Inserte la descripción de la imagen aquí
La curva de espectro correspondiente se muestra en la siguiente figura (basada en la simulación de matlab):

Inserte la descripción de la imagen aquí
Con base en la curva de espectro, es obvio que diferentes frecuencias corresponden a diferentes factores de escala de amplitud, por lo tanto, si se puede agregar un factor de ajuste inverso en el proceso de cálculo, se mejorará la precisión del cálculo de amplitud.

Con la iteración continua de productos, los módulos de la plataforma también están en iteración continua, pero en este momento surgirá otro problema. Cada producto específico solo usará un subconjunto de los módulos de la plataforma. Cómo integrar muchos módulos en la plataforma ¿Y las pruebas?

Para resolver este problema, construiremos un módulo de aplicación virtual cuyo enfoque no está en la aplicación, sino en acoplar varios módulos de plataforma a través de una aplicación para facilitar las pruebas de integración.

Además, el módulo de aplicación virtual también es un buen módulo de referencia para el aprendizaje. Cuando varios desarrolladores de aplicaciones realizan investigación y desarrollo de productos de campo, innumerables documentos no son tan aplicables como un producto simulado. En el trabajo real, el punto de partida para la I + D de productos en muchos campos específicos es bifurcar un módulo de aplicación virtual y realizar modificaciones basadas en este módulo, que es simple y rápido.

Las aplicaciones virtuales y los dispositivos virtuales constituyen un módulo de dispositivo virtual, y el módulo de dispositivo virtual de nuestro equipo es mucho más que un simple módulo de software. Después del trabajo por la noche, hice una llamada en el acto y rápidamente ejecuté el dispositivo virtual en la computadora en la nube de ingeniería para resolver el problema rápidamente. La sensación de manejar el problema con facilidad es muy agradable. Tal vez solo si realmente lo he experimentado puedo apreciarlo. Maravilloso.

◇◇◇

Basado en el modelo de I + D basado en plataforma, la estructura de organización del directorio del programa también debe adaptarse en consecuencia. A continuación, se muestra un posible formato de organización de archivos de programa adecuado para dispositivos de protección de microcomputadoras para su referencia.

relay									整个项目总目录结构
	boot								boot程序,用于主程序和参数下载
	MMIBoard							面板can分布式程序
		……								不同尺寸液晶对应不同程序版本
	expandBoard							各种di,do,ai和ao分布式扩展板
		expand16DI						16路DI扩展板
		expand16AI						16路AI扩展板
		……
	hardware							硬件相关资料,包括原理框图,版本,调试说明等
	commit								最终提交的各版本程序
		XXXXXX(2013-xx-x,V1.xx,0xabcd)	发布程序(时间,版本,校验码)
		XXXXXX(2014-xx-x,V2.xx,0x1234)	
		……
	documents							文档目录
		设计文档							组织架构设计相关文档
		对用户文档						包含对用户文档,如技术说明书,规约文档,工程说明等
		测试文档							集成测试文档和测试记录
		工作日志.doc						包含版本说明,现场各种反馈等信息
	sysCfg								配置软件,基于平台统一研发
	maintain							维护软件,基于平台统一研发
	simEquip							虚拟设备平台统一构建部分
	sysPlat								平台程序部分
		sysPlat.h						平台部分给领域产品研发公开的统一接口
		driver							驱动层目录
			hardwareAbstract.h			硬件抽象层对外统一引用头文件
			winSim						win仿真实现,对应虚拟硬件部分
				……						具体实现
			STM32F207					基于ST207芯片的驱动实现
				……						具体实现
			……							其他驱动版本实现
		basePlat						基础平台层
			xf							动态执行框架
			gui							gui模块
			script						脚本
			……
		api								API抽象层
			apiInclude.h				API抽象层对外的统一引用头文件
			ai.h,ai.c,aiPrivate.h		ai模块
			di.h,di.c,diPrivate.h		di模块
			……
			history.h,histroy.c			历史数据模块高级应用
			trend.h,trend.c				趋势数据高级应用
			……
		app
			appInclude.h				app模块对外统一引用头文件
			main.c						统一的主程序入口框架
			103Protocol.c				103规约程序
			a11Protocol.c				A11规约程序
			……
	relayBoard							各种保护产品程序目录
		simEquip						虚拟设备
		550								过流综合保护装置
			para						配置软件生成的参数存放目录
			IAR_ST207					基于iar编辑器和st207芯片的开发环境
			VS2017_SIM					基于VS的仿真运行环境。
			src							特定领域代码
			……
		587T							变压器差动保护装置
		……
	supportToolsSrc						外围支持软件总目录
		commSrc							外围支持软件公共代码
		createS19						程序格式转换软件
		MIMIC							主接线图工具软件
		simDisturbFile					模拟采样数据
		……
	tools								外围支持软件可执行程序统一路径
	clear.bat							用于清除整个项目中的中间文件,便于版本提交

Debido a las limitaciones de espacio, aunque no se ha mostrado la estructura de directorio completa, todos pueden ver claramente que el código del programa está organizado en partes de plataforma y partes de dominio específicas, y que el código de plataforma representa una porción relativamente grande.

Un punto adicional es que la estructura de directorios anterior es solo un ejemplo simple. La estructura de directorios del proyecto real puede ser mucho más complicada. Por ejemplo, distinguirá entre archivos de origen y directorios de archivos de encabezado, divididos en múltiples bibliotecas compilables, que contienen una gran cantidad de archivos de configuración e incluso algunos Los archivos y directorios de configuración son generados por software de configuración.

◇◇◇

La estructura organizativa estática de "distribución en capas y particionada" no solo afecta el modelo organizativo del programa, sino que incluso reconstruye el modelo de investigación y desarrollo. En el siguiente capítulo, comenzamos a explorar la estructura organizativa dinámica del programa ¿Qué sorpresas nos traerá?

——————————————

Volver al contenido

Soy Xiaomaer, un ingeniero de software integrado que anhela la conciencia y el alma. Dé la bienvenida a su empresa y viaje. Si está interesado, puede agregar una cuenta personal de WeChat nzn_xiaomaer para comunicarse, y debe anotar la palabra " dimensión diferente ".

Supongo que te gusta

Origin blog.csdn.net/zhangmalong/article/details/106577769
Recomendado
Clasificación