Разработка подсистемы учета гематологических анализов для КДЛ ГБСМП-2

Методология проектирования информационной системы. Обоснование выбора платформы. Определение цели и области действия программного проекта. Структура пооперационного перечня работ. Идентификация задач и действий. Прототипы пользовательского интерфейса.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 30.11.2010
Размер файла 3,8 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

4.5 Оценка размера и возможности повторного использования

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

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

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

Повторное использование может обеспечить прогресс на следующих направлениях:

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

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

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

- совместимость. Должна присутствовать гибкость программного продукта с другими системами, что существенно повысить его качество, то есть программный продукт должен легко совмещаться с другими.

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

При разработке системы средствами СУБД происходит повторное использование модулей и функций системы. Например, при разработке нам ИС «Учет гематологических анализов» было решено повторно использовать функции кнопок, которые мы ранее разработали для других форм (например, авторизация пользователей), только немного подстроив их под новые данные. Это приводит к уменьшению времени разработки.

4.6 Оценка длительности и стоимости разработки проекта

Оценку длительности разработки любого программного продукта можно определить только после того, как будет определен пооперационный перечень работ необходимых для создания и внедрения данного продукта. Перечень необходимых работ для разработки и внедрения ИС «Учет гематологических анализов» был освещен и показан в пункте 4.3 рисунок 4.1. Оценку длительности изображают с помощью диаграммы Ганта. Диаграммы являются графическим средством отображения содержащейся в проектном файле информации. Диаграммы дают визуальное представление о последовательности задач, их относительной длительности и длительности проекта в целом.

Диаграмма Ганта -- это один из наиболее популярных способов графического представления плана проекта, применяемый во многих программах управления проектами.

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

Любой разрабатываемый проект состоит из задач, которые необходимо выполнить для достижения определенного (необходимого) результата. Для того чтобы стало возможным выполнение той или иной задачи необходимо что-либо сделать для этого, то есть затратить какие-либо ресурсы (трудовые, материальные, интеллектуальные) /5/.

Одним из наиболее важных свойств любого ресурса является стоимость (Cost (Затраты)) его использования в проекте. В MS Project выделяется два типа стоимости ресурсов: повременная ставка и стоимость за использование. Повременная ставка (Rate) выражается в стоимости использования ресурса в единицу времени, например 60 рублей в час или 480 рублей в день. Повременная ставка используется для людских, а также для каких-либо материальных ресурсов. В таком случае стоимость участия ресурса в проекте составит время, в течение которого он работает в проекте, умноженное на почасовую ставку. В разработанном мной проекте использовалась повременная ставка (рисунок 4.2) Общие же затраты на использование ресурсов по всему проекту можно увидеть на рисунке 4.3.

Рисунок 4.2 - Повременная ставка в использовании ресурса

Рисунок 4.3 - Общие затраты на использовании ресурсов проекта в третьем проходе

4.7 Распределение ресурсов проекта

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

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

Распределение ресурсов проекта при создании системы «учета гематологических анализов» можно представить в виде перечня представленного на рисунке 4.4.

Рисунок 4.4 - Распределение ресурсов проекта для третьего прохода

4.8 Оценка экономической эффективности проекта

В целом, разрабатываемая ИС и ее отдельные программные модули, не направлены на получение или увеличения прибыли. Заказчиком данного продукта является государственное учреждение, а именно, городская поликлиника. БСМП-2 - учреждение здравоохранения и характеристики его деятельности связаны с социальной сферой. В этом случае, эффективность внедрения системы будет оцениваться с позиции быстроты, удобства и качества оказания услуг.

Для оценки эффективности воспользуемся методом экспертных оценок. Метод расчета в данном случае состоит из нескольких этапов:

ѕ Выделить цели работы системы.

ѕ Определить наборы показателей, характеризующих определенную цель.

ѕ Определить уровень достижения показателя.

ѕ Рассчитать степень достижения каждой цели по выдвинутым показателям.

ѕ Определить весовые коэффициенты целей.

ѕ Рассчитать общий показатель эффективности разрабатываемой информационной системы.

Для оценки эффективности воспользуемся методом экспертных оценок. Метод расчета в данном случае состоит из нескольких этапов:

ѕ Выделить цели работы системы.

ѕ Определить наборы показателей, характеризующих определенную цель.

ѕ Определить уровень достижения показателя.

ѕ Рассчитать степень достижения каждой цели по выдвинутым показателям.

ѕ Определить весовые коэффициенты целей.

ѕ Рассчитать общий показатель эффективности разрабатываемой информационной системы.

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

, (4.1)

где u(gi) - степень достижения цели, баллы;

- значение показателя, баллы;

K - количество показателей.

Весовой коэффициент вычисляется по формуле:

, (4.2)

где - весовой коэффициент, баллы;

Vi - оценка, баллы.

Расчет оценки ведется по формуле:

, (4.3)

где Vi - оценка, баллы;

Rmin - минимальное значение ранга, баллы;

Ri - сумма рангов, баллы.

Для расчета суммы рангов воспользуемся формулой:

, (4.4)

где Ri - сумма рангов, баллы;

ri - значение, выставленное экспертом, баллы;

n - количество экспертов.

При этом проверяется согласованность мнений экспертов путем расчета значения известного коэффициента q Кендала (конкордации), для оценок данных экспертами.

Общий показатель эффективности рассчитывается как:

, (4.5)

где Em - показатель эффективности, баллы;

wi - весовой коэффициент, баллы;

u(gi) - степень достижения цели, баллы.

Теперь, рассмотрев общие положения методики оценки информационной системы перейдем к расчету конкретного показателя эффективности работы ИС.

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

Все это сведем в таблицу (таблица 1).

Таблица 1 - Цели, показатели и уровень достижения работы ИС

Цель

Показатель

Уровень достижения, баллы

Степень достижения целей

g1 - технический уровень

y11 - минимизация количества ошибок при выполнении лабораторных исследований

0,85

0,916666667

y12 - автоматизированный ввод результатов ручных методов исследований

0,9

y13 - автоматизация получения заказов, выдачи результатов и отчетов

1

g2 - коммуникация

y21 - оперативность

0,82

0,86

y22 - удобство использования

0,9

g3 - социальные цели

y31 - улучшение условий труда

0,85

0,88

y32 - внедрение групповых форм работы

0,79

y33 - уменьшение времени выполнения иссле-дований

1

g4 - получение отчетности

y41 - автоматическое получение отчетов

0,9

0,95

y42 - уменьшение объема рутинной работы пер-сонала лаборатории

1

g5 - простота использования

y51 - легко понимаемый интерфейс пользовате-ля

0,95

0,883333333

y52 - возможность поиска

0,8

y53 - возможность сохранения, извлечения и редактирования документов

0,9

Для определения весовых коэффициентов был применен экспертный опрос десяти человек. Список опрошенных приведен в таблице 2.

Таблица 2-Список опрошенных.

ФИО опрошенного

Должность

Романенко Н.А

Зав. лабораторией

Колесникова Н.А.

Старшая медицинская сестра

Наумов Н.П.

Старший лаборант

Солонина Е.А.

Врач

Петрова С.А.

Врач

Шеховцов Д.В.

Врач

Малахина Н.П.

