Московский государственный университет имени М.В.Ломоносова
Опубликован: 18.09.2006 | Доступ: свободный | Студентов: 0 / 0 | Оценка: 4.32 / 3.36 | Длительность: 27:14:00
ISBN: 978-5-9556-0067-3
Лекция 2:

Жизненный цикл и процессы разработки ПО

< Лекция 1 || Лекция 2: 1234 || Лекция 3 >
Аннотация: Вводятся понятия жизненного цикла ПО и технологических процессов его разработки. Рассматриваются различные способы организации жизненного цикла ПО, каскадные и итеративные модели жизненного цикла, а также набор стандартов, регулирующих процессы разработки ПО в целом.

Понятие жизненного цикла ПО

В первой лекции говорилось о том, что сложную программную систему построить "простыми" методами невозможно. Ее разработка с неизбежностью будет тоже сложной деятельностью.

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

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

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

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

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

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

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

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

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

Жизненный цикл ПО является составной частью жизненного цикла программно-аппаратной системы, в которую это ПО входит. Поэтому часто различные его аспекты рассматриваются в связи с элементами жизненного цикла системы в целом.

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

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

< Лекция 1 || Лекция 2: 1234 || Лекция 3 >
Владислав Нагорный
Владислав Нагорный

Подскажите, пожалуйста, планируете ли вы возобновление программ высшего образования? Если да, есть ли какие-то примерные сроки?

Спасибо!

Лариса Парфенова
Лариса Парфенова

1) Можно ли экстерном получить второе высшее образование "Программная инженерия" ?

2) Трудоустраиваете ли Вы выпускников?

3) Можно ли с Вашим дипломом поступить в аспирантуру?

 


( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.7212103404752watchdog( )../bootstrap.inc:0
23.7215103407192module_invoke( )../bootstrap.inc:967
33.7215103409048call_user_func_array ( )../module.inc:462
43.7215103409384devel_watchdog( )../module.inc:462
53.7216103410232decode_entities( )../devel.module:382
63.7216103412152drupal_error_handler( )../devel.module:340
73.7216103415760watchdog( )../common.inc:663
83.7217103417800module_invoke( )../bootstrap.inc:967
93.7217103419656call_user_func_array ( )../module.inc:462
103.7217103419992devel_watchdog( )../module.inc:462
113.7217103420688decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.7212103404752watchdog( )../bootstrap.inc:0
23.7215103407192module_invoke( )../bootstrap.inc:967
33.7215103409048call_user_func_array ( )../module.inc:462
43.7215103409384devel_watchdog( )../module.inc:462
53.7216103410232decode_entities( )../devel.module:382
63.7216103412152drupal_error_handler( )../devel.module:340
73.7216103415760watchdog( )../common.inc:663
83.7217103417800module_invoke( )../bootstrap.inc:967
93.7217103419656call_user_func_array ( )../module.inc:462
103.7217103419992devel_watchdog( )../module.inc:462
113.7217103420688decode_entities( )../devel.module:382

( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.7212103404752watchdog( )../bootstrap.inc:0
23.7215103407192module_invoke( )../bootstrap.inc:967
33.7215103409048call_user_func_array ( )../module.inc:462
43.7215103409384devel_watchdog( )../module.inc:462
53.7216103410232decode_entities( )../devel.module:382
63.7223103412344drupal_error_handler( )../devel.module:340
73.7223103416032watchdog( )../common.inc:663
83.7223103418072module_invoke( )../bootstrap.inc:967
93.7223103419928call_user_func_array ( )../module.inc:462
103.7223103420264devel_watchdog( )../module.inc:462
113.7224103421040decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.7212103404752watchdog( )../bootstrap.inc:0
23.7215103407192module_invoke( )../bootstrap.inc:967
33.7215103409048call_user_func_array ( )../module.inc:462
43.7215103409384devel_watchdog( )../module.inc:462
53.7216103410232decode_entities( )../devel.module:382
63.7223103412344drupal_error_handler( )../devel.module:340
73.7223103416032watchdog( )../common.inc:663
83.7223103418072module_invoke( )../bootstrap.inc:967
93.7223103419928call_user_func_array ( )../module.inc:462
103.7223103420264devel_watchdog( )../module.inc:462
113.7224103421040decode_entities( )../devel.module:382

( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.7229103405296watchdog( )../bootstrap.inc:0
23.7229103407336module_invoke( )../bootstrap.inc:967
33.7229103409192call_user_func_array ( )../module.inc:462
43.7229103409528devel_watchdog( )../module.inc:462
53.7229103410232decode_entities( )../devel.module:382
63.7229103412152drupal_error_handler( )../devel.module:340
73.7230103415760watchdog( )../common.inc:663
83.7230103417800module_invoke( )../bootstrap.inc:967
93.7230103419656call_user_func_array ( )../module.inc:462
103.7230103419992devel_watchdog( )../module.inc:462
113.7230103420688decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.7229103405296watchdog( )../bootstrap.inc:0
23.7229103407336module_invoke( )../bootstrap.inc:967
33.7229103409192call_user_func_array ( )../module.inc:462
43.7229103409528devel_watchdog( )../module.inc:462
53.7229103410232decode_entities( )../devel.module:382
63.7229103412152drupal_error_handler( )../devel.module:340
73.7230103415760watchdog( )../common.inc:663
83.7230103417800module_invoke( )../bootstrap.inc:967
93.7230103419656call_user_func_array ( )../module.inc:462
103.7230103419992devel_watchdog( )../module.inc:462
113.7230103420688decode_entities( )../devel.module:382

( ! ) Warning: include_once(./includes/unicode.entities.inc) [<a href='function.include-once'>function.include-once</a>]: failed to open stream: No such file or directory in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.7229103405296watchdog( )../bootstrap.inc:0
23.7229103407336module_invoke( )../bootstrap.inc:967
33.7229103409192call_user_func_array ( )../module.inc:462
43.7229103409528devel_watchdog( )../module.inc:462
53.7229103410232decode_entities( )../devel.module:382
63.7235103412344drupal_error_handler( )../devel.module:340
73.7235103416032watchdog( )../common.inc:663
83.7235103418072module_invoke( )../bootstrap.inc:967
93.7235103419928call_user_func_array ( )../module.inc:462
103.7235103420264devel_watchdog( )../module.inc:462
113.7236103421040decode_entities( )../devel.module:382

( ! ) Warning: include_once() [<a href='function.include'>function.include</a>]: Failed opening './includes/unicode.entities.inc' for inclusion (include_path='.:/usr/local/zend/var/libraries/Zend_Framework_1/default/library:/usr/local/zend/share/pear') in /.2/var_www_new.intuit.ru/htdocs/includes/unicode.inc on line 340
Call Stack
#TimeMemoryFunctionLocation
13.7229103405296watchdog( )../bootstrap.inc:0
23.7229103407336module_invoke( )../bootstrap.inc:967
33.7229103409192call_user_func_array ( )../module.inc:462
43.7229103409528devel_watchdog( )../module.inc:462
53.7229103410232decode_entities( )../devel.module:382
63.7235103412344drupal_error_handler( )../devel.module:340
73.7235103416032watchdog( )../common.inc:663
83.7235103418072module_invoke( )../bootstrap.inc:967
93.7235103419928call_user_func_array ( )../module.inc:462
103.7235103420264devel_watchdog( )../module.inc:462
113.7236103421040decode_entities( )../devel.module:382