Implementation
Các chủ đề trong bài:
- Ý nghĩa của implementation
- Phong cách coding và những quy chuẩn
- Code với những quy tắc chuẩn
- Ý nghĩa của sự tích hợp (integration)
- Quá trình tích hợp
Implementation:
- Ởđây, implementation được đị nh nghĩa là bao gồm “Unit implementation” và
“Integration”. Ta có thể hiểu là một Implementation lớn sẽ được làm từng bước nhỏ,
từng giai đoạn nhỏ một sau đó tích hợp lại tạo thành một chương trình lớn và thống nhất.
Sự phân chia nhỏ này sẽ góp phần khá lớn vào việc bảo trì và phát triển về sau.
- Mục tiêu của Implementation là đáp ứng được nhu cầu của khách hàng thông qua các
thiết kế đặc tả chi tiết.
- Yêu cầu về coding: chuẩn xác và rõ ràng.
Các bước dùng cho hiện thực từng chi tiết nhỏ:
Các bước chuẩn bị cho Implementation:
- Xác nhận lại tài liệu thiết kế chi tiết phải hiện thực: chỉ code từ phần thiết kế
- Chuẩn bị việc phân chia thời gian dành cho từng việc, cái này được phân loại bằng cách:
Residual (không biết dị ch sao) tài liệu thiết kế chi tiết, xem lại tài liệu thiết kế chi tiết,
coding, coding review, biên dị ch và sửa lỗi cú pháp, kiểm tra các thành phần nhỏ.
- Chuẩn bị ghi lại những khuyết điểm, sai sót
- Hiểu những yêu cầu cơ bản
- Dự đốn kích thước và thời gian dựa trên những dữ liệu cũ của bạn
- Lên kế hoạch làm việc với từng 100 dòng code.
RUP Implementation Model Constituents:
Hiện thực Code:
- Lên kế hoạch các cấu trúc và thiết kế residual cho code của bạn
Ghi chú lại điều kiện trước và sau
Ghi chú lại thời gian dành cho mỗi cơng việc
- Tự kiểm sốt thiết kế và cấu trúc của mình: ghi chú lại cơng việc, mã nguồn …
- Type code của mình:
-
-
-
Chưa biên dị ch
Liệt kê các danh sách
Áp dụng các tiêu chuẩn cơ bản
Dùng các cách thức code dễ nhất để chỉ nh sửa
Tự kiểm soát code: do not compile yet
Bảo đảm rằng code của bạn đáp ứng được yêu cầu cơng việc
Ghi chú thời gian, các chỗ hỏng tìm được, mã nguồn, …
Xem các checklist chi tiết yêu cầu về các cách xây dựng phương thức và class để kiểm
soát
Biên dị ch code:
Sửa lỗi cú pháp
Ghi chú thơi gian, các lỗi, mã nguồn, …
Kiểm tra code:
Áp dụng unit test methods
Ghi chú
Tổng quát về cách luyện tập Programming:
- Luôn luôn tìm cách tái sử dụng trước
- Enforce intention: nếu code của bạn có mục đích sử dụng trong những cách đặc biệt, thì
hãy viết nó làm sao đó để nó không thể sử dụng bằng những cách khác được.
“Think Globally, Program Locally”
- Tạo cho tất cả các member local và invisible hết mức có thể.
Tính đa dạng:
- Tránh những kiểu dữ liệu điều tra: if(x instanceof MyClass) hoặc dùng hàm ảo thay thế
- Sử dụng Singleton design pattern nếu chỉ có duy nhất một instance trong class
Điều khiển các ngoại lệ:
- Chỉ bắt những ngoại lệ mà bạn biết cách điều khiển chúng
- Những lời gọi ngoại lệ phải được điều khiển một cách hợp lý
- Đừng đưa ra những ngoại lệ để thay thế cho mục đích chính của việc testing
- Cân nhắc về vấn đề có nên đưa ra các điều khiển ngoại lệ không: tùy vào từng trường
hơp mà ta sẽ cân nhắc vấn đề này sao cho hợp lý nhất
- Nói chung là về phần điều khiển ngoại lệ thì các ứng dụng khác nhau sẽ yêu cầu có phải
xuất ra các ngoại lệ và dừng chương trình ln khơng. Ví dụ như game thì đây là một ứng
dụng không yêu cầu khắt khe, nên khi có một số ngoại lệ vẫn có thể tiếp tục ứng dụng
được. Cịn như một số các chương trình như giao dị ch ngân hàng thì yêu cầu rất khắt khe
về vấn đề này do đó cần phải ngắt chương trình ngay nếu có ngoại lệ.
Hiện thực điều khiển lỗi:
- Dõi theo và kiểm sốt một q trình phát triển
- Cân nhắc việc sử dụng class trong bao đóng với các giá trị parameter hợp lệ.
Xây dựng riêng, dùng các nhà máy hàm để tạo các đối tượng
Bắt nhiều lỗi tại thời gian biên dị ch
- Hiện thực như yêu cầu và điều khiển các lỗi tại những nơi theo điều kiện
- Với những chương trình khơng bao giờ được phép bị sự cố thì phải tiên đốn được tất cả
những lỗi có thể xảy ra trong q trình hiện thực.
- Cách khác, có thể dựa theo những chính sách chắc chắc để kiểm tra parameters.
Những quy chuẩn đặt tên:
Cái này như kiểu mấy cái syntax trong ngơn ngữ lập trình thơi, đọc tiếng anh cũng ko q khó
khăn đâu:
Bản ghi phương thức: trong bản ghi này sẽ ghi chi tiết về các method
- Method này là gì
- Tại sao nó làm việc đó
- Những parameter nào phải được truyền vào
- Những ngoại lệ mà nó ném ra
- Lý do chọn tầm vực
- Các lỗi
- Các miêu tả trong việc kiểm tra
- Lị ch sử thay đổi
- Ví dụ về cách làm việc của method
- Điều kiện đầu và cuối
- Các tài liệu đặc biệt
Ví dụ:
Tài liệu về các thuộc tính:
- Ghi lại về các thuộc tính, được sử dụng để làm gì.
Hằng số:
- Dùng từ khóa final để đị nh nghĩa những biến hằng. Khi đã có từ khóa này đứng trước thì
giá trị của nó sẽ khơng thay đổi.
Ex:
• instead of ...
• protected static final MAX_CHARS_IN_NAME;
• consider using ...
• protected final static int getMaxCharsInName()
• { return 20;
• }
Khởi tạo thuộc tính:
- Thuộc tính luôn luôn phải được khởi tạo: private float _balance = 0;
-
Thuộc tính có thể là đối tượng của một class khác: private Customer _customer;
Cách truyền thống để xây dựng đối tượng: private Customer _customer = new
Customer(“Edward”, “Jones”)
Vấn đề về bảo trì. Khi những thuộc tính mới được thêm vào thì phải update lại tồn bộ.
Kiểm sốt code:
- C1: Tên của class có tương thích khơng
- C2: Nó có thể là trừu tượng khơng?
- C3: header của nó có miêu tả đầy đủ mục đích khơng
- C4: Header của nó có tham khảo yêu cầu hoặc phần tử thiết kế tương ứng hay không?
- C5: Trạng thái package thuộc về cái gì?
- C6: nó có thể là private ko?
- C7: nó có nên là final khơng?
- C8: tài liệu chuẩn có được áp dụng vào không?
Attributes:
Constructor:
Method Header:
Method Bodies:
Đo đạc chuẩn cho mã nguồn:
- Đếm số dòng: Line of code (LoC)
- Đo theo chuẩn IEEE:
- Cyclomatic Complexity
Sự tích hợp: (Integration)
- 1 ứng dụng thì phức tạp -> chúng ta cần xây dựng từng phần một -> kết hợp chúng lại
- Waterfall process: q trình tích hợp gần ở giai đoạn cuối
Unified Process for Integration & test:
Tổng quát về quá trình phát triển:
Quá trình xây dựng:
Sự tích hợp trong q trình phát triển Spiral:
Relating build and Iteration in the Unified process:
Build Sequence: Ideal vs Typical
Kế hoạch cho việc kết hợp lại và xây dựng:
- Hiểu kiến trúc phân giải: cố gắng làm kiến trúc trở nên đơn giản
- Xác đị nh phần kiến trúc lặp lại sẽ được hiện thực:
Xây dựng framework
Nếu được thì tiếp tục tích hợp
Xây dụng UI đủ để testing
Tài liệu yêu cầu cho mỗi việc lặp lại
- Phân giải mỗi sự lặp lại để build nếu cần thiết
- Lên kế hoạch testing, review và quản lý quá trình
- Sàng lọc thời gian biểu để phản ánh kết quả
Roadmap for Integration and System Test