Программная инженерия

Q & A для профессионалов, преподавателей и студентов, работающих в жизненном цикле разработки систем

4
Как класс должен сообщить своим пользователям, какое подмножество методов он реализует?
сценарий Веб-приложение определяет интерфейс пользователя IUserBackendс методами GetUser (UID) CreateUser (UID) deleteUser (UID) setPassword (uid, пароль) ... Различные пользовательские бэкэнды (например, LDAP, SQL, ...) реализуют этот интерфейс, но не каждый бэкэнд может делать все. Например, конкретный сервер LDAP не позволяет этому веб-приложению удалять пользователей. Таким образом, LdapUserBackendкласс, который реализует IUserBackend, …

2
Как избежать дублирования структур данных, когда части приложения написаны на разных языках?
В качестве примера, скажем, вы пишете приложение на Java . Ваше приложение взаимодействует с сервером API, написанным на Python . Сервер Python связывается с базой данных SQL . У вас также есть веб-сайт для вашего приложения, написанный на JavaScript . С 4 разными языками легко в конечном итоге повторить по …

3
Когда новые проекты C должны ориентироваться на очень старые стандарты C (> 20 лет, то есть C89)?
Иногда я вижу крупные, относительно новые проекты с открытым исходным кодом C, нацеленные на очень старые стандарты C, обычно C89. Примером является systemd. У этих проектов есть интеллектуальные люди во главе, поэтому у них, вероятно, есть хорошее обоснование этого решения, о котором я не знаю. Помимо этого преимущества сомнений, почти …
12 c  standards 

2
Стоит ли блокировать строки в моей облачной БД, пока они редактируются пользователем
Я создаю настольное приложение, которое сохраняет данные в облаке. Одна из проблем, с которой я столкнулся, - это начать редактирование элемента в приложении и на некоторое время оставить его, что приведет к устареванию данных. Очевидно, это также может произойти, если 2 человека пытаются редактировать один и тот же элемент одновременно. …

5
Полезно ли мини-рефакторинг кода в надежде улучшить качество, или это просто «перемещение кода» без особой выгоды?
пример Я натолкнулся на монолитный код, который делает «все» в одном месте - загружает данные из базы данных, показывает разметку HTML, действует как маршрутизатор / контроллер / действие. Я начал применять SRP, перемещая код базы данных в собственный файл, обеспечивая лучшее именование вещей, и все это выглядело хорошо, но потом …


1
Что означает «синтаксический уксус»
Я читал Groovy в действии, второе издание и на сноске, я нашел следующий текст Java выливает «синтаксический уксус» на такую ​​конструкцию, чтобы отговорить программистов от ее использования. Что означает термин syntax vinegarздесь? Я никогда раньше не слышал об этом термине и искал в DuckDuckGo и Google, но не смог найти …
12 java  syntax  groovy 

1
Почему семафор называется семафором?
Мне не кажется, что железнодорожный семафор описывает семафор лучше, чем любой другой общий объект сигнализации, такой как флаг или стоп-сигнал. Даже что-то вроде связки ключей (люди снимают ключи с ринга, чтобы получить доступ к заблокированным ресурсам, а затем возвращают их, когда они закончат), является более информативным. Так почему семафор называется …
12 semaphore 

5
Запретить вызовы произвольных функций / классов во внешнем коде
Я сталкивался с случаями, когда было бы полезно ограничить доступ к API внешних библиотек и сред для предотвращения негативных последствий в системе. Например, в приложении SharePoint может показаться естественным вызывать spList.Items.GetItemByIdэлемент списка, даже если он находится в цикле, не осознавая, что это может привести к огромным проблемам с производительностью. Возможно …

5
сколько ядер я должен использовать для расчетов? #cores или #cores -1?
У меня есть большой расчет, чтобы сделать. Хотя я могу использовать все ядра, я подумал, есть ли какая-то причина, чтобы оставить 1 ядро ​​и не использовать его? (расчетный процессор только без ввода-вывода). Или я недооцениваю ОС, которую она не знает, чтобы справиться и правильно переключить контекст, даже если я использую …

3
Каков общий способ обработки видимости в библиотеках?
Этот вопрос о том, когда использовать приватный, а когда использовать защищенный в классах, заставил меня задуматься. (Я распространю этот вопрос также на окончательные классы и методы, так как он связан. Я программирую на Java, но я думаю, что это актуально для каждого языка ООП) Принятый ответ говорит: Хорошее практическое правило: …

2
Компиляторы как Javac автоматически обнаруживают чистые функции и распараллеливают их?
Известно, что чистые функции облегчают парелелизацию. Что такого в функциональном программировании, которое делает его по сути адаптированным для параллельного выполнения? Являются ли такие компиляторы, как Javac, достаточно умными, чтобы определить, когда метод является чистой функцией? Всегда можно реализовать классы, которые реализуют функциональные интерфейсы, такие как Function , но имеют побочные …

5
Как Agile может применяться к приложениям, связанным со сложной обработкой?
Кажется, что большая часть литературы по agile ориентирована на бизнес-приложения типа CRUD, где пользователь в значительной степени осведомлен о том, что происходит за кулисами. (Это нормально, потому что большая часть написанного кода, вероятно, принадлежит этому классу.) Для этого типа приложений связь между пользовательскими историями (требованиями) и задачами разработки в основном …

2
Видит ли файловая система запоминающее устройство как (очень большой) байтовый массив?
Я хочу знать, как файловая система записывает и читает с устройства хранения. Я думаю, вот как это работает: Файловая система не имеет прямого доступа к устройству хранения, но устройство хранения (драйвером устройства хранения) представляется файловой системе в виде (очень большого) байтового массива. Например, если файловая система хочет получить доступ к …

2
Как протестировать и протестировать реализации мьютекса
Как видно из заголовка: как правильно тестировать и тестировать различные реализации мьютексов в c ++? По сути, я написал свой собственный класс, похожий на std :: mutex, для проекта, работающего на 2 ядрах, armv7, с целью минимизировать накладные расходы в неоспоримом случае. Сейчас я рассматриваю возможность использования указанного мьютекса в …
12 c++  testing  mutex 

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.