Постараюсь быть последовательным. Итак, что же такое проектирование?
Проектирование программного обеспечения - этап жизненного цикла программного обеспечения, во время которого исследуется структура и взаимосвязи элементов разрабатываемой системы. Результатом этого этапа является проект, содержащий достаточное количество информации для реализации системы. Различают проектирование архитектуры системы и детальное проектирование программных модулей.
Ключевым моментом здесь является "
этап жизненного цикла программного обеспечения". То есть, для того, чтобы лучше понять смысл проектирования, нужно определить его местоположение в жизненном цикле ПО:
Жизненный цикл программного обеспечения - период разработки и эксплуатации программного обеспечения, в котором обычно выделяют этапы:
-1- возникновение и исследование идеи;
-2- анализ требований и проектирование;
-3- программирование;
-4- тестирование и отладка;
-5- ввод программы в действие;
-6- эксплуатация и сопровождение;
-7- завершение эксплуатации.
Для того, чтобы приступить к проектированию, необходимо сначала получить результаты анализа требований к будущей системе - они определят основные системные компоненты и их взаимосвязь - структуру системы, которую для наглядности принято изображать в виде диаграмм:
Диаграммы компонентов.
Диаграммы компонентов отображают компоненты программного обеспечения и сущности, из которых они возникли.Диаграммы взаимодействий.
Диаграммы взаимодействий показывают взаимодействия между объектами, участвующими в конкретной ситуации. Диаграммы взаимодействий наиболее удачно подходят для отображения процесса работы программы или какой-либо ситуации, а также является лучшим типом диаграмм для демонстрации или объяснения какого-либо процесса в логике программы.Это неполный список диаграмм; достаточный для абстрактного представления структуры системы, но не
содержащий достаточное количество информации для реализации системы. Полный список определён стандартом унифицированного языка моделирования (UML). -Это такой объём информации, который достаточен для кодогенерации системы, при заданных требованиях (Пункт 2 Жизненного цикла ПО).
Хотя, для проектирования UML необязателен, и легко может быть заменён любым языком моделирования, покрывающим предметную область, но:
UML был создан для определения, визуализации, проектирования и документирования программных систем.
..и принимается стандартом моделирования среди более 800 компаний, среди которых: Acer, Cisco, HP, American Airlines, Hitachi, IBM, Siemens, Microsoft Sun, Sybase, Boeing, EDS, Ericsson, Netscape, Nokia, Ford Motor, Oracle и ряд других.
Хотя, можно разработать и свой подход: менее громоздкий и более подходящий теме ОС, чем UML. Но прежде следует задуматься о предшествующих проектированию этапах. После того, как будут поставлены и решены главные вопросы (цели написания ОС, основные требования и их анализ), вопрос с выбором языка моделирования не заставит себя долго ждать...
От тех, кому интересна данная тема жду столь же развёрнутого ответа. А всякие "личные опыты", околотемный флуд и прочую отсебятину прошу не предлагать - есть достоверные и авторитетные источники. Есть идея: загуглили, нашли, привели цитату. Всё, пора спать.