Младший медицинский работник

Токарева И.Р.

Зав. отделением больницы

Игнатенко Е.В.

Сотрудник КДЛ

Понамарева В.С.

Сотрудник КДЛ

Чернова Т.С.

Сотрудник КДЛ

Результаты опроса представлены в таблице 3.

Таблица 3 - Результаты опроса в баллах

Эксперты

Критерии оценки

g1

g2

g3

g4

g5

Э1

4

3

4

1

2

Э2

3

4

5

1

2

Э3

3

4

5

2

1

Э4

5

1

4

2

3

Э5

3

2

5

4

1

Э6

3

5

4

1

2

Э7

3

4

5

2

1

Э8

5

3

4

2

1

Э9

4

3

2

1

5

Э10

3

4

5

2

1

Ранг R

36

33

43

18

19

Ранг минимальный

18

Оценка

0,50

0,55

0,42

1,00

0,95

Общая оценка

3,41

Весовой коэффициент

0,14656621

0,15989041

0,12270659

0,293132

0,27770439

Общий показатель эффективности

0,903184109

Таким образом, можно сказать, что эффективность работы разработанной нами информационной системы по отношению к заданным целям составляет 0 баллов, то есть только на 90% система работает оптимально. Неэффективность работы ИС составляет 10%. На основании представленных результатов можно сделать вывод, что внедрение проекта «Разработка подсистемы учета анализов для информационной системы лабораторного отделения ГБСМП-2» - целесообразно.

Выводы к разделу

В четвертой главе произведено обоснование выбора жизненного цикла информационной системы и выделено, что наиболее оптимальным вариантом технологии проектирования является RAD. Определены цели и область действия ПП, создана структура пооперационного перечня работ (проект создания информационной системы реализован в Microsoft Project). Определены используемые в проекте ресурсы и на последнем этапе проведена оценка эффективности прототипа ИС, которая показала, что внедрение проекта целесообразно.

Заключение

Целью дипломного проекта являлась разработка подсистемы учета гематологических анализов для КДЛ ГБСМП-2 г. Ростова.

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

В первом разделе выполнено бизнес моделирование бизнес-моделирование процессов организации. Построена диаграмма бизнес-вариантов использования представляющая основные направления деятельности врача-лаборанта, лаборанта и лечащего врача лаборатории и построена диаграмма вариантов использования информационной системы.

Проведен анализ требований, предъявляемых пользователями к информационной системе. В процессе формирования требований принимали участие следующие лица: Зав. КДЛ, Врач-лаборант, Лаборант и Лечащие врачи отделений. Осуществлён процесс специфицирования требований. Итогом данного этапа стало выполнение аттестации требований посредством прототипирования.

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

После проектирования интерфейса программы, осуществлено моделирование структуры данных (логическая и физическая модели). Программное средство используемое для создания CASE-средства использовался программный продукт Rational Rose 2000 Enterprise Edition. Был рассмотрен использованный программный инструментарий. В качестве среды разработки программного обеспечения была использована Microsoft Visual Studio 2005 и язык программирования C++.

В третьем разделе дипломного проекта рассмотрена реализация программного продукта и вопросы связанные с реализацией. Реализованы функции и классы взаимодействия с базой данных. Приведены методы и свойства классов. Продемонстрирован фрагментарно исходный код. Так же рассмотрена и продемонстрирована методика взаимодействия приложения с СУБД MS SQL Server 2005. Проведено тестирование программного кода с использованием стандартных средств предоставляемых Microsoft Visual Studio 2005.

В процессе дипломного проектирования осуществлялась деятельность по управления проектом разработки информационной системы. Часть вопросов менеджмента информационного проекта были рассмотрены в четвертом разделе.

В четвертом разделе дипломного проекта определялась цель и область действия программного продукта. Осуществлен выбор модели жизненного цикла процесса разработки по результатам представленным в таблице 4.1 - «Определение оптимальной модели жизненного цикла в баллах». Составлена структура пооперационного перечня работ с использованием пакета управления проектами Microsoft Project 2003, на её основе построен график выполнения работ, приведена диаграмма Ганта. Была рассчитана экономическая эффективность проекта.

По ходу выполнения дипломного проектирования были использованы такие программные продукты как:

- ERWin 4.0;

- MS SQL Server 2005;

- MS Project 2003;

- MS Word 2003;

- MS Excel 2003;

- Rational Rose.

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

Список сокращений

АРМ - автоматизированное рабочее место;

БД - база данных;

ЖЦ - жизненный цикл;

ИС - информационная система

КДЛ - клинико-диагностическая лаборатория;

ЛИС - лабораторная информационная система;

ПО - программное обеспечение;

ПП - программный продукт;

ПК - персональный компьютер;

СУБД - система управления базами данных;

COM - component object model;

OLAP - Online Analytical Processing, система обработки аналитической информации;

SLCM - software life cycle model, модель жизненного цикла;

СПИСОК ИСПОЛЬЗУЕМЫХ ИСТОЧНИКОВ

1. Лабораторные информационные системы - цели установки, основные функции, проблемы выбора и внедрения. [Электронный документ] http://laboratory.rusmedserv.com/laborauto/ Проверен 20.05.08.

2. Лабораторные информационные системы на отечественном рынке. [Электронный документ] http://www.asutp.ru/?p=600629 Проверен 20.05.08.

3. Нуцков, Ю.В., Хиллхауз Б. Интеграция LabWare LIMS и SAP R/3 QM // Мир компьютерной автоматизации. 2003. 4. С. 56-63

4. LabWare LIMS. [Электронный документ] http://www.labanswer.com/solutions/Labware.asp Проверен 20.05.08.

5. Савельев, Е.В. Лабораторно-информационные менеджмент-системы или автоматизация лаборатории "в целом" // Партнеры и конкуренты. 2005. 4. С. 41-43.

6. Меркуленко, Н.Н. LIMS. Современный этап развития // Лабораторные информационные системы LIMS. Сборник статей: ООО "Маркетинг. Информационные технологии". 2006. С. 215-219

7. Терещенко, А.Г., Терещенко О.В., Соколов В.В., Юнусов Р.Ш. АРМ "Химик-аналитик" в системе качества продукции // Материалы международной НПК "Качество-стратегия XXI века". 11-12.11.99. Томск, 1999. С. 71-72

8. ЛИС Химик-аналитик/Краткая информация. [Электронный документ] http://www.chemsoft.ru/index.php?razdel=products&info=small&text1=2&text2=1&tema=c_2 Проверен 20.05.08.

9. Лабораторные информационные системы. [Электронный документ] http://www.intralab.ru Проверен 20.05.08.

10. Точность (правильность и прецизионность) методов и результатов измерений. Государственный стандарт Российской Федерации. [Электронный документ] http://www.labinfo.ru/bibl/knigi/gost/index.htm Проверен 20.05.08.

11. Деятельность клинико-диагностической лаборатории МЛПУ ГБСМП-2 г. Ростов-на-Дону за 2006 год. (Рукописный) - 2007 г. 10 стр.

12. Приказ №183

13. Цимбал А. Технология CORBA для профессионалов. - СПб.: Питер. - 2001. - 624 с.

