Проектирование информационных систем на сайте Игоря Гаршина. Разработка ПО (original) (raw)
Проектирование информационных систем
КПД команды программистов — как у паровоза Черепановых: все пыхтят и создают работу друг для друга. Полезный выход — 2%. |
---|
Разделы страницы о стадиях ЖЦП:
- Жизненный цикл программы (ЖЦП)
- Разработка концепции системы
- Техническое задание (спецификация системы)
- Другие проектные документы
- Методы проектирования
- Литература по составлению технического задания
Жизненный цикл программы (ЖЦП)
Этапы ЖЦП:
- Допроектное обследование предметной области и составление ТЗ:
- Бизнес-обследование предметной области, включая системное обследование ИС и средств автоматизауии. Входные документы: диктофонные записи интервью, руководящие документы компании (с глоссарием предметной области)
- Бизнес-моделирование (схематическое описание и согласование бизнес-процессов компании)
- Разработка и согласование Концепции системы
- Составление и согласование с Заказчиком Технического задания (ТЗ)
- Проектирование и разработка:
- Разработка проектных документов (модели данных, потоков, пользовательского интерфейса, основных алгоритмов...)
- Кодирование (программирование) и генерация БД
- Тестирование
- Отладка
- Документирование
- Работа с готовым продуктом:
- Внедрение
- Сопровождение (консультации и модификации)
Ссылки и книги о ЖЦП:
Разработка концепции системы
Ковыляющий по прямой дороге опередит бегущего, который сбился с пути. (Фрэнсис Бэкон)
- Концепция объектно-ориентированной глобальной ГИС. Коллективная работа, архитектор - Игорь Гаршин. [Zip]
Техническое задание (спецификация системы)
Без внятного ТЗ получишь результат ХЗ.
Рекомендации по составлению спецификаций
- IEEE Std 830-1993 . Рекомендации по разработке спецификаций требований программного обеспечения. [Pdf, 700К] (Переведено на русский моими друзьями и коллегами Владимиром Ведмедским и Сергеем Козловым)
Примеры ТЗ и спецификаций
- Заготовка ТЗ. [Zip] (И.К. Гаршин.)
Другие проектные документы
Опыт проектировщиков ПО
Последние 10% работы перед запуском проекта требуют столько же энергии, как и первые 90%. (Роб Калин, со-основатель Etsy)
- .
"Рыбы" и шаблоны документов
- Шаблон проектного документа. [Zip] (И. К. Гаршин)
Методы проектирования
Делайте каждую деталь идеальной. Ограничивайтесь минимумом деталей. (Джэк Дорсей, со-основатель Twitter)
Объектно-ориентированное проектирование
Принципы объектно-ориентированного дизайна:
- Изящество всегда вознаграждается.
- Сначала заставь работать, потом ускоряй.
- Помните принцип «Разделяй и властвуй».
- Отделите создателя класса, от его пользователя (программиста-клиента).
- Когда создаете класс, постарайтесь использовать такие имена, чтобы комментарии не понадобились.
- Анализ и дизайн должны определить, как минимум, классы вашей системы, их открытые интерфейсы и их отношения с другими классами, в особенности — базовыми.
- Автоматизируйте все.
- Пишите тестовый код первым (прежде чем написать класс) для того, чтобы проверить, что разработка класса завершена.
- Все проблемы разработки ПО могут быть упрощены добавлением дополнительного уровня концептуального обобщения.
- Обобщение должно иметь значение.
- Делайте классы настолько атомарными, насколько это возможно.
- Следите за длинными списками параметров.
- Не повторяйтесь.
- Следите за операторами switch или цепочками ветвлений if-else.
- С точки зрения дизайна, осмотрите и отделите вещи, которые меняются, от вещей, которые остаются неизменными.
- Не расширяйте базовую функциональность с помощью подклассов.
- Меньшее — это большее.
- Прочтите ваши классы вслух, чтобы убедиться, что они логичны.
- Когда выбираете между наследованием и композицией, спросите себя требуется ли приведение к базовому типу.
- Используйте члены класса для изменения значения и перекрытие методов для изменения поведения.
- Следите за перегрузкой.
- Используйте иерархии исключений, предпочитетльно, производных от специфичных классов исключений в стандартной иерархии Java.
- Иногда помогает простая агрегация.
- Смотрите с точки зрения программиста-клиента и человека, поддерживающего код.
- Остерегайтесь «синдрома гигантских объектов».
- Если надо сделать что-нибудь безобразное, покрайней мере локализуйте безобразие внутри класса.
- Если надо сделать что-нибудь непереносимое, создайте абстракцию для этой задачи и локализуйте ее в классе.
- Объекты не должны просто хранить данные.
- Сперва попробуйте композицию, прежде чем создать новые классы из существующих.
- Используйте наследование и перекрытие методов для выражения разницы в поведении и поля для выражения различий состояний.
- Избегайте несогласованности.
- Избегайте ограничений при наследовании.
- Используйте шаблоны проектирования для уничтожения «голой функциональности».
- Остерегайтесь «аналитического паралича».
- Когда вам кажется, что у вас все проанализировано, разработано или реализовано, проведите сквозной контроль.
Искусство программирования
- Роберт Мартин. Чистая архитектура.
Литература по составлению технического задания
- Алистер Коберн. Современные методы описания функциональных требований к системам. Издательство "Лори", 2002
- Карл И. Вигерс. Разработка требований к программному обеспечению. М.: Издательство-торговый дом «Русская Редакция», 2004
- Элизабет Халл. Разработка и управление требованиями. Практическое руководство пользователя. 2005
- Структурный анализ при разработке программного обеспечения систем реального времени. Учебное пособие. Апатиты. 1997
- Сергей Орлик, Юрий Булуй. Программная инженерия Программные требования (Software Requirements). SWEBOK®, 2004
На правах рекламы (см. условия):
[an error occurred while processing this directive]
Ключевые слова для поиска сведений о процессе разработки ПО и жизненным цикле программ: На русском языке: жизненный цикл программ, разработка программного обеспечения, проектирование информационных систем, концепция системы, Техническое задание, проектные документы, спецификация, ТЗ, ПО; На английском языке: software development, programming design, project specification, IT-projecting. |
Страница обновлена 22.03.2024
| | | | | | | | | | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | | | | | | |