Cara Membaca dan Membetulkan 100,000 Baris Kod dalam Seminggu

Cara Membaca dan Membetulkan 100,000 Baris Kod dalam Seminggu
Pada mulanya ia sentiasa sukar untuk memahami projek yang besar dan lama. Seni bina adalah salah satu aktiviti penilaian arkitek. Biasanya anda perlu bekerja dengan projek yang besar dan lama, dan hasilnya mesti dihantar dalam seminggu.

Bagaimana untuk menilai projek sebanyak 100k atau lebih baris kod dalam seminggu sambil tetap memberikan hasil yang benar-benar berguna kepada pelanggan.

Kebanyakan arkitek dan petunjuk teknikal telah menemui penilaian projek yang serupa. Ini mungkin kelihatan seperti proses separa formal atau sebagai perkhidmatan berasingan seperti yang dilakukan di syarikat kami, satu cara atau yang lain kebanyakan anda telah menangani perkara ini.

Yang asal dalam bahasa Inggeris untuk rakan anda yang bukan berbahasa Rusia ada di sini: Penilaian Seni Bina dalam seminggu.

Pendekatan syarikat kami

Saya akan memberitahu anda cara ia berfungsi dalam syarikat kami dan cara saya bertindak dalam situasi yang sama, tetapi anda boleh menukar pendekatan ini dengan mudah mengikut keperluan projek dan syarikat anda.

Terdapat dua jenis penilaian seni bina.

Dalaman – kami biasanya melakukannya untuk projek dalam syarikat. Mana-mana projek boleh meminta penilaian seni bina atas beberapa sebab:

  1. Pasukan berpendapat projek mereka sempurna dan ini mencurigakan. Kami mempunyai kes sedemikian, dan selalunya dalam projek sedemikian semuanya jauh dari ideal.
  2. Pasukan itu mahu menguji projek mereka dan penyelesaian mereka.
  3. Pasukan tahu perkara yang buruk. Mereka mungkin menyenaraikan masalah dan punca utama, tetapi mahukan senarai lengkap masalah dan cadangan untuk menambah baik projek.

Luaran adalah proses yang lebih formal daripada penilaian dalaman. Pelanggan sentiasa datang hanya dalam satu kes, apabila semuanya buruk - sangat teruk. Biasanya pelanggan memahami bahawa terdapat masalah global, tetapi tidak dapat mengenal pasti punca dengan betul dan memecahkannya kepada komponen.

Menilai seni bina untuk pelanggan luaran adalah kes yang lebih kompleks. Proses itu sepatutnya lebih formal. Projek-projek sentiasa besar dan lama. Mereka mempunyai banyak masalah, pepijat dan kod bengkok. Laporan mengenai kerja yang dilakukan hendaklah disediakan dalam tempoh maksimum beberapa minggu, yang harus merangkumi masalah utama dan cadangan untuk penambahbaikan. Oleh itu, jika kita berurusan dengan penilaian luaran projek, maka penilaian dalaman akan menjadi sekeping kek. Mari kita pertimbangkan kes yang paling sukar.

Penilaian seni bina projek perusahaan

Projek biasa untuk dinilai ialah projek perusahaan yang besar dan lama dengan banyak masalah. Seorang pelanggan datang kepada kami dan meminta kami membaiki projeknya. Ia seperti gunung ais, pelanggan hanya melihat hujung masalahnya dan tidak tahu apa yang ada di bawah air (dalam kedalaman kod).

Masalah yang pelanggan mungkin mengadu dan mungkin menyedari:

  • Isu Prestasi
  • Isu kebolehgunaan
  • Penggunaan jangka panjang
  • Kekurangan unit dan ujian lain

Masalah yang kemungkinan besar tidak diketahui oleh pelanggan, tetapi mungkin terdapat dalam projek:

  • Masalah keselamatan
  • Masalah reka bentuk
  • Seni bina yang salah
  • Ralat algoritma
  • Teknologi yang tidak sesuai
  • Hutang teknikal
  • Proses pembangunan yang salah

Proses semakan seni bina formal

Ini adalah proses formal yang kami ikuti sebagai sebuah syarikat, tetapi anda boleh menyesuaikannya bergantung pada syarikat dan projek anda.

Permintaan daripada pelanggan

Pelanggan meminta untuk menilai seni bina projek semasa. Orang yang bertanggungjawab di pihak kami mengumpul maklumat asas tentang projek dan memilih pakar yang diperlukan. Bergantung pada projek, ini mungkin pakar yang berbeza.

Penyelesaian Arkitek – orang utama yang bertanggungjawab untuk penilaian dan penyelarasan (dan selalunya satu-satunya).
Tumpukan pakar khusus – .Net, Java, Python dan pakar teknikal lain bergantung pada projek dan teknologi
Pakar awan – ini boleh menjadi arkitek awan Azure, GCP atau AWS.
Infrastruktur – DevOps, Pentadbir sistem, dsb.
Pakar lain – seperti data besar, pembelajaran mesin, jurutera prestasi, pakar keselamatan, peneraju QA.