14. Оберг Р. Технология COM+. Основы и программирование. / Пер. с англ. Уч. пос. - М.: Издательский дом «Вильямс». - 2000. - 480 с.

15. Армстронг Т. ActiveX: создание Web-приложений. К.: BHV. 1998. - 592 с.

16. Чарнецки К. Порождающее программирование: методы, инструменты, применение. Для профессионалов. Пер. с англ. / Чарнецки К., Айзенекер У. - СПб.: Питер. - 2005. - 731 с.

17. Software Engineering Institute. What is Model-Based Software Engineering. [Электронный документ] - www.sei.cmu.edu/mbse/ - 1997. - Проверен 5.06.08.

18. Фатрелл, Т. Управление программными проектами: достижение оптимального качества при минимуме затрат.: Пер. с англ. / Р.Т. Фатрелл, Д.Ф. Шафер, Л.И. Шафер. - М.: Издательский дом "Вильямс", 2003.

19. Вигерс, К. Разработка требований к программному обеспечению.: Пер. с англ. / К. Вигерс.:- М.: Издательско-торговый дом «Русская редакция», 2004

20. Мацяшек, Л. А. Анализ требований и проектирование систем. Разработка информационных систем с использованием UML. / Л. А. Мацяшек. Пер. с англ. - М.: Издательский дом «Вильямс». - 2002.

21. Вендров, А.М. CASE технологии Современные методы и средства проектирования информационных систем. / А.М. Вендров.- М.: Финансы и статистика, 1998. - 193 с.

22. Digital Point - лучший среди равных. Каталог. Acer N311 [Электронный документ] - http://www.pda-digipoint.ru/index.php?productID=91 - 2007. - Проверен 9.05.08.

23. SQL Server General Technical Articles. The Microsoft Data Warehousing Strategy. A Platform for Improved Decision-Making through Easier Data Access and Analysis. MSDN. - 2006.

24. Справочник по Microsoft OLE DB 1.1. / Пер. с англ. - М.: Издательский отдел «Русская редакция» ТОО «Channel Trading Ltd». 1997. - 624 с.

25. Мандел Т. Дизайн интерфейсов: Модели пользовательского интерфейса; Объектно-ориентированные интерфейсы; Этапы разработки интерфейса; Web-интерфейсы. Самоучитель. / Пер. с англ. - М.: ДМК Пресс. 2005. - 425 с.

26. Конноли Т., Бегг К. Базы данных. Проектирование, реализация и сопровождение. Теория и практика. / Конноли Т., Бегг К.: Пер. с англ. - М.: Изд. Дом «Вильямс», 2001. - 1120 с.

27. Дейт, К. Дж. Введение в системы баз данных. / К. Дж. Дейт.: Пер. с англ. - М.: Изд. Дом «Вильямс», 2002. - 1072с.

28. Диго, С.М. Проектирование и использование баз данных. / С.М. Диго. - М.: Финансы и статистика. 1995. - 216с.

29. Когаловский, М.Р. Энциклопедия технологий баз данных / М.Р. Когаловский. - М.: Финансы и статистика, 2002. - 800с.

30. Боггс У., Боггс М. UML и Rational Rose. 2002. / Боггс У., Боггс М. - М.: ЛОРИ. - 2002. - 582 с.

31. Бергер, А. Б. Microsoft SQL Server 2005 Analysis Services. OLAP и многомерный анализ данных / Бергер А. Б., Горбач И. В., Меломед Э. Л. И др. / Под общ. ред. А. Б. Бергера, И. В. Горбач. - СПб.: БХВ-Петербург, 2007. - 928 с.

32. Каленик, А. И. Использование новых возможностей Microsoft SQL Server 2005. - М.: «Русская редакция»; СПб.: «Питер», 2006. - 334 с.

33. Буч Г. Объектно-ориентированный анализ и проектирование. / Буч Г.: Пер. с англ. - М: «Издательство Бином», 1999.

34. Буч Г., Рамбо Д., Джекобсон А. UML - руководство пользователя. / Буч Г., Рамбо Д., Джекобсон А.: Пер с англ. - М: «ДМК», 2001

35. Страуструп, Б. Язык программирования С++, 3-е изд./Пер. с англ. - М.: «Издательство Бином», СПб: «Невский диалект», 1999. - 991 с.

36. Секунов, Н. Самоучитель Visual C++ 6. / Н. Секунов. - СПб: БХВ. - 1999. - 960 с.

37. Шилд Г. Теория и практика С++. - СПб.: BVH-Санкт-Петербург, 1996. - 416 с.

38. Пол А. Объектно-ориентированное программирование на С++. - СПб.; М.: “Невский Диалект” - “Издательство БИНОМ”, 1999. - 462 с.

39. Янг М. Microsoft Visual C++ для профессионалов: Пер. с англ. - К.: ВЕК+, М.: ЭНТРОП, 1997. - 704 с.

40. Трельсен Э. Модель COM и применение ATL 3.0. / Пер. с англ. - СПб: BHV. 2000. - 926 с.

41. Тамрле, Л. Введение в тестирование программного обеспечения. : Пер. с англ.. - М.: Издательский дом "Вильямс", 2003. - 368 с.

42. Ван Тассел Д. Стиль, разработка, эффективность, отладка и испытание программ. - М.: Мир. - 1981

43. Коллинз, Г. Структурные методы разработки систем: от стратегического планирования до тестирования. / Коллинз Г., Блей Дж. Пер. с англ. - М.: Финансы и статистика, 1986. 264 с.

44. Богдатских, В.А. Экономика, разработка и использование программного обеспечения ЭВМ: Учебник. / В.А. Богдатских. - М.: Финансы и статистика, 1995. - 288 с.

45. Корнеев, И.К. Информационные технологии в управлении / И.К Корнеев, В.А. Машурцев . - М.:ИНФРА - М, 2001. - 651 с.

46. Хубаев, Г.Н. Экономическая оценка потребительского качества программных средств: Текст лекций / Г.Н. Хубаев. - РГЭА.: Ростов-на-Дону, 1997. - 94 с.

47. Хубаев, Г.Н. Маркетинг информационных продуктов и услуг: Учебное пособие / Г.Н. Хубаев. - Ростов-на-Дону: Изд-во РГЭУ «РИНХ», 2005. - 224 с

Приложение А Спецификация требований к программному обеспечению

Введение

Назначение

Эта спецификация требований описывает функциональные и нефункциональные требования для подсистемы учета гематологических в КДЛ больницы скорой медицинской помощи. Этот документ предназначен для команды, которая будет реализовывать и проверять корректность работы системы.

Область действия

Областью применения данного программного продукта являются клинико-диагностические лаборатории больниц скорой медицинской помощи.

Данный продукт является подсистемой разрабатываемой лабораторной ИС, обеспечивающей как учет проводимых лабораторных исследований, так и производственные другие процессы клинико-диагностических лабораторий. Данная подсистема позволит производить учет гематологических анализов.

Общее описание

Описание продукта

Данный продукт разрабатывается как набор независимых программных модулей, обеспечивающих:

- подачу заявок на проведение гематологических исследований;

- просмотр результатов анализа;

- регистрация в журнале;

- регистрация анализов;

- расчет формулы.

