Một số vấn đề cần lưu ý khi estimate project Android
1. Spec Spec đã quyết định hay chưa? Chăc chắn không thể giữ nguyên spec ngay từ đầu nhưng nếu spec không thay đổi ở mức độ nào đó là tốt rồi. Chẳng hạn khi đang làm thì cũng có thể cùng nhau xem xét Spec, hay là có ý tưởng gì khác,... 2. Tên app Nếu tên app bắt đầu bằng "Android", ...
1. Spec
Spec đã quyết định hay chưa? Chăc chắn không thể giữ nguyên spec ngay từ đầu nhưng nếu spec không thay đổi ở mức độ nào đó là tốt rồi. Chẳng hạn khi đang làm thì cũng có thể cùng nhau xem xét Spec, hay là có ý tưởng gì khác,...
2. Tên app
Nếu tên app bắt đầu bằng "Android", "アンドロイド"、hay "あんどろいど thì sẽ bị Google reject, nếu muốn release trên Google Play thì cần phải làm theo các qui ước về tên app của Google Play. Ngoài ra nếu tên app có nhiều dãy kí tự thì cần check trong tất cả resource.
3. Android version
Version support đều là vấn đề đương nhiên của các project, cần phải kiểm tra ngay từ đầu. Với mỗi project đếu có sự khác nhau về độ khó, dễ, qui mô, ước lượng nên cần phải xem xét. Android thì hầu như các công ty lập trình đều làm customize của riêng mình nên việc xảy ra bug hay layout bị lỗi phát sinh là chuyện không thể tránh khỏi. Khi làm hợp đồng cần xem xét version OS support với động tác trên máy xem có ổn không? Nếu không thì phải tạo 1 cái hợp đồng khác(hoặc nằm ngoài vùng support).
Các dòng máy bị loại bỏ
Tính năng | OS version | Đặc trưng | Reference | Máy không hợp |
---|---|---|---|---|
- | 4.0.3 | support tới máy ra đời trước 2011 | - | Galaxy S2/S3 |
V-Sync | 4.1 | Dòng máy vẽ ảnh | - | Galaxy Note |
BLE / GLES 3.0 | 4.3 | Có/không trang bị, tùy máy | Galaxy Nexus | Galaxy S3a |
Dễ code | 5.0 | Không cần thiết thêm 1 số phần Drawable | Nexus 7(2012) | Zenfone |
Cảm nhận của người làm | 2.x | Cục gạch | Nexus One | - |
Thông cảm tới người làm | 3.x | Như bị bắt xử lí tới OS không tồn tại | Không tồn tại | - |
Một số vấn đề hay xảy ra với từng loại máy(chỉ nhớ ra 1 vài phần)
Tên máy | Nội dung |
---|---|
Galaxy S2 | "Lại có bug ở Galaxy S2", là không nối mạng,hay S2 4G hay S2 Wimax |
Galaxy S2 | "Lại lỗi layout chỉ với máy Galaxy S2 ' |
Galaxy S3 | "Có thể chạy trên S3 không? |
Galaxy Note | Đơn giản chỉ là chậm |
Galaxy Nexus | Cấu trúc Textures khiến app bị crash |
Zenfone | Nhìn thì có vẻ là x86、64bit nhưng thực ra là 32bit,Android 5.0 dùng UI design riêng |
Snapdragon | Rất nhiều lỗi trên BLE,khó xử lí |
Nexus6p | Có xử lí dựa vào EGL, nếu load textures từ thread thì có thể bị crash |
4. Design
Hiện tại có thể chia làm 4 loại
- Material Design
- Holo design
- Design giống IOS
- Design riêng
Đi từ trên xuống dưới thì thời gian làm tăng lên, Material Design thì có nhiều library, thông tin, Holo cũng có nhiều thông tin, Design theo IOS không phải là không có library nhưng có nhiều phàn nàn từ các programer.Và Design riêng là cái mất time nhất, phải bắt đầu từ 1. Vất vả nhất là dùng OpenGL và Canvas, thực sự là có trường hợp phải cấu trúc từ 1. Có trường hợp design là 1 công ty khác làm.Khi đó cần xem xét xem có tạo được app resource hay không. Cần xem Ai tạo Drawable resource khi ước lượng thời gian làm.
5. Layout theo chiều ngang-dọc,Phone-Tablet
Tùy theo yêu cầu mà thời gian làm khác nhau.Cần ước lượng tùy theo trường hợp.Ví dụ như bảng dưới
Xoay ngang dọc | Tạo layout mới khi xoay | Xử lí Phone / Tablet | cost |
---|---|---|---|
không | không | không | không |
có | không | không | Chỉ cần chỉnh trong file mainfest |
có | có | không | Cần thêm cả design |
có | không | có | Cần thêm design và xử lí code |
có | có | có | tăng nhiều về cost của design và code |
6. WebView
Trường hợp dùng WebView như 1 phần của app thì cần xem ai là người giải quyết vấn đề layout khi lỗi. Android 4.3 trở xuống với 4.4, 6.0 thì có sự khác nhau về WebView nên nhất định phải xem xét động tác của WebView trong máy cùng với OS version.
7. Server API
Với các app cần dùng tới Server API thì tùy theo người làm Api mà cũng có các điểm thay đổi theo Cần phải tính thêm cost của người làm server. Nếu bên khách làm server thì cần xác nhận xem khi nào xong, có server Stagging hay không?
8. Thay đổi font size
Từ Android 4 thì người dùng có thể thay đổi font size. Cần xác nhận Spec xem khi người dùng chọn font lớn thì cho phép layout thay đổi đến đâu.
9. Library
Khi làm 1 Android project cần kết hợp nhiều OSS library, nhưng đôi khi liên quan vấn đề bản quyền nên trước khi bắt đầu project cần kiểm tra xem có được phép dùng library đó hay không.
10. Apt / Multi Dex / Debug-Proguard
Dùng các library trên thì tiện nhưng thời gian build tăng lên, thời gian chờ tăng lên. Vì vậy nếu cần phải chỉnh code cũ thì phải tăng thêm cost.
11. Chức năng chụp ảnh
Trường hợp có chức năng chọn từ Gallery/ảnh chụp thì tùy theo việc làm chức năng camera ngay trong app hay chỉ cần thêm Intent sẽ có sự khác nhau lớn. Nếu làm luôn trong app thì nếu support từ Android 5 trở lên thì chỉ cần Camera2 là đủ. Nếu không thì cần phải tách version Xác nhận xem có vấn đề về API camera hay không, nếu sau này bị xóa Camera Api thì xem trách nhiệm thế nào.
12. GPS
Khi làm chức năng GPS có trường hợp phải cầm máy theo và đi xác nhận tại địa điểm thực vì vậy cần tính thêm thời gian đi xác nhận/kiểm chứng này.
13. TextureView+GL
Trong TexttureView,có thể có Memory leak, nên về phía app xác nhận trên Spec khi bắt buộc phải có TextureView thì nên giải thích cho khách về việc không thể tránh khỏi memory leak.
14. Proguard
Đa số các project đều là bắt buộc Proguard.Cần thêm thời gian kiểm chứng Proguard vì có thể xảy ra sự thay đổi khi code với khi release. Cách thiết lập Proguard hay thay đổi và cách viết cũng phức tạp nên cần tính thêm thời gian làm.
15. Môi trường code
Với project mới thì là Android Studio + Gradle Nếu là project cũ (build trên eclipse chẳng hạn) thì cần ước lượng thêm thời gian để chuyển sang môi trường build mới.
16. Formatter
Tùy theo môi trường code(Android studio hay eclipse) hay IDE đang sử dụng mà nội dung Formatter có thể khác nhau. Nếu có thể thì sử dụng formatter tiêu chuẩn của AOSP Trong trường hợp làm 1 project cũ không có hay chưa thêm formatter vào thì cần tính thêm thời gian làm.
17. Repository
Hiện tại thì vẫn là Git nhưng nếu là project làm tiếp thì có khả năng là chuyển bằng SVN.Trường hợp đó thì có thể tránh bằng cách dùng Git_SVN . biết rằng việc dùng Git thì sẽ tăng thêm cost nên cần tính thêm thời gian làm.
18. Hạn chế IP Address
Vì vấn đề bảo mật nên có trường hợp chỉ IP được chỉ định mới vào được server nên có thể không kết nối được tới Repository. Khi test trên 3G/LTE nếu gặp khó khăn, cần chỉnh proxy thì phải tính toán thêm thời gian làm cái này.
19. CL
Nếu có thể quản lí bằng github,thì có thể dùng service của cloud Circle CI. Nếu không dùng được thì có thể thay bằng Jenkins Trường hợp nào cũng xem xet cấu trúc, ước lượng thời gian làm.
20. Test
Việc viết tự động test thì cũng chỉ là lí tưởng, với các class khác nhau thì độ khó cũng khác nhau nhưng nếu có thể viết được chỗ nào thì hãy viết.
21. Test Input
Cuối cùng khi hoàn thành app thì cần check thực tế khi dùng. Với những màn hình giao diện mà không thể tự động test bắt buộc phải dùng tester thì tùy theo qui mô hãy tính thêm thời gian test, tính xem ai test và tính thêm cost cho người đó.
22. Documentation
Nhiều project khi xong có yêu cầu documentation khi hoàn thành. Khi đó hãy hỏi xem nội dung cần là gì và chi tiết nội dung cần là thế nào để tính toán qui mô rồi tăng thêm cost và thời gian làm.(Cái documentation hãy nghỉ là tỉ lệ thuận với qui mô hợp đồng )
23. Hệ điều hành
Nếu dùng Mac cần phải chuyển sang máy window thì hãy tính thêm thời gian làm quen với môi trường mới.
24. Javadoc
Khi cần viết list giải thích của tất cả các class thì có thể phải dùng Javadoc làm chi tiết document. Hãy tính thêm điểm này.
25. Cost Quản lí
Ngoài cost thông thường(dev, QA,..) thì cần tính thêm cost quản lí.Ví dụ: 1 tuần * 2 h thì 1 tháng cũng là 8 h bằng 1 ngày làm. Hãy tính thêm.
26. Sản phẩm
Tùy theo từng công ty khách hàng mà policy sẽ khác nhau. Ví dụ:
- Commit trên Repository của Git hay SVN
- Gửi file APK
- Upload project lên FTP bằng file ZIP
- Chuyển bằng cách copy project vào USB hay CD,,,, Tùy theo các trường hợp trên nên điều chỉnh cho phù hợp
Ngoài những vấn đề trên chúng ta cũng cần phải tính thêm một số vấn như quảng cáo trong app, một số app như game kiếm tiền bằng cách đưa ra các vật dụng để người dùng mua, dùng SDK bên ngoài như GoogleAnalytics,...
Trích dẫn: (http://qiita.com/eaglesakura/items/3f552dc5971d39fa9466#アプリ仕様)