×

Công nghệ phần mềm và Quy trình phát triển phần mềm

Khi chúng ta nói đến lập trình máy tính (computer programming), ta không chỉ đề cập riêng việc viết code bằng các ngôn ngữ lập trình như Java, C#, C++, Python,… mà còn là cả một qui trình phát triển phần mềm.

 2021-04-16

Khi chúng ta nói đến lập trình máy tính (computer programming), ta không chỉ đề cập riêng việc viết code bằng các ngôn ngữ lập trình như Java, C#, C++, Python,… mà còn là cả một qui trình phát triển phần mềm.

Khi chúng ta nói đến lập trình máy tính (computer programming), ta không chỉ đề cập riêng việc viết code bằng các ngôn ngữ lập trình như Java, C#, C++, Python,… mà còn là cả một qui trình phát triển phần mềm.

Chỉ đơn thuần học cách viết mã nguồn bằng ngôn ngữ lập trình là không đủ để trở thành một người phát triển phần mềm (Software Developer) tài giỏi bởi Bạn cần phải nắm rõ cách thiết kế một chương trình theo OOP, SOLID principles. Khi đó bạn sẽ không chỉ đơn thuần là một coder lúc nào cũng chỉ biết ôm máy tính để lập trình, mà sẽ trở thành một developer hiểu sâu và rộng kiến thức trong nhiều lĩnh vực.

Bắt đầu

Vậy thì Coder, Programmer, Developer và Engineer là gì? Và nó khác nhau chỗ nào?

Về cơ bản, Coder (thợ code) chỉ viết các dòng lệnh logic với ngôn ngữ lập trình trong phạm vi yêu cầu, họ không cần biết nhiều về logic của chương trình. Họ được cung cấp định nghĩa về các bussiness logic và flowchart hoặc được mô tả bằng ngôn ngữ tự nhiên, mã giả,… và nhiệm vụ của họ là chuyển nó sang mã nguồn lập trình.

Programmer thì tương tự như coder, nhưng là người đề ra giải pháp giải quyết các vấn đề, cung cấp business logic cho coder.

Developer là người không chỉ code mà còn tham gia vào tất cả các quá trình của SDLC (Software Development Life Cycle). Nếu dự án có vấn đề mà bạn chưa định hình được nó và hướng giải quyết thì các developer sẽ giúp bạn phân tích vấn đề, và tìm cách giải quyết nó. Vậy developer là người vừa lập trình, vừa định hướng phát triển sản phẩm.

Engineer là một thuật ngữ được sử dụng ở mức cao cấp nhất. Anh này hoạt động ở cả phần lập trình, phân tích thiết kế (bussiness level) và bảo trì. Là những developer giỏi, có khả năng phân tích và giải quyết các vấn đề phức tạp và thường sẽ được trả lương rất cao!

Qui trình phát triển phần mềm

Software development process - Splus Software

Chúng ta xây một ngôi nhà với các giai đoạn được xác định rõ ràng (làm móng, xây nền, dựng cột, xây tường,…), và áp dụng các nguyên tắc kỹ thuật vào tất cả các giai đoạn đó. Làm phần mềm cũng vậy, bạn xây dựng một chương trình qua các công đoạn và áp dụng các phương pháp, qui tắc phát triển phần mềm vào từng công đoạn. Trình tự các công đoạn đó từ giai đoạn ý tưởng (conception) đến vận hành (operation) được gọi là “Qui trình phát triển phần mềm” (Software Development Life Cycle)

Có 5 giai đoạn chính trong qui trình phát triển phần mềm: Phân tích (Analysis), Thiết kế (Design), Cài đặt mã nguồn (Coding), Kiểm thử (Testing) và Vận hành (Operation).

Phần mềm ra đời dựa trên yêu cầu của người dùng.

Phân tích

Ví dụ: một người muốn có một danh bạ online. Trong giai đoạn phân tích, chúng ta thực hiện nghiên cứu tính khả thi, chúng ta phân tích các vấn đề và xác định xem liệu giải pháp có thực sự khả thi. Và nếu giải pháp đó khả thi, thì xem như đã thành công qua giai đoạn này.

Kết quả của giai đoạn phân tích phần mềm sẽ là bảng “Đặc tả yêu cầu” (requirement specification) để mô tả các chức năng của chương trình.

