Задать вопрос
hudrogen
@hudrogen

Как прокачать навык разработки архитектуры информационной системы?

На курсах по Java, как побочный продукт, создавали систему управления библиотекой.
В пакете models создали классы:
Book - описание книги
BookInstance - описание уникальной книги(В библиотеке может быть много одинаковых книг)
Reader - посетитель библиотеки
Booking - класс описывающий "взятие посетителем книги в аренду"
В пакете library создали класс
Library - в нем создали Set-ы из Book, BookInstance, Reader, Booking ов. Методы добавление книги в библиотеку, выдача книги юзеру и т.д.

Архитектуру такую предложил преподаватель.
Как самому уметь строить такую архитектуру информационных систем и как потом убедиться в правильности выбранной
архитектуры?
  • Вопрос задан
  • 482 просмотра
Подписаться 1 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 5
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Главным инструментом проектирования
программного обеспечения является мозг
человека, хорошо знакомого с принципа-
ми проектирования. Это не технология.

© Крейг Ларман

Проще говоря, это придёт только с опытом.
Ответ написан
Комментировать
@red-barbarian
Получить знания можно из книг. Получить навыки только из опыта.
В частности, сделать архитектуру, получить рабочую модель. Затем внести изменение. Понять сколько времени и сил стоит это изменение. Понять как малейшее изменение может вызвать каскад по всей программе. Понять как изменение в чём-то ломает все на другом конце программы. Почитать что написал через три месяца. Понять почему важно разбивать на модули и правильно наименовать.
Показать другим, понять что писать нужно максимально просто как для человека с топором.
Ну потом можно почитать про SOLID и гибкую разработку. Про TDD. Прочитать шаблоны и зачем они. Если начинать с книг, то риск что шаблоны только усложнят систему.

Архитектура не бывает правильной. Первая цель что бы работала. Вторая легко сопровождалась.
Ответ написан
Комментировать
artemgapchenko
@artemgapchenko
Чтение (Роберт Мартин aka Uncle Bob, Майкл Физерс, Стив Макконнелл, Банда Четырех и так далее), изучение чужого кода и практика. Только так. Можете начать с изучения аббревиатуры SOLID (всё тот же Мартин, книга называется "Быстрая разработка программ. Принципы, примеры, практика") и выбирать литературу дальше, основываясь на сносках в Мартине.

Хотя, если вы на совсем начальном уровне (что подразумевает ваш вопрос), то вам бы в хороший офис года на полтора-два - там привьют начальные представления о хорошем и плохом, заложат фундамент правильных привычек, а дальше можно уже и за литературу браться, как усвоите основы и набьёте свои шишки.
Ответ написан
Комментировать
lxsmkv
@lxsmkv
Test automation engineer
Разбивание предметной области на классы называется декомпозицией.
Почитайте про Domain Driven Design
Хорошая ахтитектура - удобная архитектура, она гибкая, позволяет писать минимум кода. Она позволяет горизонтальное и вертикальное расширение, без конфликтов. Она позволяет писать модульные тесты. Она проста и понятна - обьяснить ее можно на одном листе бумаги за чашкой кофе. Вобщем когда вам ничего не мешает - архитектура хорошая :)
Ответ написан
Комментировать
@jimquery
С примерами на Java есть ещё книга Мартина Фаулера "Архитектура корпоративных программных приложений"
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы