Почему в приложениях с мейнфреймом нет ошибок?

Кажется, что старое железо - это твердое программное обеспечение. Почему это? Это потому, что программное обеспечение настолько зрело, что все ошибки были разработаны? Или это потому, что люди настолько привыкли к ошибкам, что даже не узнают их и не работают вокруг них? Были ли спецификации программного обеспечения идеальными с первого дня, и как только программное обеспечение было написано, все просто сработало? Я пытаюсь понять, как мы пришли из мейнфреймов, которые все теперь поддерживают, просто работая над тем, что TDD теперь способ.

Ответ 1

Почему на Земле вы думаете, что у них нет ошибок?

IBM имеет обширную инфраструктуру поддержки отчетов об ошибках и разрешения (PMR, APAR и PTF), которая в значительной степени используется.

Программное обеспечение Mainframe, которое не было затронуто в течение многих лет, несомненно, будет хорошо понято (по крайней мере, с точки зрения его особенностей), и, вероятно, было бы много ошибок, исправленных или работающих вокруг. В настоящее время все новые разработки, на самом деле, планируют определенное количество ошибок и патчей от GA (общая доступность), по крайней мере до GA + 36 месяцев. Фактически, бывший босс моей компании в IBM использовал для того, чтобы заставить вас представить цифры для запланированных ошибок с помощью строки: "Мы не планируем никаких ошибок".

Мейнфрейм придерживается принципов RAS (надежность, доступность и удобство обслуживания) за пределами того, на что может стремиться большинство аппаратного и программного обеспечения для настольных компьютеров - это только мое мнение, но я прав: -)

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

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

Ответ 2

В программном обеспечении основного фрейма нет ошибок, только функции.

Ответ 3

Я работал в мэйнфреймах. В предыдущих приложениях не было много ошибок, потому что они мало что делали. Мы писали сотни, если не тысячи строк FORTRAN, чтобы делать то, что вы сделали бы с помощью пары формул в Excel. Но когда мы перешли от программ, которые получили их вклад, поместив одно значение в столбцы 12-26 карты 1 и другое значение в столбцах 1-5 карты 2 и т.д., Те, которые принимали вход с интерактивного экрана ISPF или свет ручкой и выходом на плоттере Calcomp 1012 или терминале Tektronix 4107, количество ошибок увеличилось.

Ответ 4

Там asre PLENTY ошибок на программном обеспечении мэйнфреймов, они просто не публикуются так сильно из-за относительно небольшой группы затронутых разработчиков. Просто спросите кого-нибудь, кто занимается разработкой мейнфреймов, сколько ABENDS они видят ежедневно!

Ответ 5

Я научился использовать отладчики и анализировать основные свалки на больших металлических мэйнфреймах. Поверьте мне, они появились только из-за ошибок. Вы просто ошибаетесь.

Однако архитектуры мэйнфреймов были разработаны для обеспечения стабильности при высоком напряжении (хорошо по сравнению с системами без мэйнфреймов), поэтому, возможно, вы можете утверждать, что они лучше в этом отношении. Но код мудр? Ошибка Nah все еще существует...

Ответ 6

Мой опыт работы с программным обеспечением для мэйнфреймов (в отличие от операционных систем) довольно устарел, но я вспоминаю, что большинство приложений - это пакетные приложения, которые логически очень просты:

a) Прочитайте входной файл
б) обрабатывать каждую запись (если вы чувствуете смелость, обновляете базу данных)
c) Напишите выходной файл

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

Теперь бизнес-логика может быть сложной (особенно если она написана в COBOL 68 и база данных не является реляционной), но если это все, на что вам нужно сосредоточиться, проще сделать надежное программное обеспечение.

Ответ 7

Я никогда не работал над программным обеспечением для мэйнфреймов, но мой отец был программистом COBOL в 1970-х годах.

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

Мой папа сказал мне, что однажды кто-то пришел с тележкой, полной ящиков с бумагой, и положил их рядом с дверью комнаты, где он работал. Он спросил: "Что это?!", и парень сказал ему "Это выход вашей программы". Мой папа ошибся, что заставило программу распечатать огромное количество тарабарщины на стопке бумаги, которая могла бы израсходовать целое дерево.

Вы быстро узнаете о своих ошибках...

Ответ 8

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

Ответ 9

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

Кроме того, не забывайте о фиаско, как Y2K. Все ошибки, на которые наткнулись люди, были разработаны, и через 20 лет, вероятно, произойдет большинство ситуаций. Но время от времени удается справиться с новой ситуацией , что заставляет работать даже 20-летнее программное обеспечение.

(Еще один интересный пример этого - ошибка, обнаруженная, по-моему, в BSD Unix. Она была обнаружена год назад, и она была около 20 лет, и никто не сталкивался с ней).

Ответ 10

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

Ответ 11

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

Во-вторых, все и их брат не были "программистом". Обычно они были высококвалифицированными специалистами. Теперь программы происходят от парней, сидевших в их подвале, с дипломом о высшей школе. Ничего страшного! но он имеет тенденцию иметь больше ошибок, которые инженер, который делал это профессионально в течение 20 лет.

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

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

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