Tổng quan về kỹ thuật phần mềm
Đầu tiên chúng ta hãy hiểu kỹ thuật phần mềm là viết tắt của gì. Thuật ngữ này được tạo thành từ hai từ, phần mềm và kỹ thuật.
Software không chỉ là một mã chương trình. Chương trình là một mã thực thi, phục vụ một số mục đích tính toán. Phần mềm được coi là tập hợp các mã lập trình thực thi, các thư viện và tài liệu liên quan. Phần mềm, khi được tạo ra cho một yêu cầu cụ thể được gọi làsoftware product.
Engineering mặt khác, là tất cả về phát triển sản phẩm, sử dụng các nguyên tắc và phương pháp khoa học, được xác định rõ ràng.
Software engineeringlà một nhánh kỹ thuật liên quan đến phát triển sản phẩm phần mềm sử dụng các nguyên tắc, phương pháp và quy trình khoa học được xác định rõ ràng. Kết quả của kỹ thuật phần mềm là một sản phẩm phần mềm hiệu quả và đáng tin cậy.
Các định nghĩa
IEEE định nghĩa kỹ thuật phần mềm là:
(1) Việc áp dụng phương pháp tiếp cận có hệ thống, kỷ luật, có thể định lượng được để phát triển, vận hành và bảo trì phần mềm; nghĩa là ứng dụng của kỹ thuật vào phần mềm.
(2) Nghiên cứu các phương pháp tiếp cận như trong tuyên bố trên.
Fritz Bauer, một nhà khoa học máy tính người Đức, định nghĩa kỹ thuật phần mềm là:
Kỹ thuật phần mềm là việc thiết lập và sử dụng các nguyên tắc kỹ thuật hợp lý để có được phần mềm kinh tế đáng tin cậy và hoạt động hiệu quả trên các máy thực.
Tiến hóa phần mềm
Quá trình phát triển một sản phẩm phần mềm sử dụng các nguyên tắc và phương pháp kỹ thuật phần mềm được gọi là software evolution. Điều này bao gồm sự phát triển ban đầu của phần mềm và bảo trì và cập nhật cho đến khi sản phẩm phần mềm mong muốn được phát triển, đáp ứng các yêu cầu mong đợi.
Sự tiến hóa bắt đầu từ quá trình thu thập yêu cầu. Sau đó, các nhà phát triển tạo ra một nguyên mẫu của phần mềm dự định và hiển thị nó cho người dùng để họ nhận được phản hồi ở giai đoạn đầu của quá trình phát triển sản phẩm phần mềm. Người dùng đề xuất các thay đổi, trên đó một số bản cập nhật liên tục và bảo trì cũng tiếp tục thay đổi. Quá trình này thay đổi thành phần mềm gốc, cho đến khi hoàn thành phần mềm mong muốn.
Ngay cả khi người dùng đã có phần mềm mong muốn trong tay, công nghệ tiên tiến và các yêu cầu thay đổi buộc sản phẩm phần mềm cũng phải thay đổi theo. Việc tạo lại phần mềm từ đầu và thực hiện từng người một với yêu cầu là không khả thi. Giải pháp khả thi và kinh tế duy nhất là cập nhật phần mềm hiện có để nó phù hợp với các yêu cầu mới nhất.
Luật phát triển phần mềm
Lehman đã đưa ra luật cho sự phát triển phần mềm. Ông chia phần mềm thành ba loại khác nhau:
- S-type (static-type) - Đây là một phần mềm, hoạt động nghiêm ngặt theo các thông số kỹ thuật và giải pháp đã xác định . Giải pháp và phương pháp để đạt được nó, cả hai đều được hiểu ngay lập tức trước khi viết mã. Phần mềm loại s ít bị thay đổi nhất do đó đây là phần mềm đơn giản nhất. Ví dụ, chương trình máy tính để tính toán toán học.
- P-type (practical-type) - Đây là một phần mềm với một tập hợp các thủ tục. Điều này được xác định bởi chính xác những gì các thủ tục có thể làm. Trong phần mềm này, các thông số kỹ thuật có thể được mô tả nhưng giải pháp không rõ ràng ngay lập tức. Ví dụ, phần mềm chơi game.
- E-type (embedded-type) - Phần mềm này hoạt động chặt chẽ theo yêu cầu của môi trường thế giới thực . Phần mềm này có mức độ phát triển cao vì có nhiều thay đổi khác nhau về luật, thuế, v.v. trong các tình huống thực tế. Ví dụ, phần mềm giao dịch trực tuyến.
Sự phát triển của phần mềm E-Type
Lehman đã đưa ra tám định luật cho sự phát triển của phần mềm E-Type -
- Continuing change - Một hệ thống phần mềm kiểu điện tử phải tiếp tục thích ứng với những thay đổi của thế giới thực, nếu không nó sẽ dần trở nên kém hữu ích hơn.
- Increasing complexity - Khi hệ thống phần mềm kiểu E phát triển, độ phức tạp của nó có xu hướng tăng lên trừ khi công việc được thực hiện để duy trì hoặc giảm bớt nó.
- Conservation of familiarity - Sự quen thuộc với phần mềm hoặc kiến thức về cách nó được phát triển, tại sao nó được phát triển theo cách cụ thể đó, v.v. phải được duy trì bằng mọi giá, để thực hiện các thay đổi trong hệ thống.
- Continuing growth- Để một hệ thống E-type nhằm giải quyết một số vấn đề kinh doanh, quy mô thực hiện các thay đổi của nó sẽ phát triển theo sự thay đổi lối sống của doanh nghiệp.
- Reducing quality - Hệ thống phần mềm loại E giảm chất lượng trừ khi được bảo trì nghiêm ngặt và thích ứng với môi trường hoạt động thay đổi.
- Feedback systems- Hệ thống phần mềm kiểu E tạo thành hệ thống phản hồi đa vòng, đa cấp và phải được xử lý như vậy để được sửa đổi hoặc cải tiến thành công.
- Self-regulation - Quá trình tiến hóa của hệ thống kiểu điện tử tự điều chỉnh với việc phân phối sản phẩm và các biện pháp quá trình gần với mức bình thường.
- Organizational stability - Tỷ lệ hoạt động toàn cầu hiệu quả trung bình trong một hệ thống kiểu E đang phát triển là bất biến trong suốt thời gian hoạt động của sản phẩm.
Mô hình phần mềm
Mô hình phần mềm đề cập đến các phương pháp và bước được thực hiện trong khi thiết kế phần mềm. Có rất nhiều phương pháp được đề xuất và đang hoạt động ngày nay, nhưng chúng ta cần xem những mô hình này đứng ở đâu trong kỹ thuật phần mềm. Chúng có thể được kết hợp thành nhiều loại khác nhau, mặc dù mỗi loại được chứa trong một cái khác:
Mô hình lập trình là một tập hợp con của Mô hình thiết kế phần mềm, đây là một tập hợp con của Mô hình phát triển phần mềm.
Mô hình phát triển phần mềm
Mô hình này được gọi là mô hình kỹ thuật phần mềm, nơi tất cả các khái niệm kỹ thuật liên quan đến sự phát triển của phần mềm được áp dụng. Nó bao gồm các nghiên cứu khác nhau và thu thập yêu cầu giúp sản phẩm phần mềm được xây dựng. Nó bao gồm -
- Thu thập các yêu cầu
- Thiết kế phần mềm
- Programming
Mô hình thiết kế phần mềm
Mô hình này là một phần của Phát triển phần mềm và bao gồm:
- Design
- Maintenance
- Programming
Mô hình lập trình
Mô hình này liên quan chặt chẽ đến khía cạnh lập trình của phát triển phần mềm. Điêu nay bao gôm -
- Coding
- Testing
- Integration
Nhu cầu về Kỹ thuật phần mềm
Nhu cầu của kỹ thuật phần mềm phát sinh do tốc độ thay đổi cao hơn trong các yêu cầu của người dùng và môi trường mà phần mềm đang hoạt động.
- Large software - Tương tự như vậy, việc xây một bức tường còn dễ hơn so với một ngôi nhà hay tòa nhà, vì kích thước của phần mềm trở nên lớn, kỹ thuật phải từng bước để tạo cho nó một quy trình khoa học.
- Scalability- Nếu quy trình phần mềm không dựa trên các khái niệm khoa học và kỹ thuật, thì việc tạo lại phần mềm mới sẽ dễ dàng hơn là mở rộng quy mô một phần mềm hiện có.
- Cost- Khi ngành công nghiệp phần cứng đã thể hiện kỹ năng của mình và sản xuất khổng lồ đã làm giảm giá phần cứng máy tính và điện tử. Nhưng chi phí của phần mềm vẫn cao nếu quy trình không phù hợp không được điều chỉnh.
- Dynamic Nature- Bản chất luôn phát triển và thích ứng của phần mềm phụ thuộc rất nhiều vào môi trường mà người dùng làm việc. Nếu bản chất của phần mềm luôn thay đổi, thì cần phải thực hiện những cải tiến mới cho phần mềm hiện có. Đây là nơi mà kỹ thuật phần mềm đóng một vai trò tốt.
- Quality Management- Quá trình phát triển phần mềm tốt hơn cung cấp sản phẩm phần mềm chất lượng và tốt hơn.
Đặc điểm của phần mềm tốt
Một sản phẩm phần mềm có thể được đánh giá bằng những gì nó cung cấp và nó có thể được sử dụng tốt như thế nào. Phần mềm này phải đáp ứng các cơ sở sau:
- Operational
- Transitional
- Maintenance
Phần mềm được thiết kế và chế tạo tốt dự kiến sẽ có các đặc điểm sau:
Hoạt động
Điều này cho chúng ta biết phần mềm hoạt động tốt như thế nào trong các hoạt động. Nó có thể được đo trên:
- Budget
- Usability
- Efficiency
- Correctness
- Functionality
- Dependability
- Security
- Safety
Chuyển tiếp
Khía cạnh này rất quan trọng khi phần mềm được chuyển từ nền tảng này sang nền tảng khác:
- Portability
- Interoperability
- Reusability
- Adaptability
Bảo trì
Khía cạnh này tóm tắt về cách một phần mềm có khả năng tự duy trì trong môi trường luôn thay đổi:
- Modularity
- Maintainability
- Flexibility
- Scalability
Nói tóm lại, Kỹ thuật phần mềm là một nhánh của khoa học máy tính, sử dụng các khái niệm kỹ thuật được xác định rõ ràng cần thiết để tạo ra các sản phẩm phần mềm hiệu quả, bền, có thể mở rộng, phù hợp với ngân sách và đúng hạn.