Các tính năng này phải được phát biểu theo những cách có thể kiểm chứng được. Một trong những tính năng của danh bạ online là có khả năng tìm kiếm một người dựa trên first name của họ. Chúng ta có thể kiểm tra tính năng đó bằng cách chạy trực tiếp chương trình và tìm kiếm, và kiểm tra xem chương trình có hoạt đông đúng và cụ thể khi tên của một người có trong danh bạ, và người không có trong danh bạ được gõ vào khung tìm kiếm. Những việc làm đó thuộc pha Kiểm thử, thứ mà mình sẽ nói tới nó sau.

Thiết kế

How to Write a White Paper? 9 Tips & Examples – AVADA Commerce

Trong giai đoạn thiết kế, chúng ta sẽ chuyển bảng đặc tả yêu cầu thành bảng “Thiết kế chi tiết” (detailed design) của chương trình và sẽ thiết kế các giao diện người dùng của chương trình (User Interface) — bao gồm các bước:

  • Lập danh sách các màn hình (view, form,…) dựa vào Use Case
  • Vẽ sơ đồ mối quan hệ giữa các màn hình
  • Thiết kế các đối tượng trên mỗi màn hình (Sắp xếp vị trí các button, textbox,…) theo các qui tắc về thiết kế giao diện,
  • Cuối cùng đặc tả, giải tích cách hoạt động của các đối tượng trên từng màn hình đó.

Với một chương trình thiết kế hướng đối tượng (object-oriented design), kết quả của pha này không thể thiếu “Danh sách các class” được dùng để đáp ứng yêu cầu. Chúng ta sẽ thiết kế dựa vào những yêu cầu cần thiết, các kiến thức về kế thừa, đa hình để thiết kế các lớp đối tượng, và mô hình hóa chung bằng các sơ đồ (ví dụ UML — Unified Modeling Language).

Ví dụ: với chương trình danh bạ online ở trên thì chúng ta có thể cần các class như Person, Phone, Group,…

Ngoài ra ở một số chương trình đặc thù, ta còn cần thiết kế các tầng dữ liệu cho chương trình. Dữ liệu ở đây có thể là hệ thông tập tin đơn giản, đến các hệ cơ sở dữ liệu phức tạp. Sau đó vẽ sơ đồ mô hình hóa, đặc tả dữ liệu.

Cuối cùng không thể thiếu là thiết kế xử lý cho chương trình. Chi tiết hóa các kịch bản usecase, các luồng logic trong chương trình. Và sử dụng sơ đồ tuần tự để mô tả.

Cài đặt mã nguồn

Trong giai đoạn cài đặt mã nguồn, chúng ta triển khai các thiết kế thành một chương trình thực tế bằng các ngôn ngữ lập trình như Java, C#, Python, và các hàm API,…

Chúng ta đã có một bảng thiết kế cấu trúc hoàn chỉnh, thì việc triển khai thành mã nguồn thực sự không quá khó khăn!

Kiểm thử

Học gì để trở thành một Tester? | Anh Tester

Khi quá trình triển khai mã nguồn hoàn chỉnh, chúng ta sẽ đến với giai đoạn kiểm thử.

Trong giai đoạn này chúng ta sẽ chạy chương trình với nhiều bộ dữ liệu để kiểm chứng là chương trình chạy đúng theo đặc tả yêu cầu.

Hai loại kiểm thử chính dành cho các chương trình hướng đối tượng là: kiểm thử đơn vị (unit testing) và kiểm thử tích hợp (integration testing).

Unit testing thường do lập trình viên thực hiện, kiểm nghiệm từng class riêng biệt, từng hàm trong mã nguồn trong môi trường cô lập. Còn đối với Integration testing chúng ta kiểm tra các class có làm việc đúng khi ghép lại với nhau hay không, và quá trình test diễn ra ngay sau unit testing. Hành động “bất hủ” dùng để phát hiện và loại bỏ lỗi của quá trình thiết kế và cài đặt gọi là “debugging”. Nếu tìm được lỗi, chúng ta phải quay về pha trước đó để sửa chữa và hoàn thiện chương trình.

Bonus cho các bạn 1 câu nói bất hủ của Dijkstra

“Program testing can be used to show the presence of bugs, but never to show their absence!”

Operation

Cuối cùng sau khi quá trình kiểm thử kết thúc thành công, chúng ta đi vào pha vận hành, khi đó chương trình sẽ được đưa vào sử dụng thực tế. Thứ quan trọng nhất và mất nhiều thời gian nhất trong pha này là bảo trì phần mềm (software maintenace). Ngay cả sau khi phần mềm được đưa vào sử dụng, chúng ta hầu như luôn phải sửa đổi nó. Bởi vì khách hàng có thể yêu cầu thêm tính năng, hoặc các lỗi mới được tìm thấy.