Разработанные программные модули должны иметь интерфейс взаимодействия с основным программным модулем ЛИС.

Доступ к разработанным модулям может осуществляться только теми категориями пользователей, которые связаны с учетом гематологических анализов по своим должностным инструкциям. Для КДЛ ГБСМП№2 это лаборант, врач-лаборант, зав. лабораторией, лечащие врачи отделений больницы.

Классы и характеристики пользователей

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

Класс пользователей

Описание

Лаборант

Сотрудник КДЛ гематологического отдела

Врач-лаборант

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

Зав. лабораторией

Лицо, отвечающее за функционирование КДЛ в соответствии с функциональными задачами отделения.

Лечащий врач отделения больницы

Лицо, отвечающее за формирование заявки на гематологическое исследование и анализирующее результаты исследования.

Общие ограничения

Операционная среда-1. Минимальные требования к операционной системе - Windows ХР.

Ограничения дизайна и реализации-1. База данных должна быть спроектирована на SQL Server 2005.

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

Документация для пользователей

Документация для пользователей-1. Разрабатывается руководство пользователя.

Специфические требования

Функциональные требования

Требование

Описание

1. Ведение справочников

Изменение справочников

Нормы гематологических анализов

Ввести данные по допустимым нормам компонентов крови .

Типы гематологических анализов

Ввести данные по номенклатуре проводимых лабораторией гематологических анализов для гематологического отдела и клинической экспресс лаборатории

2. Анализы гематологического отдела

Лейкоформула

Подсчет показателей лейкоцитарной формулы с помощью счетчика

Тромбоциты

Подсчет тромбоцитов с помощью счетчика

Миелограмма

Подсчет показателей миелограммы с помощью счетчика

Гематологические анализы

Ввод данных результатов ручных исследований по гематологии

Отчет о результате исследования

Формирование отчета о результатах гематологических исследований

Фиксация заявки на проведение гематологических анализов

Ввод информации о приеме заявки на выполнение гематологического анализа

Требования к внешнему интерфейсу

Интерфейсы пользователя

Интерфейсы пользователя-1. Экраны вывода должны соответствовать общепринятым стандартам.

Интерфейсы пользователя-2. Система должна обеспечивать ссылку на справку на каждой форме, объясняющую, как пользоваться этой формой.

Интерфейсы пользователя-3. Формы должны предоставлять полную возможность навигации и выбор при помощи клавиатуры и мыши.

Требования к системе

Требование

Описание

Архитектура

Сервер данных (MS SQL Server 2005)

Среда разработки

Visual Studio 2005

Язык программирования

С++, sql - запросы

Операционная система

Windows XP

Хранилище данных

MS SQL Server 2005

Требования к производительности

Требования к производительности не определены.

Требования к охране труда

Требования к охране труда не определены.

Требования к безопасности

Требования к безопасности не определены.

Атрибуты качества ПО

Доступность-1. Система должна быть доступна круглосуточно для сохранения результатов исследования как дневных, так и дежурных служб КДЛ.

Надежность-1. Система должна восстанавливать незавершенные отчеты в случае сбоя в сети или системе.

Приложение Б - Прототиты пользовательского интерфейса

Рисунок Б.1 - Пиктографическое меню для подсчета лейкоформулы.

Рисунок Б.2 -.

Рисунок Б.3-

Рисунок Б.4-

Рисунок Б.5-

Рисунок Б.6-

Приложение В - Атрибуты управляющих таблиц проектируемой подсистемы ЛИС

Имя поля

Тип

Значение

Атрибуты таблицы «Единицы измерения»

ID

Числовой

Счетчик

Название

Текстовый

Название ед. измерения

Сокращение

Текстовый

Ед. измерения в сокращенном виде

Порядок

Числовой

Порядок

Атрибуты таблицы «Показатели числовые»

ID

Числовой

Счетчик

Название

Текстовый

Название числового показателя

ID_Анализ

Числовой

Идентификатор анализа

ID_Ед_Измерения

Числовой

Идентификатор ед. измерения

Степень

Текстовый

Порядок

Атрибуты таблицы «Лейкоформула»

ID

Числовой

Счетчик

ID_Заявки

Числовой

Идентификатор заявки

ID_Исследования

Числовой

Идентификатор исследования

Палочкоядерные

Числовой

Количество палочкоядерных

Сегментарные

Числовой

Количество сегментарных

Моноциты

Числовой

Количество моноцитов

Лимфоциты

Числовой

Количество лимфоцитов

Миелоциты

Числовой

Количество миелоцитов

Метамелоциты

Числовой

Количество метамелоцитов

Эозинофилы

Числовой

Количество эозинофилов

Базофилы

Числовой

Количество базофилов

Нормобласты

Числовой

Количество нормобластов

Атрибуты таблицы «Тромбоциты»

ID

Числовой

Счетчик

ID_Заявки

Числовой

Идентификатор заявки

ID_Исследования

Числовой

Идентификатор исследования

Тромбоциты/ретикулоциты

Числовой

Количество тромбоцитов

№ прохода

Числовой

Номер прохода

Эритроциты

Числовой

Количество эритроцитов

Атрибуты таблицы «Миелограмма»

ID

Числовой

Счетчик

ID_Заявки

Числовой

Идентификатор заявки

ID_Исследования

Числовой

Идентификатор исследования

Палочкоядерные

Числовой

Количество палочкоядерных

Сегментарные

Числовой

Количество сегментарных

Моноциты

Числовой

Количество моноцитов

Лимфоциты

Числовой

Количество лимфоцитов

Миелоциты

Числовой

Количество миелоцитов

Метамелоциты

Числовой

Количество метамелоцитов

Эозинофилы

Числовой

Количество эозинофилов

Базофилы

Числовой

Количество базофилов

10

Числовой

Параметр крови

11

Числовой

Параметр крови

12

Числовой

Параметр крови

13

Числовой

Параметр крови

14

Числовой

Параметр крови

15

Числовой

Параметр крови

16

Числовой

Параметр крови

17

Числовой

Параметр крови

18

Числовой

Параметр крови

19

Числовой

Параметр крови

20

Числовой

Параметр крови

21

Числовой

Параметр крови

22

Числовой

Параметр крови

23

Числовой

Параметр крови

24

Числовой

Параметр крови

Приложение Д - Реализация запросов к базе данных

Рисунок Д.1- Реализация запроса «Заявка- анализ»

Рисунок Д.2- Реализация запроса «Отдел-исследование-анализ»

Рисунок Д.3- Реализация запроса «Отдел-анализ»

Приложение Е - Тексты программ

Константы ресурсов

#define IDP_OLE_INIT_FAILED 100

#define IDD_ABOUT 100

#define IDD_FORM 101

#define IDR_MAINFRAME 128

#define IDR_Hematology_CounTYPE 129

#define IDD_FORM_LEIKOFORMULA 132

#define IDD_FORM_TROMBOCITY 133

#define IDD_FORM_MIELOGRAMMA 134

#define IDR_LEIKOFORMULA 136

#define IDR_TROMBOCITY 137

#define IDR_MIELOGRAMMA 138

#define IDR_MIELOGRAMM 138

#define IDC_BUTTON_PERCENT 1004

#define IDC_BUTTON_RESTART 1009

