Перевод IT статьи «Безопасность интерфейса в многоязычном программном обеспечении» (Interface Safety in Multilingual Software — translation into Russian)

Ниже приведен образец перевода статьи «Безопасность интерфейса в многоязычном программном обеспечении». Оригинальная статья.

Most real software systems are multilingual; that is, they consist of components developed in different programming languages. Multilingual software systems are convenient in practice. Developers can reuse existing code modules, and can also mix and match strengths of different languages. As an example, imagine that a developer intends to perform data compression in Java. Instead of writing all the code for data compression from scratch, he can reuse the existing ZLib C library and write a thin interface between Java and C, via the Java Native Interface (JNI). In fact, this is exactly how Sun’s JDK implements the classes under java.util.zip.

Java Native Interface

Although multilingual software systems are convenient for developers and ubiquitous in practice, it is difficult to write safe and reliable multilingual software.It usually requires programmers to carefully take into account the discrepancies between languages on issues such as language features, data layout, memory management, safety/security assumptions, and many others. As an example, Java has built-in support for exceptions and exception handling, while C does not. Therefore, when developers write software that consists of both Java and C code, the C code has to check for exceptions in every possible place where they may occur, and provides code to handle them. Failure to do so may result in silent memory corruption. As one can imagine, this is an extremely error-prone process.

To address the safety and reliability issues in multilingual software, this project aims to
— Perform inter-language analysis on existing multilingual software, for identifying and removing safety-critical bugs, and for performing inter-language optimization;
— Formalize semantics oflanguage interoperation (in frameworks such as the JNI and .NET);
— Design mechanisms that facilitate the writing of reliable multilingual software.

Publications 

— Li, S. and Tan, G. (2014b). Finding reference-counting errors in Python/C programs with affine analysis. In European Conference on Object-Oriented Programming (ECOOP).
— Li, S. and Tan, G. (2014a). Exception analysis in the Java Native Interface. Science of Computer Programming, 89, 273–297.
— Li, S., Liu, D. Y., and Tan, G. (2012). JATO: Native code atomicity for Java. In Asian Symposium on Programming Languages and Systems (APLAS), pages 2–17.
— Li, S. and Tan, G. (2011). JET: Exception checking in the Java Native Interface. In ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), pages 345–358.
— Li, S. and Tan, G. (2009). Finding bugs in exceptional situations of JNI programs. In 16th ACM Conference on Computer and Communications Security (CCS), pages 442–452.
— Tan, G. and Croft, J. (2008). An empirical security study of the native code in the JDK. In 17th Usenix Security Symposium, pages 365–377.
— Tan, G. and Morrisett, G. (2007). ILEA: Inter-language analysis across Java and C. In ACM Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA), pages 39–56.
— Tan, G., Appel, A., Chakradhar, S., Raghunathan, A., Ravi, S., and Wang, D. (2006b). Safe Java Native Interface. In IEEE International Symposium on Secure Software Engineering, pages 97–106.

Participants

— Gang Tan
— Siliang Li
— Jason Croft

Большинство реальных программных систем многоязычны, то есть они состоят из компонентов, разработанных на разных языках программирования. Многоязычные программные системы удобны на практике. Разработчики могут повторно использовать существующие программные модули, а также смешивать и задействовать сильные стороны разных языков. Например, представьте, что разработчик собирается осуществить сжатие данных на Java. Вместо того чтобы писать весь код для сжатия данных с нуля, он может использовать существующую библиотеку языка C ZLib и написать небольшой интерфейс между Java и C, используя Java Native Interface (JNI). На самом деле, JDK компании Sun именно так реализует классы под java.util.zip.

небольшой интерфейс между Java и C

Хотя многоязычные программные системы удобны для разработчиков и повсеместно используются на практике, сложно написать безопасное и надежное многоязычное программное обеспечение. При этом обычно разработчикам требуется принимать во внимание различия между языками в таких вопросах как возможности языка, структура данных, управление памятью, допущения по безопасности и многое другое. Например, в Java есть встроенная поддержка исключений и обработка исключений, в то время как в C их нет. Следовательно, когда разработчики пишут программное обеспечение, состоящее как из кода Java, так и из кода C, код C должен проверять на наличие исключений каждое место, где они могут возникнуть, и предоставлять код для их обработки. При невыполнении этого может произойти «тихое» повреждение данных в памяти. Как легко себе представить, это с крайне большой вероятностью приведет к возникновению ошибок.

Чтобы решить вопросы безопасности и надежности многоязычного программного обеспечения, настоящий проект нацелен на
— Осуществление межязыкового анализа существующего многоязычного программного обеспечения для выявления и устранения влияющих на безопасность ошибок и выполнения межязыковой оптимизации;
— Формализацию семантики языкового взаимодействия (в таких системах как JNI и .NET);
— Разработку механизмов, облегчающих написание надежного многоязычного программного обеспечения.

Публикации

— Ли, С. и Тан, Г. (2014b). Поиск ошибок в подсчете ссылок в программах на Python/C посредством аффинного анализа. На Европейской конференции по объектно-ориентированному программированию (ECOOP).
— Ли, С. и Тан, Г. (2014a). Анализ исключений в Java Native Interface. Наука программирования, 89, 273 – 297.
— Ли, С., Лю, Д.Ю. и Тан, Г. (2012). JATO: Атомарность нативного кода для Java. На Азиатском симпозиуме по языкам и системам программирования (APLAS), страницы 2 – 17.
— Ли, С. и Тан, Г. (2011). JET: Проверка исключений в Java Native Interface. На Конференции Ассоциации вычислительной техники по объектно-ориентированному программированию, системам, языкам и приложениям (OOPSLA), страницы 345 – 358.
— Ли, С. и Тан, Г. (2009). Поиск ошибок в исключительных ситуациях программ JNI. На 16-ой Конференции Ассоциации вычислительной техники по компьютерной и коммуникационной безопасности (CCS), страницы 442 – 452.
— Тан, Г. и Крофт, Дж. (2008). Эмпирическое исследование безопасности нативного кода в JDK. На 17-ом Симпозиуме по безопасности Usenix, страницы 365 – 377.
— Тан, Г. и Моррисетт, Г. (2007). ILEA: Межязыковой анализ Java и C. На Конференции Ассоциации вычислительной техники по объектно-ориентированному программированию, системам, языкам и приложениям (OOPSLA), страницы 39 – 56.
— Тан, Г., Аппел, А., Чакрадхар, С., Рагхунатхан, А., Рави, С. и Ванг Д. (2006b). Безопасный Java Native Interface. На Международном симпозиуме Института инженеров электротехники и электроники о безопасной разработке программного обеспечения, страницы 97 – 106.

Участники

— Ганг Тан
— Силианг Ли
— Джейсон Крофт

Рассчитайте стоимость

Загрузить файл
Закиньте файлы до 100mb сюда
Медведева Марина - менеджер-переводчик юридического бюро переводов "ЮрПеревод"

Марина Медведева

Ваш персональный консультант