Что должно быть включено в контрольный список Архитектуры приложения?

Остальное зависит от нашего дизайна, курсор обычно один и тот же.

public ArrayList<AboneDataList> getAllPasssiveAboneByDate(String mDate) {
    ArrayList<AboneDataList> foodList = new ArrayList<>();
    AboneDataList food;
    SQLiteDatabase database = dbHelper.getReadableDatabase();
    final String kolonlar[] = {DBHelper.COLUMN_A_ID,
            DBHelper.COLUMN_A_ABONE_NO,
            DBHelper.COLUMN_A_NAME,
            DBHelper.COLUMN_A_IS_STUFF,
            DBHelper.COLUMN_A_COUNTRY,
            DBHelper.COLUMN_A_CITY,
            DBHelper.COLUMN_A_TOWN,
            DBHelper.COLUMN_A_ADDRESS,
            DBHelper.COLUMN_A_PHONE,
            DBHelper.COLUMN_A_MOBILE,
            DBHelper.COLUMN_A_DATE_START,
            DBHelper.COLUMN_A_DATE_END,
            DBHelper.COLUMN_A_COUNT,
            DBHelper.COLUMN_A_IS_ACTIVE,
            DBHelper.COLUMN_A_CARGO,
            DBHelper.COLUMN_A_YURT_ID,
            DBHelper.COLUMN_A_JOURNAL,
            DBHelper.COLUMN_A_MAIL,
            DBHelper.COLUMN_A_BUSINESS,
            DBHelper.COLUMN_A_BIRTH,
            DBHelper.COLUMN_A_GENDER,
            DBHelper.COLUMN_A_ABONE_TYPE,
            DBHelper.COLUMN_A_MEDENI_TYPE};

    //String whereClause = DBHelper.COLUMN_A_JOURNAL + " = ? AND " + DBHelper.COLUMN_A_IS_ACTIVE + " = ? ";
    //final String whereArgs[] = {String.valueOf(mJournal),isActive};

    //Cursor cursor = database.query(DBHelper.TABLE_ABONE, kolonlar, whereClause, whereArgs,
      //      null, null, DBHelper.COLUMN_A_ID + " ASC");

    Cursor cursor = database.rawQuery("select * from " + DBHelper.TABLE_ABONE + " WHERE "
                          + DBHelper.COLUMN_A_DATE_END + " LIKE '%" + mDate + "%'", null);

    //Cursor cursor = database.query(DBHelper.TABLE_ABONE, kolonlar, null, null, null, null, DBHelper.COLUMN_A_NAME + " ASC");
    while (cursor.moveToNext()) {
        food = new AboneDataList();
        food.setId(cursor.getInt(cursor.getColumnIndex(DBHelper.COLUMN_A_ID)));
        food.setAbone_no(cursor.getInt(cursor.getColumnIndex(DBHelper.COLUMN_A_ABONE_NO)));
        food.setName(cursor.getString(cursor.getColumnIndex(DBHelper.COLUMN_A_NAME)));
        food.setIs_stuff(cursor.getString(cursor.getColumnIndex(DBHelper.COLUMN_A_IS_STUFF)));
        food.setCountry(cursor.getString(cursor.getColumnIndex(DBHelper.COLUMN_A_COUNTRY)));
        food.setCity(cursor.getString(cursor.getColumnIndex(DBHelper.COLUMN_A_CITY)));
        food.setTown(cursor.getString(cursor.getColumnIndex(DBHelper.COLUMN_A_TOWN)));
        food.setAddress(cursor.getString(cursor.getColumnIndex(DBHelper.COLUMN_A_ADDRESS)));
        food.setPhone(cursor.getString(cursor.getColumnIndex(DBHelper.COLUMN_A_PHONE)));
        food.setMobile(cursor.getString(cursor.getColumnIndex(DBHelper.COLUMN_A_MOBILE)));
        food.setDate_start(cursor.getString(cursor.getColumnIndex(DBHelper.COLUMN_A_DATE_START)));
        food.setDate_end(cursor.getString(cursor.getColumnIndex(DBHelper.COLUMN_A_DATE_END)));
        food.setCount(cursor.getString(cursor.getColumnIndex(DBHelper.COLUMN_A_COUNT)));
        food.setIs_active(cursor.getString(cursor.getColumnIndex(DBHelper.COLUMN_A_IS_ACTIVE)));
        food.setCargo(cursor.getString(cursor.getColumnIndex(DBHelper.COLUMN_A_CARGO)));
        food.setYurt_id(cursor.getInt(cursor.getColumnIndex(DBHelper.COLUMN_A_YURT_ID)));
        food.setJournal(cursor.getString(cursor.getColumnIndex(DBHelper.COLUMN_A_JOURNAL)));
        food.setMail(cursor.getString(cursor.getColumnIndex(DBHelper.COLUMN_A_MAIL)));
        food.setBusiness(cursor.getString(cursor.getColumnIndex(DBHelper.COLUMN_A_BUSINESS)));
        food.setBirth(cursor.getString(cursor.getColumnIndex(DBHelper.COLUMN_A_BIRTH)));
        food.setGender(cursor.getString(cursor.getColumnIndex(DBHelper.COLUMN_A_GENDER)));
        food.setAbone_type(cursor.getString(cursor.getColumnIndex(DBHelper.COLUMN_A_ABONE_TYPE)));
        food.setMedeni_hal(cursor.getString(cursor.getColumnIndex(DBHelper.COLUMN_A_MEDENI_TYPE)));
        foodList.add(food);
    }
    database.close();
    cursor.close();
    return foodList;
}
40
задан 3 revs, 2 users 100% 29 November 2015 в 22:27
поделиться