Thống kê cho thấy, xấp xỉ 70% phí của phần mềm thuộc về công đoạn bảo trì. Vậy nên khi bắt đầu một dự án chúng ta phải chú tâm vào tính “dễ bảo dưỡng”, dành thời gian và công sức ra để phân tích thiết kế và lập trình cẩn thận.

Ngay cả có mất thời gian, và chi phí giai đoạn đầu, nhưng trong quá trình hoạt động lâu dài, các phần mềm có sự chuẩn bị thiết kế chu đáo sẽ dễ mở rộng và ít tốn kém chi phí bảo trì hơn.

Đây là một điểm rất quan trọng mà các bạn nào muốn trở thành một nhà phát triển phần mềm giỏi cần phải lưu ý!

Chúng tôi, “Hachinet Software”, là công ty chuyên cung cấp dịch vụ phần mềm tại Việt Nam với đội ngũ tận tâm, năng động, nhiệt huyết, luôn nỗ lực không ngừng để làm hài lòng khách hàng và đối tác. Chuyên môn của chúng tôi bao gồm:

  1. Web application (.NET, JAVA, PHP, etc.)
  2. Framework (ASP, MVC, AngularJS, Angular6, Node JS, Vue JS)
  3. Mobile application: IOS (Swift, Object C), Android (Kotlin, Android)
  4. System applications (Cobol, ERP, etc.),
  5. New Technology (Blockchain, etc.).

Nếu bạn quan tâm đến dịch vụ của chúng tôi hoặc đang tìm kiếm đối tác gia công phần mềm CNTT tại Việt Nam, đừng ngần ngại liên hệ với chúng tôi theo địa chỉ contact@hachinet.com.

いずれかのサービスについてアドバイスが必要な場合は、お問い合わせください。
  • オフショア開発
  • エンジニア人材派遣
  • ラボ開発
  • ソフトウェアテスト
※以下通り弊社の連絡先
電話番号: (+84)2462 900 388
メール: contact@hachinet.com
お電話でのご相談/お申し込み等、お気軽にご連絡くださいませ。
無料見積もりはこちらから

Tags

ご質問がある場合、またはハチネットに協力する場合
こちらに情報を残してください。折り返しご連絡いたします。

 Tin nhắn đang được gửi...

関連記事

 2021年04月27日

PHP LÀ GÌ? ĐẶC ĐIỂM NGÔN NGỮ PHP

PHP còn được gọi là Hypertext Pre-processor (Bộ tiền xử lý Siêu văn bản). PHP là một Ngôn ngữ kịch bản phía máy chủ, mã nguồn mở chủ yếu được sử dụng để phát triển các ứng dụng web. PHP ban đầu được đặt tên là "Personal Home Page". Cú pháp của ngôn ngữ PHP tương tự như ngôn ngữ C và được tạo ra bởi Rasmus Lerdorf và nó xuất hiện lần đầu tiên vào năm 1995. Hiện nay, PHP đang được sử dụng rộng rãi trong việc phát triển các ứng dụng web và trở thành một trong những ngôn ngữ chính để các lập trình viên tạo ra các ứng dụng mới.

 2021年04月23日

Các ngôn ngữ lập trình web phổ biến, nhiều người sử dụng nhất hiện nay

Với sự phát triển chóng mặt của Internet cùng với sự ra đời liên tiếp của các website, ngôn ngữ lập trình - nền tảng tạo nên những ‘gương mặt số’ này đã được rất nhiều người biết đến và quan tâm. Hiểu về các ngôn ngữ lập trình web phổ biến, nhiều người sử dụng sẽ là lợi thế rất lớn khi làm việc với website. Hiểu được điều này, Hachinet cung cấp đến bạn thông tin về các ngôn ngữ lập trình web quen thuộc.

 2021年04月22日

RPA là gì ? Sự khác biệt giữa RPA và AI là gì ?

Nhiều người thường thắc mắc về sự khác biệt giữa Robotic Process Automation (RPA) và Trí tuệ nhân tạo (AI) và nhầm lẫn cho rằng cả hai là giống nhau. Đối với những người không quen biết, tất cả các biệt ngữ này có thể rất khó hiểu, và thậm chí phải trả cái giá đắt đỏ khi mua những sản phẩm phần mềm không mong muốn. Để giúp bạn hiểu rõ, Hachinet đã tập hợp những điểm nổi bật khác biệt giữa RPA và AI.

 2021年03月16日

