TẢN mạn về CÔNG NGHỆ PHẦN mềm

10 309 0
TẢN mạn về CÔNG NGHỆ PHẦN mềm

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

Thông tin tài liệu

Kể từ lúc những cỗ máy đầu tiên ra đời, chúng như những “món hàng” lạ lẫm đối với những người dân chân chất như chúng ta. Cũng giống như mĩ phẩm, hay các nhu yếu phẩm thiết yếu trong đời sống hằng ngày. Có bao giờ ta tự hỏi rằng nó được sản xuất như thế nào không? Những câu hỏi đại loại như what, how ra đời để thỏa lấp những tò mò của ta về các vấn đề ấy. Máy tính cũng vậy, nó chỉ là những cổ máy vô tri vô giác do trí tưởng tượng của con người tạo nên, nhưng kể từ khi có phần mềm, nó trở thành những cổ máy biết suy nghĩ, hoạt động theo ý muốn con người, và trở thành một trong những “sản phẩm” không thể thiếu trong đời sống hằng ngày. Hàng loạt những phần mềm ra đời, các ứng dụng độc đáo do cá nhân hay những tổ chức nào đó xây dựng lên nhằm thỏa mãn nhu cầu nghiên cứu, sáng tạo, xây dựng những hệ sinh thái nhằm phục vụ các nhu cầu khác nhau. Và như thế, tất cả chúng có lẽ đều thuộc về một thế giới riêng của chúng, chẳng ai biết chúng từ đâu đến, chỉ biết rằng, chúng sinh ra để phục vụ con người.

