Tôi đã tham gia vào một dự án trong đó toàn bộ hệ thống được viết bằng Oracle Forms, nhưng không có bất kỳ tài liệu nào. Công nghệ có thể dễ dàng có được Perl. Đây là kế hoạch tấn công để chuyển hệ thống sang Oracle ADF (nhưng cũng có thể dễ dàng trở thành bất kỳ nền tảng nào khác):
- Tạo một tập hợp các loại mã cho các yêu cầu nghiệp vụ (chức năng, lỗi, xác nhận, ui, v.v.).
- Tạo một tập hợp các danh mục cho màn hình (nhóm chúng theo chức năng tương tự).
- Tạo một danh sách tất cả các màn hình cho toàn bộ ứng dụng và liệt kê chúng trong bảng tính.
- Chỉ định mỗi màn hình một danh mục mã và loại mã (ví dụ: quy tắc kinh doanh, yêu cầu hệ thống, kỹ thuật).
- Kỹ sư đảo ngược mã để trích xuất các yêu cầu nghiệp vụ, tạo một mô tả một câu cho mỗi yêu cầu.
Tại thời điểm này, bạn sẽ có tài liệu về các quy tắc kinh doanh cho ứng dụng. Điều này một mình sẽ là vàng cho bất cứ ai tiếp theo phải duy trì hệ thống. Hơn nữa, nó sẽ cho bạn cơ hội để xem những phần nào của hệ thống đã được sao chép. (Trong trường hợp của tôi, chúng tôi đã phát hiện ra rằng hơn 60% cơ sở mã đã được sao chép.)
Từ đây, bạn có thể sắp xếp thông qua các yêu cầu kinh doanh với quản lý. Điều này có thể đòi hỏi phải tạo ra các câu chuyện người dùng, ví dụ. Điều này cũng sẽ tiết lộ chức năng trùng lặp cấp cao và đưa ra các cơ hội để đơn giản hóa và nâng cao hệ thống trong quá trình di chuyển. Tôi đã bao gồm một ảnh chụp màn hình của bảng tính để chỉ ra một cách để theo dõi và ghi lại các yêu cầu.
Bạn có thể phải đánh lên Perl của bạn. ;-)
Khi bạn đã thiết kế ngược lại dự án, bạn có thể sử dụng một bộ công cụ để giúp bạn thực hiện vòng đời phát triển phần mềm. (Chúng tôi đang sử dụng JIRA , nhưng có nhiều bộ phần mềm khác sẽ hoạt động.) Bạn có thể phải chiến đấu, nhưng một khi bạn có yêu cầu, bạn sẽ muốn chuyển sang các môi trường sau:
- Tạo một môi trường tài liệu (ví dụ, wiki).
- Tạo môi trường phát triển (DEV). Máy chủ web, máy chủ cơ sở dữ liệu, kho lưu trữ nguồn, v.v.
- Tạo một môi trường thử nghiệm (TEST) phản ánh sự phát triển.
- Tạo một môi trường tiền sản xuất (PREPROD) phản ánh chính xác quá trình sản xuất và có thể đóng vai trò là sự thất bại cho hệ thống sản xuất.
- Tạo môi trường sản xuất (SẢN XUẤT).
Hãy suy nghĩ về việc sử dụng một dịch vụ hướng đến cộng đồng để giải quyết yêu cầu của tài liệu người dùng cuối. Một gói phần mềm tuyệt vời tương tự như bộ StackExchange là OSQA . Hãy để người dùng xây dựng hệ thống trợ giúp (đó là một chiến lược khá thông minh).
SDLC trở thành:
- Các nhà phát triển thực hiện và kiểm tra các thay đổi ứng dụng trong DEV (sử dụng kho lưu trữ ).
- Các công cụ hệ thống tự động triển khai các bản dựng thường xuyên vào TEST.
- Khi người kiểm tra hài lòng với ứng dụng, ứng dụng sẽ được triển khai vào PREPROD. Điều này cho phép quá trình triển khai cũng được kiểm tra. Thử nghiệm nhiều hơn xảy ra trong PREPROD.
- Sau khi người kiểm tra hài lòng với PREPROD, ứng dụng cuối cùng được đưa vào SẢN XUẤT.
Tôi thấy đây là một cách tiếp cận có tổ chức cao, hoạt động tốt với các phương pháp phát triển khác nhau. Vượt qua đầu tiên, mà tôi đã mô tả ở đây, nên được coi là "nét vẽ rộng" - bạn không muốn nhận quá chi tiết (sa lầy) với các chi tiết kỹ thuật tại thời điểm này. (Ví dụ: yêu cầu giao diện người dùng được ghi lại bởi mỗi màn hình. Miễn là bạn đã liệt kê các màn hình, bạn không cần lặp lại từng trường nhập - chỉ cần liên kết đến ảnh chụp màn hình hoặc URL hoạt động.)
Cuối cùng, để xem lại mã nguồn, chúng tôi đã tự động tạo một loạt các trang web (một trang web trên mỗi "màn hình" chức năng). Điều này hoạt động tốt vì mã PL / SQL có thể được tách thành các tệp riêng biệt và tự động được chuyển đổi sang HTML với tính năng tô sáng cú pháp. Với Perl, điều này có thể không hoạt động tốt cho bạn. Mặc dù vậy, ý tưởng là bạn có thể tạo các liên kết neo trong bảng tính quay lại phần mã thực thi yêu cầu nghiệp vụ. (Bên cạnh đó, điều này cũng sẽ cho phép nhiều nhà phát triển thiết kế song song các yêu cầu hệ thống vì mỗi nhà phát triển có thể giải quyết các màn hình khác nhau cùng một lúc.)
Một đoạn mã nguồn ví dụ (+ là một liên kết neo):
Bạn có thể khuyên bạn nên thuê một vài bậc thầy về Perl để giúp thực hiện nhiệm vụ phân tích.
Tôi không nghĩ rằng sẽ rất hữu ích khi chỉ ra rằng những người khác đang làm "công việc nhảm nhí"; thay vào đó, bạn nên tìm cách cải tiến sản phẩm và cho mọi người cơ hội giúp đỡ với mục tiêu này (và có lẽ học cách cải thiện kỹ năng của họ trong quy trình). Đó là, bạn không biết những gì các nhà phát triển khác biết, bạn cũng không ở đó khi họ phát triển hệ thống. Cách tiếp cận này làm cho toàn bộ quá trình mở và dễ thấy, theo đó mọi người đều có thể đóng góp.
Thành thật mà nói, các nhà quản lý sẽ nhìn thấy chính họ là người thực sự hữu ích và ai muốn cải thiện.