Tổng quan lịch sử phát triển của phần cứng và những ưu điểm khi phát triên phần cứng ở việt nam.

Phần cứng là những thứ có hình dạng mà mắt có thể nhìn thấy được .Ví dụ, màn hình máy tính, đĩa cứng, bàn phím, chuột, máy in, v.v. Nếu bạn so sánh nó với một con người, nó tương ứng như [cơ thể].

 2021年02月24日

C# là gì ? Tổng quan về C#

Chào mừng các bạn đến với Hachinet, trong bài này, chúng ta sẽ tìm hiểu một ngôn ngữ hiện đại khá là phổ biến đó là C#. Vậy C# ra đời như thế nào? nó có những ưu nhược điểm gì? và tại sao chúng ta phải học nó ? Hãy cùng nhau tìm hiểu nhé.

 2021年02月05日

Hành vi Internet (IoB) là gì?

Hành vi Internet (tiếng Anh là Internet of Behavior (IoB)) được mở rộng từ Internet vạn vật (IoT) và có thể hiểu là IoB sử dụng dữ liệu để thay đổi hành vi. Vào năm 2021, IoB sẽ trở nên phổ biến và vào năm 2023, có thể dự đoán rằng các hoạt động cá nhân của 40% dân số toàn cầu sẽ được theo dõi kỹ thuật số để ảnh hưởng đến hành vi của họ.

 2021年02月01日

Big Data là gì? Tất tần tật về Big Data (phần 2)

Phân tích nhiều dữ liệu chỉ là một phần của việc khiến phân tích Big Data khác với việc phân tích dữ liệu trước đây. Hãy cùng tìm hiểu các khía cạnh khác cùng với Hachinet nhé.

 2021年01月29日

Big Data là gì? Tất tần tật về Big Data (phần 1)

Phân tích nhiều dữ liệu chỉ là một phần của việc khiến phân tích Big Data khác với việc phân tích dữ liệu trước đây. Hãy cùng tìm hiểu các khía cạnh khác. Vậy, sự khác biệt giữa Big Data and Data là gì?

 2021年01月21日

Dịch vụ chuyển đổi số tại Việt Nam năm 2021

Được thúc đẩy bởi sự ra đời nhanh chóng của các công nghệ mới đột phá cũng như những thay đổi về nhu cầu và kỳ vọng của khách hàng ngày càng tăng, nhiều nước trên thế giới đang đầu tư đáng kể cho việc ứng dụng các dịch vụ chuyển đổi số vào kinh doanh như: số hóa các quy trình giấy tờ, triển khai phòng họp không giấy,… để giữ vững được vị thế và gia tăng năng lực cạnh tranh trong kỷ nguyên công nghệ số.

 2021年01月14日

.

 2021年01月12日

.

 2020年12月21日

PHÁT TRIỂN APP. TẠO DỰNG APP. GIẢI THÍCH SỰ CẦN THIẾT MỘT CÁCH DỄ HIỂU

Gần đây, Nghành CNTT đang rất phát triển. Đặc biệt, hiện nay vì có nhiều ứng dụng tiện ích nên có rất nhiều người đang hướng đến việc phát triển ứng dụng thông minh. Có nhiều loại ứng dụng và ngôn ngữ lập trình khác nhau nên cần phải xử lý khi phát triển ứng dụng, vì vậy từ bây giờ nếu bạn nghĩ đến việc phát triển một ứng dụng nào đó, bạn cần phải hiểu biết sơ lược về phát triển ứng dụng.

 2020年12月10日

Hachinet JSC tham dự triển lãm VIM EXPO 2020

Ngày 09/12 𝐇𝐀𝐂𝐇𝐈𝐍𝐄𝐓 𝐉𝐒𝐂 tham gia triển lãm 𝐕𝐈𝐌 𝐄𝐗𝐏𝐎 𝟐𝟎𝟐𝟎 tại TT Triển lãm quốc tế I.C.E Hà Nội - Cung VNHN, số 91 Trần Hưng Đạo, Hoàn Kiếm, Hà Nội.𝐕𝐈𝐌 𝐄𝐗𝐏𝐎 𝟐𝟎𝟐𝟎 - Sự kiện giao thương lớn nhất ngành Công nghiệp hỗ trợ - Chế biến chế tạo tại Hà Nội năm 2020