И. Соммервилл - Инженерия программного обеспечения (1133538), страница 8
Текст из файла (страница 8)
Однако я нахожу такой подход слишком абстрактным и трудным для "привязки" к моей повседневной практике. Я отдаю предпочтение более практичному подходу, реализованному в кодексах поведения и профессиональной деятельности. Я думаю, что этические проблемы лучше обсуждать в практическом контексте инженерии программного обеспе- 32 кХасть 1. Инженерия программного обеспечения: обзор чення, а не как субъекты абстрактных общих прав человека. Поэтому в данной книге я не касаюсь абстрактных этических дискуссий, но там, где это возможно, привожу примеры нз реальной жизни, которые могут служить основой для дальнейшего обсуждения.
.м.'вкчйэкщмут.'фффк4$:„йоВйбагяйф„:.~бдя Й~~',Х'-',=.'."нч ~.:;~у~у =''~,:.'б',.;1'-'-::."г,'-'т со-::;:-, ~::;;,(~фну11'.:,-д -'':'- '.-'.::КлюФеВые пОнЯтИЯ;": '-"-:- '.-':-..':,-:;-".::":;,.".",'"':.„',,'. ',;,.е' -'-'-:ИНФЕйэарвр',рррцтаызтбйрГб:дбЕднаЧЕийя",„-'„',ЙтпэИНдайатрНй~дИСцвйянкиг»; ПттюрЗЯОХВатыойщт'.,'ЕСЕАС-. ' ° ',,САЗЕ-средстай- эго программнэые системы, 'йргедсназначэегйаге для пэоэдде$икй йроцессоа созда- ' ния ПО, та~и~ как'редакптроазййе диаг1нмм,мбдшюй проаерка нх непротннграчиайст«и отсле""Я зжияанюе процесса йстироютния прогршэм-.'.-'."'.",= .'": бкзгт"":" " ':гзггг """- '-.-'"'.т.='-'г"'-,эн.";-'.!с:-:П ° ',", специалисты по".йропнммгюму обеспеченйюь гнгмнот"обязатьельэстад'"перед "св6ей'прбфешсйей,.и" 'з-'ьт '"общестеом, юйорэью йй сидятсятблькоутекничесюгмчаопросагй,':ъ:: ж:, ":,: '-',-::-."е% ФЙ~!~-: .
' ° "," Профессиональныеьсообщеспщ',опубликовали Кодэею"'зттпщм'и'профессионалтмшюс'й=дпеьятжельйбстьй,' '" который устанавливает правила йоведеншг для" спецнплйстое по'программному Обеспеченив." Упражнения 1.1. На основе схем структуры затрат на создание ПО, предстаяленных е разделе 1.1.7, объясните, почему затраты на первоначальное обдумывание и обсуждение создаваемой программной системы могут прееосходить стоимость продаваемых программ. 1.2. Назовите четыре основные характеристики, которыми должен обладать любой программный продукт. Предложите четыре другие характеристики, которые также существенны для программных систем. 1.3. Каково различие между моделью процесса создания ПО и самим процессом? Приведите дае ситуации, когда и>дель процесса создания ПО может быть полезной я определении возможных этапов совершенствования программного продукта.
1.4. Методы инженерии программного обеспечения широко используют САЗЕ-технологии для поддержки процесса создания ПО. Назовите пять зтапоа процесса разработки ПО, где находят применение САЗЕ-средства. 1.З, Помимо проблем наследоезния ранее созданного ПО, возрастающей разнородности программных систем и проблемы, порожденной требоеанием уменьшения времени на создание ПО, назовите другие проблемы, также стоящие перед инженерией ПО. 1.б.
Обсудите вопрос о том, должны ли специалисты по программному обеспечению иметь соответствующие сертификаты, как, например, врачи и юристы. !.7. Для каждой статьи Кодекса этики и профессиональной деятельности приведите соотаетстаующие примеры, иллюстрирующие эти статьи.
а,е .гз оь с т$$ ." 1 ч "'с.я» с,'г.'б тй ьб~ о Системотехника вычислительных систем Пель настоящей главы — дать введение в систеиотехни. ьу вычислительных систем и обьяснить, почему знания в этой области важны для специалистов по программ- ному обеспечениях Прочитав эту главу, вы должны: С3 понимать, почему программное обеспечение все шире применяется в разработках систсмотехники; С1 знать основные интеграционные характеристики систем: безотказность, производительностгь надежность и безопасностьс понимать, почему в процессе разработки систем необходимо учитывать окружение, в котором будет работать система. иметь представление о процессах создания сис.
тем и системного обеспсченил. Г ~Ж гз':" 2П. Интеграционные свойства систем 2.2. Система и ес окружение 2.5. Моделирование систем 2.4. Процесс создания систем 2тгб. Приобретение систем 34 Масть 1, Инженерия программного обеспечения: обзор Системотехника, как технология создания систем, охватывает процессы создания спе. цификаций, проектирования, разработки, тестирования. внедрения и сопровождения систем кпгг единого цееаго.
Системотехник, занимающийся разработкой вычислительных систем, не сосредоточен только па программном обеспечении, он уделяет равное внимание программному обеспечению, аппаратным средствам и средствам взаимодействия с пользователями и системньт| окружением. Ои должен думать о тех функциях, которые будет выполнять система и, собственно, ради которых строится система, а также о взаимодеИствии системы с ес окружением. Специалист по созданию программного обеспечения должен понимать задачи систсмотехники, поскольку возникающие проблемы часто являются результатом решениИ, принятых снстемотехниками. Существует множество самых разнообразных определений понятия "система", от очень абстрактных до чрезвычайно конкретных.
С моей точки зрения, наиболее удачным определением системы будет следующее. Систенп- гто амавуппость взаимодействующих комггоиепвюв, рпботпюгцих совместно для достижения оггределюг и их целей. Это определение охватывает очень широкнИ круг систем. Например, такая простая система, как карандаш. состоит из двух или нескольких "аппаратных" компонентов, в то время как система управления полетамн может состоять из тысяч аппаратных и про. граммных компонентов плюс операторы, которые принимают решения на основе данных, предоставляемых информационными подсистемами.
Определяюгднм признаком системы является то, что свойства и поведение системных компонентов влияют друг на друга чрезвычайно сложным и запутанным образом. Корректное функционирование каждого системного компонента зависит от функционирования многих других компонентов.
Так, операционное обеспечение может выполнять свои функции, если только работаег процессор и соответствующие аппаратные средства. Про. цессор может выполнять вычисления, если только корректно инсталлированы программные системы, задающие эти вычисления. Системы часто имеют иерархическую структуру, т.е.
в качестве компонентов содержат другие системы. Например, компьютерная система полиции содержит географическую информационную систему, которзл предлагает информацию о месте, где случилось или может глучиться какое-либо происшествие. Системы, которые являются компонентами других систем. называются подеиеаигигми Определяющее свойство подсистем заключается в том, что они могут функционировать самостоятельно, независиио от тех систем, в состав которых входят.
Поэтому географическую информационную систему можно использовать также в других системах. Вместе с тем их поведение в составе какоИ-либо конкретной системы зависит, конечно, от взаимодействия с другнии подсистемами. Сложность взаимодействия между системными компонентами означает, что система не сводится просто к сумме ее составных частей. Она имеет определенные свойства, ко. торые присуши ей именно как целостной системе.
Такие иитегрпциоккме евошмюп не могут быть свойствами какой-либо отдельной части системы. Более того, они проявляются то. гда, когда система рассматривается как единое целое. Некоторые из этих свойств можно вывести из аналогичных свойств отдельных подсистем, но чаще они являются комплекс. ным результатом взаимолействия вссх подсистем и их невозможно оценить, исходя иэ анализа отдельных системных компонентов. Приведем примеры интеграционных своИств. 1. Сулогпрный рпзиер сиплемы Это пример интеграционного показателя системы, ко. торый люмио вычислить, исходя только из своИств отдельных компонентов. 2. Систематехникв вычислительных систем Зб 2. Бюоэжазносжь пиэммэс Это свойство зависит от безотказности отдельных компо. нентов и взаимосвязи между ними.
3. 1эабавээ эксэлуаэюиии аиэгекьс Это очень сложное многопараметрическое свойство, которое зависит не только от программного обеспечения и аппаратных средств системы, но также от окружения, в котором эксплуатируется система, и от системныхоператоров. В этой книге основное внимание уделяется вычислительным системам, которые состоят из аппаратных и программных компонентов и, как правило, имеют подсистемы для взаимодействия с человеком.
Специалист по программному обеспечению должен знать систечотехнику вычислительных систем, поскольку здесь программный компонент играет очень важную роль. Например. в 19б9 году длл осущесгвления посадки человека на Луна в про. грамме "Аполлон" использовалось ПО, занимающее всего 10 Мбайт, а ПО космической станции — 100 Мбайт. Таким образом, технологии инженерии программного обеспечения часто лвляются критическим фактором при разработке сложных вычиглительных систем.
2.1. Интеграционные свойства систем Как отмечалось выме, интеграционные свойства систем проявляются только тогда, когда система рассматривается как единое целое. В этом состоит сложность прогнозирования и оценки таких свойств, поскольку иногда можно измерить показатели только подсистем, из которых состоит комплексная система. Существует два типа интеграционных свойств. 1. Функциональные свойства, которые проявллются только тогда, когда система работает как единое целое. Например, велосипед имеет функциональные свойства транспортного средства только тогда, когда собран из своих компонентов. 2. Нефункциональные свойства: безотказность, производительность, безопасность и защищенность (ограничение несанкционированного доступа к системе), которые зависят от поведения системы в операционном окружении.
Такие свойства часто критичны для вычислительных систем, поскольку если они не достигают определенного минимального уровня, то система ие будет работоспособной. Некоторые функции и возможности системы могут быть не востребованы всеми пользователями, так что система может быть работоспособной и без иих. Вместе с тем система, не надежная или не эффективная в своих отдельных функциях, все равно считается бракованной. Чтобы проиллюстрировать сложность в определении интеграционных свойств, рассмотрим такой показатель системы, как безотказность. Это комплексный показатель, ко. торый всегда следует рассматривать на уровне системы, а не ее отдельных компонентов.