2.3 Диаграмма последовательности (SequenceDiagram)
Данная диаграмма учитывает фактор времени и показывает как система функционирует во времени. К примеру, диаграммы классов и использования – это статические диаграммы.
Таких диаграмм всего шесть т.е для каждого прецедента своя диаграмма.
Вначале мы делали диаграмму последовательностей в абстракции, взаимодействия между актёрами и системой в целом. Далее после построения диаграммы классов мы вместо системы вставляли реальные классы, это характерно взаимодействиям объектов на программном уровне.
2.3.1Абстрактная диаграмма последовательностей
Восстановление ИНН юр. лица
2.3.2 Переделанная диаграмма последовательностей
Оценки диаграмм:
1) S1= 3.79
2) S2= 3.8
3) S3= 3.7
4) S4= 3.65
5) S5= 3.67
6) S6=3.65
2.4 Диаграмма классов
Диаграммы классов служат для представления статической структуры системы. Они являются основой объектно-ориентированного подхода и показывают связи между объектами предметной области, не учитывая временные аспекты. Для каждого класса указываются имя, атрибуты и методы (операции). Далее эти классы связываются тремя типами связей таких как: ассоциации, агрегации, обобщения.
Это задание делиться на два этапа: описание предметной области и непосредственно самой диаграммы классов.
2.4.1 Модель предметной области
При построении модели предметной области, на диаграмму выносятся основные исполнители прецедентов (актёры) тем самым преобразуясь в классы и создаются основные классы являющиеся сущностями с которыми происходит взаимодействие в системе. Для каждого класса прописываются атрибуты. Между классами проставляются связи, которые показывают их взаимодействия. Данные связи подписываются, как один класс влияет на другой и проставляется количество взаимодействий.
2.4.2 Диаграмма классов
Диаграмма классов преобразуется из модели предметной области. Теперь каждый атрибут должен иметь свой тип. Помимо этого необходимо указать роли каждого класса. Оценка класса S=6,3
Заключение
В результате работы было получено описание информационной системы для налоговой инспекции на языке UML. Для описания были использованы диаграммы использования последовательности, классов. В целом была раскрыта простейшая система автоматизации работы налоговой инспекции.
Приложение 1
Описания основных классов на языке С++.
КлассИнспектор:
//## begin module%1.2%.codegen_version preserve=yes
// Read the documentation to learn more about C++ code generator
// versioning.
//## end module%1.2%.codegen_version
//## begin module%436F9EDA03D8.cm preserve=no
// %X% %Q% %Z% %W%
//## end module%436F9EDA03D8.cm
//## begin module%436F9EDA03D8.cp preserve=no
//## end module%436F9EDA03D8.cp
//## Module: Inspector%436F9EDA03D8; Pseudo Package body
//## Source file: C:\Program Files\Rational\Rose 2000\C++\source\Inspector.cpp
//## begin module%436F9EDA03D8.additionalIncludes preserve=no
//## end module%436F9EDA03D8.additionalIncludes
//## begin module%436F9EDA03D8.includes preserve=yes
//## end module%436F9EDA03D8.includes
// Inspector
#include "Inspector.h"
//## begin module%436F9EDA03D8.additionalDeclarations preserve=yes
//## end module%436F9EDA03D8.additionalDeclarations
// Class Inspector
Inspector::Inspector()
//## begin Inspector::Inspector%436F9EDA03D8_const.hasinit preserve=no
//## end Inspector::Inspector%436F9EDA03D8_const.hasinit
//## begin Inspector::Inspector%436F9EDA03D8_const.initialization preserve=yes
//## end Inspector::Inspector%436F9EDA03D8_const.initialization
{
//## begin Inspector::Inspector%436F9EDA03D8_const.body preserve=yes
//## end Inspector::Inspector%436F9EDA03D8_const.body
}
Inspector::Inspector(const Inspector &right)
//## begin Inspector::Inspector%436F9EDA03D8_copy.hasinit preserve=no
//## end Inspector::Inspector%436F9EDA03D8_copy.hasinit
//## begin Inspector::Inspector%436F9EDA03D8_copy.initialization preserve=yes
//## end Inspector::Inspector%436F9EDA03D8_copy.initialization
{
//## begin Inspector::Inspector%436F9EDA03D8_copy.body preserve=yes
//## end Inspector::Inspector%436F9EDA03D8_copy.body
}
Inspector::~Inspector()
{
//## begin Inspector::~Inspector%436F9EDA03D8_dest.body preserve=yes
//## end Inspector::~Inspector%436F9EDA03D8_dest.body
}
Inspector & Inspector::operator=(const Inspector &right)
{
//## begin Inspector::operator=%436F9EDA03D8_assign.body preserve=yes
//## end Inspector::operator=%436F9EDA03D8_assign.body
}
int Inspector::operator==(const Inspector &right) const
{
//## begin Inspector::operator==%436F9EDA03D8_eq.body preserve=yes
//## end Inspector::operator==%436F9EDA03D8_eq.body
}
int Inspector::operator!=(const Inspector &right) const
{
//## begin Inspector::operator!=%436F9EDA03D8_neq.body preserve=yes
//## end Inspector::operator!=%436F9EDA03D8_neq.body
}
//## Other Operations (implementation)
Integer Inspector::Poluchit_regist_inform ()
{
//## begin Inspector::Poluchit regist inform%438213E30148.body preserve=yes
//## end Inspector::Poluchit regist inform%438213E30148.body
}
Integer Inspector::Poluchit_utrach_INN ()
{
//## begin Inspector::Poluchit utrach INN%43946A5500BB.body preserve=yes
//## end Inspector::Poluchit utrach INN%43946A5500BB.body
}
Integer Inspector::Poluchit_INN ()
{
//## begin Inspector::Poluchit INN%43946A360128.body preserve=yes
//## end Inspector::Poluchit INN%43946A360128.body
}
String Inspector::Otpr_zhalobu_na_jur_lico ()
{
//## begin Inspector::Otpr zhalobu na jur lico%438214B90186.body preserve=yes
//## end Inspector::Otpr zhalobu na jur lico%438214B90186.body
}
String Inspector::Otpr_rez_t_proverki ()
{
//## begin Inspector::Otpr rez-t proverki%43821528000F.body preserve=yes
//## end Inspector::Otpr rez-t proverki%43821528000F.body
}
Double Inspector::Poluch_danniye_dohod_rashod ()
{
//## begin Inspector::Poluch danniye dohod rashod%4382154503B9.body preserve=yes
//## end Inspector::Poluch danniye dohod rashod%4382154503B9.body
}
Double Inspector::Prover_danniye_dohod_rashod ()
{
//## begin Inspector::Prover danniye dohod rashod%438215A8031C.body preserve=yes
//## end Inspector::Prover danniye dohod rashod%438215A8031C.body
}
Double Inspector::Otpr_rez_t_proverki_doh_ras ()
{
//## begin Inspector::Otpr rez-t proverki doh-ras%438215C80128.body preserve=yes
//## end Inspector::Otpr rez-t proverki doh-ras%438215C80128.body
}
Integer Inspector::Poluchit_daklaraciyu ()
{
//## begin Inspector::Poluchit daklaraciyu%43946D9000EA.body preserve=yes
//## end Inspector::Poluchit daklaraciyu%43946D9000EA.body
}
// Additional Declarations
//## begin Inspector%436F9EDA03D8.declarations preserve=yes
//## end Inspector%436F9EDA03D8.declarations
//## begin module%436F9EDA03D8.epilog preserve=yes
//## end module%436F9EDA03D8.epilog
КлассДексларация:
// Deklaraciya
#include "Deklaraciya.h"
//## begin module%436F9FB703D8.additionalDeclarations preserve=yes
//## end module%436F9FB703D8.additionalDeclarations
// Class Deklaraciya
Deklaraciya::Deklaraciya()
//## begin Deklaraciya::Deklaraciya%436F9FB703D8_const.hasinit preserve=no
//## end Deklaraciya::Deklaraciya%436F9FB703D8_const.hasinit
//## begin Deklaraciya::Deklaraciya%436F9FB703D8_const.initialization preserve=yes
//## end Deklaraciya::Deklaraciya%436F9FB703D8_const.initialization
{
//## begin Deklaraciya::Deklaraciya%436F9FB703D8_const.body preserve=yes
//## end Deklaraciya::Deklaraciya%436F9FB703D8_const.body
}
Deklaraciya::Deklaraciya(const Deklaraciya &right)
//## begin Deklaraciya::Deklaraciya%436F9FB703D8_copy.hasinit preserve=no
//## end Deklaraciya::Deklaraciya%436F9FB703D8_copy.hasinit
//## begin Deklaraciya::Deklaraciya%436F9FB703D8_copy.initialization preserve=yes
//## end Deklaraciya::Deklaraciya%436F9FB703D8_copy.initialization
{
//## begin Deklaraciya::Deklaraciya%436F9FB703D8_copy.body preserve=yes
//## end Deklaraciya::Deklaraciya%436F9FB703D8_copy.body
}
Deklaraciya::~Deklaraciya()
{
//## begin Deklaraciya::~Deklaraciya%436F9FB703D8_dest.body preserve=yes
//## end Deklaraciya::~Deklaraciya%436F9FB703D8_dest.body
}
Deklaraciya & Deklaraciya::operator=(const Deklaraciya &right)
{
//## begin Deklaraciya::operator=%436F9FB703D8_assign.body preserve=yes
//## end Deklaraciya::operator=%436F9FB703D8_assign.body
}
int Deklaraciya::operator==(const Deklaraciya &right) const
{
//## begin Deklaraciya::operator==%436F9FB703D8_eq.body preserve=yes
//## end Deklaraciya::operator==%436F9FB703D8_eq.body
}
int Deklaraciya::operator!=(const Deklaraciya &right) const
{
//## begin Deklaraciya::operator!=%436F9FB703D8_neq.body preserve=yes
//## end Deklaraciya::operator!=%436F9FB703D8_neq.body
}
//## Other Operations (implementation)
Double Deklaraciya::Proverit_zadekl_danniye ()
{
//## begin Deklaraciya::Proverit zadekl danniye%43946E5C0138.body preserve=yes
//## end Deklaraciya::Proverit zadekl danniye%43946E5C0138.body
}
// Additional Declarations
//## begin Deklaraciya%436F9FB703D8.declarations preserve=yes
//## end Deklaraciya%436F9FB703D8.declarations
//## begin module%436F9FB703D8.epilog preserve=yes
//## end module%436F9FB703D8.epilog
КлассФизическоелицо:
// Fiz lico
#include "Fiz lico.h"
//## begin module%436F9D0102CE.additionalDeclarations preserve=yes
//## end module%436F9D0102CE.additionalDeclarations
// Class Fiz_lico
Fiz_lico::Fiz_lico()
//## begin Fiz_lico::Fiz_lico%436F9D0102CE_const.hasinit preserve=no
//## end Fiz_lico::Fiz_lico%436F9D0102CE_const.hasinit
//## begin Fiz_lico::Fiz_lico%436F9D0102CE_const.initialization preserve=yes
//## end Fiz_lico::Fiz_lico%436F9D0102CE_const.initialization
{
//## begin Fiz_lico::Fiz_lico%436F9D0102CE_const.body preserve=yes
//## end Fiz_lico::Fiz_lico%436F9D0102CE_const.body
}
Fiz_lico::Fiz_lico(const Fiz_lico &right)
//## begin Fiz_lico::Fiz_lico%436F9D0102CE_copy.hasinit preserve=no
//## end Fiz_lico::Fiz_lico%436F9D0102CE_copy.hasinit
//## begin Fiz_lico::Fiz_lico%436F9D0102CE_copy.initialization preserve=yes
//## end Fiz_lico::Fiz_lico%436F9D0102CE_copy.initialization
{
//## begin Fiz_lico::Fiz_lico%436F9D0102CE_copy.body preserve=yes
//## end Fiz_lico::Fiz_lico%436F9D0102CE_copy.body
}
Fiz_lico::~Fiz_lico()
{
//## begin Fiz_lico::~Fiz_lico%436F9D0102CE_dest.body preserve=yes
//## end Fiz_lico::~Fiz_lico%436F9D0102CE_dest.body
}
Fiz_lico & Fiz_lico::operator=(const Fiz_lico &right)
{
//## begin Fiz_lico::operator=%436F9D0102CE_assign.body preserve=yes
//## end Fiz_lico::operator=%436F9D0102CE_assign.body
}
int Fiz_lico::operator==(const Fiz_lico &right) const
{
//## begin Fiz_lico::operator==%436F9D0102CE_eq.body preserve=yes
//## end Fiz_lico::operator==%436F9D0102CE_eq.body
}
int Fiz_lico::operator!=(const Fiz_lico &right) const
{
//## begin Fiz_lico::operator!=%436F9D0102CE_neq.body preserve=yes
//## end Fiz_lico::operator!=%436F9D0102CE_neq.body
}
//## Other Operations (implementation)
Integer Fiz_lico::Poluchit_passport_dannye ()
{
//## begin Fiz_lico::Poluchit passport dannye%43946A0C0000.body preserve=yes
//## end Fiz_lico::Poluchit passport dannye%43946A0C0000.body
}
// Additional Declarations
//## begin Fiz_lico%436F9D0102CE.declarations preserve=yes
//## end Fiz_lico%436F9D0102CE.declarations
//## begin module%436F9D0102CE.epilog preserve=yes
//## end module%436F9D0102CE.epilog
КлассЮридическоеЛицо:
// Jur lico
#include "Jur lico.h"
//## begin module%436F9D9401C5.additionalDeclarations preserve=yes
//## end module%436F9D9401C5.additionalDeclarations
// Class Jur_lico
Jur_lico::Jur_lico()
//## begin Jur_lico::Jur_lico%436F9D9401C5_const.hasinit preserve=no