#define IDC_STATIC_PALOCHKOYADERN 1010

#define IDC_STATIC_SEGMEHTARN 1011

#define IDC_STATIC_MONOCIT 1012

#define IDC_STATIC_LIMFOCIT 1013

#define IDC_STATIC_MIELOCIT 1014

#define IDC_STATIC_METAMELOCIT 1015

#define IDC_STATIC_EOZILOFIL 1016

#define IDC_STATIC_BAZOFIL 1017

#define IDC_STATIC_SUM 1018

#define IDC_STATIC_NORMOBLAST 1021

#define IDC_STATIC_9 1022

#define IDC_STATIC_10 1023

#define IDC_STATIC_11 1024

#define IDC_STATIC_12 1025

#define IDC_STATIC_13 1026

#define IDC_STATIC_14 1027

#define IDC_STATIC_15 1028

#define IDC_STATIC_16 1029

#define IDC_STATIC_17 1030

#define IDC_STATIC_18 1031

#define IDC_STATIC_19 1032

#define IDC_STATIC_20 1033

#define IDC_STATIC_21 1034

#define IDC_STATIC_22 1035

#define IDC_STATIC_23 1036

#define IDC_STATIC_24 1037

#define IDC_BUTTON1 1038

#define IDC_EDIT1 1039

#define ID_LEIKOFORMULA_NORMOBLAST 3201

#define ID_LEIKOFORMULA_PALOCHKOYADERN 3202

#define ID_LEIKOFORMULA_SEGMEHTARN 3203

#define ID_LEIKOFORMULA_MONOCIT 3204

#define ID_LEIKOFORMULA_LIMFOCIT 3205

#define ID_LEIKOFORMULA_MIELOCIT 3206

#define ID_LEIKOFORMULA_METAMELOCIT 3207

#define ID_LEIKOFORMULA_EOZILOFIL 3208

#define ID_LEIKOFORMULA_BAZOFIL 3209

#define ID_MIELOGRAMMA_PALOCHKOYADERN 32012

#define ID_MIELOGRAMMA_SEGMEHTARN 32013

#define ID_MIELOGRAMMA_MONOCIT 32014

#define ID_MIELOGRAMMA_LIMFOCIT 32015

#define ID_MIELOGRAMMA_MIELOCIT 32016

#define ID_MIELOGRAMMA_METAMELOCIT 32017

#define ID_MIELOGRAMMA_EOZILOFIL 32018

#define ID_MIELOGRAMMA_BAZOFIL 32019

#define ID_MIELOGRAMMA_9 32020

#define ID_MIELOGRAMMA_10 32021

#define ID_MIELOGRAMMA_11 32022

#define ID_MIELOGRAMMA_12 32023

#define ID_MIELOGRAMMA_13 32024

#define ID_MIELOGRAMMA_14 32025

#define ID_MIELOGRAMMA_15 32026

#define ID_MIELOGRAMMA_16 32027

#define ID_MIELOGRAMMA_17 32028

#define ID_MIELOGRAMMA_18 32029

#define ID_MIELOGRAMMA_19 32030

#define ID_MIELOGRAMMA_20 32031

#define ID_MIELOGRAMMA_21 32032

#define ID_MIELOGRAMMA_22 32033

#define ID_MIELOGRAMMA_23 32034

#define ID_MIELOGRAMMA_24 32035

#define ID_LEIKOFORMULA 32786

#define ID_TROMBOCITY 32787

#define ID_MIELOGRAMMA 32788

#define ID_BUTTON32871 32871

#define ID_PARAMETR 32880

#define ID_PARAMETRES 32881

#define ID_BUTTON32883 32883

#ifdef APSTUDIO_INVOKED

#ifndef APSTUDIO_READONLY_SYMBOLS

#define _APS_NEXT_RESOURCE_VALUE 167

#define _APS_NEXT_COMMAND_VALUE 32884

#define _APS_NEXT_CONTROL_VALUE 1032

#define _APS_NEXT_SYMED_VALUE 101

#endif

#endif

Представление и определение класса CHematology_CounterDoc

#pragma once

#include "Leikoformula.h"

#include "Mielogramma.h"

#include "Trombocity.h"

class CHematology_CounterDoc : public CDocument

{

protected:

CHematology_CounterDoc();

DECLARE_DYNCREATE(CHematology_CounterDoc)

public:

virtual BOOL OnNewDocument();

virtual ~CHematology_CounterDoc();

#ifdef _DEBUG

virtual void AssertValid() const;

virtual void Dump(CDumpContext& dc) const;

#endif

protected:

DECLARE_MESSAGE_MAP()

private:

CView* Get_View() const;

public:

afx_msg void UpdateLeikoformula(UINT ID);

afx_msg void UpdateMielogramma(UINT ID);

afx_msg void OnNormoblast();

afx_msg void OnBnClickedButtonRestart();

afx_msg void OnBnClickedButtonPercent();

afx_msg void OnUndo();

afx_msg void OnFileSave();

CList<int*> Undo;

Data* DATA;

};

Реализация класса CHematology_CounterDoc

#include "stdafx.h"

#include "Hematology_Counter.h"

#include "Hematology_CounterDoc.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

IMPLEMENT_DYNCREATE(CHematology_CounterDoc, CDocument)

BEGIN_MESSAGE_MAP(CHematology_CounterDoc, CDocument)

ON_COMMAND_RANGE(ID_LEIKOFORMULA_PALOCHKOYADERN,ID_LEIKOFORMULA_BAZOFIL,&CHematology_CounterDoc::UpdateLeikoformula)

ON_COMMAND_RANGE(ID_MIELOGRAMMA_PALOCHKOYADERN,ID_MIELOGRAMMA_24 ,&CHematology_CounterDoc::UpdateMielogramma)

ON_COMMAND(ID_LEIKOFORMULA_NORMOBLAST, &CHematology_CounterDoc::OnNormoblast)

ON_COMMAND(ID_EDIT_UNDO, &CHematology_CounterDoc::OnUndo)

ON_BN_CLICKED(IDC_BUTTON_RESTART, &CHematology_CounterDoc::OnBnClickedButtonRestart)

ON_BN_CLICKED(IDC_BUTTON_PERCENT, &CHematology_CounterDoc::OnBnClickedButtonPercent)

ON_COMMAND(ID_FILE_SAVE, &CHematology_CounterDoc::OnFileSave)

END_MESSAGE_MAP()

CHematology_CounterDoc::CHematology_CounterDoc():DATA(new Leikoformula())

{}

CHematology_CounterDoc::~CHematology_CounterDoc()

{

if(DATA){delete DATA; DATA=0;}

}

BOOL CHematology_CounterDoc::OnNewDocument()

{

if (!CDocument::OnNewDocument())

return FALSE;

DATA->RemoveAll();

Undo.RemoveAll();

return TRUE;

}

#ifdef _DEBUG

void CHematology_CounterDoc::AssertValid() const

{

CDocument::AssertValid();

}

void CHematology_CounterDoc::Dump(CDumpContext& dc) const

{

CDocument::Dump(dc);

}

#endif

CView* CHematology_CounterDoc::Get_View() const

{

POSITION Position=NULL;

Position=this->GetFirstViewPosition();

return this->GetNextView(Position);

}

