2.4.1 Khỏi niệm cụng nghệ phần mềm (CNPN):
Cụng nghệ phần mềm:
CNPN là một tổ hợp cỏc cụng cụ, phương phỏp, thủ tục làm cho người quản trị viờn dự ỏn nắm được xu thế tổng quỏt phỏt triển phần mềm và giỳp cho kỹ sư lập trỡnh cú một nền tảng để triển khai cỏc định hướng của phần mềm.
Sơ đồ 2.3 Cấu trỳc cụng nghệ phần mềm
Quỏ trỡnh phỏt triển của một dự ỏn phần mềm đều trải qua ba giai đoạn.
Giai đoạn một:
Trả lời cho cầu hỏi “Cỏi gỡ ?”. Tức là người sản xuất phần mềm phải xỏc định cụ thể và chi tiết sản phẩm phần mềm mà mỡnh cần tạo ra. Đõy là cụng đoạn cực kỳ quan trọng trong sản xuất phần mềm ở quy mụ cụng nghiệp, vỡ chỉ cú xỏc định rừ ràng phạm vi của sản phẩm và cỏc ràng buộc liờn quan ta mới cú thể tiến hành được kết quả của cỏc cụng đoạn sau.
Phải giải quyết ba vấn đề mấu chốt là tiến hành phõn tớch hệ thống một cỏch toàn diện theo quan điểm một phần mềm là một thành phần của hệ thống quản
Cụng nghệ phần mềm Thành phần Cụng cụ Phương phỏp Thủ tục Chức năng Quản trị viờn dự ỏn Kỹ sư phần mềm
lý do đú nú phải được đặt trong tổng thể hệ thống đú và xem xột mối quan hệ ràng buộc cỏc yếu tố quản lý khỏc.
Giai đoạn hai:
Trả lời cho cõu hỏi “Thế nào ?”. Tức là định hướng phần mềm sẽ phỏt triển thế nào trong đú cú ba cụng việc cơ bản cần làm: thiết kế, mó húa, kiểm thử. Mó húa trong cụng nghệ phần mềm là viết mó chương trỡnh: biờn dịch chương trỡnh từ ngụn ngữ thiết kế sang một ngụn ngữ mà mỏy tớnh cú thể hiểu.
Giai đoạn ba:
Trả lời cho cầu hỏi “Thay đổi ra sao ?”. Cú ba loại hỡnh bảo trỡ là: bảo trỡ sửa đổi, bảo trỡ thớch nghi và bảo trỡ hoàn thiện hay bảo trỡ nõng cao. Bảo trỡ sửa đổi là sửa lỗi phần mềm, thụng thường là lỗi chi tiết, đơn giản, khụng phải là lỗi hệ thống. Bảo trỡ thớch nghi là làm cho phần mềm hoàn thiện trong mụi trường của người sử dụng. Bảo trỡ hoàn thiện: làm cho phần mềm cú thể hoạt động tốt trong cỏc mụi trường khỏc nhau.
Sơ đồ 2.4 Cỏc giai đoạn của quy trỡnh phỏt triển phần mềm
Xỏc định
Phỏt triển
Bảo trỡ
Giai đoạn một
Giai đoạn hai
Xỏc định Phỏt triển Bảo trỡ
Khỏi niệm phần mềm :
Theo Roger Pressman phần mềm là một tập hợp gồm ba yếu tố là: cỏc chương trỡnh mỏy tớnh, cấu trỳc dữ liệu và hệ thống tài liệu hướng dẫn.
Cỏc giai đoạn phỏt triển của phần mềm:
Thời kỳ 1950-1960 1960-1970 1970-1990 1990-Nay Chậm. Xử lý theo lụ. Phần mềm đơn chiếc. Sản xuất cho nhúm người dựng. Chế độ thời gian thực.
Thương mại húa.
Hệ thống phõn tỏn.
Tớnh tới hiệu quả thương mại. Phần mềm thụng minh. Hệ thống để bàn. Lập trỡnh hướng đối tượng. Xử lý song song. 2.4.2 Vũng đời phỏt triển phần mềm:
Trong cụng nghiệp phần mềm người ta đặc biệt quan tõm tới vấn đề là vũng đời phỏt triển phần mềm. Vũng đời phỏt triển của một phần mềm được hiểu là quy trỡnh từ khi phần mềm ra đời cho đến khi đưa vào sử dụng và quỏ trỡnh nõng cấp bảo trỡ.
Mục đớch của việc nghiờn cứu vũng đời phỏt triển của phần mềm là phõn ra cỏc giai đoạn trờn cơ sở đú tỡm cỏc giải phỏp và cụng cụ thớch hợp để tỏc động vào mỗi giai đoạn.
• Thiết kế • Mó húa • Kiểm thử • Phõn tớch hệ thống • Kế hoạch • Phõn tớch yờu cầu
• Bảo trỡ sửa đổi • Bảo trỡ thớch nghi • Bảo trỡ hoàn thiện
Sơ đồ 2.5 Mụ hỡnh thỏc nước 2.4.3 Mụ hỡnh thỏc nước:
Cụng đoạn đầu tiờn là cụng nghệ hệ thống: nú bao trựm lờn toàn bộ quy trỡnh tiếp theo trong cụng nghệ phần mềm, vỡ phần mềm là một thành phần của hệ thống quản lý, do đú nú phải được xem xột trong mối liờn hệ tổng thể về kinh tế - kỹ thuật - tổ chức của toàn bộ guồng mỏy quản lý. Cụng đoạn tiếp theo là phõn tớch: với mục đớch xỏc định rừ ràng và cụ thể cỏc yờu cầu của phần mềm, phần thiết kế trong Cụng Nghệ Phần Mềm hướng tới cỏc vấn đề sau:
+Thiết kế kiến trỳc hệ thống. +Thiết kế kỹ thuật.
Phần thiết kế hệ thống là quan trọng nhất vỡ nú cho ta cỏi nhỡn tổng thể về phần mềm cần xõy dựng. Cũn thiết kế kỹ thuật đi vào cỏc vấn đề cụ thể bao gồm: thiết kế dữ liệu, thiết kế thủ tục, thiết kế giải thuật, thiết kế giao diện, thiết kế cụng cụ cài đặt. Cụng nghệ hệ thống Phõn tớch Thiết kế Mó húa Kiểm thử Bảo trỡ
Người ta dựng mụ hỡnh thỏc nước để biểu diễn vũng đời phỏt triển của phần mềm với hai ý nghĩa: khẳng định đõy là cỏc giai đoạn của một quy trỡnh thống nhất và khụng tỏch rời và cú mối quan hệ mật thiết với nhau.
Trong mụ hỡnh này cỏc cụng đoạn càng ở phớa dưới thỡ càng phải chịu sự tỏc động của cỏc giai đoạn phớa trờn, chỉ trừ cú giai đoạn cụng nghệ hệ thống là khụng chịu tỏc động của giai đoạn nào.
Để xõy dựng được một hệ thống phần mềm phải mụ tả được vấn đề và yờu cầu của khỏch hàng bằng trả lời cỏc cõu hỏi như: Vấn đề của hệ thống là gỡ?. Hệ thống phải làm gỡ?. Phải phõn tớch của tiến trỡnh tập trung vào việc điều tra vấn đề thay cho việc tỡm ra giải phỏp. Để cú tài liệu phõn tớch đầy đủ và đỳng đắn thỡ phải phõn tớch lĩnh vực vấn đề. Lĩnh vực vấn đề là khu vực tỏc nghiệp của con người trong đú phần được xõy dựng.
Những người tham gia vào xõy dựng hệ thống phần mềm như: khỏch hàng, phõn tớch viờn, lập trỡnh viờn…Theo phương phỏp thỏc nước rất ớt khi làm việc cựng với nhau để chia sẻ cỏc hiểu biết sõu sắc về vấn đề đang giải quyết. Do vậy sẽ mất nhiều thời gian để xõy dựng được hệ thống phần mềm.
Mụ hinh thỏc nước cũn được biểu diễn dưới dạng chữ V trong đú quy trỡnh kiểm tra được thực hiện đồng thời với cỏc quy trỡnh phỏt triển khỏc, vớ dụ kiểm tra chức năng được thực hiện trong quỏ trỡnh phõn tớch, kiểm tra tớch hợp được thực hiện trong quỏ trỡnh thiết kế, kiểm tra module trong quy trỡnh lập trỡnh.
Sơ đồ 2.6 Mụ hỡnh thỏc nước 2.4.4 Mụ hỡnh lặp và tăng dần:
Mụ hỡnh thỏc nước khụng cho đi ngược lại chuỗi trỡnh tự phỏt triển phần mềm, theo mụ hỡnh này thỡ phải xỏc định toàn bộ yờu cầu, nú được thực hiện thụng qua bàn bạc với người sử dụng hệ thống và khảo sỏt cỏc chi tiết của tiến trỡnh tỏc nghiệp. Thực tế khi kết thỳc cụng việc may mắn lắm chỉ 80% nhu cầu của hệ thống là được thu thập trong quy trỡnh phõn tớch do khi đặt hàng bản thõn khỏch hàng chỉ mới liệt kờ ra những mong muốn và nguyện vọng của mỡnh về phần mềm mà chưa hỡnh dung được một cỏch cụ thể những khả năng mà phần mềm sẽ đạt được đồng thời kỹ sư phần mềm ngay từ đầu nhận đơn đặt hàng cũng khụng thể hỡnh dung hết kiến trỳc tổng quỏt của phần mềm mà mỡnh xõy dựng. Tiếp theo là quy trỡnh thiết kế, nơi kiến trỳc hệ thống sẽ được xỏc định, quy trỡnh này tập trung vào những nhiệm vụ như đặt chương trỡnh ở đõu, cần phần cứng nào…Trong khi thực hiện cụng việc này. Cú thể
Phõn tớch Thiết kế Mó húa Chương trỡnh ứng dụng Kiểm tra chức năng Kiểm tra tớch hợp Kiểm tra module
tỡm ra một số nhiệm vụ mới của hệ thống. Do đú xuất hiện nhu cầu đi ngược lại người sử dụng để trao đổi bàn bạc về nú, cú nghĩa là phải trở lại quy trỡnh phõn tớch. Sau khi lặp lại vài lần như vậy mới chuyển đến quy trỡnh lập trỡnh hệ thống. Khi mó húa chương trỡnh, phỏt hiện ra một vài quyết định khi thiết kế là khụng thể cài đặt. Nờn phải quay trở lại quy trỡnh phõn tớch để xem xột lại yờu cầu. Sau quy trỡnh lập trỡnh, quy trỡnh kiểm thử bắt đầu. Trong khi kiểm thử và nhận thấy một vài yờu cầu chưa đủ chi tiết, giải thớch nhầm lẫn cú thể xảy ra. Vậy phải trở lại quy trỡnh phõn tớch để xem xột lại yờu cầu. Sau một vài lần lặp lại như vậy cú được hệ thống hoàn chỉnh giao cho khỏch hàng. Vấn đề luật phỏp, quy trỡnh kinh doanh cú thể thay đổi theo thời gian khi xõy dựng hệ thống, người dựng cú thể phàn nàn về cỏc vấn đề này, sản phẩm làm ra khụng đỳng như họ mong đợi. Nguyờn nhõn cú thể là sự thay đổi của phỏp luật, mụi trường kinh doanh, khỏch hàng khụng truyền đạt đỳng ý khỏch hàng yờu cầu, đội ngũ dự ỏn khụng tuõn thủ tiến trỡnh…Đội ngũ phỏt triển thường lập ra cỏc biểu đồ và vụ số tài liệu, văn bản, nhưng người dựng khụng phải lỳc nào cũng hiểu cỏi mà đội ngũ phỏt triển cung cấp cho khỏch hàng. Giải phỏp nào để trỏnh cỏc vấn đề này? Cõu trả lời là mụ hỡnh húa trực quan cú thể giỳp khỏch hàng.
Phỏt triển phần mềm là tiến trỡnh phức tạp. Nếu bỏ qua khả năng quay trở lại của cỏc bước thực hiện trước đú thỡ thiết kế hệ thống cú thể sai lầm và thiếu sút nhu cầu. Để cú thể đi ngược lại cỏc bước phỏt triển hệ thống phần mềm sẽ cú phương phỏp mới, phương phỏp phỏt triển lặp. Phỏt triển lặp là làm di làm lại việc gỡ đú. Trong phương phỏp này ta sẽ đi qua cỏc bước phõn tớch, thiết kế, phỏt triển, kiểm thử và triển khai phần mềm theo từng bước nhỏ nhiều lần. Bởi khú cú thể thu thập được đầy đủ mọi yờu cầu vào cụng đoạn đầu tiờn của dự ỏn. Cỏc vấn đề mới nảy sinh, vậy phải lập kế hoạch lặp trong dự ỏn. Theo quan niệm này thỡ dự ỏn được coi là cỏc thỏc nước nhỏ, mỗi thỏc
nước được thiết kế đủ lớn để sao cho cú thể hoàn thiện từng bộ phận quan trọng của dự ỏn và đủ nhỏ để tối thiểu việc đi trở lại.
Sơ đồ 2.7 Mụ hỡnh lặp tăng dần
Theo mụ hỡnh lặp và tăng dần thỡ mỗi chu kỳ lặp là một vũng đời thỏc nước nhỏ. Vũng lặp sau được hỡnh thành trờn cơ sở tiến húa của vũng lặp trước đú. Như vậy cỏc quy trỡnh truyền thống được lặp đi lặp lại và tăng dần. Trong phương phỏp này, phõn tớch viờn, người thiết kế, người lập trỡnh…Hợp tỏc làm việc với nhau để hiểu sõu sắc hệ thúng, chia sẻ cỏc ý tưởng mới dẫn đến xõy dựng được một hệ thống mạnh, phức tạp hơn.
2.4.5 Cấp bậc kiến trỳc phần mềm:
Cấp bậc kiến trỳc của phần mềm được hiểu là thứ bậc trỡnh tự cỏc khối và mối liờn kết giữa chỳng với nhau. Như vậy đứng trước một vấn đề thực tiễn người kỹ sư phần mềm cú thể đưa ra nhiều giải phỏp khỏc nhau để giải quyết
Cụng nghệ hệ thống Phõn tớch Thiết kế Mó húa Kiểm thử Bảo trỡ
vấn đề đú, cấp bậc kiến trỳc phần mềm hoàn toàn phụ thuộc vào trỡnh độ chuyờn mụn của mỗi người.
Yờu cầu của mỗi kiến trỳc phần mềm là phải đạt được hai vấn đề:
• Đảm bảo tớnh chặt chẽ trong kiến trỳc để khụng xảy ra những lỗ hổng phần mềm.
• Kiến trỳc phải đảm bảo khụng quỏ phức tạp để khi dịch thành chương trỡnh thỡ quy mụ của chương trỡnh khụng quỏ lớn khi thực hiện mỗi chức năng.
Mụ hỡnh từ bài toỏn thực tế sang bài toỏn logic (Problem - Solution).
Sơ đồ 2.8 Mụ hỡnh chuyển đổi từ vấn đề thành cỏc giải phỏp
Mụ hỡnh này cho ta thấy với một vấn đề thực tế nhưng qua bàn tay chế tỏc của kỹ sư phần mềm cú thể trở nờn rất nhiều kiến trỳc phần mềm khỏc nhau. Tiờu chuẩn duy nhất để lựa chọn một kiờu kiến trỳc nào đú là khụng quỏ phức
Solution 1 S1 S2 S3 S5 S7 S4 S6 Problem Solution 2 S1 S2 S3 S5 S4 S6
tạp nhưng vẫn đảm bảo tớnh năng hoạt động của phần mềm. Đõy chớnh là quỏ trỡnh cấu trỳc húa cỏc vấn đề phi cấu trỳc.