Software Process

Đây là tóm tắt nội dung sau khi nghiên cứu Chương 3, cuốn Software Engineering: Modern Approaches – Second Edition

Các câu hỏi cần trả lời sau khi tìm hiểu:

  • Những hoạt động chính gì diễn ra trong các quy trình làm phần mềm?
  • Có những loại quy trình chính nào?
  • Chọn lựa quy trình nào thì phù hợp cho team? Sinh viên thì chọn quy trình nào?

Mục lục

  1. Tổng quan: giới thiệu các khái niệm trong Software Process, khái niệm Prototype
  2. The Activities in Software Process: Mô tả các hoạt động (các pha chính)  trong Software Process.
  3. Software Process Models: Mô tả các Software Process mẫu – các quy trình phần mềm phổ biến
  4. Hướng dẫn một team sinh viên ứng dụng software process

Tổng quan

Các khái niệm trong Software Process

software-process

Quy trình phần mềm là chuỗi các hoạt động, đi từ khái niệm (concept) cho tới khi sản phẩm đến tay khách hàng (release).

Thông thường, một dự án được tổ chức, sắp xếp vào các pha (phases) với các hoạt động, sự kiện được quy định trước.

Software Process quy định mối quan hệ giữa các phases qua việc:

  • Sắp xếp các phases theo thứ tự và tần số (tần số chỉ việc lặp lại của các phase)
  • Mô tả sản phẩm đầu ra của các phase (tài liệu, bản thiết kế, …)
  • Xác định điều kiện, các yêu cầu để chuyển pha

Những quy trình phần mềm được xác định (phổ biến) thì được gọi Software Process Model, hoặc Life Cycle Model

Umbrella activities

Bên cạnh các hoạt động chính, có nhiều hoạt động ngoài lề đi kèm để đảm bảo cho dự án về một khía canh nào đó, các hoạt động được gọi là hoạt động ô dù (umbrella activities)

slide1

Ví dụ: Sẽ có những nguy cơ, rủi ro trong lúc thực hiện mà ảnh hưởng đến tiến độ dự án (dev bệnh, hư máy, …), vì vậy ta cần xác định các nguy cơ này và “quản lí “chúng (ước tính trước để đảm bảm dự án đúng tiến độ) – hoạt động này là risk management (quản lí rủi ro)

Các hoạt động khác trong nhóm các hoạt động ô dù gồm:

  • project management (part III)
  • configuration management (chapter 6)
  • quality management (part VII)

Prototype

Trong một vài tình huống, một phiên bản phần mềm hoạt động được, chứa các chức năng tổng thể của sản phẩm được yêu cầu hoàn thành sớm trước khi bắt đầu kế hoạch – cái này gọi là bản mẫu (prototype)

shutterstock_279072056-1325x590

Bản mẫu này sẽ thường có các chức năng được xem là các nguy cơ, các rủi ro có ảnh hưởng lớn của phần mềm.

Ta xây dựng các bản mẫu vì:

  • Cho thấy tính khả thi của công nghệ.
  • Xác định khả năng sử dụng của giao diện (GUI).

Hiện trạng thực tế

Chúng ta thường liên tưởng software process là những việc trên mây, tốn giấy tờ không cần thiết, kế hoạch, thời gian biểu quá dài, … Hay nói trắng ra, không có giá trị, tồi tệ và ảnh hưởng tới sự thành công của dự án (ảnh hưởng tiến độ đồ án, điểm xấu, …). Khi áp dụng không đúng thì Software Process dẫn đến những kết quả không mong muốn.

headache

Nhưng nếu Software Process được áp dụng với mức độ linh hoạt, thích nghi, chúng mang đến những lợi ích tuyệt vời, vô cùng giá trị.

The Activities in Software Process

Khác nhau giữa các model là sự sắp xếp của các phase, bản chất vẫn là các hoạt động tương tự, gần giống nhau. Ví dụ: Waterfall thì các phase xảy ra một lần, các mô hình lặp thì phase diễn ra nhiều lần.

Các hoạt động thường được đề cập:

  • Inception – khởi đầu: hình thành, xác định sản phẩm
  • Planning: lên kế hoạch, chuẩn bị tài nguyên, ước tính chi phí
  • Requirement Analysis – Phân tích yêu cầu: xác định làm cái gì – What?
  • Design: xác định từng phần làm bằng cách nào – How?
  • Implementation – thực thi: viết code
  • Testing: thực thi phần mềm với dữ liệu input mẫu
  • Maintenance: Sửa lỗi và thêm tính năng

Inception

Đây là pha mà ý tưởng được xây dựng và tầm hình được hình thành, xác định (dù là với project cải tiến sản phẩm), bao gồm các việc:

  • Trả lời câu hỏi “Cái gì sẽ được làm ra?”
  • Định nghĩa chức năng chính và phạm vi dự án
  • Xác định khách hàng hướng đến và lĩnh vực kinh doanh 
  • Tư vấn cho customer và stackholder về các chức năng phần mềm

inception-phase

Software Development Process by Georgia Tech (free course on Udacity) – Inception phase in Rational Unified Process 