Mengumpul maklumat mengenai projek

Anda harus mengumpul sebanyak mungkin maklumat tentang projek itu. Anda boleh menggunakan teknik yang berbeza bergantung pada situasi:

  • Soal selidik dan kaedah komunikasi lain melalui mel. Cara yang paling tidak berkesan.
  • Mesyuarat dalam talian.
  • Alat khas untuk pertukaran maklumat seperti: Google doc, Confluence, repositori, dsb.
  • Mesyuarat "langsung" di tapak. Cara yang paling berkesan dan paling mahal.

Apa yang anda perlu dapatkan daripada pelanggan?

Maklumat asas. Apakah projek itu? Tujuan dan nilainya. Matlamat dan rancangan utama untuk masa depan. Matlamat dan strategi perniagaan. Masalah utama dan hasil yang diinginkan.

Maklumat projek. Timbunan teknologi, rangka kerja, bahasa pengaturcaraan. Arahan di premis atau awan. Jika projek berada dalam awan, perkhidmatan apa yang digunakan. Apakah corak seni bina dan reka bentuk yang digunakan.

Keperluan tidak berfungsi. Semua keperluan yang berkaitan dengan prestasi, ketersediaan dan kemudahan penggunaan sistem. Keperluan keselamatan, dsb.

Kes penggunaan asas dan aliran data.

Akses kepada kod sumber. Bahagian yang paling penting! Anda pasti akan mendapat akses kepada repositori dan dokumentasi tentang cara membina projek.

Akses kepada infrastruktur. Alangkah baiknya untuk mempunyai akses ke pentas atau infrastruktur pengeluaran untuk berfungsi dengan sistem langsung. Ia adalah satu kejayaan besar jika pelanggan mempunyai alat untuk memantau infrastruktur dan prestasi. Kami akan bercakap tentang alat ini dalam bahagian seterusnya.

Dokumentasi. Jika pelanggan mempunyai dokumentasi ini adalah permulaan yang baik. Ia mungkin ketinggalan zaman, tetapi ia masih merupakan permulaan yang baik. Jangan sekali-kali mempercayai dokumentasi - uji dengan pelanggan, pada infrastruktur sebenar dan dalam kod sumber.

Proses Penilaian Seni Bina

Bagaimanakah seseorang boleh memproses sejumlah besar maklumat dalam masa yang singkat? Pertama sekali, selarikan kerja.

DevOps harus melihat infrastruktur. petunjuk teknologi ke dalam kod. Jurutera prestasi untuk melihat metrik prestasi. Pakar pangkalan data harus mendalami struktur data.

Tetapi ini adalah kes yang ideal apabila anda mempunyai banyak sumber. Biasanya, satu hingga tiga orang menilai projek. Anda juga boleh membuat anggaran sendiri, yang selalunya berlaku jika anda mempunyai pengetahuan dan pengalaman yang betul dalam semua bidang projek. Dalam kes ini, anda perlu mengautomasikan semua proses sebanyak mungkin.

Malangnya, anda perlu membaca dokumentasi secara manual. Dengan jumlah pengalaman yang betul, anda boleh memahami kualiti dokumentasi dengan cepat. Apa yang benar dan apa yang jelas tidak bertepatan dengan realiti. Kadangkala anda mungkin melihat seni bina dalam dokumentasi yang tidak akan berfungsi dalam kehidupan sebenar. Ini adalah pencetus untuk anda memikirkan bagaimana ia dilakukan secara realiti dalam projek.

Alat yang berguna untuk mengautomasikan penilaian projek

Penilaian kod ialah latihan yang mudah. Anda boleh menggunakan penganalisis kod statik yang akan menunjukkan kepada anda reka bentuk, prestasi dan isu keselamatan. Berikut adalah beberapa daripadanya:

Struktur 101 adalah alat yang hebat untuk seorang arkitek. Ia akan menunjukkan kepada anda gambaran besar, kebergantungan antara modul dan kawasan yang berpotensi untuk pemfaktoran semula. Seperti semua alat yang baik, ia memerlukan wang yang baik, tetapi anda boleh memanfaatkan versi percubaan 30 hari.

soundQube - alat lama yang bagus. Alat untuk analisis kod statik. Membolehkan anda mengenal pasti kod buruk, pepijat dan masalah keselamatan untuk lebih daripada 20 bahasa pengaturcaraan.

Semua pembekal awan mempunyai alat pemantauan infrastruktur. Ini akan membolehkan anda menilai dengan betul keberkesanan infrastruktur anda dari segi kos dan prestasi. Untuk AWS ini penasihat yang dipercayai. Ia mudah untuk Azure Penasihat Azure.

