Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
Lovc
36 / 36 / 5
Регистрация: 19.06.2015
Сообщений: 79
#1

Проектирование программы: методы и литература по теме

19.06.2015, 18:41. Просмотров 1281. Ответов 23
Метки нет (Все метки)

Собираюсь написать большой серьезный проект и для этого мне необходимо понимать, как правильно спроектировать свою будущую программу.

Какую литературу на эту тему прочитать? Что посоветуете?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2015, 18:41
Ответы с готовыми решениями:

Где найти материал по теме само переписывающиеся программы?
Где найти материал по теме само переписывающиеся программы?

Проектирование программного обеспечения (литература)
Добрый день. Есть у кого-то ссылки на статьи или небольшую книгу по...

Литература по теме Отладки программ
Привет всем. Кто-нибуть встречал литературу на тему отладки. Типа как это...

Проектирование программы
Здравствуйте! Подскажите пожалуйста, какими средствами эффективнее...

Проектирование ООП программы
Привет, начал писать большие программы, без планирования, в итоге , приходится...

23
Izual
142 / 120 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
19.06.2015, 20:12 #2
Самое главное не делайте глобальных переменных. Моя вот программа когда перевалила с 20к строк, стало ясно что нада делать тучу cpp файликов, а не один большой. Просто из за того что время компиляции и сборки будет огромным, а исправлять порой приходится просто пару строчек..
Ещё по пройденным граблям - если будет с 20 winapi окон, то не меняйте названия переменных в них (а лучше вообще делайте их массивами, типа lc[5][20] (local char), на копипасте сэкономите кучу времени.
Вообще конешно ещё лучше создать собственную платформу(типа с интерпритатором) для создания программ, но до этого надо дорасти))
0
Fulcrum_013
Заблокирован
19.06.2015, 21:29 #3
Цитата Сообщение от Lovc Посмотреть сообщение
обираюсь написать большой серьезный проект и для этого мне необходимо понимать, как правильно спроектировать свою будущую программу.
Зависит от многих факторов. Даже например от тематики программы и типа интерфейса. К примеру САПР удобнее проектировать по одному, программу работы с СУБД по другому, игры по третьему, ну а управляющий софт - это вообще отдельная песня.
Цитата Сообщение от Izual Посмотреть сообщение
а лучше вообще делайте их массивами, типа lc[5][20] (local char), на копипасте сэкономите кучу времени
А если включить мозги то копипаст будет делать компилятор, и коду надо будет очень сильно постараться чтобы дорасти до 20 тыщ строк. А то можно уподобится индусам которые слепили метод в 75,000 строк.

Добавлено через 1 минуту
Цитата Сообщение от Izual Посмотреть сообщение
типа lc[5][20] (local char)
интересно, а вы через 2 недели сами то вспомните назначение этого массива?
0
Izual
142 / 120 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
20.06.2015, 02:44 #4
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
коду надо будет очень сильно постараться чтобы дорасти до 20 тыщ строк
Сам по себе он не растёт, он пишется руками ну и какие то части (как например основа для winproc для WinApi копируется, так как оказывается проще, т.к. если уж хорошо делать, то обработка каждого окна слишком сложна). Я просто из своего опыта сказал, что я вот с такой проблемой столкнулся... работал 2 года над программой. (ну так, не спеша, за частую ещё и опимизируя частично, всё же размер не уменьшился) Про индусов даже начинать не буду, троллинг за ранее чую, нн раздувать.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
через 2 недели сами то вспомните назначение этого массива
Да, пишу платформу, потому большинство переменных не только таким образом в массивах, а даже больше, трёх мерные указатели, а в нутри могут быть ещё Н-меры. Никто не отменял знаки /* */ в которых можно хоть 1000 строк описания помещять..
0
Fulcrum_013
Заблокирован
20.06.2015, 02:51 #5
Цитата Сообщение от Izual Посмотреть сообщение
Никто не отменял знаки /* */ в которых можно хоть 1000 строк описания помещять..
Хорошо читабельным считается код который читается без комментариев.[/quote]
Цитата Сообщение от Izual Посмотреть сообщение
Сам по себе он не растёт, он пишется руками ну и какие то части (как например основа для winproc для WinApi копируется, так как оказывается проще, т.к. если уж хорошо делать, то обработка каждого окна слишком сложна).
При правильном проектировании код растет при создании "кирпичиков". Потом количество кода необходимого для доделывания той или иной фичи резко падает. Т.е. в начале создается абстрагированное двигло которое и есть основной по объему код. А добавление конкретики в результате занимает очень мало кода.

