Những công việc chính của quản lý cấu hình phần mềm (scm) là gì?

Đồ án tốt nghiệp Khoa công nghệ thông tinLỜI CẢM ƠNTrong quá trình học tập tại trường, em đã được quý thầy cô truyền đạt tất cả các kiến thức nền tảng, chuyên môn thiết thực và quý giá. Đó là những kiến thức cần thiết làm cơ sở nghiên cứu cho việc phát triển trong ngành công nghệ thông tin, cũng như trong công việc sau khi ra trường. Trong đó đồ án tốt nghiệp là cơ hội để em có thể áp dụng, tổng kết lại những kiến thức mà em đã học. Đồng thời, rút ra được những kinh nghiệm thực tế và quý giá trong suốt quá trình thực hiện đề tài. Nhờ sự chỉ bảo tận tình của thầy, các thầy cô trong khoa và bạn bè cũng như sự nỗ lực tìm tòi của bản thân, đã giúp em hoàn thành đề tài một cách thuận lợi. Tuy nhiên do thông tin cập nhật và kinh nghiệm thực tế còn có phần hạn chế nên kết quả của Đề tài cũng chỉ dừng lại ở chỗ học tập và trao đổi kinh nghiệm do đó tính khả thi của Đề tài còn chưa cao. Bởi vậy em mong là sẽ nhận được sự góp ý của các thầy cô cùng toàn thể các bạn để đề tài được hoàn thiện hơn. Một lần nữa em xin chân thành cảm ơn các thầy cô giáo trong khoa Công Nghệ Thông Tin đã dạy dỗ em trong những năm qua.Em xin chân thành cảm ơn thầy đã tận tình giúp đỡ, chỉ bảo và tạo điều kiện để em có thể hoàn thành Đồ án tốt nghiệp này.TPHCM, ngày …tháng…năm 2011Sinh viên Mục lục1Đồ án tốt nghiệp Khoa công nghệ thông tinnLỜI CẢM ƠN 1Mục lục hình vẽHình 1: Bản đồ của các công cụ và thủ tục để SCM hoạt động.Hình 2: Thu nhận của các mụcHình 3: Quy trình cung cấp các thủ tục chính thức để kiểm soát thay đổi.Hình 4: Check-in fileHình 5: Check-out fileHình 6: Change request tracking system modelHình 7: Change request lỗiHình 8: New Change requestHình 9: Audit fileHình 10: Branch và child branch2Đồ án tốt nghiệp Khoa công nghệ thông tinHình 1.1: Các xử lý cấu hình nhận dạng.Một số kí hiệu viết tắtCM - Configuration Management SCM – Software Configuration ManagementSEP – Software Engineering Process CI – Configuration ItemCMP – Configuration Management PlanCCB – Configuration Control Board CSAR – Configuration Status Accounting ReportPCA – Physical Configuration AuditFCA – Functional Configuration AuditSCMP – Software Configuration Management PlanSQA – Software Quality AssuranceSCI – Software Configuration ItemSCR – Software Change RequestPM – Project Manager3Đồ án tốt nghiệp Khoa công nghệ thông tinSCSA – Software Configuration Status AccoutingChương I: Mở đầu1. Mở đầuNhững ai quan tâm tới quy trình sản xuất phần mềm, chắc hẳn không ít lần gặp khái niệm về quản lý cấu hình [Configuration Management]. Ta dễ dàng tìm thấy các yêu cầu về quản lý cấu hình một cách trực tiếp hay gián tiếp trong các bộ tiêu chuẩn hoặc mô hình quy trình sản xuất phần mềm thông dụng hiện nay như CMM/CMMI, ISO 15504 hoặc ISO 9001:2000. Trong CMM và CMMI, quản lý cấu hình là yêu cầu bắt buộc ngay từ mức 2, là mức cơ bản của mô hình này. Thực tế, có khá nhiều định nghĩa hoặc khái niệm khác biệt về quản lý cấu hình, tuy rằng chúng vẫn có những điểm chung cơ bản.Chắc hẳn trong mỗi chúng ta khi làm các dự án về phần mềm đã ít nhất một lần gặp những tình huống như: • Một lỗi nào đó của phần mềm đang xây dựng đã tốn nhiều công sức sửa chữa, bỗng “thình lình” xuất hiện trở lại.4Đồ án tốt nghiệp Khoa công nghệ thông tin• Một chức năng [function] nào đó của phần mềm đã được phát triển và kiểm tra cẩn thận bỗng thất lạc hoặc biến mất một cách khó hiểu.• Một chương trình [program] đã được kiểm tra hết sức cẩn thận, bỗng nhiên không “chạy” được nữa.• Một chương trình gồm nhiều đơn thể [module], mỗi đơn thể gồm nhiều chức năng, các chức năng được chia ra cho nhiều lập trình viên, mỗi chức năng bao gồm nhiều tập tin mã nguồn [source code] với nhiều phên bản [version] khác nhau. Khi tích hợp hệ thống và biên dịch, trong hang chục tập tin source code với hàng trăm version, tập tin nào, version nào là đúng và cần thiết phải lấy để tiến hành tích hợp?Các vấn đề trên chắc hẳn không xảy ra nếu như trong dự án, việc quản lý cấu hình được thực hiện nghiêm túc và kiểm soát chặt chẽ với mục đích để thiết lập và bảo đảm tính toàn vẹn của các sản phẩm trung gian cũng như các sản phẩm sau cùng của một dự án phần mềm, xuyên suốt chu kỳ sống của dự án đó.5Đồ án tốt nghiệp Khoa công nghệ thông tinChương II: Quản lý chất lượng phần mềm2. Quản lý chất lượng phần mềm Quản lý chất lượng phần mềmQuản lý chất lượng phần mềm là vấn đề không mới nhưng theo một số đánh giá là còn yếu của các công ty phần mềm Việt Nam. Một số công ty trong nước hiện đã đạt các chuẩn quốc tế CMM/CMMI trong nâng cao năng lực và quản lý chất lượng phần mềm, song chỉ đếm được trên đầu ngón tay, và hiện cũng chỉ gói gọn trong vài công ty gia công cho thị trường nước ngoài.Lâu nay, nói đến chất lượng phần mềm, không ít người nghĩ ngay đến vấn đề là xác định xem phầm mềm đó có phát sinh lỗi hay không, có “chạy” đúng như yêu cầu hay không và cuối cùng thường quy về vai trò của hoạt động kiểm tra phần mềm [testing] như là hoạt động chịu trách nhiệm chính. Với quan điểm của khách hàng, điều này có thể đúng, họ không cần quan tâm nội tình của hoạt động phát triểm phần mềm, 6Đồ án tốt nghiệp Khoa công nghệ thông tinđiều họ quan tâm là liệu sản phẩm cuối cùng giao cho họ có đúng hạn hay không, làm việc có đúng như họ muốn hay không. Tuy nhiên trong thực tế thì việc kiểm tra hoạt động phần mềm là quan trọng nhưng không đủ đảm sản phẩm sẽ được hoàn thành đúng hạn và đúng yêu cầu. Kiểm tra sau cùng để phát hiện lỗi là điều tất nhiên phải làm, nhưng trong nhiều trường hợp, điều đó thường quá trễ và sẽ phải mất rất nhiều thời gian để sửa chữa. Để đảm bảo được hai tiêu chí đó của khách hang, đòi hỏi phải có một quy trình được thực thi xuyên suốt chu kỳ phát triển của dự án phần mềm, đó là hệ thống quản lý cấu hình phần mềm.Một hệ thống quản lý cấu hình phần mềm thường có hai mục tiêu:Thứ nhất: Xây dựng chất lượng cho phần mềm ngay từ giai đoạn bắt đầu. Điều này đồng nghĩa với việc bảo đảm các yêu cầu cho phần mềm từ mọi nguồn khác nhau phải được định nghĩa, diễn dạt và hiểu một cách đúng đắn, giữa người đưa ra yêu cầu và người thực hiện yêu cầu.Thứ hai: Bảo đảm chất lượng của phần mềm xuyên suốt quá trình phát triển.Một hệ thống quản lý chất lượng phần mềm hoàn chỉnh bao gồm rất nhiều hoạt động và bộ phận cấu thành, chúng khác nhau tùy theo từng tổ chức khi triển khai. Cơ bản có mười hoạt động và yếu tố cơ bản nhất thường gặp là:1. Các tiêu chuẩn [Standards].2. Lập kế hoạch [Planning]3. Xem xét, xem lại [Reviewing]4. Kiểm tra [Testing]5. Phân tích lỗi [Defect Analysis]6. Quản lý cấu hình [Configuration Management]7. Bảo mật [Security]7Đồ án tốt nghiệp Khoa công nghệ thông tin8. Đào tạo, huấn luyện [Education/Training]9. Quản lý người cung cấp, thầu phụ [Vendor Management]10. Quản lý rủi ro [Risk Management] Quản lý cấu hình phần mềmQuy trình xây dựng phần mềmCũng như mọi ngành sản xuất khác, qui trình là một trong những yếu tố cực kỳ quan trọng đem lại sự thành công cho các nhà sản xuất phần mềm, nó giúp cho mọi thành viên trong dự án từ người cũ đến người mới, trong hay ngoài công ty đều có thể xử lý đồng bộ công việc tương ứng vị trí của mình thông qua cách thức chung của công ty, hay ít nhất ở cấp độ dự án. Có thể nói quy trình phát triển/xây dựng phần mềm [Software Development/Engineering Process - SEP] có tính chất quyết định để tạo ra sản phẩm chất lượng tốt với chi phí thấp và năng suất cao. Vậy quy trình là gì?Quy trình có thể hiểu là phương pháp thực hiện hoặc sản xuất ra sản phẩm. Tương tự như vậy quy trình xây dựng phần mềm chính là phương pháp phát triển hay sản xuất ra sản phẩm phần mềm. Thông thường một quy trình bao gồm các yếu tố cơ bản:• Thủ tục [Procedures]• Hướng dẫn công việc [Activity Guidelines]• Biểu mẫu [Forms/Templates]• Danh sách kiểm định [Checklists]• Công cụ hỗ trợ [Tools]Với các nhóm việc chính:8Đồ án tốt nghiệp Khoa công nghệ thông tin• Đặc tả yêu cầu [Requirements Specification]: Chỉ ra những “đòi hỏi” cho cả các yêu cầu chức năng và phi chức năng.• Phát triển phần mềm [Development]: Tạo ra phần mềm thỏa mãn các yêu cầu được chỉ ra trong “Đặc tả yêu cầu”.• Kiểm thử phần mềm [Validation/Testing]: Để đảm bảo phần mềm sản xuất ra đáp ứng những “đòi hỏi” được chỉ ra trong “Đặc tả yêu cầu”.• Thay đổi phần mềm [Evolution]: Đáp ứng nhu cầu thay đổi của khách hàng.Tùy theo mô hình phát triển phần mềm, các nhóm công việc được triển khai theo những cách khác nhau. Để sản xuất cùng một sản phẩm phầm mềm người ta có thể dùng các mô hình khác nhau. Tuy nhiên không phải tất cả các mô hình đều thích hợp cho mọi ứng dụng.Định nghĩa quản lý cấu hình phần mềmMột hệ thống có thể được định nghĩa là một tập hợp các thành phần tổ chức để thực hiện một chức năng cụ thể hoặc thiết lập các chức năng. Cấu hình của một hệ thống là các chức năng và [hoặc] các đặc tính vật lý của phần cứng, phần mềm hoặc các phần mềm được kết hợp theo quy trình cụ thể xây dựng để phục vụ một mục đích cụ thể. Phần mềm quản lý cấu hình [SCM] là một phần mềm hỗ trợ quá trình xử lý trong vòng đời phần mềm sẽ có lợi cho quản lý dự án, phát triển và duy trì hoạt động, các hoạt động đảm báo, và các khách hang và người sử dụng sản phầm cuối cùng.Những khái niệm về quản lý cấu hình áp dụng cho tất cả các mục phải được kiểm soát, mặc dù có một số khác biệt trong việc thực hiện giữa CM phần cứng và CM phần mềm. Ta có thể tham khảo định nghĩa ngắn gọn sau từ CNN và ISO 15504: “Mục đích của quản lý cấu hình là để thiết lập và đảm bảo tính 9Đồ án tốt nghiệp Khoa công nghệ thông tintoàn vẹn của sản phẩm trung gian cũng như các sản phẩm sau cùng của một dự án phần mềm, xuyên suốt chu kỳ sống của dự án đó.”Nói cho dễ hiểu và gần gũi, quản lý cấu hình phần mềm bao gồm các công việc về nhận dạng, tổ chức, và quản lý các thay đổi với những sản phẩm đang được xây dựng bởi một nhóm lập trình viên từ các sản phẩm trung gian đến sản phẩm sau cùng. Quản lý cấu hình [CM], sau đó, là kỷ luật để xác định các cấu hình của một hệ thống tại các điểm khác biệt trong thời gian cho mục đích của hệ thống kiểm soát các thay đổi cấu hình, và duy trì sự toàn vẹn và có thể vạch ra cấu hình trong suốt chu trình sống của hệ thống. Nó chính thức được định nghĩa như là “một kỷ luật áp dụng hướng kỹ thuật, hành chính và giám sát về: định nghĩa và tài liệu các đặc tính chức năng và vật chất của một cấu hình, thay đổi điều khiển cho những đặc tính, bản ghi và báo cáo thay đổi việc xử lý và tình trạng thực hiện, xác minh việc tuân thủ quy định yêu cầu.”Tác dụng của quản lý cấu hình phần mềmQuản lý cấu hình tốt sẽ giải quyết được hàng loạt những khó khăn trong các dự án, đặc biệt trong các dự án lớn:• Cập nhật đồng thời: Khi hai hoặc nhiều lập trình viên làm việc cách biệt nhau nhưng trên cùng một chương trình hoặc dự án, những thay đổi mà người này thực hiện có thể sẽ phá vỡ kết quả làm việc của người khác. Ví dụ: Sản phẩm anh A sử dụng kết quả công việc của anh B, sản phẩm của anh B thay đổi có thể làm cho sản phẩm anh A không chạy được nữa.• Chia sẻ source code: Trong các hệ thống lớn, khi các chức năng chung bị thay đổi, tất cả những người liên quan phải được biết.10Đồ án tốt nghiệp Khoa công nghệ thông tin• Phiên bản phần mềm [release]: Hầu hết các chương trình hoặc hệ thống lớn được phát triển với nhiều release tiến hóa từ thấp đến cao. Trong trường hợp một release khách hàng đang dùng, release khác đang được được kiểm tra [test], và một release khác nữa đang trong quá trình phát triển, khi lỗi [bug] xảy ra, việc sửa lỗi phải đồng bộ giữa ba phần này, nếu không quản lý source code tốt, vấn đề đồng bộ rất khó thực hiện được. Nếu lỗi ở realease khách hàng đang dùng, nó phải được sửa trong tất cả các release sau đó.Khi nào quản lý cấu hình phần mềmKhi nào thì cần thiết quản lý cấu hình phần mềm? Quản lý cấu hình phần mềm được thực hiện xuyên suốt chu kỳ sống của dự án, từ lúc bắt đầu đến khi kết thúc, thậm chí vẫn còn trong giai đoạn bảo trì sản phẩm sau dự án.Chương III: Quản lý cấu hình phần mềm3. Quản lý cấu hình phần mềm Hoạt động của quan lý cấu hình phần mềmTrước khi đi vào chi tiết, ta cần tìm hiểu hai khái niệm cơ bản trong quản lý cấu hình phần mềm: • Configuration Item – CI: định danh này trong quản lý cấu hình là tên gọi của sản phẩm, sản phẩm trung gian, một tệp tin [file] hoặc nhóm file, tài liệu hoặc nhóm tài liệu trong một dự án mà ta cần quản lý và kiểm soát. Nói chung là những “món” được tạo ra trong một dự án mà ta cần phải quản lý. Ví dụ: một file source code, tài liệu về yêu cầu sản phẩm, bản thiết kế, các mô hình, phần mềm…11Đồ án tốt nghiệp Khoa công nghệ thông tin• Baseline: Một điểm “mốc” được thỏa thuận bởi những người liên quan trong một dự án, sao cho sau điểm “mốc” này, mọi thay đổi phải được thông báo tới tất cả những người liên quan. Một cách tổng quan quản lý cấu hình các nhóm hoạt động như hình vẽ….Từ quan điểm của một công việc của một thay đổi, CI là “cái gì” của sự thay đổi. Thay đổi một phiên bản baseline cụ thể của một mục cấu hình tạo ra một phiên bản mới của sản phẩm cùng một CI, bản thân một baseline. Trong kiểm tra tác động của sự thay đổi đầu tiên ta hỏi:- CI ảnh hưởng những gì?- Làm thế nào có các CI bị ảnh hưởng?Một release [bản thân một versioned thực thể] có thể bao gồm các CI. Tập hợp các thay đổi cho mỗi CI sẽ xuất hiện trong các ghi chú phát hành [release notes] và các ghi chú có thể chứa các đề mục cụ thể cho từng mặt cấu hình.Cũng như tham gia vào việc thực hiện các thay đổi và trong việc quản lý của một sự thay đổi, danh sách và định nghĩa của một mục cấu hình có thể hành động như là một từ ngữ phổ biến trên tất cả các kết nối với các nhóm sản phẩm. Lựa chọn và xác định cấu hình cho một dự án cụ thể có thể được xem như bước đầu tiên trong việc phát triển một kiến trúc tổng thể từ trên xuống.Kế hoạch quản lý cấu hình [CMP]Thông thường, việc lập kế hoạch cho quản lý cấu hình được thể hiện trong tài liệu có tên Kế hoạch quản lý cấu hình [Configuration Manegement Plan – CMP]. Bản kế hoạch này thường bao gồm:• Ý nghĩa, mục đích và phạm vi áp dụng của bản kế hoạch12Đồ án tốt nghiệp Khoa công nghệ thông tin• Vai trò và trách nhiệm của nhóm, cá nhân trong dự án thực hiện các hoạt động khác nhau liên quan đến quản lý cấu hình. Định nghĩa rõ ràng ai thực hiện [perform], ai xem xét [review], ai phê duyệt [approve] trên các CI của dự án, cũng như vai trò của khách hàng, người sử dụng đầu cuối.• Công cụ [tool], môi trường [environment] và cơ sở hạ tầng [infrastructure]. Phần này mô tả các công cụ phần mềm hoặc quy trình thủ tục được sử dụng hỗ trợ quản lý cấu hình, chẳng hạn công cụ quản lý phiên bản sản phẩm [version control]; mô tả vị trí các máy chủ, máy trạm, cấu hình hệ thống client-server…• Phương pháp định danh và thiết lập baseline trên các CI• Quy ước đặt tên trong dự án, gồm cả tên file• Quy trình xử lý và quản lý các thay đổi [change control process]• Chỉ định thành viên nhóm Hội đồng quản lý cấu hình [Configuration Control Board – CCB]• Thông tin nơi lưu trữ các CI• Kiểm kê và báo cáo cấu hình [configuration accounting and reporting]• Quy trình thủ tục lưu trữ và chép dự phòng [backup and archieve]Định danh/ đánh số CIĐịnh danh là một trong những hoạt động nền tảng của quản lý cấu hình. Mục đích của định danh là để xác định tính duy nhất của một CI, cũng như mối quan hệ của nó với các CI khác. Nó bao gồm việc mô tả tên, đánh số, đánh dấu đặc trưng, giúp nhận biết và phân biệt một CI với các CI hay thành phần khác. 13Đồ án tốt nghiệp Khoa công nghệ thông tinBạn có thể nhận thấy hình thức định danh tương tự trong đời sống thực tế. Ví dụ, người ta đánh số bàn trong nhà hàng nhằm giúp người phục vụ mang đúng thức ăn cho khách.Trong sản xuất phần mềm, một CI có thể bao gồm một hay nhiều file. Ví dụ: một module tên ExpMod có thể được coi là một CI, module này có 2 file ExpMod.h và ExpMod.c.Mỗi CI phải có một định danh duy nhất, dạng thức thường là:__Ví dụ: PRJ001_REQB_1.0.4_draft_B cho biết :Số ID của dự án PRJ001Số ID của Item: REQBPhiên bản : 1.0.4_draft_BTrong một dự án, thường có rất nhiều file source code, quy tắc cơ bản là: các file cùng tạo nên một khối chức năng được gom chung thành một CI.Kiểm soát phiên bản [Version Control]Có nhiều định nghĩa và cách hiểu khác nhau về version control, ở đây chỉ muốn định nghĩa nó ở khía cạnh thông dụng, sát với bản thân cụm từ nhất.Version control là sự kiểm soát các phiên bản [version] khác nhau của một CI [bao gồm việc định danh và sự lưu trữ CI đó].Thế phiên bản là gì? Một phiên bản là một thực thể mới của một CI sau khi đã qua một hoặc nhiều lần xem xét và thay đổi. Hiện có nhiều công cụ trên thị trường hỗ trợ cho việc kiểm soát phiên bản, một số công cụ thông dụng là: Visual Source Safe của Microsoft, ClearCase của Rational, CVS [nguồn mở].Mỗi phiên bản sẽ có một số ID đầy đủ, và được tăng dần cho mỗi phiên bản mới.14Đồ án tốt nghiệp Khoa công nghệ thông tinLưu ý rằng phiên bản của một CI khác với phiên bản của các file thành phần của CI đó. Trong ví dụ trên, phiên bản của CI “ExpMod” khác với phiên bản của file thành phần “ExpMod.h” và “ExpMod.c”. [Xem hình 3]Các phiên bản quan trọng của một CI có thể được đánh dấu để nhận biết một “mốc” quan trọng trong tiến trình phát triển CI đó, phiên bản mà CI được phê duyệt hay baseline.Quản lý baseline [Baseline Management]Cũng như Version Control, baseline có nhiều cách hiểu khác nhau. Trong thực tế thường gặp các loại baseline sau:• Chức năng [functional]• Kế hoạch [planning]• Yêu cầu [requirements].• Sản phẩm [Product]• Bản phân phối [Release]• Kiểm tra [Test]• Môi trường hoạt động [Environment]Quản lý baseline bao gồm:• Chọn các CI cho mỗi loại baseline• Tiến hành “ghim chết” baseline tại thời điểm sau khi các thay đổi đã được chấp thuận và phê chuẩn.Thông thường, baseline được tiến hành tại điểm kết thúc của mỗi giai đoạn hay tại các “mốc” quan trọng trong dự án. Đồng thời, trong quản lý 15Đồ án tốt nghiệp Khoa công nghệ thông tinbaseline, vai trò và nhiệm vụ của những người thiết lập hoặc phê chuẩn baseline cũng phải được định nghĩa.Kiểm soát thay đổi [Change Control]Khi phát triển hoặc bảo trì một sản phẩm phần mềm, việc thay đổi yêu cầu là không thể tránh khỏi. Mục đích của change control là để kiểm soát đầy đủ tất cả các thay đổi ảnh hưởng đến việc phát triển một sản phẩm. Đôi lúc chỉ một vài yêu cầu thay đổi nhỏ của khách hàng, tất cả các chặng của quy trình phát triển phần mềm từ thiết kế, đến viết code, đến kiểm tra sản phẩm đều phải thay đổi theo. Nếu các thay đổi này không được kiếm soát chặt chẽ sẽ dẫn đến rất nhiều sai sót. Xét ví dụ: 5 lập trình viên cùng làm trong một dự án, nhưng chỉ có 3 được thông báo về việc thay đổi thiết kế. Kết quả là khi tích hợp, hệ thống sẽ không vận hành được. Yêu cầu trong kiểm soát thay đổi là mọi sự thay đổi phải được thông báo đến tất cả những người hoặc nhóm làm việc có liên quan.Các bước cơ bản của kiểm soát thay đổi bao gồm: • Nghiên cứu, phân tích• Phê chuẩn hoặc không phê chuẩn• Thực hiện việc thay đổi• Kiểm tra việc thay đổi• Xác lập baseline mới.Trong kiểm soát thay đổi, ta cũng thường gặp khái niệm “hội đồng kiểm soát thay đổi” [Change Control Board], nhóm này được thành lập từng dự án. Change Control Board thông thường bao gồm:• Người quản lý cấu hình [Configuration Manager]• Trưởng dự án [Project Manager]16Đồ án tốt nghiệp Khoa công nghệ thông tin• Trưởng nhóm [Technical Lead]• Kỹ sư chất lượng [Quanlity Engineer]• Và những ai bị ảnh hưởng bởi các thay đổi.Nhiệm vụ của Change Control Board thường là:• Bảo đảm tất cả các thay đổi là được các bộ phận liên quan nhận biết và tham gia.• Xem xét, phê chuẩn hoặc phủ quyết các thay đổi trên các baseline.• Kiểm tra, nhận các thay đổi.• Phê chuẩn các bản phân phối sản phẩm [release] đến khách hàng.Kiểm kê tình trạng cấu hình [Configuration Status Accounting]Công việc này bao gồm việc ghi nhận và báo cáo tình trạng của các CI cũng như yêu cầu thay đổi, tập hợp số liệu thống kê về CI, đặc biệt là các CI góp phần tạo nên sản phẩm. Nó trả lời những câu hỏi như: Có bao nhiêu file bị ảnh hưởng khi sửa chữa một lỗi phần mềm nào đó? Kết quả của công việc này được ghi nhận trong một báo cáo mang tên Configuration Status Accounting Report [CSAR]. Báo cáo này thường làm rõ những điểm sau:• Liệt kê tất cả baseline và CI thành phần hoặc có liên quan.• Làm nổi bật các CI đang được phát triển hoặc vừ bị thay đổi.• Liệt kê các thay đổi còn đang dang dở hay đang hoàn thành, và các baseline bị ảnh hưởng [bởi sự thay đổi đó].Việc báo cáo này được làm thường xuyên và định kỳ, xuyên suốt dự án.Audit17Đồ án tốt nghiệp Khoa công nghệ thông tinAudit là một thuật ngữ rất thường dùng, cho nhiều ngành nghề khác nhau, tuy nhiên trong lĩnh vực sofware, em không tìm thấy từ tiếng Việt tương đương phản ánh đủ ý nghĩa, do vậy xin giữ nguyên thuật ngữ gốc, nó có ý nghĩa gần với “ghi nhận” và “xem xét”. Có 3 loại audit thường được thực hiện.CSAR Audit: Thường được làm sau mỗi lần một CSAR được tạo ra, việc kiểm tra bao gồm:• Bảo đảm các baseline mới nhất được liệt kê trong CSAR.• Bảo đảm tất cả CI tạo nên một baseline được liệt kê.• Kiểm tra các CI đã bị thay đổi từ lần baseline trước đó, so sánh chúng với các yêu cầu thay đổi để khẳng định rằng sự thay đổi trên CI là hợp lý.PCA [Physical Configuration Audit]: Nhằm mục đích khẳng định xem những gì khách hàng yêu cầu có được thực hiện hay không. Gồm hai việc: • Kiểm tra vết để phản ánh tính hai chiều [tracebitily] giữa yêu cầu khách hàng và việc thực hiện code trong dự án.• Xác định những gì sẽ được phân phối cho khách hàng [Executable file, source code, tài liệu đi kèm…] có đáp ứng yêu cầu khách hàng hay không?FCA [Functional Configuration Audit]: Nhằm mục đích khẳng định những gì khách hàng yêu cầu được kiểm tra chặt chẽ trên sản phẩm tạo ra trước khi giao cho khách hàng hay không. Gồm: Kiểm tra vết để phản ánh tính hai chiều giữa yêu cầu khách hàng và việc kiểm tra sản phẩm.Quản lý Release [Release Management]18Đồ án tốt nghiệp Khoa công nghệ thông tinTrong thực tế, có nhiếu định nghĩa khác nhau về khái niệm “release”. Về cơ bản, chúng ta có thể hiểu: Quá trình phát triển một phần mềm thường qua nhiều lần tích hợp, kết quả của mỗi lần tích hợp là một bản “build”, trong rất nhiều bản “build” đó, một số bản đáp ứng một số yêu cầu đã định hoặc lập kế hoạch trước [theo yêu cầu khách hàng], sẽ được gởi cho khách hàng để kiểm tra hoặc đánh giá. Các bản build này được gọi là “release”; công việc tạo ra và phân phối các bản release được gọi là công việc “release”. Theo cách hiểu này, sản phẩm sau cùng cũng là một bản release, đôi khi được gọi là “final release”.Trong quá trình release, việc quản lý đòi hỏi phải thực hiện các công việc sau:• Baseline môi trường phát triển sản phẩm và các file, tài liệu [sẽ release]• Thực hiện báo cáo CSAR [xem định nghĩa ở trên]• Thực hiện các audit: PCA và FCA• Đóng gói file và tài liệu sẽ release• Xác nhận bản release từ khách hàngLưu trữ và chép dự phòng [Backup & Archive]Lưu trữ và chép dự phòng là một hoạt động của quản lý cấu hình và là một trong những hoạt động quan trọng phải có của sản xuất phần mềm. Nó giúp khắc phục các trường hợp rủi ro bị mất mát dữ liệu do thao tác sai, virus, hoặc sự cố phần cứng/ phần mềm. Ở khía cạnh khác, nó hỗ trợ cho hoạt động version control [đã nói ở trên] trong trường hợp ta muốn sử dụng những version khác nhau. Lưu trữ và chép dự phòng đòi hỏi toàn bộ sản phẩm và sản phẩm trung gian của dự án phải được định kỳ chép dự phòng trên những thiết bị hoặc những 19Đồ án tốt nghiệp Khoa công nghệ thông tinnơi khác một cách an toàn.Và khi dự án kết thúc, các hoạt động sau cần phải thực hiện:• Lưu trữ toàn bộ dữ liệu của dự án, tuân thủ quy trình lưu trữ đã được thiết lập [định nghĩa bởi dự án hoặc quy định ở cấp công ty].• Lưu trữ hoặc hủy bỏ các tài liệu ở dạng giấy.• Dọn sạch dữ liệu hoặc thông tin của dự án vừa kết thúc, sau khi đã chép lưu trữ.Vai trò của các thành viên trong dự án Trong một dự án điển hình, thông thường có 4 [nhóm] chức năng sau [thường gọi tắt là role] tham gia thực hiện các hoạt động quản lý cấu hình :1. Người quản lý cấu hình: CM [Configuration Manager]:• Thiết lập và bảo trì kho lưu trữ [repository] của dự án.• Phát triển và triển khai các quy trình thủ tục quản lý cấu hình phần mềm của dự án.• Thiết lập các baseline, ghi nhận các thay đổi trên các baseline.• Bảo đảm các baseline không bị thay đổi khi chưa được phê chuẩn.• Tổ chức và điều phối các cuộc họp của CCB.2. Trưởng dự án: PM [Project Manager]• Giám sát các hoạt động quản lý cấu hình phần mềm.• Bảo đảm các yêu cầu cần thiết cho hoạt động quản lý cấu hình. Ví dụ: số giờ thành viên dự án bỏ ra cho quản lý cấu hình, công cụ hỗ trợ quản lý cấu hình…20Đồ án tốt nghiệp Khoa công nghệ thông tin3. Hội đồng quản lý cấu hình: CCB [Configuration Control Board]Bao gồm các thành viên trong dự án, và có chức năng như đã nói ở trên.4. Các thành viên của dự ánCác thành viên của dự án, kể cả CM, PM và thành viên CCB, có trách nhiệm:• Tuân thủ tất cả các quy định thủ tục của bản kế hoạch quản lý cấu hình [CMP]• Tham gia vào nhóm CCB khi có yêu cầu. Quy trình quản lý cấu hình phần mềm SCM điều khiển sự tiến hóa và toàn vẹn của một sản phẩm bằng xác định các yếu tốt của nó, quản lý và kiểm soát sự thay đổi, xác minh, ghi lại và báo cáo về thông tin cấu hình. Đứng trên quan điểm của kỹ sư phần mềm, SCM tạo điều kiện phát triển và hoạt thay đổi các thay đổi thực thi. Một SCM thực hiện thành công đòi hỏi phải lập kế hoạch và quản lý một cách cẩn thận. Điều này, đòi hỏi một sự hiểu biết về bối cảnh tổ chức và các khó khăn đặt trên, việc thiết kế và thực hiện các quy trình SCM.Bối cảnh tổ chứcĐể lập kế hoạch xử lý quản lý cấu hình cho một dự án, thì điều cần thiết là phải hiểu bối cảnh tổ chức và các mối quan hệ giữa các yếu tố của tổ chức. Quán lý cấu hình tương tác với một số hoạt động khác hoặc các yếu tố của tổ chức.Các yếu tố tổ chức chịu trách nhiệm về công nghệ phần mềm hỗ trợ quá trình có thể được cấu trúc theo những cách khác nhau. Mặc dù trách nhiệm về thực hiện nhiệm vụ nhất định của quản lý cấu hình có thể được giao cho các bộ phận khác của tổ chức như các tổ chức phát triển, trách nhiệm chung cho quản 21Đồ án tốt nghiệp Khoa công nghệ thông tinlý cấu hình thường thuộc về một yếu tố được tổ chức riêng biệt hoặc cá nhân được chỉ định.Quản lý cấu hình có thể giao tiếp với chất lượng hoạt động của tổ chức đảm bảo về các vấn đề như quản lý bản ghi hoặc non-configuration items. Trước đây, một số mục dưới sự điều khiển của quản lý cấu hình cũng có thể là các hồ sơ dự án để thuộc vào quy định của chương trình đảm bảo chất lượng của tổ chức. Quản lý non – configuration thường là trách nhiệm của hoạt động đảm bảo chất lượng, tuy nhiên, quản lý cấu hình có thể giúp đỡ về theo dõi và báo cáo về các cấu hình phần mềm rơi vào loại này.Có lẽ mối quan hệ gần gũi nhất là sự phát triển phần mềm và các tổ chức bảo trì.Hạn chế và hướng dẫn cho tiến trình SCM Những ảnh hưởng ràng buộc, việc chỉ đạo, việc xử lý quản lý cấu hình đến từ một vài nguồn. Các chính sách và thủ tục ở phía tập đoàn hay tổ chức các cấp khác có thể ảnh hưởng hay quy định thiết kế và thực thi quá trình quản lý cấu hình cho một dự án đã định. Ngoài ra, hợp đồng giữa bên yêu cầu và nhà cung cấp có thể quy định ảnh hưởng đến quá trình quản lý cấu hình. Ví dụ, việc kiểm tra cấu hình có thể được yêu cầu, hay nó có thể xác định rằng một số mặt hàng được đặt theo quản lý cấu hình. Khi sản phẩm phần mềm được phát triển có khả năng ảnh hưởng đến an toàn công cộng, các cơ quan bên ngoài quy định có thể áp đặt những hạn chế. Cuối cùng, việc chọn lựa xử lý vòng đời phần mềm riêng biệt cho một dự án phần mềm và công cụ được chọn để thực thi thiết kế phần mềm hiệu quả và việc thực thi của việc xử lý quản lý cấu hình phần mềm.Hướng dẫn cho việc thiết kế và thực thi một quy trình SCM cũng có thể được lấy từ “thực hành tốt nhất [best practice]”, như được phản ánh trong các tiêu chuẩn về công nghệ phần mềm do các tổ chức tiêu chuẩn khác nhau. Cung 22Đồ án tốt nghiệp Khoa công nghệ thông tincấp nhiều lộ trình cho các tổ chức này và tiêu chuẩn của họ. Best practice còn được phản ánh trong việc cải tiến quy trình và các mô hình đánh giá quá trình như các phần mềm của Engineering Institute’s Capability Maturity Model Integration [SEI/CMMI] và ISO/IEC 15504 Sofware Engineering – Process Asscessment [ISO/IEC 15504-98].Kế hoạch SCM [Planing SCM]Kế hoạch của một quá trình SCM cho một dự án nên được đưa ra phù hợp với bối cảnh của tổ chức, áp dụng những hạn chế, hướng dẫn thường được chấp nhận, và tính chất của dự án [ví dụ, kích thước và tới hạn]. Các hoạt động chuyên ngành được kiểm soát là: Nhận dạng cấu hình phần mềm, kiểm soát cấu hình phần mềm, kiểm kê trạng thái cấu hình phần mềm, ghi nhận cấu hình phần mềm, và phần mềm quản lý người cung cấp, thầu phụ. Ngoài ra, các vấn đề như tổ chức và trách nhiệm, nguồn lực và lịch trình, lựa chọn công cụ và triển khai thực hiện, nhà bán và kiểm soát nhà thầu phụ, và điều khiển giao diện thường được xem xét. Kết quả của những hoạt động lập kế hoạch được ghi lại trong một kế hoạch quản lý cấu hình phần mềm [SCMP] mà thường phải SQA xem xét và ghi nhận.SCM tổ chức và trách nhiệm [SCM organization and responsibilities]Để tránh nhầm lẫn về những người sẽ thực hiện được các hoạt động SCM hay các nhiệm vụ, các tổ chức có liên quan trong quá trình SCM cần được xác định rõ ràng. Trách nhiệm cụ thể cho các hoạt động SCM hay các công việc cũng cần phải được giao cho các thực thể tổ chức, hoặc bởi các phần tử tổ chức. Toàn bộ quyền và việc báo cáo cho SCM cũng nên được xác định, mặc dù điều này có thể được thực hiện tại giai đoạn quản lý dự án hoặc giai đoạn lập kế hoạch đảm bảo chất lượng.23Đồ án tốt nghiệp Khoa công nghệ thông tinSCM nguồn lực và lịch trình [SCM resources and schedules]Kế hoạch SCM xác định các nhân viên và các công cụ liên quan đến việc thực hiện các hoạt động và nhiệm vụ cho SCM. Nó chỉ lập lịch trình các câu hỏi bằng cách thiết lập trình tự cần thiết của SCM và xác định các mối quan hệ của họ với lịch trình của dự án và cột mốc quan trọng ở giai đoạn lập dự án quy hoạch quản lý. Bất cứ yêu cầu đào tạo cần thiết cho việc triển khai thực hiện kế hoạch đào tạo đội ngũ nhân viên và các thành viên mới cũng được xác định.Chọn lựa công cụ và thực thi [Tool selection and implementation]Khả năng khác nhau của các loại công cụ, và các thủ tục để họ sử dụng, hỗ trợ các hoạt động SCM. Tùy thuộc vào tình hình, khả năng các công cụ có thể được làm sẵn với một số kết hợp các công cụ hướng dẫn sử dụng, các công cụ tự động cung cấp một khả năng SCM duy nhất, công cụ tự động tích hợp một loạt các khả năng SCM, hoặc các môi trường được tích hợp công cụ phục vụ cho nhu cầu của nhiều người tham gia trong quá trình công nghệ phần mềm. Công cụ tự động hỗ trợ ngày càng trở nên quan trọng, và ngày càng khó thiết lập, như các dự án phát triển số lượng và như các dự án về môi trường trở nên phức tạp hơn. Những khả năng cung cấp các công cụ hỗ trợ cho: • Thư viện SCM• Yêu cầu thay đổi phần mềm [SCR] và thủ tục phê duyệt• Mã [và các công việc liên quan đến sản phẩm] và thay đổi nhiệm vụ quản lý• Báo cáo tình trạng quản lý cấu hình và tập hợp kích thước SCM• Ghi nhận cấu hình phần mềm • Quản lý và theo dõi tài liệu phần mềm24Đồ án tốt nghiệp Khoa công nghệ thông tin• Thực hiện các phần mềm xây dựng• Quản lý và theo dõi release và phân phối phần mềm của họ.Các công cụ được sử dụng trong các phần này cũng có thể cung cấp các phép đo cho việc cải tiến quy trình. Royce miêu tả bảy biện pháp cốt lõi của giá trị trong việc quản lý quy trình công nghệ phần mềm. Thông tin có sẵn từ các công cụ SCM khác nhau liên quan đến công việc của Royce và quản lý tiến độ và các chỉ thị chất lượng của các thay đổi giao thông [Change Traffic] và ổn định [Stability], vỡ [Breakage] và tính modul [Modularity], làm việc lại [Rework], tính thích nghi [Adaptability], MTBF [Mean Time Between Failures] và trưởng thành [Maturity]. Báo cáo về những chỉ số này có thể được tổ chức lại bằng nhiều cách khác nhau, chẳng hạn như bằng mục cấu hình phần mềm [Software Configuration Item] hay bởi kiểu của thay đổi được yêu cầu [change requested].Chúng ta có thể hình dung một khả năng lập bản đồ và các thủ tục của các công cụ để SCM hoạt động:25

Video liên quan

Chủ Đề