Как создавать реально сложные, гиганские програмные системы?

Тема в разделе "WASM.BOOKS и WASM.BLOGS", создана пользователем systemio, 9 июл 2008.

  1. systemio

    systemio New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2008
    Сообщения:
    98
    подскажите книгу в которой бы реальный чел (из наса, военки, ...) делился своим опытом создания крупных программных систем. Не только аспекты программирования, но и сбор и анализ инфы, требования, инспекции, тесты, управление сложностью, качеством, как проходило внедрение.

    Читаю Совершенный Код - но хотелось бы что нить про реальный успешный проект!
     
  2. driver

    driver New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    302
    Те, кто умеет это делать, занимаются делом, им некогда писать книги. Обратите внимание - книги по программированию "русскоязычных" афторов - как правило сборник надёрганого хрен знает откуда материала, всё очень поверхностно, практической ценности никакой ( есть исключения ). В нашей стране книгоиздательское дело ещё недавно было прибыльнее торговли наркотиками ...( себестоимость книжки 10-30 руб ) щас немножко похужее из-за инета, вот почему они вой поднимают насчёт... вареза..
    В одной книге всего не может быть - это отдельные сущности...
    На ннм кое-что есть... поиск по сайту...
     
  3. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    :)

    Лабы NASA сертифицированы по уровню CMM5 - http://kholeg.spaces.live.com/blog/cns!D006ED9CB32B0F60!152.entry

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

    http://ceh.nasa.gov/webhelpfiles/Software_Estimation.htm
    http://www.hq.nasa.gov/office/codeq/software/docs.htm
    http://satc.gsfc.nasa.gov/assure/assurepage.html
     
  4. halyavin

    halyavin New Member

    Публикаций:
    0
    Регистрация:
    13 май 2005
    Сообщения:
    252
    Адрес:
    Russia
    systemio почитай про экстремальное программирование. А про аспекты программирования можно почитать в книгах по паттернам. Еще можно заглянуть на www.topcoder.com/tc где ежедневно создаются новые программные компоненты и понаблюдать за процессом (см. development и design соревнования).
     
  5. crypto

    crypto Active Member

    Публикаций:
    0
    Регистрация:
    13 дек 2005
    Сообщения:
    2.533
    Оффтоп
    Цитата из блога (см. первую ссылку volodya):
    Интересный факт :) , вопрос о женщинах-программистах на форуме недавно обсуждался.
     
  6. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Оффтоп
    Что то тут женщин не густо;)
     
  7. systemio

    systemio New Member

    Публикаций:
    0
    Регистрация:
    18 мар 2008
    Сообщения:
    98
    Хотелось бы на русском - не хочется тратить время на перевод.
    Первая статья volodya рулит!
     
  8. Monogen

    Monogen New Member

    Публикаций:
    0
    Регистрация:
    5 сен 2008
    Сообщения:
    90
    Я думаю, никаких особых отличий сложных систем от обычных небольших программ нет. Программирование - это не технология, а ремесло, по сути. Поэтому все основано на личном опыте. Сложные системы создают люди имеющие опыт создания таких сложных систем :). Никто закончив институт не сможет сразу наваять что-то сложное, а зачастую и простое. Нужно накопить личный опыт разработки. Причем опыт разработки систем из определенной области. Создавать программы вообще нельзя. Например, нельзя человека разрабатывающего игры посадить писать код для оси: у него мало опыта создания подобных систем. Скорее всего он ничего толкового не напишет. Спроектировать какую-то программу можно, только если ты писал ее уже не раз. Если ты пишешь, например, компилятор в первый раз, то cпроектировать его не получится: нет опыта создания. Придется идти методом проб и ошибок, искать дополнительные сведения, примеры кода. По сути, ты учишься создавать именно этот тип программ. И каждый программист имеет такой уникальный опыт. Кто-то писал драйвера, вирусы, но никогда не писал компиляторы или оси. И, естественно, у такого человека получится спроектировать драйвер или вирус, а компилятор придется учиться писать. Каждая программа уникальна. Если ты решил написать что-нибудь, то, если ты не писал такого еще ни разу, тебе придется идти методом проб и ошибок, то есть учиться делать именно эту программу. Решения принимаемые тобой не всегда будут оптимальны, но тут главное сделать рабочую версию. У создателей крупных программ тоже самое. Если ты думаешь что они просто сели и спроектировали такую систему сразу после института, то ты ошибешься. Они имеют большой опыт разработки именно таких систем. Человек, скорее всего, довольно долго варился в этой теме. Участвовал в разработке подобных вещей. Копил опыт. И однажды сам смог создавать подобные системы. Разумеется код управляющий работой спутника методом проб и ошибок не напишешь :). В этой сфере накоплен большой опыт. Молодые программисты приходят в коллективы где есть это знание и перенимают его. Потому, я думаю, желательно поработать в крупном проекте, если хочешь уметь писать что-то крупное. И определись с областью. Что бы ты хотел создавать.
     
  9. AndreyMust19

    AndreyMust19 New Member

    Публикаций:
    0
    Регистрация:
    20 окт 2008
    Сообщения:
    714
    С божьей помощью и стопудовым терпением.
     
  10. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    systemio
    Макконел "Совершенный код" - не повредит отцу русской демократии :)
     
  11. Dian

    Dian Member

    Публикаций:
    0
    Регистрация:
    19 июн 2008
    Сообщения:
    222
    Вставлю свои 5 копеек :)

    • Экстремальное программирование откровенно непригодно для больших систем,
    и это не моё мнение, а самих разработчиков xp
    • Если исходить из того, что программирование - ремесло, то действительно большую систему построить будет невозможно. Предел будет аккуратно там,
    где заканчиваются возможности такого подхода
    • Если аналогичные системы существуют, то всё уже спроектировано, можно только усовершенствовать. Исходить из того, что для проектирования нужен опыт разработки аналога - заведомо тупиковый путь, да и создать что-то принципиально новое будет сложнее, чем это есть на самом деле.
    Для проектирования очень важен опыт проектирования и некторый класс знаний и навыков. Т.е. сли человек уже писал, скажем, компилятор, но не имеет представление о
    проектировании, ничего путного в проектировании от него ждать не приходится
    • Большие и сверхбольшие системы кардинально отличаются от небольших программ.
    Способность к их разработке актуальна в одну сторону, т.е. человек способный написать небольшую программу вовсе не обязательно справится с системой в 100 раз больше.
    В частности, можно спокойно небольшую программу можно спокойно написать структурно, без использования ООП, а вот большую систему (>200 тыс строк) качественно написать без ООП практически не реально
     
  12. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    Dian
    наскоко я понял и вынь и линь и нек другие системы (я всех не знаю) написаны полностью или практически полностью на С.
    Большие системы практичнее всего писать как набор маленьких и небольших модулей взаимодействующих через строго описаные интерфейсы/протоколы. Чем строже, тем лучше. Как пример можете посмотреть на оберон/блэкбокс.
    Одно только "но". само написание большой системы достаточно тривиально. Непростым в ней является первоначальное продумывание архитектуры, способов взаимодействия между частями (чем проще, тем лучше), расширяеиости, направленности, ограничений, вероятных слабостей. Плохое продумывание как правило приводит к чрезмерной усложненности, запутаности, трудноуловимым внутренним ошибкам, невозможности расширить без частичного или полного переписывания, чрезмерным затратам на написание/сопровождение. Очень большой слабостью будет отсутствие совместимости снизу вверх между версиями (плохое проектирование), а вот возможность апгрейда добавлением/заменой только необходимых частей - большой силой.

    Те написание чего побольше происходит большей частью без компьютера. Для начала надо научиться именно этому.
     
  13. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Dian
    Писали, и неоднократно. Причём зачастую на ассемблере... Так что дело прежде всего в тщательном проектировании, документировании и организации разработки, чем в модных концепциях (даже если они действительно полезны -- а ООП временами полезен, а временами -- не очень).

    _basmp_
    Ну а это фактически и есть то самое проектирование с документированием.