Добавлено через 48 секунд
Цитата Сообщение от Izual Посмотреть сообщение
пишу платформу
Что понимается под словом платформа?
1
Croessmah
++Ͻ
14487 / 8268 / 1553
Регистрация: 27.09.2012
Сообщений: 20,312
Записей в блоге: 3
Завершенные тесты: 1
20.06.2015, 11:41 #6
Цитата Сообщение от Lovc Посмотреть сообщение
Какую литературу на эту тему прочитать? Что посоветуете?
Для начала книгу Макконнелла "Совершенный код"
2
Izual
142 / 120 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
20.06.2015, 13:08 #7
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Хорошо читабельным считается код который читается без комментариев
Так я понял, вам нехватает догматичного взгляда и стиля общения Hoggy?.. Ну так идите и с ним в таком русле и разговаривайте. Мне же все эти ваши шаблоны - просто по барабану.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
в начале создается абстрагированное двигло
Ещё раз читай мой предыдущий пост, или 7 раз читай, или пока не дойдёт... Я смотрю ты учитель йода видиш как начальство заказывает построение программы в начале, и как всё оборачивается через год и два..
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
При правильном проектировании
Все вопросы заказчикам.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Что понимается под словом платформа?
Можеш глянуть на мой профиль, последние 10 созданных тем в этом разделе посвящены ньюансам того чем я как раз и занимаюсь. (больше сказать не могу, т.к. и говорить нечего, платформа - она и в африке платформа)
0
Fulcrum_013
Заблокирован
20.06.2015, 13:25 #8
Цитата Сообщение от Izual Посмотреть сообщение
Все вопросы заказчикам.
Проектирует софт не заказчик а исполнитель. Читаем раздел "математическая постановка задачи"

Добавлено через 9 минут
Цитата Сообщение от Izual Посмотреть сообщение
Можеш глянуть на мой профиль, последние 10 созданных тем в этом разделе посвящены ньюансам того чем я как раз и занимаюсь.
Та я тебе просто подсказать пытаюсь. Просто не совсем понятно что имеешь в виду под платформой. Есть такой к примеру термин - "платформер" - т.е. что то из серии 2D игр т.е. действия происходят на "платформе" -это из этой серии?
0
Izual
142 / 120 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
20.06.2015, 15:17 #9
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Проектирует софт не заказчик а исполнитель.
Ну что опять телекинезис?.. Я тебе говорю что ёпт в начале был один перечень задач, а потом он стал расти после выполнения первых.
На второе даже отвечать не буду, тот кто не хочет слышать - не услышит хоть 200 раз ему скажи. И это только подтверждается первым вопросом, на который ты сам так телекинетически ответил.
0
Lovc
36 / 36 / 5
Регистрация: 19.06.2015
Сообщений: 79
21.06.2015, 18:49  [ТС] #10
Fulcrum_013, хочу написать LMS.
https://ru.wikipedia.org/wiki/%D0%A1...B8%D0%B5%D0%BC
0
Fulcrum_013
Заблокирован
21.06.2015, 18:57 #11
Цитата Сообщение от Lovc Посмотреть сообщение
Собираюсь написать большой серьезный проект и для этого мне необходимо понимать, как правильно спроектировать свою будущую программу.
Я так подозреваю что для такой задачи вы ошиблись разделом как минимум на 50-70%. В такой задаче огромная часть будет On-Line соответсвенно для нее будут удобны серверные скрипт-языки и JavaScript. Хотя не исключено что какая то часть АРМ в интранете вуза будет на С++. Для начала рекомендовал бы ознакомится с подобным решением из комплекта 1С-Bitrix.
0
Lovc
36 / 36 / 5
Регистрация: 19.06.2015
Сообщений: 79
21.06.2015, 19:02  [ТС] #12
Fulcrum_013, Я собрался писать на Python, но меня интересует проектирование, а так как на C++ пишется много больших программ, то и людей, которые предложат правильные книги, будет больше.
0
Fulcrum_013
Заблокирован
21.06.2015, 19:16 #13
Цитата Сообщение от Lovc Посмотреть сообщение
а так как на C++ пишется много больших программ, то и людей, которые предложат правильные книги, будет больше.
Ну если вы всерьез за такую обширную тему решили взяться то книги по проектированию вам не читать надо а писать Хотя бы полномасштабная постановка задачи выльется в многотомник покруче "Война и Мир". Ну а вообще что посоветую разбить систему на относительно автономные модули, модули на гуппы по очередям внедрения, а очереди внедрения планировать так чтобы первая очередь давала минимальный функционал а последующие его наращивали и увеличивали количество АРМ и вообще количество абонентов и категорий абонентов.
0
Lovc
36 / 36 / 5
Регистрация: 19.06.2015
Сообщений: 79
21.06.2015, 19:35  [ТС] #14
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Ну если вы всерьез за такую обширную тему решили взяться то книги по проектированию вам не читать надо а писать Хотя бы полномасштабная постановка задачи выльется в многотомник покруче "Война и Мир". Ну а вообще что посоветую разбить систему на относительно автономные модули, модули на гуппы по очередям внедрения, а очереди внедрения планировать так чтобы первая очередь давала минимальный функционал а последующие его наращивали и увеличивали количество АРМ и вообще количество абонентов и категорий абонентов.
Спасибо, я понял вас. Лучше начну, а потом уже станет ясно, как лучше спроектировать.
0
Izual
142 / 120 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
21.06.2015, 19:36 #15
Lovc, вы собираетесь на проэктирование месяц+ чтоль выбросить? - с таким тэмпом вы ничего не сделаете вообще.
Ньюансы работы будут отталкиваться от языка на котором вы собрались писать. Всё остальное - не так то уж и значимо. На грабли вы без опыта всё равно наступите, лучше просто начните делать, там дальше - по мере роста знаний и опыта сами будете оптимизировать код. Единственное на чём я бы заострил внимание я уже написал вам в 1 моём посте.
Дорогу осилит идущий.
2
Fulcrum_013
Заблокирован
21.06.2015, 20:39 #16
Цитата Сообщение от Lovc Посмотреть сообщение
Спасибо, я понял вас. Лучше начну, а потом уже станет ясно, как лучше спроектировать.
Начните с того что возьмите бааальшой лист ватмана и сделайте диаграмму HIPO т.е. такие квадратики где что на каком компе вводится, каким куда выводится/записывается и как примерно обрабатывается. Ну если способны удержать эту схему в голове и проектировать и реализовывать будете один или с максимум еще одним-двумя гениями-телепатами (при большем количестве разработчиков обычно "телепатия" так не срабатывает) то можно и без бумаги, то бишь в голове, но скорее всего придется таки на бумаге. Особенно если нет опыта проектирования подобных систем. Оно просто из простыни путем абстрагирования сворачивается в достаточно небольшой движок в конечном итоге.
0
Izual
142 / 120 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
21.06.2015, 22:03 #17
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
придется таки на бумаге
Таки ты сказал всё же что то дельное)) И в точку кстати данной темы. Именно бумага, карандаш и воображение - главные инструменты программиста!
0
Fulcrum_013
Заблокирован
21.06.2015, 23:55 #18
Цитата Сообщение от Izual Посмотреть сообщение
Именно бумага, карандаш и воображение - главные инструменты программиста!
Сейчас кстати есть средства позволяющие делать это на экране. И ладно бы если просто черчение, они потом еще и заголовки классов создают и места под функции только код вписывай. другое дело что дойти до таких мелких деталей как описание кажого класса это в большом проекте целяком малореально. Я как бы с головы да ручками пока что, хотя была бы толковая система создания иерархий... может и пользовал бы. А пока что и борландовский и мелкомягкий редакторы классов слишком сырые и неудобные, да и без мысленного ввода это мало времени экономит. Хоть бы сенсорный интерфейс был, уже бы можно было использовать. А от него до мысленного ввода пол шага.