Lưu ý: Stackholder ở đây tham gia với vai trò khác với requirement analysis:

  • Sự hài lòng của khách hàng với ứng dụng hiện tại: điểm mạnh, điểm yếu của các sản phẩm trên thị trường
  • Ý tưởng cho các chức năng và tính năng mới (sự khác nhau giữa chức năng và tính năng)
  • Khả năng đáp ứng của khách hàng cho sản phẩm mới

Thông tin thu thập chỉ cần đủ để bắt đầu dự án.

Planing

Lên kế hoạch thô để sản xuất phần mềm, từ đó hiểu được phạm vi dự án và giá trị phần mềm (thường sẽ tăng), xác định qua:

  • Hoạt động chính tổng quan
  • Những việc cần làm
  • Thời gian biểu (kế hoạch)
  • Tài nguyên

Từ đó ta có thể xác định tính khả thi của dự án

businesswoman thinking

Sản phẩm của hoạt động này (phase) này: Software Project Management Plan (part IV). Đây là plan thô và sẽ được sửa đổi, bổ sung trong vòng đời sản phẩm. Agile là một trong những model hướng đến việc giảm thời gian pha này nhiều nhất.

Ngoài ra, còn có plan dùng để quản lí đặc tả kỹ thuật và source code – configuration management. Bao gồm các việc như tracking thay đổi và kiểm soát các phiên bản. Configuration management phải được lên kế hoạch ở pha đầu tiên, trước khi có tài liệu cho project. (chapter 6)

Requirement Analysis 

Yêu cầu được biết như là những gì ứng dụng dự định sẽ hoàn thành.

Chi tiết các thông tin về nhu cầu của khách hàng, thu thập lại các vấn đề dự định sẽ giải quyết. Thu thập và tài liệu cần phải chi tiết hơn so với phase Khởi đầu (inception). Phả đặc tả các chức năng và tính năng của sản phẩm cũng như các yêu cầu về hiệu năng, độ tin cậy và khả năng sử dụng

requirementscartoon

Các yêu cầu phải được khách hàng đọc và hiểu được. Tài liệu thường viết bằng Tiếng Anh hoặc tiếng địa phương.

Nhiều các được áp dụng vào phase này như: phỏng vấn khách hàng, brainstorming session.

Yêu cầu phải đủ chi tiết để chúng có thể được sử dụng trong các phase thiết kế nhỏ.

Kết quả của pha này là: Software Requirements Specification

Software Design

Mục đích của phase này là xác định cách thức thực hiện để hoàn thành yêu cầu => định nghĩa, xác định cấu trúc bên trong sản phẩm

figure18

Có 2 mức độ của Software Design là: Software Architecture và Detailed Design

  • Software Architecture là bản thiết kế cả hệ thống, định nghĩa các hệ thống nhỏ, các modules nhỏ, interface giữa chúng
  • Detailed Design là xác định thiết kế UI, thiết kế database, thuật toán, CTDL.

Sản phẩm phase này là: Software Design Document

Implementation

Phase này chủ yếu là việc lập trình – chuyển đổi giữa bản thiết kế thành ngôn ngữ lập trình, tác động đến các phần tích hợp (integration, assembly) của hệ thống

a69d84379a04cc6f56a58c1c9b8d0826ddd24c9e52644ac7a068705a7be1a6bb

Testing

Sản phẩm code của phase implementation được kiểm thử. Việc này được thực hiện ở 3 cấp

acceptance_testing

  • Module riêng lẻ được test bởi các developer
  • Module được tích hợp và test sự tương tác giữa chúng.
  • Sau khi tích hợp, cả hệ thống được test để đảm bảo thoả yêu cầu.

System testing thường được đảm nhiệm bởi đội ngũ kiểm định chất lượng (QA Team). Chapter 2 gọi đây là validation

overview-on-types-of-software-testing

Khi hệ thống được kiểm thử xong thì sẽ kiểm thử qua nhiều mức độ khách hàng.

beta testing là sản phẩm đã rất gần so với khi ra mắt thị thường. Mục đích chính là hiểu được những vấn đề có thể xảy ra trong môi trường thực tế. (beta test diễn ra với các khách hàng có kiến thức và hiểu hệ thống)

Sau beta testing là Aceeptance Testing – test bởi khách hàng để đảm bảo hệ thống thoả yêu cầu, có khi UAT được test trước cả beta testing để đảm bảo thoả yêu cầu khách hàng.

Maintenance

Sau khi sản phẩm đến tay khách hàng, phase này mới bắt đầu:

  • Sửa lỗi (defect) được phát hiện của trong quá trình sử dụng bình thường
  • Yêu cầu của khách hàng để nâng cấp
  • Mong muốn cải tiến một số thuộc tính của hệ thống như hiệu năng, độ tin cậy

4software-management-12-638

Các chỉnh sửa của phần mềm được tiến hành theo gói và phiên bản mới là gồm nhiều các chỉnh sửa (chapter 29)

Xem tiếp tại: Phần 2

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Create a website or blog at WordPress.com

Up ↑

%d bloggers like this: