straustrup2 (852740), страница 75

Файл №852740 straustrup2 (Бьерн Страуструп. Язык программирования С++) 75 страницаstraustrup2 (852740) страница 752021-10-05СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 75)

Что бы вы не делали и чем бы не занимались,надо ясно представлять имеющиеся у вас средства, ставить достижимые цели и ориентиры и не искатьтехнических решений социологических проблем. С другой стороны, надо применять только адекватнуютехнологию, даже если она потребует затрат,- люди работают лучше, имея адекватные средства иприемлемую среду. Не заблуждайтесь, думая, что легко выполнить эти рекомендации.11.3.1 Цикл развитияПроцесс развития системы - это итеративная деятельность.

Основной цикл сводится к повторяемым вследующей последовательности шагам:[1]Создать общее описание проекта.[2]Выделить стандартные компоненты.[a] Подогнать компоненты под данный проект.[3]Создать новые стандартные компоненты.[a] Подогнать компоненты под данный проект.[4]Составить уточненное описание проекта.В качестве примера рассмотрим автомобильный завод. Проект должен начинаться с самого общегоописания новой машины. Этот первый шаг базируется на некотором анализе и описании машины всамых общих терминах, которые скорее относятся к предполагаемому использованию, чем кхарактеристикам желаемых возможностей машины. Часто самой трудной частью проекта бывает выборжелаемых возможностей, или, точнее, определение относительно простого критерия выбора желаемыхвозможностей.

Удача здесь, как правило, является результатом работы отдельного проницательногочеловека и часто называется предвидением. Слишком типично как раз отсутствие ясных целей, чтоприводит к неуверенно развивающимся или просто проваливающимся проектам.Итак, допустим необходимо создать машину среднего размера с четырьмя дверцами и достаточномощным мотором. Очевидно, что на первом этапе проекта не следует начинать проектированиемашины (и всех ее компонентов) с нуля. Хотя программист или разработчик программного обеспеченияв подобных обстоятельствах поступит именно так.На первом этапе надо выяснить, какие компоненты доступны на вашем собственном складе и какиеможно получить от надежных поставщиков.

Найденные таким образом компоненты не обязательно вточности подойдут для новой машины. Всегда требуется подгонка компонентов. Может быть дажепотребуется изменить характеристики "следующей версии" выбранных компонентов, чтобы сделать ихпригодными для проекта. Например, может существовать вполне пригодный мотор, вырабатывающийнемного меньшую мощность.Тогда или вы, или поставщик мотора должны предложить, не изменяяобщего описания проекта, в качестве компенсации дополнительный зарядный генератор. Заметим, чтосделать это,"не изменяя общего описания проекта", маловероятно, если только само описание неприспособлено к определенной подгонке.

Обычно подобная подгонка требует кооперации между вами ипоставщиком моторов. Сходные вопросы возникают и у программиста или разработчика программногообеспечения. Здесь подгонку обычно облегчает эффективное использование производных классов. Ноне рассчитывайте провести произвольные расширения в проекте без определенного предвидения иликооперации с создателем таких классов.Когда исчерпается набор подходящих стандартных компонентов, проектировщик машины не спешитзаняться проектированием новых оптимальных компонентов для своей машины. Это было бы слишкомрасточительно. Допустим, что не нашлось подходящего блока кондиционирования воздуха, зато естьсвободное пространство, имеющее форму буквы L, в моторном отсеке. Возможно решение разработатьблок кондиционирования указанной формы. Но вероятность того, что блок подобной странной формыбудет использоваться в машинах другого типа (даже после значительной подгонки), крайне низка.

Этоозначает, что наш проектировщик машины не сможет разделить затраты на производство такого блокас создателями машин другого типа, а значит время жизни этого блока коротко. Поэтому стоитспроектировать блок, который найдет более широкое применение, т.е. разработать разумный проектблока, более приспособленный для подгонки, чем наше L-образное чудище. Возможно, это потребует289Бьерн Страуструп.Язык программирования С++больших усилий, и даже придется для приспособления более универсального блока изменить общееописание проекта машины. Поскольку новый блок разрабатывался для более общего применения, чемнаше L-образное чудище, предположительно, для него потребуется некоторая подгонка, чтобыполностью удовлетворить наши пересмотренные запросы.

Подобная же альтернатива возникает и упрограммиста или разработчика программного обеспечения: вместо того, чтобы создать программу,привязанную к конкретному проекту, разработчик может спроектировать новую достаточноуниверсальную программу, которая будет иметь хорошие шансы стать стандартной в определеннойобласти.Наконец, когда мы прошлись по всем стандартным компонентам, составляется "окончательное" общееописание проекта.

