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

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

1
как семантическое управление версиями применяется к программам без API
На http://semver.org/, который, по моему мнению, является наиболее широко используемым соглашением при версионировании, рекомендуется увеличивать основной номер версии, когда вводится изменение, которое нарушает / модифицирует API. Есть два связанных сценария, которые я не вижу, как применять это руководство: Что если мой код не предлагает API? Как мне сделать версию моего …


6
Хранимые процедуры нарушают трехуровневое разделение?
Некоторые мои коллеги говорили мне, что наличие бизнес-логики в хранимых процедурах в базе данных нарушает трехуровневую архитектуру разделения, поскольку база данных относится к уровню данных, тогда как хранимые процедуры - это бизнес-логика. Я думаю, что мир был бы очень мрачным местом без хранимых процедур. Действительно ли они нарушают трехуровневое разделение?

10
Были ли первые ассемблеры написаны в машинном коде?
Я читаю книгу «Элементы вычислительных систем: создание современного компьютера из первых принципов» , в которой содержатся проекты, охватывающие сборку компьютера от логических элементов вплоть до приложений высокого уровня (в таком порядке). Текущий проект, над которым я работаю, - это написание ассемблера на языке высокого уровня, который я выбрал, чтобы перевести …

8
Являются ли тесты для разработки через тестирование (TDD) всегда юнит-тестами?
Я понимаю разработку, основанную на тестировании, что вам разрешено писать продуктивный код только при неудачном (красном) модульном тесте. Исходя из этого, у меня возникает вопрос, можно ли применять подход, основанный на тестировании, к другим формам тестов.
41 testing  tdd 

5
Чем спинлок отличается от опроса?
Спинлок и опрос - это одно и то же? Википедия: спин-блокировка - это блокировка, которая заставляет поток, пытающийся получить его, просто ждать в цикле («вращение»), неоднократно проверяя, доступна ли блокировка. Это звучит очень похоже на: while(!ready); Меня учили избегать опросов, когда это было возможно, так как это было неоптимально. Так …
41 locks  kernel  polling 

9
Является ли JS Boolean с пользовательскими свойствами плохой практикой?
В JS вы можете вернуть логическое значение, имеющее пользовательские свойства. Например. когда Modernizr проверяет поддержку видео, он возвращает trueили, falseно возвращенное логическое значение (Bool является объектом первого класса в JS), имеет свойства, определяющие, какие форматы поддерживаются. Сначала это меня немного удивило, но потом мне стала нравиться эта идея, и я …

6
Почему мы используем слово «спринт»?
Одним из основополагающих принципов Agile Manifesto является Гибкие процессы способствуют устойчивому развитию. Спонсоры, разработчики и пользователи должны иметь возможность поддерживать постоянный темп на неопределенный срок. Команды Scrum используют термин « спринт» для обозначения рабочего цикла (также известного как итерация). Однако это не имеет смысла для меня. Согласно Google спринт это: …

6
Почему бы не вернуть даты в виде строки из базы данных?
В типичном веб-приложении даты извлекаются из слоя базы данных, строго типизированного (например, в c # как System.DateTime в противоположность System.String). Когда дату необходимо выразить в виде строки (например, отображаемой на странице), преобразование из DateTime в строку выполняется на уровне представления. Почему это? Почему плохо конвертировать DateTime в строку на уровне …

13
Разумно ли ожидать, что Any () * not * выдаст исключение нулевой ссылки?
Когда вы создаете метод расширения, вы, конечно, можете вызывать его в null.But, но в отличие от вызова метода экземпляра, для вызова его в null не нужно бросать NullReferenceException-> вы должны проверять и выбрасывать его вручную. Для реализации метода расширения Linq Any()Microsoft решила, что они должны добавить ArgumentNullException( https://github.com/dotnet/corefx/blob/master/src/System.Linq/src/System/Linq/AnyAll.cs ). Меня …

7
Имеет ли смысл использовать сервер базы данных, если приложение работает только локально?
Я видел некоторые приложения, которые в основном являются прикладными программами, которые работают локально по отношению к системе (поэтому они не имеют большой связи по сети). Эти приложения, похоже, зависят от серверов баз данных для хранения своих данных. Примером приложения является Amarok (популярный музыкальный проигрыватель в Linux). Я не знаю, делают …

5
Кто-нибудь еще чувствует, что Scrum не проворен?
Я большой поклонник гибкой разработки и несколько лет назад использовал XP в очень успешном проекте. Мне понравилось все в этом, итеративный подход к разработке, написание кода вокруг теста, парное программирование, наличие клиента на месте, чтобы он мог управлять всем. Это была очень продуктивная рабочая среда, и я никогда не чувствовал, …
41 agile  scrum 

6
Как правильно работать с графическим дизайнером? [закрыто]
Недавно мы работали с графическим дизайнером (по согласованию с клиентом), чтобы обеспечить обложку для приложения Django + Bootstrap, которое мы создали. Дизайнер предоставил серию статических изображений нового макета вместе с документом, описывающим некоторые технические атрибуты (размеры шрифта, цвета, несколько размеров и т. Д.). Это оказалось невероятно трудоемким для реализации этого. …

6
«Я», «Мы» или Ни в документации кода
Я пишу (надеюсь) полезные комментарии в кодовой (C ++) документации типа: The reason we are doing this is... Причина, по которой я использую «мы» вместо «я», заключается в том, что я много пишу в академической среде, где «мы» часто предпочитают. Итак, вот вопрос. Есть ли веская причина отдавать предпочтение одному …

3
Должен ли я использовать файл конфигурации или базу данных для хранения бизнес-правил?
Недавно я читал Прагматичного Программиста, который заявляет, что: Детали портят наш первозданный код, особенно если они часто меняются. Каждый раз, когда нам приходится заходить и изменять код, чтобы приспособиться к некоторым изменениям в бизнес-логике, или в законодательстве, или в личных вкусах руководства дня, мы рискуем сломать систему - ввести новую …

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