Нефункциональные свойства кода
Функциональные свойства кода
У программ есть очевидное свойство: “работает правильно или нет”. Но на этом все не заканчивается!
На самом деле даже “работает правильно” состоит из нескольких факторов:
- работает правильно на любых допустимых входных данных или только на некоторых?
- делает ли что-то разумное на недопустимых входных данных?
- как быстро программа выполняет свою работу и как много работы выполняет в единицу времени? (производительность; иногда даже ее относят к нефункциональным свойствам)
Нефункциональные свойства кода
А кроме правильной и быстрой работы, у программного кода есть еще свойства, совсем не связанные с его поведением (функциональностью), например:
- понятность
- удобство для тестирования
- удобство для поиска (“грепаемость”)
- пригодность к будущим изменениям
- хрупкость или ее противоположность;
(про это есть отдельная заметка)
И что с этим делать?
В учебных заданиях нефункциональные свойства кода обычно не очень важны. В промышленной разработке ПО – наоборот, важны очень. Как минимум, стоит обращать на них внимание и задумываться о том, что делает код понятным, тестируемым и т.д.
Ссылки
Связанные заметки на SiliciumC
Внешние ссылки
- https://en.wikipedia.org/wiki/Non-functional_requirement – Википедия про нефункциональные требования к системам (англ.)