Диплом: Управление разработкой ИС на основе Agile технологий и ее внедрением на предприятии ООО «Агентство Сейлконтент»

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
104
создание, редактирование, обсуждение, одним словом: ведение задач;
учет плановых и фактических трудозатрат сотрудников;
электронная постановка отсутствия и задач на отпуск;
создание и публикация новостей в системе;
взаимодействие с помощью мгновенных сообщений, либо
посредством VoIP телефонии;
создание заметок по клиентам;
оценка сотрудников;
другая функциональность, которая не была описана в ходе работы, но
была разработана в ходе реализации ПО учитывая обратную связь от сотрудников
и руководства компании.
Полученные в ходе проведенного исследования и проектирования
программного продукта результаты должны иметь практическую значимость,
выражающуюся в производственной пользе при использовании данных разработок.
105
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
1. ГОСТ Р ИСО/МЭК 12207-2010. Информационная технология (ИТ).
Системная и программная инженерия. Процессы жизненного цикла программных
средств. – Введ. 01.03.2012. – М.: Изд-во стандартов, 2011. – 150 с.
2. Андерсон, Д. Канбан: альтернативный путь в Agile / Д. Андерсон; пер.
с анг. А. Коробейникова – Москва : Манн, Иванов и Фербер, 2017. 335 с.
3. Гэлловей, М. Сила Objective-C 2.0. Эффективное программирование
для iOS и OS X. – СПб.: Питер, 2014. – 304 с.
4. Дейт, К. Введение в системы баз данных / К. Дейт – 8-е изд., перераб.
и доп. – Москва: Вильямс, 2005. – 1328 с.
5. Рис, Э. Бизнес с нуля. Метод Lean Startup для быстрого тестирования
идей и выбора бизнес-модели / Э. Рис – 8-е изд., перераб. и доп. – Москва: Альпина
Паблишер, 2018. – 253 с.
6. Сазерленд, Д. Scrum. Революционный метод управления проектами /
Д. Сазерленд – 2-е изд., перераб. и доп. – Москва: Манн, Иванов и Фербер, 2017. –
272 с.
7. Стеллман, Э. Постигая Agile: ценности, принципы, методологии. Э.
Стеллман, Д. Грин. – Москва: Манн, Иванов и Фербер, 2017. 448 с.
8. Хаммер, М. Реинжиниринг корпорации. Манифест революции в
бизнесе / М. Хаммер, Д. Чампи. – Москва: Манн, Иванов и Фербер, 2011. – 288 с.
9. Highsimth, J. Agile Project Management: Creating Innovative Products
(2nd edition) / Jim Robert Highsmith. – Reading: Addison-Wesley Professional, 2009. –
432 p.
10. Система управления проектами Primavera [Электронный ресурс]. -
Режим доступа: https://pmi.ru/infosystem/primavera.php
11. Agile-манифест разработки программного обеспечения [Электронный
ресурс]. Режим доступа: http://agilemanifesto.org/iso/ru/manifesto.html
12. The Agile triangle [Электронный ресурс]. Режим доступа:
https://www.projectmanagement.com/blog-post/5325/The-Agile-Triangle
13. Система управления проектами qTrack [Электронный ресурс]. Режим
доступа: http://qtrack.ru/
106
14. CRM система Мегаплан [Электронный ресурс]. Режим доступа:
https://megaplan.ru/
15. Система управления проектами Worksection [Электронный ресурс].
Режим доступа: https://worksection.com/
16. Система коллективной работы Teamtools [Электронный ресурс].
Режим доступа: http://teamtools.ru/
17. Система управления проектами Первая форма [Электронный ресурс].
Режим доступа: http://1forma.ru/
18. The Swift Programming Language [Электронный ресурс]. Режим
доступа: https://docs.swift.org/swift-book/index.html
19. Swift vs Obj-C Performance Comparison [Электронный ресурс]. Режим
доступа: https://www.thedroidsonroids.com/blog/ios/swift-vs-obj-c-performance-
comparision
20. Swift, C++ Performance [Электронный ресурс]. Режим доступа:
https://www.primatelabs.com/blog/2014/12/swift-performance/
21. Is Swift Faster Than Objective-C [Электронный ресурс]. Режим доступа:
https://yalantis.com/blog/is-swift-faster-than-objective-c/
22. СУБД SQLite [Электронный ресурс]. Режим доступа:
https://www.sqlite.org/index.html
23. Обеспечивающие подсистемы информационных систем [Электронный
ресурс]. Режим доступа:
https://www.intuit.ru/studies/courses/3627/869/lecture/31731?page=5
24. Отчет об использовании Agile в России 2017 [Электронный ресурс].
Режим доступа: https://scrumtrek.ru/userfiles/reports/AgileSurvey17.pdf
25. WIP-лимит [Электронный ресурс]. Режим доступа:
https://worksection.com/blog/work-in-progress.html
107
Приложение 1. Демонстрация экранных форм на iPhone
Рисунок 1. Окно авторизации
108
Рисунок 2. Оформление отпуска
109
Рисунок 3. Постановка отсутствия
110
Рисунок 4. Постановка отсутствия
111
Приложение 2. Текст модуля создания задачи
@implementation TaskEditorViewController
- (instancetype)initWithTask:(Task *)task andMode:(TaskEditorMode)mode {
if (self = [super initWithStyle:UITableViewStyleGrouped]) {
_task = task;
_targetPath = path;
_mode = mode;
_taskAttachments = [NSMutableArray new];
_taskPerformers = [NSMutableArray new];
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
switch (_mode) {
case TaskEditorModeEdit:
self.title = @"Редактирование";
break;
case TaskEditorModeCreate:
self.title = @"Новая задача";
break;
}
self.tableView.keyboardDismissMode = UIScrollViewKeyboardDismissModeInteractive;
self.tableView.allowsMultipleSelectionDuringEditing = NO;
// Если категория не задана при создании, то выбираем категорию персональных задач по
умолчанию
if (_mode == TaskEditorModeCreate && _task.category == nil) {
_task.category = [TaskCategory
personalTasksCategoryForAccount:_task.account];
}
UIBarButtonItem *closeButton = (_mode == TaskEditorModeCreate) ?
[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel
target:self action:@selector(dismissViewController)] : [[UIBarButtonItem alloc]
initWithTitle:@"Закрыть" style:UIBarButtonItemStylePlain target:self
action:@selector(dismissViewController)];
UIBarButtonSystemItem systemItem = (_mode == TaskEditorModeCreate) ?
UIBarButtonSystemItemDone : UIBarButtonSystemItemSave;
_saveButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:systemItem
target:self action:@selector(saveTask)];
_saveButton.enabled = NO;
self.navigationItem.rightBarButtonItem = _saveButton;
self.navigationItem.leftBarButtonItem = closeButton;
[self reloadExtParams];
[_task requestTaskInfoWithCompletion:NULL];
}
// MARK: - Private
- (void)reloadExtParams
{
self.taskExtParams = nil;
dispatch_async(HIGH_QUEUE, ^{
NSArray *extParams = self.taskExtParams; // возможен лок потока до загрузки
данных с сервера
112
dispatch_async(MAIN_QUEUE, ^{
self.extParams = extParams;
if (_mode == TaskEditorModeCreate || _mode == TaskEditorModeEdit) {
[self requestTaskScheme];
}
else {
[self.tableView reloadData];
}
});
});
}
- (void)checkSaveButton
{
if ( _mode == TaskEditorModeEdit ) {
_saveButton.enabled = [self isChanged];
}
else if ( _mode == TaskEditorModeCreate ) {
_saveButton.enabled = [self isValidToCreate];
}
}
- (BOOL)isChanged //проверка - изменены ли ДП
{
NSArray<ExtParam *> *taskExtParams = self.taskExtParams;
if (self.isShouldFilterParamsByTemplate) {
NSArray<NSNumber *> *epIds = [_extParams valueForKey:@"epId"];
taskExtParams = [taskExtParams filterWithBlock:^BOOL(ExtParam *p) {
return [epIds containsObject:p.epId];
}];
}
NSArray *eps1 = [_extParams sortedArrayUsingDescriptors:@[[NSSortDescriptor
sortDescriptorWithKey:@"epId" ascending:YES]]];
NSArray *eps2 = [taskExtParams sortedArrayUsingDescriptors:@[[NSSortDescriptor
sortDescriptorWithKey:@"epId" ascending:YES]]];
BOOL changed = ![eps1 isEqual:eps2];
return changed;
}
- (NSArray<ExtParam *> *)loadTaskScheme
{
NSArray<ExtParam *> *schemeArray;
NSInteger subcatID = _task.category.subcatId.integerValue;
switch(_mode) {
case TaskEditorModeCreate:
// схема создания новой задачи
schemeArray = [_task.account.taskSchemeStorage schemeForNewTaskIn:
subcatID];
break;
case TaskEditorModeEdit:
// схема редактирования задачи
schemeArray = [_task.account.taskSchemeStorage schemeForEditTaskIn:
subcatID];
break;
}
return schemeArray;
}
- (void)createTask
{
113
_task.taskText = _taskTitle;
if ( _taskComment.length || _taskAttachments.count ) {
TaskMessage *comment = [TaskMessage chatMessageWithContent:_taskComment
forAccount:_task.account];
comment.chatID = _task.chatID;
comment.attachments = _taskAttachments;
_task.comments = @[comment];
}
[SVProgressHUD showWithStatus:@"Подождите"];
_task.dueDate = _taskTermDate;
_task.performers = _taskPerformers;
NSNumber *categoryId = _task.category ? _task.category.subcatId :
_task.account.personalSubcatId;
NSMutableDictionary *extParams = [NSMutableDictionary new];
NSArray *forExtParams = _extParams;
for (ExtParam *p in forExtParams) {
NSString *keyId = [NSString stringWithFormat:@"%@", p.epId];
switch ( p.type )
{
case ExtParamTypeSelectUsers:
case ExtParamTypeAddressees:
{
extParams[keyId] = p.contactsDi;
break;
}
case ExtParamTypeSelect:
{
NSString *value = p.epValue[@"id"];
if (value.length) {
extParams[keyId] = value;
}
break;
}
case ExtParamTypeFile:
{
NSDictionary *d = p.epValue;
NSNumber *uploadId = d[@"uploadid"];
if (uploadId) {
extParams[keyId] = [NSString stringWithFormat:
@"__PreuploadedFile:%@", d[@"uploadid"]];
}
break;
}
case ExtParamTypeLookUpField:
{
NSDictionary *d = p.epValue;
NSNumber *taskId = d[@"taskid"];
if (taskId) {
extParams[keyId] = d[@"taskid"];
}
break;
}
case ExtParamTypeTable:
{
extParams[keyId] = p.value;
break;
}
case ExtParamTypeCheckbox:
{

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
«Управление ресурсами проекта» (на примере организации ООО «ЛАКОСТЭ»)
Agile-методология в управлении проектами на примере ООО «Ресурсный центр «Академия КлассИнфо»
Aвтoмaтизaция пpoцecca вeдeния инфopмaциoннoй бaзы o дoлжнocтяx и вaкaнcияx c укaзaниeм тpeбoвaний к уpoвню знaний и нaвыкoв кaндидaтoв для гpуппы кaдpoв вoйcкoвoй чacти 3474»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
Cовершенствование управления рентабельности предприятия (на примере гуипп «бендерская типография «полиграфист»)