Добавлено через 4 минуты
Цитата Сообщение от Izual Посмотреть сообщение
Именно бумага, карандаш и воображение - главные инструменты программиста!
Главный инструмент программиста - моск и аналитические способности.

Добавлено через 1 час 36 минут
Цитата Сообщение от Izual Посмотреть сообщение
вы собираетесь на проэктирование месяц+ чтоль выбросить? - с таким тэмпом вы ничего не сделаете вообще.
А вы собираетесь квартал-другой потратить на написание кода, потом год-другой на рефакторинг, потом выбросить все и на месяц засесть за аналитику и проектирование?
0
Izual
142 / 120 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
22.06.2015, 01:15 #19
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А вы собираетесь квартал-другой потратить на написание кода, потом год-другой на рефакторинг, потом выбросить все и на месяц засесть за аналитику и проектирование?
Если программа будет работать, то лучше именно сначало сделать криво, чем засесть на месяц изучения аналитики, от которой толку не будет, т.к. сам язык не освоен. А речь именно об этом.
В общем ты мне порядком надоел, и твои телекинетические способности, которые кстати не работают, размером галстука меряются в другом месте, а выкабенивать из себя великого гуру, что ты и делаеш - у тебя всё равно не получится. На улице про таких сначала шёпотом говорят, потом в компаниях за спиной. Почему - потому что и так видно что за человек перед тобой, к чему эти все понты и паказуха в стиле "а я такое знаю, чего ты не знаеш".. Видимо не все закончив детский "сад вырастают из него мозгом". Больше я отвечать на твои комменты не буду, а то это попахивает провокацией.
0
Fulcrum_013
Заблокирован
22.06.2015, 15:04 #20
Цитата Сообщение от Izual Посмотреть сообщение
т.к. сам язык не освоен
Так сначала тогда язык осваивайте а потом огромные системы проектируйте. проще будет. и быстрее
0
22.06.2015, 15:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.06.2015, 15:04

Архитектура программы: как лучше реализовать контейнер и методы управления его содержимым?
Доброго времени суток. Имею такой код: class A { private: ... // поля...

Проектирование радиопередатчиков. Литература, советы.
В качестве дополнительной работы к своей диссертации решил вот проработать...

Проектирование Базы Данных - литература
Подскажите что почитать по проектированию БД. Также использование внешних...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru