LINUX.ORG.RU

Программы - не стихи, их надо проектировать, а не писать.

 , , , ,


3

2

Этот пост как спроектировать.... заставил меня вспомнить о замечательном человеке и его статье. Есть такой дедушка, зав. кафедрой в ИТМО - Анатолий Шалыто. Очень толковый препод. И вот его статья «Программы –не стихи, их надо проектировать, а не писать» - http://is.ifmo.ru/main/article_ap.pdf .

Кроме критики сложившейся ситуации с производством ПО, Шалыто даёт ссылки на свои примеры проектирования и показывает почему так делать правильно. Ссылки прямо там в статье. Битых ссылок не встречал.

Вот самые интересные цитаты:

По мнению Шалыто, качество программ, в основном, обеспечивается не итоговым тестированием или верификацией, атем, что на ранних стадиях создания программы заказчик и разработчик однозначно и верно поняли друг друга и согласовали техническое задание.

Бардак с ПО творится почти во всем мире. Если аппаратура проектируется всегда, и только потом производится, то проектная документация на программы на практике выпускается крайнередко. Универсальный язык моделирования (UML), на который одно время у многих были большие надежды, используется далеко не всегда, причем даже в тех случаях, когда он применяется, диаграммы обычно строят одни люди –архитекторы, а другие –программисты в лучшем случае в них заглядывают.

Я считаю, что до того, как начинать программирование системы, необходимо разобраться с ее поведением, ипредлагаю не начинать сразу писать программу, а сначала нарисовать «картинки»–графы переходов, которые опишут поведение будущей программы в терминах состояний, переходов между ними и действий, выполняемых в состояниях и/илипереходах.

К чему это я? Мне хотелось бы узнать, много ли на ЛОРе среди разработчиков моих единомышленников - тех кто солидарен с мыслями изложенными в статье и тоже практикует проектирование ПО перед кодингом. А заодно интересно каким софтом вы пользуетесь для рисования схем, графов, алгоритмов. Может кто-то поделиться своими примерами проектов ПО.

PS, для модераторов. Линукс здесь при том, что:

Простота требует проектирования и хорошего вкуса.

Л. Торвальдс



Последнее исправление: MittenShmitten (всего исправлений: 1)
Ответ на: комментарий от MittenShmitten

Начинаешь с самоуважения

И заканчиваешь дошираком. /fixed

PS: зато не продался в этот ваш интерпрайз!

no-such-file ★★★★★
()

Если аппаратура проектируется всегда, и только потом производится

в наше время производство аппаратуры делается почти так же легко, как написание говнокода.

о каком проектировании / какой аппаратуры речь?

waker ★★★★★
()
Ответ на: комментарий от Shadow

Спасибо тебе, милый человек. От тебя я узнал о такой программе. Это же реальный способ подружить визуалов и текстовиков!

MittenShmitten
() автор топика
Ответ на: комментарий от MittenShmitten

в каком месте «накорябать плату в kicad и отправить китайцам на печать» пересекается с проектированием? чем это корябание отличается от такого же корябанья кода в IDE?

waker ★★★★★
()

Дед в прошлом веке написал прошивку для дизельного генератора. Уже в этом веке в каком-то интервью говорил, что в программировании ничего не понимает. Пусть для начала поработает на крупном современном проекте, а потом учит других.

anonymous
()
Ответ на: комментарий от modest

Эм... куда и зачем?

И что, всё-таки, стало тебе «понятно»?

Miguel ★★★★★
()
Ответ на: комментарий от waker

Гы, ну, например, напроектировать мощный инвертор с высоким кпд/привод асинхронника не так просто. Схемы все известны, но надо думать + кодить не ардуину и не STM32.

Shadow ★★★★★
()

Расскажи своему деду о готовых фреймворках и паттернах под любые распространенные задачи. В крайнем случае запилить свой фреймворк, который задаст тон проекту и макакам его использующие.

Частности можно допроектировать на салфетке, в моём случае использовать планшет с пером. Раньше использовал бумагу с ручкой, но в этом случае макулатуры очень много накапливается. Набрасываешь на экране черновые схемы, ключевые сущности и прокручиваешь в голове до фиксации мозговых нейронов на отзеркаливание в коде.

Еще заметил, что если делать перерыв в кодинге, то утрачивается возможность крутить сложные схемы и процессы в голове. Поэтому тут только практика, чтобы мозг вышел на нужный уровень. Иначе как этот дед будешь только лабораторные студентам в UML рисовать, чтобы мозг не перегрузить кодом.

foror ★★★★★
()
Последнее исправление: foror (всего исправлений: 3)
Ответ на: комментарий от foror

Еще заметил, что если делать перерыв в кодинге, то утрачивается возможность крутить сложные схемы и процессы в голове.

Чтобы не крутить сложные схемы и процессы в голове, люди придумали бумагу, ручки, карандаши. Люди крутят сложные схемы на бумаге и в редакторах схем.

макакам его использующим.

Макакам - макакьи технологии.

MittenShmitten
() автор топика
Ответ на: комментарий от MittenShmitten

Макакам - макакьи технологии.

Ты конечно же сразу с асма начинаешь пилить веб-страничку? Или перед этим пишешь свою ОС и веб-сервер?

Люди крутят сложные схемы на бумаге и в редакторах схем.

Нет, крутят они это в голове, если хватает мозгов. Бумага же помогает по порядку загрузить в нейроны данные или синтезировать новые данные для дальнейшей, последовательной загрузки в мозг. По другому мозг просто не умеет, такая архитектура.

foror ★★★★★
()
Последнее исправление: foror (всего исправлений: 1)
Ответ на: комментарий от kolpakchi

Вы имеете в виду разностные схемы из области численных методов или что-то другое?

Как раз из области численных методов;-)

AntonI ★★★★★
()
Ответ на: комментарий от Miguel

Программисты такие же люди как и все остальные. И картинок в статьях/книжках по программированию не меньше чем в статьях/книжках по другим областям.

AntonI ★★★★★
()

Я в тетрадке рисую свой проект, потом реализация. А как, простите, иначе что-то значительно сложнее хеловорлда можно сделать? Нет, я понимаю что такая практика существует, но у меня в голове не укладывается.

erfea ★★★★★
()
Ответ на: комментарий от ya-betmen

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

TDrive ★★★★★
()
Ответ на: комментарий от erfea

Просто вы нибиряне не можете понять нас людей. Людская жизнь всего ничего каких-то лет 70, по сравнению с тысячелетиями нибирян, единицы из нас могут за жизнь спроектировать что-то одно действительно стоящее.

anonymous
()
Ответ на: комментарий от ya-betmen

пффф, они и без навигатора по тротуарам ездят. ждем запрета на вождение машин людьми, хотя бы на территории городов.

TDrive ★★★★★
()
Ответ на: комментарий от ya-betmen

А программисты должны писать надёжный код без багов.

MittenShmitten
() автор топика
Ответ на: комментарий от TDrive

А ещё можно обвинить преподавателей которые обучали этих людей водить, гаишнеков, которые выписали им права, преподавателей, которые учили их в школе, и т.д.

ya-betmen ★★★★★
()
Ответ на: комментарий от ya-betmen

яндекс в данном случае имеет большее влияние, фактически, а виноватых сам ищи, я не вижу в этом смысла если нет наказания.

TDrive ★★★★★
()
Ответ на: комментарий от TDrive

программисты иногда недооценивают последствия своих ошибок

Знакомая делилась что переехав в израиль устроилась там программером, это еще в 90е. Ну и упала у них какая то база, она ковыряется, поднимает, а ей трубу обрывают - когда, когда? быстрее чини! Она уже не выдержала, грит – Че за пожар та?
– А вы в окно гляньте… у нас ни одна машина в рейс выйти не может.
Смотрит в окно, а там весь двор забит грузовиками. И тут она почувствовала себя как главный герой «Игры Эндера»;-)

Но чуваку который не ту флешку воткнул в разбившуюся ракету (летела с Восточного а прошивку забили для Байконура) было наверное нифига не смешно.

AntonI ★★★★★
()
Ответ на: комментарий от ya-betmen

Не понял, да?

Значит давай разберёмся с определеним термина «ошибка». Применительно к надёжности ПО. Лично я солидарен с определением, которое дал Майерс:

«В программном обеспечении имеется ошибка, если оно не выполняет того, что пользователю разумно от него ожидать. Отказ программного обеспечения - это проявление ошибки в нём.»

Г. Маейрс «Надёжность программного обеспечения», 1980.

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

MittenShmitten
() автор топика

Когда пользователи платят баблом, там софт нормальный. А опенсорс всегда будет кривым и некрасивым, се ля ви.

anonymous
()
Ответ на: комментарий от MittenShmitten

