đề tài “ kiến trúc phần mềm hiện đại ”

85 862 6
đề tài “ kiến trúc phần mềm hiện đại ”

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

1 ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG o0o THỰC TẬP CHUYÊN NGÀNH KIẾN TRÚC PHẦN MỀM HIỆN ĐẠI Sinh viên: Nguyễn Đức Trọng MSV: DTC0851200034 Giáo viên hướng dẫn: ThS Ngô Thị Lan Bộ môn: Công Nghệ Phần Mềm Thái Nguyên 2012 2 ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG THỰC TẬP CHUYÊN NGÀNH KIẾN TRÚC PHẦN MỀM HIỆN ĐẠI Sinh viên: Nguyễn Đức Trọng MSV: DTC0851200034 Giáo viên hướng dẫn:ThS Ngô Thị Lan Bộ môn: Công Nghệ Phần Mềm 3 MỤC LỤC 4 LỜI NÓI ĐẦU Trong tiến trình kĩ nghệ phần mềm hiện nay, xây dựng một kiến trúc phần mềm tối ưu luôn là một trong những vấn đề then chốt đước các tổ chức phát triển phần mềm lớn trên toàn thế giới quan tâm. Đó là lí do vì sao mà các hội thảo đình đám với các nội dung liên quan tới kiến trúc phần mềm được các tập đoàn công nghệ thông tin lớn trên thế giới như IBM, Microsoft… tổ chức ngày một nhiều hơn (Hội thảo kiến trúc hướng dịch vụ và quản lí dịch vụ - IBM, Hội thảo kiến trúc phần mềm và thiết bị di động – Microsoft…). Theo nhiều chuyên gia đầu ngành về công nghệ thông tin ở Việt Nam, lĩnh vực sản xuất phần mềm ở nước ta đang gặp phải một thực trạng báo động đó là vấn đề thiết kế kiến trúc trong xây dựng, phát triển phần mềm chưa được các nhà phát triển phần mềm trong nước quan tâm đúng mức. Đó là một trong các lí do giải thích vì sao với lực lượng làm việc trong lĩnh vực đông đảo như hiện nay (khoảng 200.000 người và dự kiến sẽ tăng lên 600.000 người đến năm 2020) nhưng về cơ bản chúng ta vẫn chỉ là một nước gia công phần mềm và sản xuất phần mềm theo đơn đặt hàng, các phần mềm do chính chúng ta thiết kế và sản xuất vẫn chưa tao ra được chỗ đứng trên thị trường quốc tế. Các giáo viên luôn than phiền rằng sinh viên học trong ngành công nghệ phần mềm của chúng ta hiện nay hầu hết quan tâm tới lập trình hơn là thiết kế, trong khi lập trình là công việc có mức thu nhập cũng như được đánh giá ít nhất trong các dự án công nghệ thông tin. Hiện nay hầu hết sinh viên công nghệ thông tin ở các trường đại học lớn trên thế giới đều được học các kiến thức liên quan tới kiến trúc phần mềm một cách bài bản và chuyên sâu. Tuy nhiên sinh viên công nghệ thông tin ở Việt Nam lại không được đào tạo nhiều về kiến trúc phần mềm, bằng chứng là hiện chúng ta gần như chưa có một tài liệu chuyên sâu nào về kiến trúc phần mềm viết bằng tiếng Việt(cả ebook cũng như giáo trình xuất bản thành sách). Nhận thức được tầm quan trọng của kiến trúc phần mềm trong phát triển phần mềm, thực trạng ngành phần mềm ở Việt Nam hiện nay cũng như sự thiếu hụt các tài liệu chuyên môn trong lĩnh vực này chính là lí do thôi thúc em đề xuất và thực hiện đề tài này. Đề tài “Kiến trúc phần mềm hiện đại” được thực hiện dưới sự hướng dẫn nhiệt tình của cô Ngô Thị Lan – bộ môn Công Nghệ Phần Mềm, cô đã giúp em trong xây dựng ý tưởng cho đề tài, phác thảo chi tiết nội dung đề tài, cung cấp các tài liệu hữu ích và hướng dẫn chi tiết các nội dung nghiên cứu. Ngoài ra em còn nhận được rất 5 nhiều sự giúp đỡ của các thầy cô khác trong bộ môn Công Nghệ Phần Mềm, em xin chân thành cảm ơn các thầy cô đã nhiệt tình giúp đỡ và giúp em hoàn thành đề tài. Đồng thời em rất mong nhận được sự đóng góp nhiệt tình của thầy cô và các bạn để đề tài này được hoàn thiện hơn nữa, giúp em tiếp tục phát triển đề tài này cho đợt thực tập tốt nghiệp sắp tới cũng như phục vụ cho công việc sau khi ra trường. Em xin chân thành cảm ơn. Sinh viên Nguyễn Đức Trọng 6 NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN ………………………………………………………………………………………… ………………………………………………………………………………………… …………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… …………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… …………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… …………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… …………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… …………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… …………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… …………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… …………………………………………………………………………………… ………………………………………………………………………………………… ………………………………………………………………………………………… …………………………………………………………………………………… 7 TÓM TẮT NỘI DUNG Bản báo cáo được chia thành 5 chương với nội dung như sau: - Chương 1: Các khái niệm cơ bản về kiến trúc phần mềm, bản chất, ý nghĩa của kiến trúc phần mềm trong việc phát triển phần mềm, nguyên tắc tổng quan của quy trình thiết kế kiến trúc, các yếu tố đánh giá chất lượng kiến trúc phần mềm. - Chương 2: Một số xây dựng tần trung gian trong kiến trúc phần mềm. - Chương 3: Các kiến trúc phần mềm hiện đại đang dành được sự chú ý hiện nay: Một số kỹ thuật xây dựng tầng trung gian trong kiến trúc phần mềm (Middleware), Kiến trúc phần mềm cho dòng sản phẩm phần mềm (ProductLine), Kiến trúc phần mềm phát triển theo hướng mô hình (Model- Driven Architecture) , Kiến trúc phần mềm phát triển theo hướng dịch vụ (Service- Oriented Architecture) - Chương 4: Tổng quan về ngôn ngữ UML và sử dụng UML trong thiết kế kiến trúc phần mềm - Chương 5: Xây dựng kiến trúc website bán điện thoại với UML 8 Chương I. TỔNG QUAN VỀ KIẾN TRÚC PHẦN MỀM I. Khái niệm kiến trúc phần mềm và vai trò của kiến trúc phần mềm Kiến trúc phần mềm là một chuyên ngành bắt đầu từ những năm 70 của thế kỷ trước. Với việc gia tăng độ phức tạp và áp lực về việc phát triển các hệ thống thời gian thực phức tạp, kiến trúc phần mềm nổi lên như là một kiến trúc cơ sở của việc phát triển phần mềm và công nghệ hệ thống chủ lực. Như bất kỳ lĩnh vực nghiên cứu nào khác, kiến trúc phần mềm cũng có những thách thức ban đầu của nó. Một kiến trúc phần mềm thể hiện các phương diện cấu trúc và hành vi của một hệ thống, nó có thể được định nghĩa như sau: “Kiến trúc phần mềm của một chương trình hoặc hệ thống tính toán là cấu trúc hoặc các cấu trúc của hệ thống đó, gồm các thành phần của phần mềm, các thuộc tính có thể trông thấy được từ bên ngoài của các thành phần này, và các mối quan hệ giữa chúng.” Ðịnh nghĩa này tập trung vào kiến trúc đã tạo nên các bản dựng thô (coarse- grained constructs) (tức các thành phần của phần mềm) mà có thể được coi là các bộ phận cơ bản của kiến trúc/các khối xây dựng nên kiến trúc (building blocks of the architecture). Mỗi thành phần của phần mềm, hay bộ phận kiến trúc cơ bản, có một số nhất định các thuộc tính có thể nhìn thấy từ bên ngoài mà nó thông báo đến các bộ phận kiến trúc cơ bản còn lại. Các chi tiết bên trong của sự thiết kế và cài đặt thành phần phần mềm không liên quan đến phần còn lại của hệ thống, xem xét một phần mềm đặc biệt chỉ như một hộp đen. Hộp đen này có các thuộc tính nhất định mà nó biểu lộ, cái mà các thành phần phần mềm còn lại có thể sử dụng để thực hiện chung các đích nghiệp vụ hoặc công nghệ thông tin. Kiến trúc phần mềm xác định các khối kiến trúc cơ bản, với một mức độ chi tiết thích hợp. Nó cũng xác định và viết tư liệu việc các bộ phận cơ bản liên quan lẫn nhau như thế nào. Kiến trúc khi nó liên quan đến công nghệ phần mềm là việc phân tích hoặc phân vùng một hệ thống đơn lẻ sang một tập các bộ phận mà có thể được xây dựng theo kiểu lặp lại, gia tăng, và độc lập. Các bộ phận riêng lẻ có các mối quan hệ hiện với nhau. Khi đan xen vào nhau, các bộ phận riêng lẻ đó tạo nên kiến trúc của hệ thống, tổ chức, hoặc ứng dụng. Có một số nhầm lẫn về sự khác nhau giữa kiến trúc với thiết kế. Tất cả các kiến trúc là thiết kế nhưng không phải tất cả các thiết kế là kiến trúc. Các thiết kế mà cần 9 phải ràng buộc, về mặt hệ thống, để đáp ứng các nhu cầu chức năng và phi chức năng và các mục tiêu của nó, là có tính kiến trúc về bản chất. Trong khi kiến trúc coi một bộ phận kiến trúc cơ bản là một hộp đen, thì thiết kế xử lý cấu hình, tuỳ biến, và các công việc bên trong của một bộ phận kiến trúc cơ bản. Kiến trúc ràng buộc một thành phần phần mềm với các thuộc tính bên ngoài của nó. Thiết kế thường lỏng hơn nhiều so với kiến trúc, vì nó cho phép nhiều cách gắn kết các thuộc tính bên ngoài của thành phần này. Thiết kế cũng cân nhắc các cách khác nhau để thực hiện các chi tiết bên trong của thành phần. Kiến trúc phần mềm có thể được sử dụng một cách đệ quy. Hãy xem xét một thành phần phần mềm (C1) mà là một bộ phận của một kiến trúc phần mềm của một hệ thống. Kiến trúc sư phần mềm chuyển thành phần này đến nhà thiết kế hệ thống, cùng với các thuộc tính của nó, các khả năng về chức năng và phi chức năng nó phải thể hiện, và mối quan hệ của nó với các bộ phận phần mềm khác. Nhà thiết kế sau khi phân tích thành phần phần mềm C1, quyết định nó sẽ được phân tích thành các thành phần chi tiết hơn (C11, C12, và C13), mỗi cái cung cấp một chức năng có thể dùng lại được mà sẽ được sử dụng để thực thi các thuộc tính đã gán cho C1. Nhà thiết kế chi tiết hoá C11, C12, C13 và các giao diện của chúng. Tại điểm này, đối với nhà thiết kế, C11, C12, và C13 là các bản dựng kiến trúc (hoặc các thành phần); mỗi cái đều có các giao diện bên ngoài được xác định rõ ràng. Ðối với nhà thiết kế, C11, C12, và C13 là kiến trúc của thành phần phần mềm C1, và các bản dựng cần được soạn thảo và thiết kế công phu hơn nữa để nhằm đến các cài đặt bên trong của chúng. Kiến trúc có thể được sử dụng một cách đệ quy bằng cách phân chia hệ thống lớn, phức tạp thành các bộ phận nhỏ, và tập trung vào từng bộ phận. Kiến trúc ràng buộc hệ thống bằng cách sử dụng các bộ phận kiến trúc cơ bản mà thoả mãn chung các mục tiêu hành vi và chất lượng. Các cổ đông phải có khả năng hiểu được kiến trúc. Như vậy điều cốt yếu là một kiến trúc phải được viết tư liệu thoả đáng, như được thảo luận trong phần kế tiếp. II. Các nhân tố đánh giá chất lượng kiến trúc phần mềm 1. Các nhân tốt chất lượng Các nhà thiết kế kiến trúc phần mềm dành hầu hết thời gian của mình cho việc thiết kế ra các hệ thống đảm bảo tập các yêu cầu chất lượng của hệ thống. Các yêu cầu chất 10 [...]... thành phần logic nghiệp vụ và sự hỗ trợ nó cung cấp để thực hiện việc logic nghiệp vụ sử dụng các mẫu thành phần phần mềm 30 Chương III MỘT SỐ KIẾN TRÚC PHẦN MỀM HIỆN ĐẠI I Kiến trúc phần mềm hướng dịch vụ (Service Oriented Architecture – SOA) 1 Kiến trúc hướng dịch vụ là gì ? Kiến trúc hướng dịch vụ (Service-oriented architecture) là một hướng tiếp cận với việc thiết kế và tích hợp các phần mềm, chức... nền tảng phần cứng /phần mềm khác nhau (Portability), dễ dàng kiểm thử (Testability), dễ dàng cho việc hộ trợ vận hàng khi hệ thống đã được triển khai trong thực tế (Supportability) III Quy trình thiết kế kiến trúc phần mềm 1 Phác thảo quy trình Vai trò của kiến trúc sư phần mềm không đơn giản chỉ là đưa ra các hoạt động thiết kế kiến trúc cũng như kiến trúc của hệ thống Kiến trúc sư phần mềm cần: -... thực hiện dự án Có 3 bước trong tiến trình thiết kế kiến trúc đó là: xác định yêu cầu kiến trúc, thiết kế kiến trúc và chuẩn hóa (hình 1.3) 16 Hình 1.3 Tiến trình thiết kế kiến trúc - Xác định yêu cầu kiến trúc: Liên quan tới việc tạo ra một tuyên bố hoặc mô hình các - yêu cầu, nó sẽ thúc đẩy việc thiết kế kiến trúc Thiết kế kiến trúc: liên quan tới việc xác định cấu trúc và vai trò của các thành phần. .. quá trình xác định yêu cầu kiến trúc Việc xác định các yêu cầu kiến trúc chủ yếu dựa trên các yêu câu chức năng và các yêu cầu khác do stakeholder cung cấp Quá trình xác định yêu cầu kiến trúc sẽ đưa ra môt tập các yêu cầu về kiến trúc của hệ thống Tất nhiên thực tế các thông tin mà kiến trúc sư cần vẫn chưa được tài liệu hóa đầy đủ ở mức này Cách duy nhất để kiến trúc sư phần mềm có được đầy đủ các thông... trình này là một tập các khung nhìn kiến trúc (thể hiện thiết kế kiến trúc) và các tài liệu thiết kế nhằm giải thích cho thiết kế đưa ra 4 Chuẩn hóa Trong suốt tiến trình thiết kế kiến trúc, mục tiêu của pha chuẩn hóa là nhằm đảm bảo kiến trúc đưa ra thỏa mãn các mục tiêu của hệ thống Việc chuẩn hóa kiến trúc hệ thống luôn luôn là một thử thách đối với các kiến trúc sư hệ thống bởi vì nó không thể... phần - trong kiến trúc hệ thống Chuẩn hóa: liên quan tới việc kiểm tra (testing) kiến trúc dựa trên tập các yêu cầu hệ thống 2 Xác định yêu cầu kiến trúc Trước khi một giải pháp thiết kế kiến trúc có thể được chính thức tiến hành nhằm đưa ra bản thiết kế hệ thống, ta cần xem xét chi tiết các yêu cầu kiến trúc mà hệ thống cần đáp ứng Hình 1.4 thể hiện quá trình xác định các yêu cầu kiến trúc: 17 Hình... thành phần này lại cần có một sự thiết kế chi tiết như: vật liệu, các thành phần để xây dựng Vật liệu và các thành phần dùng để xây dựng này là các khối cơ bản dùng để xây lên ngôi nhà chúng được thiết kế để cho người ta có thể xây lên bất cứ kiến trúc gì mà họ mong muốn Chúng ta hãy nghĩ đến tầng trung gian trong kiến trúc phần mềm như là những cái - ống nước hay dây dẫn trong kiến trúc của một phần mềm. .. việc thiết kế kiến trúc hệ thống 3 Thiết kế kiến trúc Nhiệm vụ của kiến trúc sư hệ thống là cực kì quan trọng và chất lượng của thiết kế kiến trúc thực sự là vấn đề đề phải quan tâm Các tài liệu yêu cầu hoàn hảo cũng như công sức làm việc cùng stakeholder sẽ trở lên vô nghĩa nếu như rút cuộc một thiết kế tồi được được ra Hình 2.5 chỉ ra các input và output của quá trình thiết kế kiến trúc Hình 1.5... đạo đội thiết kế kiến trúc: Xác định kiến trúc ứng dụng là một hoạt động thiết kế Kiến trúc sư lãnh đạo đội thiết kế, bao gồm các thiết kế viên hệ thống (hay trong các hệ thống lớn là các kiến trúc sư khác) và đưa ra các dẫn dắt kĩ thuật để cuối cùng - đưa ra bản thiết kế chi tiết (architecture blueprint) của hệ thống cần triển khai Làm việc với bên quản trị dự án: Kiến trúc sư phần mềm làm việc mật... thể bao gồm các thành thành phần mới cần được xây dựng hay các “hộp đen” các thành phần đó như là tầng trung gian, các thư viện và các ứng dụng đã tồn tại sẵn 20 Chương II KỸ THUẬT XÂY DỤNG TẦNG TRUNG GIAN (MIDLEWARE) I Giới thiệu Để minh họa cho vai trò của tầng trung gian trong kiến trúc phần mềm chúng ta hãy đi xem xét quá trình xây dựng kiến trúc của một ngôi nhà Khi kiến trúc sư thiết kế một ngôi . trong kiến trúc phần mềm (Middleware), Kiến trúc phần mềm cho dòng sản phẩm phần mềm (ProductLine), Kiến trúc phần mềm phát triển theo hướng mô hình (Model- Driven Architecture) , Kiến trúc phần. thúc em đề xuất và thực hiện đề tài này. Đề tài Kiến trúc phần mềm hiện đại được thực hiện dưới sự hướng dẫn nhiệt tình của cô Ngô Thị Lan – bộ môn Công Nghệ Phần Mềm, cô đã giúp em trong. điện thoại với UML 8 Chương I. TỔNG QUAN VỀ KIẾN TRÚC PHẦN MỀM I. Khái niệm kiến trúc phần mềm và vai trò của kiến trúc phần mềm Kiến trúc phần mềm là một chuyên ngành bắt đầu từ những năm 70

Ngày đăng: 13/11/2014, 09:27

Từ khóa liên quan

Mục lục

  • LỜI NÓI ĐẦU

  • NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

  • TÓM TẮT NỘI DUNG

  • Chương I. TỔNG QUAN VỀ KIẾN TRÚC PHẦN MỀM

  • Chương II. KỸ THUẬT XÂY DỤNG TẦNG TRUNG GIAN (MIDLEWARE)

  • Chương III. MỘT SỐ KIẾN TRÚC PHẦN MỀM HIỆN ĐẠI

    • 2. Bốn nguyên tắc chính của hệ thống SOA

    • 3. Các tính chất của một hệ thống SOA

    • 4. Lợi ích của SOA

    • 5. Một số mô hình triển khai SOA

    • A. Bài toán

    • B. Phân tích

      • I. Các tác nhân

      • I. Các chức năng chính

      • II. Đặc tả ca sử dụng

      • III. Các loại biểu đồ thiết kế kiến trúc

      • KẾT LUẬN

Tài liệu cùng người dùng

Tài liệu liên quan