II. Kỹ nghệ phần mềm
a. Tớnh khả chuyển chương trỡnh gốc: là một đặc trưng của ngụn ngữ lập trỡnh cú thể được hiểu
được hiểu theo ba cỏch khỏc nhau:
(1) Chương trỡnh gốc cú thể được chuyển từ bộ xử lý này sang bộ xử lý khỏc và từ trỡnh biờn dịch nọ sang trỡnh biờn dịch kia với rất ớt hoặc khụng sửa đổi gỡ.
(2) Chương trỡnh gốc vẫn khụng thay đổi ngay cả khi mụi trường của nú thay đổi (như việc cài đặt bản mới của hệ điều hành).
(3) Chương trỡnh gốc cú thể được tớch hợp vào trong cỏc bộ trỡnh phần mềm khỏc nhau với ớt hay khụng cần thay đổi gỡ vỡ cỏc đặc trưng của ngụn ngữ lập trỡnh.
Trong số ba cỏch hiểu về tớnh khả chuyển này thỡ cỏch thứ nhất là thụng dụng nhất. Việc chuẩn húa (do tổ chức quốc tế IFO/hoặc Viện tiờu chuẩn quốc gia Mỹ ANSI) nhằm nõng cao tớnh khả chuyển ngụn ngữ lập trỡnh.
b. Tớnh sẵn cú của cụng cụ phỏt triển: cú thể làm ngắt bớt thời gian cần để sinh ra
chương trỡnh gốc và cú thể cải thiện chất lượng của chương trỡnh. Nhiều ngụn ngữ lập trỡnh cú thể cần tới một loạt cụng cụ kể cả trỡnh biờn dịch gỡ lỗi, trợ giỳp chương trỡnh gốc, cỏc tiện nghi soạn thảo cú sẵn, cỏc cụng cụ kiểm soỏt chương trỡnh gốc, thư viện chương trỡnh con mở rộng trong nhiều lĩnh vực ứng dụng, cỏc trỡnh duyệt, trỡnh biờn dịch chộo cho phỏt triển bộ xử lý, khả năng bộ xử lý macro, cụng cụ kỹ nghệ ngược và những cụng cụ khỏc. Trong thực tế, khỏi niệm về “mụi trường phỏt triển phần mềm” tốt (bao hàm cả cụng cụ) đó được thừa nhận như nhõn tố đúng gúp cho chớnh kỹ nghệ phần mềm thành cụng.
c. Tớnh dễ bảo trỡ của chương trỡnh gốc cú tầm quan trọng chủ chốt cho tất cả cỏc nỗ
lực phỏt triển phần mềm khụng tầm thường. Việc bảo trỡ khụng thể được tiến hành chừng nào người ta chưa hiểu được phần mềm. Cỏc yếu tố của cấu hỡnh phần mềm (như tài liệu thiết kế) đưa ra nền tảng cho việc hiểu biết, nhưng cuối cựng thỡ chương trỡnh gốc vẫn phải được đọc và sửa đổi theo những thay đổi trong thiết kế.
Tớnh dễ dịch thiết kế sang chương trỡnh là một yếu tố quan trọng để dễ bảo trỡ chương trỡnh gốc. Bờn cạnh đú, cỏc đặc trưng tự làm tài liệu của ngụn ngữ (như chiều dài được phộp của tờn gọi, định dạng nhón, định nghĩa kiểu, cấu trỳc dữ liệu) cú ảnh hưởng mạnh đến tớnh bảo trỡ.
1.4 Việc chọn ngụn ngữ
Việc chọn ngụn ngữ lập trỡnh cho một dự ỏn riờng phải tớnh tới cả đặc trưng kỹ nghệ và tõm lý. Tuy nhiờn, vấn đề liờn quan đến việc chọn lựa cú thể bàn tới chỉ khi ngụn ngữ là cú sẵn hay được quy định bởi người yờu cầu.
Meek gợi ý một quan điểm tổng quỏt khi phải chọn một ngụn ngữ lập trỡnh:” nghệ thuật chọn ngụn ngữ là bắt đầu từ vấn đề, quyết định xem cỏi gỡ là yờu cầu của nú và tầm quan trọng tương đối của chỳng, vỡ cú thể sẽ khụng thể nào thoả món được chỳng như nhau (với một ngụn ngữ)...cỏc ngụn ngữ cú sẵn nờn được ứng với danh sỏch yờu cầu...”.
Cỏc tiờu chuẩn được ỏp dụng khi đỏnh giỏ về ngụn ngữ cú sẵn. Miền ứng dụng của dự ỏn là một tiờu chuẩn hay được ỏp dụng nhất trong việc ỏp dụng ngụn ngữ.
Xu hướng phỏt triển phần mềm hướng đối tượng xuyờn suốt phần lớn cỏc miền ứng dụng đó mở ra nhiều ngụn ngữ mới và cỏc dị bản ngụn ngữ quy ước. Cỏc ngụn ngữ lập trỡnh hướng đối tượng được dựng rộng rói nhất là Smalltalk, C++, Objected Pascal, và nhiều ngụn ngữ khỏc.
Sự phỏt triển gia tăng của cỏc ngụn ngữ lập trỡnh mới và tốt hơn vẫn đang phỏt triển. Mặc dự cú nhiều ngụn ngữ khỏ hấp dẫn, tuy nhiờn đụi khi tốt hơn cả vẫn là chọn ngụn ngữ yếu hơn (cũ) nhưng đó cú tài liệu chắc chắn và phần mềm hỗ trợ, quen thuộc với nhiều người trong nhúm phỏt triển phần mềm và đó từng ỏp dụng thành cụng trong quỏ khứ. Tuy nhiờn, nờn cú đỏnh giỏ kỹ càng về cỏc ngụn ngữ mới và việc chuyển dịch từ ngụn ngữ cũ sang ngụn ngữ mới nếu cú, với việc thừa nhận sự khỏng cự về tõm lý đối với thay đổi thường hay gặp phải trong mọi tổ chức.
1.5 Ngụn ngữ lập trỡnh và kỹ nghệ phần mềm
Bất kể khuụn cảnh kỹ nghệ phần mềm nào, ngụn ngữ lập trỡnh sẽ cú tỏc động tới việc vạch kế hoạch dự ỏn, phõn tớch, thiết kế, lập trỡnh, kiểm thử và bảo trỡ.
Trong khi lập kế hoạch dự ỏn, hiếm khi người ta tiến hành xem xột cỏc đặc trưng kỹ thuật của ngụn ngữ lập trỡnh. Tuy nhiờn, việc lập kế hoạch cho cỏc cụng hỗ trợ cú liờn quan tới tài nguyờn cần cú, cú thể yờu cầu rằng một trỡnh biờn dịch chuyờn dụng (và phần mềm liờn kết) hay mụi trường lập trỡnh được xỏc định.
Một khi cỏc yờu cầu phần mềm đó được thiết lập, thỡ cỏc đặc trưng ngụn ngữ lập trỡnh ứng cử viờn trở thành quan trọng hơn. Nếu cần tới cấu trỳc dữ liệu phức tạp thỡ ngụn ngữ với sự hỗ trợ cho cỏc cấu trỳc dữ liệu phức tạp (như Pascal hay ngụn ngữ khỏc) nờn được tớnh tới một cỏch cẩn thận. Nếu cần khả năng cao, như thời gian thực, thỡ ngụn ngữ được thiết kế cho ứng dụng thời gian thực như ADA hay hiệu quả về tốc độ nhớ như C cú thể được xỏc định. Nếu cần đưa ra nhiều bỏo cỏo hay thao tỏc tệp thỡ cỏc ngụn ngữ như COBOL, VB hay PRG cú thể thớch hợp. Một cỏch lý tưởng, cỏc yờu cầu phần mềm nờn kết tinh việc lựa chọn ngụn ngữ thớch hợp nhất cho việc xử lý cần thực hiện. Tuy nhiờn trong thực hành, một ngụn ngữ thường được chọn lựa bởi vỡ “nú là ngụn ngữ duy nhất mà chỳng ta cú chạy trờn mỏy của mỡnh”.
Chất lượng của thiết kế phần mềm được thiết lập theo cỏch độc lập với cỏc đặc trưng ngụn ngữ lập trỡnh (một ngoại lệ đỏng lưu ý là thiết kế hướng sự vật). Tuy nhiờn thuộc tớnh ngụn ngữ đúng vai trũ quan trọng trong chất lượng của thiết kế được cài đặt và ảnh hưởng tới cỏch thiết kế được xỏc định. Một số độ đo định tớnh, định lượng của thiết kế tốt, cỏc khỏi niệm về tớnh module và sự độc lập module cũng được nhấn mạnh. Cỏc đặc trưng kỹ thuật của nhiều ngụn ngữ lập trỡnh cú thể ảnh hưởng tới những khỏi niệm này trong việc cài đặt thiết kế.
Thiết kế dữ liệu cũng cú thể bị ảnh hưởng bởi đặc trưng ngụn ngữ. Cỏc ngụn ngữ lập trỡnh như ADA, C++, Smalltalk đều hỗ trợ cho khỏi niệm về kiểu dữ liệu trừu tượng - một cụng cụ quan trọng trong thiết kế và đặc tả dữ liệu. Cỏc ngụn ngữ thụng dụng khỏc như Pascal cho phộp định nghĩa cỏc kiểu dữ liệu do người dựng xỏc định và việc cài đặt trực tiếp danh sỏch múc nối và những cấu trỳc dữ liệu khỏc. Cỏc tớnh năng này cung cấp cho người thiết kế phạm vi rộng hơn trong bước thiết kế sơ bộ và chi tiết.
Ảnh hưởng của cỏc đặc trưng ngụn ngữ tới cỏc bước thiết kế bao gồm khú khăn trong việc đỏnh giỏ kiểm thử phần mềm. Cỏc ngụn ngữ trực tiếp hỗ trợ cho cỏc kết cấu cú cấu trỳc cú khuynh hướng giảm bớt độ phức tạp của chương trỡnh, do đú một cỏch nào đú làm cho nú dễ dàng kiểm thử. Cỏc ngụn ngữ hỗ trợ cho việc đặc tả chương trỡnh con và thủ tục ngoài (như Fotran) thường cho việc kiểm thử ớt tớch hợp ớt sinh lỗi hơn. Mặt khỏc một số đặc trưng kỹ thuật của ngụn ngữ cú thể gõy trở ngại cho việc kiểm thử. Vớ dụ: cấu trỳc khối trong ALGOL cú thể được xỏc định theo cỏch làm mất dữ liệu trung gian khi việc ra khỏi khối xuất hiện, do đú làm cho trạng thỏi chương trỡnh khú xỏc nhận hơn. Giống như kiểm thử, hiệu quả của cỏc đặc trưng ngụn ngữ lập trỡnh về mặt bảo trỡ phần mềm cũng chưa được hiểu đầy đủ.