Г. Маейрс «Надёжность программного обеспечения», 1980.

Вот ты опять какого-то деда откопал. Где ты их только находишь?

Разумеется это определение - кал. Пользователи могут быть тупа не правы. Им нужно читать ман, как правильно. Такие дела.

anonymous
()
Ответ на: комментарий от anonymous

А если все же кривой и не красивый, то мало значит платят…

anonymous
()
Ответ на: комментарий от anonymous

Если ты учил в школе или ВУЗе математику, поинтересуйся, сколько лет тем людям, что её придумали. А ты в 2022 году пользуешься математикой. И не только ты.

MittenShmitten
() автор топика
Ответ на: комментарий от Shadow

я усомнился в исходном утверждении, что

аппаратура проектируется всегда, и только потом производится

waker ★★★★★
()
Ответ на: комментарий от MittenShmitten

Я не знаю как корябание пересекается с проектированием. Думаю, что никак.

ну вот. значит дед написал статью, исходя из заранее неверных предубеждений/предположений. поэтому можно смело делать вывод, что и сама статья, вероятно, столь же неверна :)

waker ★★★★★
()
Ответ на: комментарий от MittenShmitten

Математику придумывали не шизоидные деды, и даже в основном не деды. Я про шизоидных же говорю, следи за пальцами хоть чуть-чуть, да?

anonymous
()

вобщем, по теме:

К чему это я? Мне хотелось бы узнать, много ли на ЛОРе среди разработчиков моих единомышленников - тех кто солидарен с мыслями изложенными в статье и тоже практикует проектирование ПО перед кодингом.

сейчас большинство тех-контор практикуют ту или иную разновидность agile, которая подразумевает написание user stories, которые содержат схему взаимодействия пользователя с программой.

а заранее описывать внутри-кодовые взаимодействия - пустая трата времени, т.к. в 99% случаев они в код не впишутся.

waker ★★★★★
()
Ответ на: комментарий от anonymous

Им нужно читать ман, как правильно

Нате, читайте ман: https://docs.microsoft.com/ru-ru/sql/t-sql/functions/isnull-transact-sql?view...

Следующий пример демонстрирует расчет среднего значения веса всех продуктов. Все записи со значением NULL в столбце 50 таблицы Weight заменяются значением Product.

USE AdventureWorks2012;  
GO  
SELECT AVG(ISNULL(Weight, 50))  
FROM Production.Product;  
GO

Чисто случайно сегодня наткнулся. В общем и целом - напоминает состояние документации на «современном крупном проекте».

Toxo2 ★★★★
()
Ответ на: комментарий от MittenShmitten

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

anonymous
()
Ответ на: комментарий от anonymous

Анонимным быдлокодерам привет! Сообщаю: профессиональные программисты тоже земляне и даже ВНЕЗАПНО люди. Кек.

erfea ★★★★★
()
Ответ на: комментарий от MittenShmitten

В программном обеспечении имеется ошибка, если оно не выполняет того, что пользователю разумно от него ожидать

Это, очевидно, некорректное определение. «Разумно» это понятие слишком растяжимое, поэтому ошибкой считается отклонение от заявленного поведения. Яндекс предоставляется на основе пользовательского соглашения, если ты найдешь в этом соглашении пункт, в соответствие с которым яндекс не должен строить маршрут через тротуар я соглашусь, что там ошибка. Пока что это нерелевантный пример.

ya-betmen ★★★★★
()
Ответ на: комментарий от ya-betmen

Разумно - это разумно.

Разумно ожидать от навигатора маршрута, который соответствует ПДД. Не разумно ожидать что навигатор сам отвезёт тебя в точку назначения. Это не растяжимое понятие. Оно может быть субъективным, соглашусь. Но в таком случае посмотри трактовку разумного срока исполнения обязательства, например тут: https://rusjurist.ru/obyazatelstva/ispolnenie_obyazatelstv/chto_takoe_razumnyj_srok_ispolneniya_obyazatelstva/

MittenShmitten
() автор топика
Ответ на: комментарий от MittenShmitten

Тема Ваша, Вам решать. Я бы написал в спецтопик что бы почистили это анонимное чудо, и попросил бы там же закрыть тему от анонимусов. Тема хорошая, жалко - сам он не уймется и все тут загадит своим фонтаном.

И не отвечайте на его комменты, когда их будут сносить Вам тоже скор порежут автоматом.

AntonI ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.