Несколько специально разработанных средств указываются как возможные.Вероятно, в следующем году придется для новой модели повторить наши шаги, и как раз этиспециальные средства придется переделать или выбросить. Как ни печально, но опыт традиционнопроектировавшихся программ показывает, что лишь несколько частей системы можно выделить вотдельные компоненты и лишь несколько из них пригодны вне данного проекта.Мы не пытаемся утверждать, что все разработчики машин действуют столь разумно, как в приведенномпримере, а разработчики программ совершают все указанные ошибки. Утверждается, что указаннаяметодика разработки машин применима и для программного обеспечения.

Так, в этой и следующейглавах даны приемы использования ее для С++. Тем не менее можно сказать, что сама природапрограммирования способствует совершению указанных ошибок ($$12.2.1 и $$12.2.5). В разделе 11.4.3опровергается профессиональное предубеждение против использования описанной здесь моделипроектирования. Заметим, что модель развития программного обеспечения хорошо применима тольков расчете на большие сроки.

Если ваш горизонт сужается до времени выдачи очередной версии, нетсмысла создавать и поддерживать функционирование стандартных компонентов. Это просто приведет кизлишним накладным расходам. Наша модель рассчитана на организации со временем жизни, закоторое проходит несколько проектов, и с размерами, которые позволяют нести дополнительныерасходы и на средства проектирования, программирования, и на сопровождение проектов, и наповышение квалификации разработчиков, программистов и менеджеров. Фактически это эскизнекоторой фабрики по производству программ. Как ни удивительно, она только масштабом отличаетсяот действий лучших программистов, которые для повышения своей производительности в течении летнакапливали запас приемов и методов проектирования, создавали инструменты и библиотеки. Похоже,что большинство организаций просто не умеет воспользоваться достижениями лучших сотрудников, какиз-за отсутствия предвидения, так и по неспособности применить эти достижения в достаточношироком объеме.Все-таки неразумно требовать, чтобы "стандартные компоненты" были стандартными универсально.Существует лишь малое число международных стандартных библиотек, а в своем большинствекомпоненты окажутся стандартными только в пределах страны, отрасли, компании, производственнойцепочки, отдела или области приложения и т.д.

Просто мир слишком велик, чтобы универсальныйстандарт всех компонентов и средств был реальной или желанной целью проекта.11.3.2 Цели проектированияКаковы самые общие цели проектирования? Конечно, простота, но в чем критерий простоты? Посколькумы считаем, что проект должен развиваться во времени, т.е. система будет расширяться, переноситься,настраиваться и, вообще, изменяться массой способов, которые невозможно предусмотреть,необходимо стремиться к такой системе проектирования и реализации, которая была бы простой сучетом, что она будет меняться многими способами. На самом деле, практично допустить, что самитребования к системе будут меняться неоднократно за период от начального проекта до выдачи первойверсии системы.Вывод таков: система должна проектироваться максимально простой при условии, что она будетподвергаться серии изменений.

Мы должны проектировать в расчете на изменения, т.е. стремиться к-гибкости,-расширяемости и-переносимостиЛучшее решение - выделить части системы, которые вероятнее всего будут меняться, в290Бьерн Страуструп.Язык программирования С++самостоятельные единицы, и предоставить программисту или разработчику гибкие возможности длямодификаций таких единиц. Это можно сделать, если выделить ключевые для данной задачи понятия ипредоставить класс, отвечающий за всю информацию, связанную с отдельным понятием (и только сним). Тогда изменение будет затрагивать только определенный класс.

Естественно, такой идеальныйспособ гораздо легче описать, чем воплотить.Рассмотрим пример: в задаче моделирования метеорологических объектов нужно представитьдождевое облако. Как это сделать? У нас нет общего метода изображения облака, поскольку его видзависит от внутреннего состояния облака, а оно может быть задано только самим облаком.Первое решение: пусть облако изображает себя само. Оно подходит для многих ограниченныхприложений. Но оно не является достаточно общим, поскольку существует много способовпредставления облака: детальная картина, набросок очертаний, пиктограмма, карта и т.п. Другимисловами, вид облака определяется как им самим, так и его окружением.Второе решение заключается в том, чтобы предоставить самому облаку для его изображения сведенияо его окружении. Оно годится для большего числа случаев.

Характеристики

Тип файла
PDF-файл
Размер
2,87 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6499
Авторов
на СтудИзбе
303
Средний доход
с одного платного файла
Обучение Подробнее