|
0 / 0 / 0
Регистрация: 04.07.2016
Сообщений: 77
|
|
Разбить одну программу на несколько параллельно работающих03.10.2018, 22:37. Показов 1138. Ответов 4
Метки нет (Все метки)
Я не программист, языка С++ не знаю.
Написал ТЗ, по которому программисты что-то сваяли, недоваяли и самоустранились. Программа под Виндоуз. Всего около 500 файлов исходника, из них четверть - срр. ехе в результате компиляции (Билдер-6) получается один. толком не работает. То есть программа как-то работает, но ряд важных функций не работает, многое ещё не реализовано. Для дальнейшей работы рассматриваю вариант разбить программу на 4 или более частей (и раздать их для работы разным программистам), с четырьмя ехе, которые запускались бы одновременно и работали каждый за себя: Первая обеспечивает интерфейс (работу пользователя с компом), и заполняет на выходе матрицу состояний переключателей алгоритма. работает по запросам или прерываниям. Вторая - вычислительное ядро - вычисление данных по алгоритму с учётом матрицы, и заполнение массивов результатов. Третья - работа с внешними устройствами - ввод-вывод вычисленных массивов. Вторая и третья - работают как автогенератор - молотят постоянно. Четвёртая - текущая во времени 3д-сцена в Open-GL на основе массива состояний. В некоторых случаях (когда комп стоит на объекте и работает автоматически, управляя внешними устройствами) первую и четвёртую части можно и не включать, чтобы не перегружать комп - все равно оператора нет. Можно ли так? Можно разбить и на большее число частей, если это будет ещё лучше. или несколько ехе - не хорошо? Или отдельно работающие части можно свести в один ехе? Или можно всё модифицировать малой кровью под линукс (есть ли преимущества от этого)? Как разбить 500 файлов исходника, чтобы раздать 4-м программистам, не передавая ни одному из них весь исходник целиком?
0
|
|
| 03.10.2018, 22:37 | |
|
Ответы с готовыми решениями:
4
Объединить несколько готовых и работающих программ в одну Объединить несколько готовых и работающих программ в одну Разбить одну строку на несколько |
|
Модератор
|
||||
| 04.10.2018, 07:41 | ||||
о проекте целиком, не вдаваясь в подробности реализации той или иной части этого проекта. Он и координирует работу группы программистов, разделяя проект на более мелкие части и распределяя их реализацию между теми или иными людьми... Он же в итоге сводит модифицированные/новые модули в единый проект... Т.е. Ваша затея - отдать по 125 из 500 файлов *.cpp каждому из 4-х программистов - заранее провальная...переписывать все в кроссплатформенной среде, типа Qt...
0
|
||||
|
165 / 114 / 59
Регистрация: 12.07.2018
Сообщений: 277
|
||
| 04.10.2018, 07:52 | ||
|
0
|
||
|
0 / 0 / 0
Регистрация: 04.07.2016
Сообщений: 77
|
|
| 04.10.2018, 21:58 [ТС] | |
|
Уточню - файлов срр - 136, по стольку же и трёх остальных, есть еще пара десятков файлов и папок общего пользования.
Программу (в результате) я представляю себе так. В памяти ОЗУ распланирована совокупность массивов (таблиц) данных, с заданными названиями и форматами, которой пользуются все 4 ехе (процесса) по очереди, т.к. все равно процессор один, а процессы разделяются по времени. 2-й и 3-й процесс безусловно, а если включён полный режим - то и 1-й процесс должны работать синхронно, т.е. каждые 25 миллисекунд (40 раз в секунду) каждый из них должен выполнить свой цикл один раз. Всё остальное время компьютера отводится на 4-й процесс, если включён полный режим. Если включён эконом-режим - работают только процессы 2 и 3. Вопрос. если все 4 ехе самодостаточны, хотя и сделаны разными программистами, и пользуются общими таблицами данных (которые определены в ТЗ) по очереди, нужно ли их как-то дополнительно сводить? Или просто запустить все 4 и всё (например, каким-нибудь маленьким бат-файлом) ? Я подозреваю, что менеджер проекта должен быть программистом и знать язык С++, но это нереально. Поэтому и хочу обойтись без этого. Менеджер проекта, он же тестировщик, является разработчиком ТЗ, знает всё программу с точки зрения функционала и алгоритма, при необходимости их дорабатывает, но не знает языка С++ Добавлено через 7 минут Уточню - файлов срр - 136, по стольку же и трёх остальных, есть еще пара десятков файлов и папок общего пользования. Программу (в результате) я представляю себе так. В памяти ОЗУ распланирована совокупность массивов (таблиц) данных, с заданными названиями и форматами, которой пользуются все 4 ехе (процесса) по очереди, т.к. все равно процессор один, а процессы разделяются по времени. 2-й и 3-й процесс безусловно, а если включён полный режим - то и 1-й процесс должны работать синхронно, т.е. каждые 25 миллисекунд (40 раз в секунду) каждый из них должен выполнить свой цикл один раз. Всё остальное время компьютера отводится на 4-й процесс, если включён полный режим. Если мощности компа не хватает выполнить весь процесс 4 (отрисовку сцены 3д) - это видно на экране, пользователю сигнал для оргвыводов, но процессы 1,2,3 должны успевать выполняться за 25 миллисекунд (или раньше) безусловно. Если включён эконом-режим - работают только процессы 2 и 3. Вопрос. если все 4 ехе самодостаточны, хотя и сделаны разными программистами, и пользуются общими таблицами данных (которые определены в ТЗ) по очереди, нужно ли их как-то дополнительно сводить? Или просто запустить все 4 и всё (например, каким-нибудь маленьким бат-файлом) ? Я подозреваю, что менеджер проекта в общем случае должен быть программистом и знать язык С++, но в моём случае это нереально. Поэтому и хочу обойтись без этого. Менеджер проекта, он же тестировщик, является разработчиком ТЗ, знает всё программу с точки зрения функционала и алгоритма, при необходимости их дорабатывает, но не знает языка С++
0
|
|
|
Практикантроп
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
|
|
| 04.10.2018, 22:57 | |
|
Насчет четырёх параллельно работающих exe по-моему это химера; смысла в том не вижу. Если можно всю работу программы условно разбить на ряд блоков, то есть смысл эти блоки организовать в несколько динамических библиотек (.DLL), над которыми смогут трудиться несколько относительно независимых групп или программистов, используя как базу существующие С++ файлы. А эти ваши 4 процесса, если нужно, можно организовать в потоки внутри одной общей программы.
П.С. На мои советы сильно внимания не обращайте; это так... - мысли вслух дилетанта от программирования. (Которые иногда приносят пользу ).
0
|
|
| 04.10.2018, 22:57 | |
|
Помогаю со студенческими работами здесь
5
Разбить одну картинку на несколько Text в XML, разбить одну строку на несколько 2 параллельно-работающих формы (abcObjects) Создание 2-х параллельно работающих окон Одновременное освобождение устройств, работающих параллельно Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|