Pemantauan dan pengelogan prestasi tambahan akan membantu mencari isu prestasi di semua peringkat. Bermula dari pangkalan data dengan pertanyaan yang tidak berkesan, bahagian belakang dan berakhir dengan bahagian hadapan. Walaupun pelanggan tidak memasang alat ini sebelum ini, anda boleh menyepadukannya ke dalam sistem sedia ada dengan agak cepat untuk mengenal pasti isu prestasi.

Seperti biasa, alat yang baik sangat berbaloi. Saya boleh mengesyorkan beberapa alat berbayar. Sudah tentu anda boleh menggunakan sumber terbuka tetapi ia akan mengambil lebih banyak masa. Dan ini harus dilakukan terlebih dahulu, bukan semasa proses penilaian seni bina.

Relik Baru – alat untuk menilai prestasi aplikasi
anjing data – perkhidmatan pemantauan sistem awan

Terdapat banyak alat yang tersedia untuk ujian keselamatan. Kali ini saya akan mengesyorkan anda alat pengimbasan sistem percuma.

OWASP ZAP – alat untuk mengimbas aplikasi web untuk mematuhi piawaian keselamatan.

Mari kita satukan semuanya menjadi satu keseluruhan.

Menyediakan laporan

Mulakan laporan anda dengan data yang anda kumpulkan daripada pelanggan. Terangkan matlamat projek, kekangan, keperluan tidak berfungsi. Selepas ini, semua data input harus disebut: kod sumber, dokumentasi, infrastruktur.

Langkah seterusnya. Senaraikan sebarang isu yang anda temui secara manual atau menggunakan alat automatik. Letakkan laporan besar yang dijana secara automatik pada penghujung bahagian aplikasi. Perlu ada bukti ringkas dan padat tentang masalah yang ditemui.
Utamakan masalah yang terdapat pada ralat, amaran, skala maklumat. Anda boleh memilih skala anda sendiri, tetapi ini adalah skala yang diterima umum.

Sebagai seorang arkitek sejati, adalah menjadi tanggungjawab anda untuk memberikan cadangan untuk membetulkan masalah yang ditemui. Terangkan penambahbaikan dan nilai perniagaan yang akan diterima oleh pelanggan. Bagaimana untuk menunjukkan nilai perniagaan daripada pemfaktoran semula seni bina kita bincang tadi.

Sediakan peta jalan dengan lelaran kecil. Setiap lelaran hendaklah mengandungi masa untuk disiapkan, penerangan, jumlah sumber yang diperlukan untuk penambahbaikan, nilai teknikal dan nilai perniagaan.

Kami melengkapkan penilaian seni bina dan menyediakan pelanggan dengan laporan

Jangan sekali-kali hanya menghantar laporan. Ia mungkin tidak dibaca sama sekali, atau mungkin tidak dibaca dan difahami tanpa penjelasan yang betul. Pendek kata, komunikasi langsung membantu menghapuskan salah faham antara orang. Anda harus menjadualkan pertemuan dengan pelanggan dan bercakap tentang masalah yang ditemui, memberi tumpuan kepada yang paling penting. Ia patut menarik perhatian klien kepada masalah yang mungkin tidak disedarinya. Seperti isu keselamatan dan terangkan cara ia boleh memberi kesan kepada perniagaan. Tunjukkan peta jalan anda dengan penambahbaikan dan bincangkan pilihan berbeza yang lebih sesuai untuk pelanggan. Ini mungkin masa, sumber, jumlah kerja.

Sebagai ringkasan mesyuarat anda, hantar laporan anda kepada pelanggan.

Kesimpulannya

Penilaian seni bina adalah satu proses yang kompleks. Untuk melaksanakan penilaian dengan betul anda perlu mempunyai pengalaman dan pengetahuan yang mencukupi.

Adalah mungkin untuk memberikan pelanggan hasil yang berguna untuknya dan perniagaannya dalam masa seminggu sahaja. Walaupun anda melakukannya sendiri.

Berdasarkan pengalaman saya, banyak penambahbaikan telah dimuat turun di bahagian tengah, dan kadangkala tidak pernah dimulakan. Mereka yang memilih nilai emas untuk diri mereka sendiri dan hanya membuat sebahagian daripada penambahbaikan yang paling berguna untuk perniagaan dengan kos buruh yang minimum telah meningkatkan kualiti produk mereka dengan ketara. Mereka yang tidak melakukan apa-apa boleh menutup projek itu sama sekali selepas beberapa tahun.

Matlamat anda adalah untuk menunjukkan kepada pelanggan peningkatan maksimum untuk harga minimum.

Artikel lain dari bahagian seni bina anda boleh membaca pada masa lapang anda.

Saya berharap anda membersihkan kod dan keputusan seni bina yang baik.

Kumpulan facebook kami - Seni Bina dan Pembangunan Perisian.

Sumber: www.habr.com

Tambah komen