- Mục tiêu của công nghệ phần mềm là tạo ra những phần mềm tốt, giảm đến tối
thiểu những may rủi có thể gây cho các người liên quan. Trong quá trình đề cập, chúng
ta sử dụng các thuật ngữ:
- Phần mềm (software): là một tập hợp các câu lệnh được viết bằng một hoặc
nhiều ngôn ngữ lập trình, nhằm tự động thực hiện một số các chức năng giải quyết một
bài toán nào đó.
- Công nghệ (engineering): là cách sử dụng các công cụ, các kỹ thuật trong cách
giải quyết một vấn đề nào đó.
- Công nghệ phần mềm (software engineering): là việc áp dụng các công cụ, các
kỹ thuật một cách hệ thống trong việc phát triển các ứng dụng dựa trên máy tính. Đó
chính là việc áp dụng các quan điểm, các tiến trình có kỷ luật và lượng hoá được, có
bài bản và hệ thống để phát triển, vận hành và bảo trì phần mềm.
- Theo quan điểm của nhiều nhà nghiên cứu, có thể nhìn công nghệ phần mềm là
một mô hình được phân theo ba tầng mà tất cả các tầng này đều nhằm tới mục tiêu
chất lượng, chi phí, thời hạn phát triển phần mềm.
Mô hình được phân theo ba tầng của công nghệ phần mềm được mô tả như sau:
- tầng quy trình (process) liên quan tới vấn đề quản trị phát triển phần
mềm như lập kế hoạch, quản trị chất lượng, tiến độ, chi phí, mua bán sản phẩm phụ,
cấu hình phần mềm, quản trị sự thay đổi, quản trị nhân sự (trong môi trường làm việc
nhóm), việc chuyển giao, đào tạo, tài liệu;
- Tầng phương pháp (methods) hay cách thức, công nghệ, kỹ thuật để làm phần
mềm: liên quan đến tất cả các công đoạn phát triển hệ thống như nghiên cứu yêu cầu,
thiết kế, lập trình, kiểm thử và bảo trì. Phương pháp dựa trên những nguyên lý cơ bản
nhất cho tất cả các lĩnh vực công nghệ kể cả các hoạt động mô hình hoá và kỹ thuật
mô tả.
- Tầng công cụ (tools) liên quan đến việc cung cấp các phương tiện hỗ trợ tự
động hay bán tự động cho các tầng quá trình và phương pháp (công nghệ).
Qua sơ đồ trên, ta thấy rõ công nghệ phần mềm là một khái niệm đề cập không
chỉ tới các công nghệ và công cụ phần mềm mà còn tới cả cách thức phối hợp công
nghệ, phương pháp và công cụ theo các quy trình nghiêm ngặt để làm ra sản phẩm có
chất lượng.
2. SẢN PHẨM PHẦN MỀM - ĐẶC TÍNH VÀ PHÂN LOẠI
Một phần mềm gồm một hay nhiều ứng dụng (application) - là một tập hợp các chương
trình thực hiện tự động hóa một số các nhiệm vụ nghiệp vụ. Nghiệp vụ (Business) bao gồm tập hợp các chức năng như: tìm hiểu thị trường, kiểm toán, sản xuất và quản lý nhân sự... Mỗi chức năng có thể được chia nhỏ ra thành những tiến trình thực hiện nó.
Ví dụ: tìm hiểu thị trường là sự tìm hiểu về bán hàng, quảng cáo, và đưa ra các sản phẩm mới. Mỗi tiến trình lại có thể được phân chia theo những nhiệm vụ đặc thù của chúng. Ví dụ: việc bán hàng phải duy trì được mối quan hệ với khách hàng, làm việc theo trình tự và các phục vụ dành cho khách hàng. Các ứng dụng có thể hỗ trợ cho từng nhiệm vụ một cách đơn lẻ. Trái lại một ứng dụng tìm hiểu thị trường có các đặc điểm riêng, có các chức năng riêng, ngoài ra nó còn cung cấp một số thông tin chung nhằm hoàn thiện tất cả các nhiệm vụ.
a.Đặc tính của phần mềm.
Các đặc tính phần mềm là tất cả các điểm chung cho mọi ứng dụng: dữ liệu, các tiến trình, các ràng buộc, và các giao diện.
1. Dữ liệu
Đầu vào: Dữ liệu vào là dữ liệu ở bên ngoài máy tính, và chúng được đưa vào bằng cách sử dụng một thiết bị đầu vào. Thiết bị đầu vào được sử dụng để đưa dữ liệu vào máy tính có thể là: bàn phím, máy quét, hoặc được truyền từ một máy tính khác.
Đầu ra: Dữ liệu ra ngược lại so với dữ liệu vào ở chỗ, đầu ra là các dữ liệu được đưa ra ngoài máy tính. Một số các thiết bị đầu ra như máy in, màn hình hiển thị, một máy tính khác...
Sự lưu trữ dữ liệu và sự tìm kiếm dữ liệu: Dữ liệu được mô tả ở dạng vật lý, trong một máy có thể đọc được các khuôn dạng dữ liệu. Việc tìm kiếm dữ liệu được hiểu là bạn có thể truy nhập vào dữ liệu ở dạng lưu trữ của nó. Việc lưu trữ và tìm kiếm luôn đi cùng với nhau (cả ở mức quan niệm lẫn trong các chương trình phần mềm). Việc lưu trữ dữ liệu đòi hỏi hai kiểu định nghĩa dữ liệu là kiểu vật lý và kiểu logic.
2. Xử lý
Xử lý bao gồm một chuỗi các lệnh hoặc các sự kiện có liên quan với nhau làm việc với các dữ liệu. Kết quả của một xử lý có thể là: làm thay đổi cơ sở dữ liệu, đưa dữ liệu trả lời ra thiết bị đầu cuối, máy in hoặc in ra giấy, có thể là những yêu cầu về các trang thiết bị, sản sinh những chương trình, hoặc lưu trữ những luật, những thông tin mới, được suy diễn ra về các tình huống, các phần tử.
3. Ràng buộc
Ràng buộc bao gồm: ràng buộc thứ tự trước, ràng buộc thứ tự sau, ràng buộc thời gian, ràng buộc cấu trúc, ràng buộc điều khiển và cả ràng buộc về tham chiếu.
• Ràng buộc về thứ tự trước (Prerequisite Constraint): Bắt buộc về thứ tự trước là điều kiện đầu tiên phải được đáp ứng để có thể bắt đầu quá trình xử lý.
• Ràng buộc về thứ tự sau (Postrequisite Constraint): Ràng buộc loại này là điều kiện cần phải thỏa mãn để quá trình xử lý có thể hoàn thành được. Cụm câu lệnh này được đưa vào cuối quá trình xử lý.
• Ràng buộc về thời gian (Time Constraint): Bao gồm ràng buộc về thời gian xử lý, thời gian phân chia cho một quá trình xử lý, thời gian yêu cầu đối vớicác quá trình xử lý bên ngoài, thời gian xử lý đồng bộ, thời gian trả lời cho quá trình xử lý với giao diện ngoài.
• Ràng buộc về mặt cấu trúc: Có thể hiểu là bao gồm việc xác định loại đầu vào và đầu ra của dữ liệu nào được cho phép, quá trình xử lý được thực hiện như thế nào và mối quan hệ giữa các quá trình với nhau.
• Ràng buộc về điều khiển: Liên quan đến việc duy trì mối quan hệ về dữ liệu.
• Ràng buộc về suy diễn: Đó là những khả năng có thể xảy ra từ một ứng dụng, dựa vào các kết quả trước đó, hoặc có thể dựa vào các quan hệ về dữ liệu, ta có thể dẫn đến một kết quả khác.
4. Giao diện
Quan trọng nhất là giao diện người sử dụng - là phương tiện giao tiếp giữa người sử dụng và chương trình. Sau đó là giao diện thủ công - là các mẫu báo cáo, .... và một số giao diện đã được chuẩn hóa như giao diện về mạng LAN của Institue of Electrical and Electronic Engineers, chuẩn OSI (Open System Interface) của International Standards Organization,...
b. Phân loại phần mềm.
Phân loại phần mềm được định nghĩa như sự định hướng các công việc của một ứng dụng, ví dụ như theo kiểu hướng giao dịch, hỏi đáp, trợ giúp quyết định,...
1. Ứng dụng hướng giao dịch.
Ứng dụng hướng giao dịch còn có tên là hệ thống xử lý giao dịch (TPS – Transaction
Processing Systems) được sử dụng nhằm hỗ trợ các hoạt động hằng ngày của một công việc, bao gồm: xử lý đơn hàng, quản lý kiểm kê, ghi quỹ,...Chúng được đặc trưng như là các ứng dụng mà trong đó các yêu cầu, các dữ liệu và quá trình xử lý được biết rõ và có cấu trúc tốt. Theo nghĩa được biết rõ, chức năng đó phải có tính lập lại, thân thiện và rõ ràng. Theo nghĩa cấu trúc tốt, vấn đề đó phải có thể được xác định một cách đầy đủ và rõ ràng. Các yêu cầu có thể được định danh bởi đội ngũ xây dựng phần mềm.
2. Ứng dụng cơ sơ dữ liệu
Ứng dụng cơ sở dữ liệu được sử dụng như một ứng dụng xử lý câu hỏi về dữ liệu. Ngôn ngữ truy vấn dữ liệu chuẩn SQL cho phép người sử dụng đặt câu hỏi dưới dạng: họ biết họ cần gì nhưng không biết làm cách nào để lấy được dữ liệu đó. Các phần mềm máy tính đưa ra các phương
pháp xử lý và truy cập tối ưu để thực hiện các thao tác đó.
Ở đây, có ba loại câu hỏi chính:
- Tương tác: dữ liệu sử dụng xong là không cần nữa?
- Dữ liệu được lưu trữ để sử dụng lại và thay đổi trong tương lai?
- Dữ liệu được lưu trữ để sử dụng thường xuyên trong một số quá trình lập lại?
Ứng dụng truy vấn hỗ trợ một khái niệm là kho chứa dữ liệu (data warehouse). Đó là một sơ đồ lưu trữ xây dựng trên quan điểm: hầu hết dữ liệu cần phải giữ lại cho các truy nhập truy vấn trực tuyến. Tại đây lưu lại các phiên bản cũ của phần lớn các phần tử trong cơ sở dữ liệu, các lần vào ra giao dịch và các bản ghi liên quan đến một số quá trình hoạt động.
3. Ứng dụng hỗ trợ quyết định (Decision Supports System - DSS)
DSS làm nhiệm vụ xác định và giải quyết bài toán. Khác với một ứng dụng truy vấn mà những người chuyên nghiệp và các nhà quản lý sử dụng để tìm kiếm và tổng hợp các dữ liệu về một quá trình hoạt động (như ở ví dụ trên), với ứng dụng hỗ trợ quyết định, họ phân tích, xác định các xu hướng, thực hiện các phân tích dữ liệu về mặt thống kê hay toán học từ đó giải các bài toán không cấu trúc. Dữ liệu dùng cho DSS thường lấy từ các ứng dụng sử dụng giao dịch. Vì thông tin thường không đầy đủ, trong DSS thường giải bài toán bằng phương pháp lặp, áp dụng mô hình toán học hoặc thống kê để đi tới quyết định. Dữ liệu hỗ trợ và/hoặc hiệu chỉnh thường được đưa trở lại quá trình mô hình hoá để làm mịn các phân tích.
Một số hệ thống được xem là một sản phẩm phụ của DSS như:
+ Hệ thống thông tin thi hành (Excutive Information System - EIS) là một sản
phẩm phụ của DSS. EIS hỗ trợ quyết định thực hiện và cung cấp khả năng tìm kiếm
trong các môi trường một cách tự động. Các hệ thi hành hàng đầu phải xử lý được các
vấn đề với thông tin không đầy đủ, không chính xác, không rõ ràng và có liên quan
đến tương lai. EIS tích hợp thông tin từ cơ sở dữ liệu bên ngoài với ứng dụng nội bộ
để tạo ra khả năng mô hình hoá và tìm kiếm thông tin tự động. Sự khác nhau cơ bản
của EIS với DSS là ở đây dữ liệu không hoàn chỉnh, không rõ ràng và thậm chí không
chính xác.
+ Hệ thống hỗ trợ quyết định theo nhóm (Group DSS - GDSS) là một dạng đặc
biệt của ứng dụng DSS. GDSS có một nhật ký ghi lại quá trình xây dựng một quyết
định để hỗ trợ một nhóm những người có trách nhiệm ra quyết định (decision maker).
GDSS tập trung chủ yếu vào các quá trình tương tác có ít hoặc không có phân tích
thống kê hoặc mô hình hoá dữ liệu trong nhóm. Các phần mềm cơ sở dữ liệu trong
GDSS có xu hướng ít được xây dựng hơn đối với DSS, nhưng có thể bao gồm một số
bảng tính và các thủ tục biểu diễn tổng kết về các bên tham gia dưới dạng số hoặc đồ
thị. Các chức năng điển hình của GDSS là:
- Ghi lại các ý kiến vô danh.
- Tuyển cử dân chủ bầu các nhà lãnh đạo.
- Thảo luận và bầu cử để đạt được một sự thoả thuận nào đó trong nhóm.
4. Hệ chuyên gia (Expert Systems - ES)
Các ứng dụng hệ chuyên gia là các ứng dụng tin học tự động hoá tri thức và khả năng lập luận của một hoặc nhiều chuyên gia trong một lĩnh vực cụ thể nào đó. ES phân tích các đặc trưng của một tình huống để đưa ra một lời khuyên, một khuyến nghị hoặc phác hoạ một kết luận bằng các quá trình lập luận tự động. Một hệ ES bao gồm bốn thành phần chính: hệ thống thu thập tri thức, cơ sở tri thức, mô tơ suy diễn (còn gọi là cơ sở luật) và hệ thống diễn giải.
+ Hệ thống thu thập tri thức là phương tiện xây dựng cơ sở tri thức. Nói chung, càng nhiều tri thức thì hệ thống càng “thông minh” hơn. Hệ thống thu thập tri thức phải cung cấp các sự kiện khởi đầu, các quy tắc mẹo mực (heuristic rules of thumb) và có thể dễ dàng bổ sung tri thức mới.
Thông thường, chúng ta lập luận mà không biết làm cách nào để đi tới phương án. Từ phân tích quá trình con người suy nghĩ khi phân tích một vấn đề có thể áp dụng để xây dựng một ứng dụng. Tại sao ta lại làm việc đó? Đó là cả một quá trình suy diễn nội tâm và rất khó diễn giải. Khó khăn này không của riêng ai. Suy luận thông tin từ tri thức của các chuyên gia là khó khăn cơ bản để xây dựng một hệ chuyên gia có hiệu quả.
+ Cơ sở tri thức là một phiên bản tự động hệ thống hoá tri thức chuyên gia cộng với các mẹo áp dụng tri thức đó. Thiết kế cơ sở tri thức cũng khó như suy luận thông tin vì dù nó được thiết kế như thế nào thì cũng bị giới hạn bởi hệ thống cài đặt nó. Vì vậy, một ngôn ngữ đặt biệt cho ES đã được thiết kế, nó cho phép xác định mối quan hệ giữa các mẩu thông tin và sử dụng một cách mềm dẻo các thông tin đó trong lập luận.
+ Vì mục đích của lập luận là tìm một giải pháp khả dĩ nhất cho một tình huống, ES sử dụng lập luận và suy diễn để xây dựng nhiều giải pháp có thể cho một tình huống cho trước. Một vài giải pháp có thể được đưa ra khi thông tin không hoàn chỉnh hoặc khi mới lập luận một phần. Xác suất chính xác của giải pháp do hệ thống đưa ra thường được đo bằng mức độ hữu ích của giải pháp đó. Các vấn đề liên quan đến quy tắc hoặc đạo đức thường được xét đến trong các ES hơn so với trong các ứng dụng khác.
+ Thành phần quan trọng cuối cùng của một ES là khả năng diễn giải các lập luận cho người sử dụng. Tìm lại quá trình suy diễn là điều rất quan trọng giúp người sử dụng có được kinh nghiệm sử dụng hệ thống và xác định mức độ tin cậy vào kết quả do ES đưa ra.
5. Các hệ thống nhúng (Embedded systems)
Đây là các ứng dụng vốn là một phần của hệ thống lớn hơn. Thường, bản thân ứng dụng thì rất đơn giản nhưng sự phức tạp của chúng là ở giao diện để tạo ra một độ chính xác hoàn hảo, tính theo thời gian thực (real - time) trong phạm vi đời sống của hệ thống lớn hơn. Việc phát triển các ứng dụng kết hợp này là địa phận của các nhà thiết kế theo học ngành khoa học máy tính hơn là những nhà thiết kế hệ thống thông tin.