void CHematology_CounterDoc::UpdateLeikoformula(UINT ID)

{

int * pLeikoformula=&((Leikoformula*)DATA)->PALOCHKOYADERN+(ID-ID_LEIKOFORMULA_PALOCHKOYADERN);

if(DATA->Add(pLeikoformula))

{

Undo.AddTail(pLeikoformula);

Get_View()->UpdateData(0);

}

}

void CHematology_CounterDoc::UpdateMielogramma(UINT ID)

{

int * pMielogramma=&((Mielogramma*)DATA)->PALOCHKOYADERN+(ID-ID_MIELOGRAMMA_PALOCHKOYADERN);

if(DATA->Add(pMielogramma))

{

Undo.AddTail(pMielogramma);

Get_View()->UpdateData(0);

}

}

void CHematology_CounterDoc::OnNormoblast()

{

if(100>((Leikoformula*)DATA)->GetSum())

{

((Leikoformula*)DATA)->NORMOBLAST++;

Undo.AddTail(&((Leikoformula*)DATA)->NORMOBLAST);

Get_View()->UpdateData(0);

}

}

void CHematology_CounterDoc::OnBnClickedButtonRestart()

{

DATA->RemoveAll();

Get_View()->UpdateData(0);

Undo.RemoveAll();

}

void CHematology_CounterDoc::OnBnClickedButtonPercent()

{

}

void CHematology_CounterDoc::OnUndo()

{

if(Undo.GetTailPosition())

{

(*(Undo.GetTail()))--;

Undo.RemoveTail();

DATA->Remove();

Get_View()->UpdateData(0);

}

}

void CHematology_CounterDoc::OnFileSave()

{

}

Представление и определение класса CHematology_CounterView

#pragma once

class Form_Leikoformula;

class CHematology_CounterView : public CFormView

{

protected: CHematology_CounterView();

DECLARE_DYNCREATE(CHematology_CounterView)

public:

enum{ IDD = IDD_FORM };

CHematology_CounterDoc* GetDocument() const;

virtual BOOL PreCreateWindow(CREATESTRUCT& cs);

protected:

virtual void DoDataExchange(CDataExchange* pDX);

virtual void OnInitialUpdate();

public:

virtual ~CHematology_CounterView();

#ifdef _DEBUG

virtual void AssertValid() const;

virtual void Dump(CDumpContext& dc) const;

#endif

private:

CDialog * dForm;

protected:

DECLARE_MESSAGE_MAP()

public:

void OnDATA(UINT id);

afx_msg void OnDestroy();

afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);

afx_msg void OnLeikoformula();

afx_msg void OnTrombocity();

afx_msg void OnMielogramma();

void CreateMenuParametre(UINT ID);

};

#ifndef _DEBUG

inline CHematology_CounterDoc* CHematology_CounterView::GetDocument() const

{ return reinterpret_cast<CHematology_CounterDoc*>(m_pDocument); }

#endif

Реализация класса CHematology_CounterView

#include "stdafx.h"

#include "Hematology_Counter.h"

#include "Hematology_CounterDoc.h"

#include "Hematology_CounterView.h"

#include "Form.h"

#include "MainFrm.h"

#ifdef _DEBUG

#define new DEBUG_NEW

#endif

IMPLEMENT_DYNCREATE(CHematology_CounterView, CFormView)

BEGIN_MESSAGE_MAP(CHematology_CounterView, CFormView)

ON_WM_DESTROY()

ON_WM_CREATE()

ON_COMMAND_RANGE(ID_LEIKOFORMULA,ID_MIELOGRAMMA,&CHematology_CounterView::OnDATA)

END_MESSAGE_MAP()

CHematology_CounterView::CHematology_CounterView()

: CFormView(CHematology_CounterView::IDD),dForm(NULL)

{

}

CHematology_CounterView::~CHematology_CounterView()

{

if(dForm){delete dForm;dForm=NULL;}

}

void CHematology_CounterView::DoDataExchange(CDataExchange* pDX)

{

CFormView::DoDataExchange(pDX);

if(dForm)dForm->UpdateData(0);

}

BOOL CHematology_CounterView::PreCreateWindow(CREATESTRUCT& cs)

{

return CFormView::PreCreateWindow(cs);

}

void CHematology_CounterView::OnInitialUpdate()

{

CFormView::OnInitialUpdate();

GetParentFrame()->RecalcLayout();

ResizeParentToFit();

CHematology_CounterDoc* Doc=GetDocument();

if(!Leikoformula::Create(&dForm,&Doc->DATA))return;

dForm->Create(IDD_FORM_LEIKOFORMULA,this);

CreateMenuParametre(IDR_LEIKOFORMULA);

}

#ifdef _DEBUG

void CHematology_CounterView::AssertValid() const

{

CFormView::AssertValid();

}

void CHematology_CounterView::Dump(CDumpContext& dc) const

{

CFormView::Dump(dc);

}

CHematology_CounterDoc* CHematology_CounterView::GetDocument() const

{

ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CHematology_CounterDoc)));

return (CHematology_CounterDoc*)m_pDocument;

}

#endif

void CHematology_CounterView::OnDestroy()

{

dForm->DestroyWindow();

if(dForm){delete dForm;dForm=NULL;}

CFormView::OnDestroy();

}

int CHematology_CounterView::OnCreate(LPCREATESTRUCT lpCreateStruct)

{

if (CFormView::OnCreate(lpCreateStruct) == -1)return -1;

return 0;

}

void CHematology_CounterView::OnDATA(UINT id)

{

CHematology_CounterDoc* Doc=GetDocument();

switch(id)

{

case ID_LEIKOFORMULA:

{

if(!Leikoformula::Create(&dForm,&Doc->DATA))return;

}

break;

case ID_TROMBOCITY:

{

if(!Trombocity::Create(&dForm,&Doc->DATA))return;

break;

}

case ID_MIELOGRAMMA:

if(!Mielogramma::Create(&dForm,&Doc->DATA))return;

break;

}

CreateMenuParametre(IDR_LEIKOFORMULA+id-ID_LEIKOFORMULA);

dForm->Create(IDD_FORM_LEIKOFORMULA+id-ID_LEIKOFORMULA,this);

Doc->Undo.RemoveAll();

}

void CHematology_CounterView::CreateMenuParametre(UINT ID)

{

CMenu** parametres=&(((CMainFrame*)AfxGetMainWnd())->ParametresMenu);

if((*parametres)){(*parametres)->DestroyMenu();delete (*parametres);}

(*parametres)=new CMenu;

(*parametres)->LoadMenuW(ID);

AfxGetMainWnd()->GetMenu()->ModifyMenuW(2,MF_BYPOSITION| MF_POPUP ,(UINT_PTR)((*parametres)->m_hMenu),L"Параметры");

DestroyAcceleratorTable(((CMainFrame*)AfxGetMainWnd())->m_hAccelTable);

((CMainFrame*)AfxGetMainWnd())->m_hAccelTable=LoadAccelerators(AfxGetApp()->m_hInstance,MAKEINTRESOURCEW(ID));

AfxGetMainWnd()->GetMenu()->CheckMenuRadioItem(ID_LEIKOFORMULA,ID_MIELOGRAMMA,ID_LEIKOFORMULA+ID-IDR_LEIKOFORMULA,MF_BYCOMMAND);

((CMainFrame*)AfxGetMainWnd())->ParametresToolBar.LoadToolBar(ID);

}