TẢN MẠN VỀ CÔNG NGHỆ PHẦN MỀM – PHẦN Kể từ lúc cỗ máy đời, chúng “món hàng” lạ lẫm người dân chân chất Cũng giống mĩ phẩm, hay nhu yếu phẩm thiết yếu đời sống ngày Có ta tự hỏi sản xuất không? Những câu hỏi what, how đời để thỏa lấp tò mò ta vấn đề Máy tính vậy, cổ máy vô tri vô giác trí tưởng tượng người tạo nên, kể từ có phần mềm, trở thành cổ máy biết suy nghĩ, hoạt động theo ý muốn người, trở thành “sản phẩm” thiếu đời sống ngày Hàng loạt phần mềm đời, ứng dụng độc đáo cá nhân hay tổ chức xây dựng lên nhằm thỏa mãn nhu cầu nghiên cứu, sáng tạo, xây dựng hệ sinh thái nhằm phục vụ nhu cầu khác Và thế, tất chúng có lẽ thuộc giới riêng chúng, chẳng biết chúng từ đâu đến, biết rằng, chúng sinh để phục vụ người Cũng giống Edsger Dijsktra nói: “Khi máy tính chưa xuất hiện, việc lập trình chưa có khó khăn Khi xuất vài máy tính chức việc lập trình bắt đầu gặp vài khó khăn nho nhỏ Giờ có máy tính khổng lồ khó khăn trở nên vô lớn Như ngành công nghiệp điện tử không giải khó khăn mà họ tạo thêm khó khăn Khó khăn mà họ tạo việc sử dụng sản phầm họ” Thế giới khoa học đa sắc màu, lĩnh vực công nghệ Chính rộng lớn, nên phạm vi chuyên mục này, xin phép đề cập đến lĩnh vực Công nghệ phần mềm – lĩnh vực mà theo hấp dẫn năm gần Muốn tiếp cận vấn đề gì, việc cần phải biết Công nghệ phần mềm vậy, muốn hiểu nó, cần phải biết Ở đây, mạn phép tách thành phần khác nhau, công nghệ phần mềm Công nghệ (technology), đến trái đất tự bao giờ? Có lẽ từ thời xa xưa, từ lúc mà người sơ khai, công nghệ xuất Phải lúc người tạo lửa, từ lúc người bắt đầu sử dụng công cụ lao động mà hình thành nên Trong tiếng Hy Lạp cổ đại, công nghệ phiên dịch thành từ technologia, techno có nghĩa thủ công, logia có nghĩa châm ngôn, công nghệ hiểu công cụ mưu mẹo người Quay lại tại, công nghệ biến đổi, sử dụng công cụ, máy móc để giải vấn đề Một khái niệm hàn lâm dễ hiểu phải không… Phần mềm (software) sao, nói phần mà “mềm” có lẽ đúng, chất phần mềm có “cứng” đâu Bạn dùng máy tính, hay điện thoại chưa nhỉ? Có bạn nghĩ máy tính bạn có phần mềm không? Ví dụ game chẳng hạn, phần mềm nữa…Ủa thì, phần mềm gì…Nói nôm na đơn giản là chương trình máy tính chấm hết But but but, nói có đủ chưa Khi vào thư mục game đó, bạn có thấy tập tin README.txt file word không? tài liệu hướng dẫn sử dụng Ồ, phần mềm định nghĩa đầy đủ chương trình máy tính tài liệu kèm Rõ ràng thì, phần mềm thật trừu tượng, chẳng cầm, nắm được, chán phải không nào… Khi vào siêu thị mua hàng đó, ví dụ iphone 6S chẳng hạn, product bán rộng rãi thị trường.Những sản phẩm bán đại trà, đóng gói bao bì kĩ lưỡng, trải qua quy trình công nghiệp đại gọi Generic Product Tuy nhiên, đâu phải product đóng bao bì, sản xuất hàng loạt đâu nhỉ…có mặt hàng cho dù có hàng tỉ đô chưa ta mua được, có bán thị trường đâu mà mua Như vậy, khái niệm đời, product phát triển theo yêu cầu riêng khách hàng, gọi Bespoke Product Chẳng hạn bàn ghế làm từ vật liệu cao cấp gỗ sồi, ta chẳng thể tìm siêu thị, nhà triễn lãm hay viện bảo tàng, tiệm điêu khắc cả, kết tinh tinh túy nơi nghệ nhân, yêu cầu khắc nghiệt từ phía khách hàng Phần mềm máy tính vậy, nói cách nôm na, product công nghệ thông tin ấy!!! TẢN MẠN CÔNG NGHỆ PHẦN MỀM- PHẦN Ở phần trước, có nhắc qua khái niệm phần mềm, phần mềm chia làm loại: Generic product bespoke product (một số tài liệu gọi customize product) Cũng loại sản phẩm khác, phần mềm có đặc tính riêng quan trọng, bao gồm: Khả bảo trì (Maintainability): phần mềm có khả thay đổi theo nhu cầu khách hàng • Độ tin cậy (dependability): tính ổn định bảo mật • Hiệu quả(efficiency): sử dụng hiệu tài nguyên máy tính • Dễ dùng (Usability): giao diện dễ dùng, đáp ứng nhu cầu sử dụng • Như vậy, nhắc đến phần mềm, người ta không khỏi nhắc đến ngành công nghệ phần mềm Nó gì? Và có khác biệt so với khoa học máy tính? Một cách khái quát, công nghệ phần mềm quy tắc công nghệ (engineering discipline), có liên quan đến khía cạnh trình sản xuất phần mềm Và thì, có khác biệt so với khoa học máy tính, ta điểm qua vài khác biệt thông qua định nghĩa chúng: Công nghệ phần mềm: đề cập đến hoạt động xây dựng cho sản phẩm có giá trị • Khoa học máy tính: đề cập đến lý thuyết vấn đề • Về chất, công nghệ phần mềm phần công nghệ hệ thống (system engineering) Công nghệ hệ thống có liên quan đến tất khía cạnh trình phát triển hệ thống Còn công nghệ phần mềm liên quan đến việc phát triển hạ tầng phần mềm, điều khiển ứng dụng sở liệu hệ thống Như thì, để tạo phần mềm, kĩ sư phần mềm phải trải qua quy trình nào? Khi đề cập đến vấn đề này, ta thắc mắc: “quy trình” gì??? Hiểu cách đơn giản thôi, quy trình tập hợp hành động mà mục đích xây dựng phát triển phần mềm Một phần mềm xây dựng thường phải trải qua nhiều quy trình, cuối là, sản phẩm đời với đầy đủ chức thỏa mãn mục dich nhu cầu người sử dụng Các quy trình phần mềm bao gồm: Đặc tả phần mềm (software specification): chức thực hiện, ràng buộc cần phải có, tất phải xác định cách đầy đủ chi tiết • Thiết kế cài đặt (software design and implementation): đơn giản dễ hiểu, trình xây dựng hệ thống phần mềm, code code code sản phẩm theo đặc tả • Đánh giá phần mềm (software validation): bước này, ta thẩm định lại xem phần mềm thỏa mãn chức mà người sử dụng đặt hay chưa • Cải tiến phần mềm (software evolution): phần mềm phải cải tiến, điều chỉnh để phù hợp với yêu cầu hệ thống • Nhìn chung, đa số phần mềm trải qua quy trình Tuy nhiên, tùy thuộc vào việc chọn loại mô hình để phát triển, bước bị xáo trộn khác Như thì, làm phần mềm, không đơn giản code, code code, mà phải trải qua trình dài với hàng loạt quy trình nghiệp vụ Kiếm tốt, trải qua trình luyện; phần mềm muốn chất lượng, phải trải qua quy trình dài chuyên nghiệp TẢN MẠN VỀ CÔNG NGHỆ PHẦN MỀM – PHẦN Như đề cập từ trước, quy trình để sản xuất sản phẩm bao gồm bước: đặc tả phần mềm (software specification), thiết kế cài đặt (software design and implementation), đánh giá phần mềm (software validation), cải tiến phần mềm (software evolution) Có bạn tự hỏi rằng, nhận dự án, làm không? Nếu xét góc độ coder nghiệp dư là: code, code code Một anh coder chẳng quan tâm đến thứ khác code cho xong để tạo sản phẩm theo ý thân Code xong sao, cha ơi, lỗi tè le, chẳng ăn nhập với dự án mà làm Tuy nhiên, việc chẳng đơn giản vậy, bánh chất lượng muốn làm phải trải qua quy trình, điều lại phần mềm Ngạn ngữ Nga có câu : ‘Ai làm gió trả lương khói’ không sai trường hợp Và vậy, giai đoạn đặc tả phần mềm, giai đoạn quan trọng Có thể nói rằng, bước này, tỉ lệ thất bại dự án cao Vậy đặc tả phần mềm mà làm cho bàng dân thiên hạ phải hoang mang, điên đảo thế? Nói nôm na, quy trình tìm hiểu, phân tích dịch vụ, ràng buộc trình xây dựng, vận hành hệ thống Quy trình đặc tả phần mềm gồm pha : • • • • Nghiên cứu tính khả thi (feasibility study) : ý tưởng mênh mông sông Trường Giang, dự án vậy, nhiều không kể siết Nhưng mà có ta nghĩ làm xong dự án rồi, dùng, máy tính có chịu nỗi hay không? Hay làm xong rồi, dự án đem lên thư viện mà trưng bày Chính vậy, nghiên cứu xem dự án mà ta đảm nhận từ đối tác, khách hàng đưa có thỏa mãn công nghệ không, hư cấu, xong dẹp Xét góc độ start-up, dự án mà ta đề đem lại lợi ích mặt tài ? Một việc dễ hiểu ‘không tiền cạp đất mà ăn à’ Phân tích rút yêu cầu (requirements elicitation and analysis) :Chà, phần mà thần dân IT cảm thấy vui Các team sau nhận dự án, yêu cầu người đẹp trai, đẹp gái đến gặp khách hàng, lê lết ngày công ty khách hàng để quan sát quy trình làm việc, thu thập thông tin thông qua biễu mẫu, đơn, thông qua trò chuyện, vấn với nhân viên công ty Bằng giá, mĩ nhân kế, nam nhân kế hay để thu thập thông tin cách tốt nhất, thông tin phải có giá trị để phục vụ việc xây dựng sau Đặc tả yêu cầu (requirements specification) : cho đặc tả chi tiết thông tin thu từ khách hàng, có loại yêu cầu : Yêu cầu người dùng :thông thường loại khách hàng cung cấp Thông tin biểu đồ dịch vụ, kết hợp với ngôn ngữ tự nhiên Yêu cầu hệ thống :cung cấp tài liệu mô tả chi tiết chức năng, dịch vụ hay ràng buộc Thông thường, loại yêu cầu cho biết cần phải xây dựng hệ thống Và hợp đồng đối tác bên thầu sản phẩm Đánh giá yêu cầu (requirement validation): đánh giá lại xem yêu cầu thỏa mãn chưa TẢN MẠN VỀ CÔNG NGHỆ PHẦN MỀM – PHẦN Ở phần trước, điểm qua giai đoạn đặc tả phần mềm Tiếp theo giai đoạn thiết kế phần mềm cài đặt (software design and implementation) Giai đoạn chia tách thành giai đoạn nhỏ “thiết kế” “cài đặt” Có bạn tự nghĩ rằng:”tôi chẳng cần thiết kế, cài đặt chương trình, đơn giản mà!!!” Cũng thôi, thử nghĩ lại xem, mà bạn gọi “chương trình” đó, sao, sử dụng bây giờ??? Thiết kế phần mềm (software design): trình mô tả cấu trúc (structure) phần mềm dựa tài liệu đặc tả từ trước Thiết kế phần mềm bao gồm: • • • • • • Thiết kế kiến trúc:xác định kiến trúc tổng thể hệ thống, thành phần (đôi lúc gọi hệ thống (sub-system) module), mối quan hệ (relationship) chúng Đặc tả trừu tượng: đặc tả dịch vụ ràng buộc hệ thống (sub-system) vận hành Thiết kế giao diện: thiết kế giao diện thành phần hệ thống, cho đặc tả giao diện Bản đặc tả giao diện phải dễ hiễu, đơn giản Thiết kế thành phần:các giao diện tương tác thành phần, dịch vụ cung cấp Thiết kế cấu trúc liệu: cấu trúc liệu sử dụng hệ thống Thiết kế thuật toán:các thuật toán sử dụng để cung cấp dịch vụ hệ thống Sau có đầy đủ đặc tả hệ thống, công việc cài đặt phần mềm, người lập trình sau nhận đặc tả, chuyển đổi chúng thành hệ thống thực tế, đương nhiên hệ thống phải hệ thống chạy được, lỗi thỏa mãn tính đặc tả đặc tả Lập trình công việc cá nhân, quy trình chung chung Vài lập trình viên bắt đầu lập trình từ thành phần đơn giản, thành phần mà họ am hiểu nhất, sau đến thành phần khó Một số khác ngược lại quy trình này, họ dân chuyên nghiệp rồi… Trong trình lập trình, coder cần phải kiểm tra phương thức, module mà họ xây dựng xem có bug không Một điều hiển nhiên là, không mà lập trình chương trình bug Có bug kiểm tra, kiểm tra bug tìm cách loại khỏi module TẢN MẠN VỀ CÔNG NGHỆ PHẦN MỀM – PHẦN Phần này, xin mạn phép đề cập khái quát đến giai đoạn đánh giá phần mềm (software validation) giai đoạn cải tiến phần mềm (software evolution) Đầu tiên, đề cập đến giai đoạn đánh giá phần mềm (software validation) Hãy thử tưởng tượng xem, sau code code code xong, ok, bàn giao cho khách hàng Và sau khách hàng nhận sản phẩm, ok failed nhé, hợp đồng chấm dứt đây, lỗi nhiều, thật chấp nhận Và thì, giai đoạn đánh giá phần mềm giai đoạn quan trọng thiếu công đoạn thiết kế Đánh giá phần mềm (software validation) sử dụng để xem hệ thống thực theo đặc tả thỏa mãn theo yêu cầu khách hàng Giai đoạn gồm công đoạn chính: kiểm tra, xem xét lại kiểm thử hệ thống Quy trình kiểm thử gồm công đoạn: • • • Kiểm thử thành phần (unit testing): thành phần kiểm thử cách độc lập Kiểm thử hệ thống (software testing): kiểm thử toàn hệ thống Kiểm thử chấp thuận (acceptance testing): kiểm thử dựa liệu mà khách hàng cung cấp Khi chuyển giao cho khách hàng quy trình kiểm thử beta triển khai Khách hàng dùng thử phản hồi lỗi cho technical Các lỗi fix tiếp tục quy trình kiểm thử, sau chuyển giao phiên cuối cho khách hàng Ổ đây, ta cần ý khác biệt khái niệm: software validation software verification: • • Software verification: thẩm tra xem coi phần mềm phát triển có phù hợp với đặc tả hay chưa Nói đơn giản dễ hiểu là: “Are we building the product right?” Software validation: đánh giá xem phần mềm có phù hợp với yêu cầu khách hàng Nói cách khác, là: ”Are we building the right product?” Giai đoạn cuối cải tiến phần mềm (software evolution) Phần mềm sau chuyển giao cho khách hàng, sau thời gian, cấu công ty khách hàng có thay đổi, nghiệp vụ thay đổi; đồng thời chức phần mềm có phần lỗi thời, không đáp ứng tốt nhu cầu khách hàng, có trường hợp xảy bug Cũng giống máy móc, trang thiết bị sử dụng ngày, dùng lâu dễ sinh hỏng, hỏng phải bảo trì, đem tiệm để sửa chữa, phần mềm tương tự Khi yêu cầu hệ thống thay đổi theo thay đổi yêu cầu nghiệp vụ phần mềm phải cải tiến thay đổi để hỗ trợ khách hàng Chi phí để bảo trì cải tiến thường đắt so với chi phí xây dựng phần mềm Nếu nói thì, không xây dựng phần mềm luôn, mà lại phải bảo trì phần mềm, rõ ràng chi phí bảo trì cao so với mua mà!!! Không đơn giản bạn nghĩ, phần mềm muốn xây dựng phải khoảng thời gian dài, trải qua nhiều giai đoạn quy trình phức tạp Trong đó, khách hàng có sẵn phần mềm, họ cần ta cải tiến, bảo trì lại cho phù hợp với nhu cầu tại, thời gian hơn, chưa kể thời gian để chuyển giao training lại cho đội ngũ nhân viên tiết kiệm lớn

Ngày đăng: 02/11/2016, 20:18