6 ответов

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

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

Кроме того, коллега рекомендовал набор книг от Springer, хотя я сам не проверял ни одну из них:

34
ответ дан 27 November 2019 в 01:53
поделиться

Некоторые другие моменты для рассмотрения:

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

Две хорошие книги для дополнительных идей:

3
ответ дан 27 November 2019 в 01:53
поделиться

Как вы собираетесь это проверить

2
ответ дан 27 November 2019 в 01:53
поделиться

Использует ли он принципы SOLID?

2
ответ дан 27 November 2019 в 01:53
поделиться

Is the architecture in line with the technology vendors' guidance and roadmap?

You want to get support from your chosen platform, not fight it.

e.g. For Microsoft centric solutions this means documenting where and why your choices deviate from the Microsoft Architecture guidance.

2
ответ дан 27 November 2019 в 01:53
поделиться

Is there a single person who can be responsible for the architecture with enough (1) technical knowledge of proposed architecture, (2) experience managing things, (3) стоять в компании так, чтобы его решения не могли быть отменены менеджментом, который ничего не знает.

Поскольку (2) и (3) на самом деле не зависят от архитектуры, я бы нашел человека и спросите его, что он хотел бы сделать.

Предположим, что вы тот человек (а это не очевидно из вашего вопроса - это применимо только в том случае, если вы думаете, что по-прежнему будете главным архитектором этого дела). некоторое время), я бы послушался совета блога Joel On Software и написал проектную спецификацию с планами, целями, заказчиками, объясняя выбор дизайна, все. Это должно прояснить вид.

Дальнейшие мысли

Я попытался немного подумать, какие именно вопросы вы могли бы задать себе после того, как написали спецификацию, например «Легко ли обновить свой проект», » Обеспечивает ли он гибкость в достижении конечных целей? »,« Будет ли это легко поддерживать? »,« Есть ли проблемы с безопасностью? »И т. Д., Но, хотя и стоит задавать подобные вопросы, я просто не вижу, как они могли бы использоваться для любой «оценки», потому что, кроме фильтрации явных ошибок, я не думаю, что какой-либо конкретный вопрос может сильно помочь «оценить архитектуру». Возможно, стоит перефразировать ваш вопрос?

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

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

0
ответ дан 27 November 2019 в 01:53
поделиться
Другие вопросы по тегам:

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