Представление и определение класса Data

#pragma once

class Data

{

protected:

Data();

public:

virtual ~Data();

virtual void RemoveAll()=0;

virtual bool Add(int*)=0;

virtual void Remove()=0;

};

Реализация класса Data

#include "StdAfx.h"

#include "Data.h"

Data::Data(){}

Data::~Data(){}

Представление и определение класса Leikoformula

#pragma once

#include "Data.h"

class CDialog;

class Leikoformula: public Data

{

private:

int Sum;

public:

Leikoformula();

int & GetSum();

static bool Create(CDialog ** dForm,Data** pData);

virtual void RemoveAll();

virtual bool Add(int * pLeikoformula);

virtual void Remove();

int NORMOBLAST;

int PALOCHKOYADERN;

int SEGMEHTARN;

int MONOCIT;

int LIMFOCIT;

int MIELOCIT;

int METAMELOCIT;

int EOZILOFIL;

int BAZOFIL;

};

Реализация класса Leikoformula

#include "StdAfx.h"

#include "Leikoformula.h"

#include "Form.h"

Leikoformula::Leikoformula():Data(),PALOCHKOYADERN(0),SEGMEHTARN(0),MONOCIT(0),LIMFOCIT(0),MIELOCIT(0),METAMELOCIT(0),EOZILOFIL(0),BAZOFIL(0),NORMOBLAST(0),Sum(0)

{

}

int & Leikoformula::GetSum()

{

return Sum;

}

void Leikoformula::RemoveAll()

{

PALOCHKOYADERN=SEGMEHTARN=MONOCIT=LIMFOCIT=MIELOCIT=METAMELOCIT=EOZILOFIL=BAZOFIL=NORMOBLAST=Sum=0;

}

bool Leikoformula::Add(int * pLeikoformula)

{

if(100<=Sum)return false;

Sum++;

(*pLeikoformula)++;

return true;

}

void Leikoformula::Remove()

{

if(0<Sum)Sum--;

}

bool Leikoformula::Create(CDialog ** dForm,Data** pData)

{

if((*dForm)&&(*dForm)->IsKindOf(RUNTIME_CLASS(Form_Leikoformula)))return false;

if((*dForm)){(*dForm)->DestroyWindow();delete (*dForm);(*dForm)=0;}

(*dForm)=new Form_Leikoformula();

if((*pData)){delete (*pData);(*pData)=0;}

(*pData)=new Leikoformula;

((Form_Leikoformula*)*dForm)->pData=(*pData);

return true;

}

Реализация класса Mielogramma

#include "StdAfx.h"

#include "Mielogramma.h"

#include "Form.h"

Mielogramma::Mielogramma():Data(),PALOCHKOYADERN(0),SEGMEHTARN(0),MONOCIT(0),LIMFOCIT(0),MIELOCIT(0),METAMELOCIT(0),EOZILOFIL(0),BAZOFIL(0)

,_9(0)

,_10(0)

,_11(0)

,_12(0)

,_13(0)

,_14(0)

,_15(0)

,_16(0)

,_17(0)

,_18(0)

,_19(0)

,_20(0)

,_21(0)

,_22(0)

,_23(0)

,_24(0)

{

}

Mielogramma::~Mielogramma(){}

bool Mielogramma::Create(CDialog ** dForm,Data** pData)

{

if((*dForm)&&(*dForm)->IsKindOf(RUNTIME_CLASS(Form_Mielogramma)))return false;

(*dForm)->DestroyWindow();

if((*dForm)){delete (*dForm);(*dForm)=0;}

(*dForm)=new Form_Mielogramma();

if((*pData)){delete (*pData);(*pData)=0;}

(*pData)=new Mielogramma;

((Form_Mielogramma*)*dForm)->pData=(*pData);

return true;

}

void Mielogramma::RemoveAll()

{

PALOCHKOYADERN=SEGMEHTARN=MONOCIT=LIMFOCIT=MIELOCIT=METAMELOCIT=EOZILOFIL=BAZOFIL=_9=_10=_11=_12=_13=_14=_15=_16=_17=_18=_19=_20=_21=_22=_23=_24=0;

}

bool Mielogramma::Add(int * pMielogramma)

{

(*pMielogramma)++;

return true;

}

void Mielogramma::Remove(){}

Представление и определение класса Trombocity

#pragma once

#include "Data.h"

class Data;

class CDialog;

class Trombocity: public Data

{

public:

Trombocity();

~Trombocity();

static bool Create(CDialog ** dForm,Data** pData);

virtual void RemoveAll();

virtual bool Add(int * pTrombocity);

virtual void Remove();

};

Реализация класса Trombocity

#include "StdAfx.h"

#include "Trombocity.h"

#include "Form.h"

Trombocity::Trombocity():Data(){}

Trombocity::~Trombocity(){}

bool Trombocity::Create(CDialog ** dForm,Data** pData)

{

if((*dForm)&&(*dForm)->IsKindOf(RUNTIME_CLASS(Form_Trombocity)))return false;

(*dForm)->DestroyWindow();

if((*dForm)){delete (*dForm);(*dForm)=0;}

(*dForm)=new Form_Trombocity();

if((*pData)){delete (*pData);(*pData)=0;}

(*pData)=new Trombocity;

((Form_Trombocity*)*dForm)->pData=(*pData);

return true;

}

void Trombocity::RemoveAll(){}

bool Trombocity::Add(int * pTrombocity){return 1;}

void Trombocity::Remove(){}

Представление и определение классов: Form_Leikoformula, Form_Mielogramma, Form_Trombocity.

#pragma once

#include "resource.h"

class Data;

class Form_Leikoformula : public CDialog

{

DECLARE_DYNAMIC(Form_Leikoformula)

public:

Form_Leikoformula(CWnd* pParent = NULL); // standard constructor

virtual ~Form_Leikoformula();

enum { IDD = IDD_FORM_LEIKOFORMULA };

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

DECLARE_MESSAGE_MAP()

public:

Data * pData;

};

class Form_Mielogramma : public CDialog

{

DECLARE_DYNAMIC(Form_Mielogramma)

public:

Form_Mielogramma(CWnd* pParent = NULL); // standard constructor

virtual ~Form_Mielogramma();

enum { IDD = IDD_FORM_MIELOGRAMMA };

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

DECLARE_MESSAGE_MAP()

public:

Data * pData;

};

class Form_Trombocity : public CDialog

{

DECLARE_DYNAMIC(Form_Trombocity)

public:

Form_Trombocity(CWnd* pParent = NULL); // standard constructor

virtual ~Form_Trombocity();

enum { IDD = IDD_FORM_TROMBOCITY };

protected:

virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support

DECLARE_MESSAGE_MAP()

public:

Data * pData;

};

Реализация классов: Form_Leikoformula, Form_Mielogramma, Form_Trombocity.

#include "stdafx.h"

#include "Hematology_Counter.h"

#include "Form.h"

#include "Leikoformula.h"

IMPLEMENT_DYNAMIC(Form_Leikoformula, CDialog)

Form_Leikoformula::Form_Leikoformula(CWnd* pParent /*=NULL*/)

: CDialog(Form_Leikoformula::IDD, pParent),pData(NULL)

{

}

Form_Leikoformula::~Form_Leikoformula()

{

}

void Form_Leikoformula::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

if(!pData)return;

Leikoformula* LEIKOFORMULA=(Leikoformula*)pData;

DDX_Text(pDX, IDC_STATIC_PALOCHKOYADERN,LEIKOFORMULA->PALOCHKOYADERN);

DDX_Text(pDX, IDC_STATIC_SEGMEHTARN,LEIKOFORMULA->SEGMEHTARN);

DDX_Text(pDX, IDC_STATIC_MONOCIT, LEIKOFORMULA->MONOCIT);

DDX_Text(pDX, IDC_STATIC_LIMFOCIT, LEIKOFORMULA->LIMFOCIT);

DDX_Text(pDX, IDC_STATIC_MIELOCIT,LEIKOFORMULA->MIELOCIT);

DDX_Text(pDX, IDC_STATIC_METAMELOCIT, LEIKOFORMULA->METAMELOCIT);

DDX_Text(pDX, IDC_STATIC_EOZILOFIL,LEIKOFORMULA->EOZILOFIL);

DDX_Text(pDX, IDC_STATIC_BAZOFIL, LEIKOFORMULA->BAZOFIL);

DDX_Text(pDX, IDC_STATIC_NORMOBLAST,LEIKOFORMULA->NORMOBLAST);

DDX_Text(pDX, IDC_STATIC_SUM, LEIKOFORMULA->GetSum());

}

BEGIN_MESSAGE_MAP(Form_Leikoformula, CDialog)

END_MESSAGE_MAP()

#include "Mielogramma.h"

IMPLEMENT_DYNAMIC(Form_Mielogramma, CDialog)

Form_Mielogramma::Form_Mielogramma(CWnd* pParent /*=NULL*/)

: CDialog(Form_Mielogramma::IDD, pParent),pData(NULL)

{

}

Form_Mielogramma::~Form_Mielogramma()

{

}

void Form_Mielogramma::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

if(!pData)return;

Mielogramma* MIELOGRAMMA=(Mielogramma*)pData;

DDX_Text(pDX, IDC_STATIC_PALOCHKOYADERN,MIELOGRAMMA->PALOCHKOYADERN);

DDX_Text(pDX, IDC_STATIC_SEGMEHTARN,MIELOGRAMMA->SEGMEHTARN);

DDX_Text(pDX, IDC_STATIC_MONOCIT, MIELOGRAMMA->MONOCIT);

DDX_Text(pDX, IDC_STATIC_LIMFOCIT, MIELOGRAMMA->LIMFOCIT);

DDX_Text(pDX, IDC_STATIC_MIELOCIT,MIELOGRAMMA->MIELOCIT);

DDX_Text(pDX, IDC_STATIC_METAMELOCIT, MIELOGRAMMA->METAMELOCIT);

DDX_Text(pDX, IDC_STATIC_EOZILOFIL,MIELOGRAMMA->EOZILOFIL);

DDX_Text(pDX, IDC_STATIC_BAZOFIL, MIELOGRAMMA->BAZOFIL);

DDX_Text(pDX, IDC_STATIC_9,MIELOGRAMMA->_9);

DDX_Text(pDX, IDC_STATIC_10,MIELOGRAMMA->_10);

DDX_Text(pDX, IDC_STATIC_11, MIELOGRAMMA->_11);

DDX_Text(pDX, IDC_STATIC_12, MIELOGRAMMA->_12);

DDX_Text(pDX, IDC_STATIC_13,MIELOGRAMMA->_13);

DDX_Text(pDX, IDC_STATIC_14, MIELOGRAMMA->_14);

DDX_Text(pDX, IDC_STATIC_15,MIELOGRAMMA->_15);

DDX_Text(pDX, IDC_STATIC_16,MIELOGRAMMA->_16);

DDX_Text(pDX, IDC_STATIC_17,MIELOGRAMMA->_17);

DDX_Text(pDX, IDC_STATIC_18, MIELOGRAMMA->_18);

DDX_Text(pDX, IDC_STATIC_19, MIELOGRAMMA->_19);

DDX_Text(pDX, IDC_STATIC_20,MIELOGRAMMA->_20);

DDX_Text(pDX, IDC_STATIC_21, MIELOGRAMMA->_21);

DDX_Text(pDX, IDC_STATIC_22,MIELOGRAMMA->_22);

DDX_Text(pDX, IDC_STATIC_23,MIELOGRAMMA->_23);

DDX_Text(pDX, IDC_STATIC_24,MIELOGRAMMA->_24);

}

BEGIN_MESSAGE_MAP(Form_Mielogramma, CDialog)

END_MESSAGE_MAP()

#include "Trombocity.h"

IMPLEMENT_DYNAMIC(Form_Trombocity, CDialog)

Form_Trombocity::Form_Trombocity(CWnd* pParent /*=NULL*/)

: CDialog(Form_Trombocity::IDD, pParent),pData(NULL)

{

}

Form_Trombocity::~Form_Trombocity()

{

}

void Form_Trombocity::DoDataExchange(CDataExchange* pDX)

{

CDialog::DoDataExchange(pDX);

if(!pData)return;

}

BEGIN_MESSAGE_MAP(Form_Trombocity, CDialog)

END_MESSAGE_MAP()

Приложение Ж - ОБОСНОВАНИЕ МОДЕЛИ ВЫБОРА ЖИЗНЕННОГО ЦИКЛА

Таблица Е.1 - Выбор модели ЖЦ на основе характеристик требований

Требования

Каскадная

V-образная

Прото-типиро-вание

Спиральная

RAD

Инкрементная

Являются ли требования легко определимыми и/или хорошо известными

Да

Да

Нет

Нет

Да

Нет

Могут ли требования заранее определятся в цикле

Да

Да

Нет

Нет

Да

Да

Часто ли изменяются требования в цикле

Нет

Нет

Да

Да

Нет

Нет

Нужно ли демонстрировать требования с целью определения

Нет

Нет

Да

Да

Да

Нет

Требуется ли демонстрация возможностей проверка концепции

Нет

Нет

Да

Да

Да

Нет

Будут ли требования отражать сложность системы

Нет

Нет

Да

Да

Нет

Да

Обладает ли требование функциональными свойствами на раннем этапе

Нет

Нет

Да

Да

Да

Да

Таблица Е.2 - Выбор модели ЖЦ на основе характеристик участников команды разработчиков

Команда разработчиков проекта

Каскадная

V-

образная

Прото-типиро-вание

Спиральная

RAD

Инкрементная

Являются ли проблемы предметной области проекта новыми для большинства разработчиков

Нет

Нет

Да

Да

Нет

Нет

Является ли технология предметной области проекта новой для большинства разработчиков

Да

Да

Нет

Да

Да

Да

Являются ли инструменты, используемые проектом, новыми для большинства разработчиков

Да

Да

Нет

Да

Да

Нет

Изменяются ли роли участников проекта во время ЖЦ


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.