Каков лучший подход в аудите большого java/j2ee веб-приложения

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

import cv2
def resize_and_letter_box(image, rows, cols):
    """
    Letter box (black bars) a color image (think pan & scan movie shown 
    on widescreen) if not same aspect ratio as specified rows and cols. 
    :param image: numpy.ndarray((image_rows, image_cols, channels), dtype=numpy.uint8)
    :param rows: int rows of letter boxed image returned  
    :param cols: int cols of letter boxed image returned
    :return: numpy.ndarray((rows, cols, channels), dtype=numpy.uint8)
    """
    image_rows, image_cols = image.shape[:2]
    row_ratio = rows / float(image_rows)
    col_ratio = cols / float(image_cols)
    ratio = min(row_ratio, col_ratio)
    image_resized = cv2.resize(image, dsize=(0, 0), fx=ratio, fy=ratio)
    letter_box = np.zeros((int(rows), int(cols), 3))
    row_start = int((letter_box.shape[0] - image_resized.shape[0]) / 2)
    col_start = int((letter_box.shape[1] - image_resized.shape[1]) / 2)
    letter_box[row_start:row_start + image_resized.shape[0], col_start:col_start + image_resized.shape[1]] = image_resized
    return letter_box
14
задан Billy 22 June 2009 в 08:41
поделиться

4 ответа

I had two web applications with similar settings as you. I stopped using FindBugs and Checkstyle as they showed more than 10.000 problematic points. The applications used JDBC level data access, JSP for presentation and a custom framework for request dispatching. Luckily for me, these low level settings allowed me to do the extensions and fixes on medium difficulty. During the 3 year project, only about 20% of the original code remained as it were. Sooner or later everything else needed to be either changed, replaced or removed (and finally I was able to use FindBugs and Checkstyle).

We too faced the dilemma of complete rewrite. However, there were several factors against it:

  • Not sure customer will pay for a complete rewrite.
  • The lack of functional and technical documentation makes it risky to do the complete rewrite.
  • Manhours to fully understand the complete application was too high. Customer wanted the requested changes sooner.
  • The users where customed to the presentation and page behavior. It seemed hard to convince users to use a new interface for old functions.
  • If we do a complete rewrite, we need to provide complete documentation. For update, we needed to document only our part.
  • It is hard to convince the management (own and the customer's) of a rewrite if the program works (more or less)
  • The company had its own PMD rules and the code didn't pass. It was simpler to argue that it is enough the new parts pass the test.

It boils down what you want to do actually.

Do you want to rewrite, despite the complexity?

  • Put emphasis on the code bugs. Large pie charts with lots of red is convincing.
  • Explain the program properties and how they don't fit into the corporate vision.
  • Show enhancement options beyond the current requirements and describe how the current version is not up to the challenge.
  • Do interviews with the real users. They might point out important problems with the current version.
  • Be cheap but a good estimator. You might delay some costs till the maintenance phase.

You don't want to rewrite?

  • Put emphasis on the cost, especially the manhours required from the customer to re-test everything.
  • Point out the potential trouble of breaking functionality.
  • Ask for a full-time document writer.

If you want to taste the code, try to add the Hello World! function/screen to the application. That tells how hard and how fast you can implement new things.

8
ответ дан 1 December 2019 в 14:12
поделиться

«Intel-совместимый» не очень точен.

Intel использовала для создания процессоров с обратным порядком байтов, особенно StrongARM и XScale. В них не используется IA32 ISA, широко известный как x86.

Еще дальше в истории Intel также сделала i860 и i960 с прямым порядком байтов, которые также не являются x86-совместимыми.

Еще дальше в истории - предшественники. x86 (8080, 8008 и т. д.) также не совместимы с x86. Для 8-битных процессоров порядок байтов на самом деле не имеет значения ...

В настоящее время Intel по-прежнему выпускает Itanium (IA64) с обратным порядком байтов: нормальная работа - обратный порядок байтов, но процессор также может работать и в малом -индийский режим. Так получилось, что код x86 можно запускать в режиме прямого порядка байтов, но собственный ISA не является IA32.

Насколько мне известно, все процессоры AMD были x86-совместимыми, с некоторыми расширениями, такими как x86_64, и поэтому обязательно имеют прямой порядок байтов.

Ubuntu доступен для x86 (прямой порядок байтов) и x86_64 (прямой порядок байтов), с менее полными портами для ia64 (обратный порядок байтов), ARM (эл. ) (прямой порядок байтов), PA-RISC (прямой порядок байтов, хотя процессор поддерживает оба), PowerPC (прямой порядок байтов) и SPARC (прямой порядок байтов). Я не верю, что существует порт ARM (eb) (big-endian).

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

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

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

    3
    ответ дан 1 December 2019 в 14:12
    поделиться

    Вы сосредотачиваетесь на ремонтопригодности и расширяемости, что очень хорошо.

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

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

    2
    ответ дан 1 December 2019 в 14:12
    поделиться

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

    Я бы посмотрел на стандартизацию либо Spring, либо EJB 3.0, но не обоих.

    Я сам не читал его, но мне интересно, Майкл В книге Фезерса «Эффективная работа с устаревшим кодом» есть какие-нибудь хорошие идеи?

    ОБНОВЛЕНИЕ:

    Может быть, вы можете помочь, поместив их в автоматизированную сборку и непрерывную интеграцию - Круиз-контроль, Хадсон, или Team City. Если вам придется провести рефакторинг, это поможет.

    2
    ответ дан 1 December 2019 в 14:12
    поделиться
    Другие вопросы по тегам:

    Похожие вопросы: