Báo cáo thiết kế và phát triển phần mềm - Nhập môn Công nghệ phần mềm | Trường Đại học Khoa học Tự nhiên, Đại học Quốc gia Thành phố Hồ Chí Minh
Trong nghiên cứu và dự án này, nhóm đã tìm hiểu phân tích các lý thuyết liên quan đến lập trình ứng dụng, công nghệ phần mềm lý thuyết về toán toán ưu hoá và quy hoạch tuyến tính,… để hình thành nên cơ sở lý luận thực hiện một đề tài về phát triển phần mềm giải quyết bài toán quy hoạch tuyến tính đơn mục tiêu. Tài liệu được sưu tầm giúp bạn tham khảo, ôn tập và đạt kết quả cao trong kì thi sắp tới. Mời bạn đọc đón xem !
Môn: Nhập môn Công nghệ phần mềm (HCMUS)
Trường: Trường Đại học Khoa học tự nhiên, Đại học Quốc gia Thành phố Hồ Chí Minh
Thông tin:
Tác giả:
Preview text:
lOMoARcPSD|46958826 lOMoARcPSD|46958826
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA TOÁN-TIN HỌC
BÁO CÁO THIẾT KẾ VÀ PHÁT TRIỂN PHẦN MỀM:
LINEAR PROGRAMMING PYAPP
NHÓM “CALL AMBULANCE” STT TÊN MSSV 1 LÊ CHƠN MINH ĐẠT 21280064 2
NGUYỄN THỊ BÍCH NGỌC 21280100 3 NGUYỄN PHÚC LOAN 21280xxx
Tp. Hồ Chí Minh, Ngày 21 Tháng 5 Năm 2022 i lOMoARcPSD|46958826
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA TOÁN-TIN HỌC
BÁO CÁO THIẾT KẾ VÀ PHÁT TRIỂN PHẦN MỀM:
LINEAR PROGRAMMING PYAPP
NHÓM “CALL AMBULANCE” STT TÊN MSSV 1 LÊ CHƠN MINH ĐẠT 21280064 2
NGUYỄN THỊ BÍCH NGỌC 21280100 3 NGUYỄN PHÚC LOAN 21280XXX
Tp. Hồ Chí Minh, Ngày 21 Tháng 5 Năm 2022 ii lOMoARcPSD|46958826 PHÂN CÔNG STT TÊN MSSV Vai trò Công việc % Đóng % Hoàn Góp thành 1 LÊ 21280064 Main Dev, − UI dev, 33% 100% CHƠN Analyst
− Logical Dev (Backend MINH
External Function, Model Scipy, …), ĐẠT − Code Review,
− Architecture analyst 2 NGUYỄN 21280100 Dev,
− Format, Comment Code 33% 100% THỊ Tester, − Functional Test, BÍCH Debugger − Unit Test, NGỌC − Debugger 3 NGUYỄN 21280XXX Dev, − UI design, 33% 100% PHÚC Analyst, − Prototype design LOAN Designer, − Tech stack Analyst,
− Viết báo cáo Xác nhận: Tên Chữ Ký Lê Chơn Minh Đạt
Nguyễn Thị Bích Ngọc Nguyễn Phúc Loan iii lOMoARcPSD|46958826 LỜI CẢM ƠN
Xin chân thành cảm ơn khoa Toán Tin học và Khoa Công nghệ thông tin Trường
ĐHKHTN đã hỗ trợ giảng dạy chuyên môn cho chúng em, đồng thời cung cấp cơ sở
vật chất cho chúng em trong quá trình học tập. Xin cảm ơn thầy cô bộ môn và đặc biệt
là thầy QHTT đã hỗ trợ nhóm trong quá trình học tập cũng như làm bài tập nhóm. iv lOMoARcPSD|46958826 TÓM TẮT
Trong nghiên cứu và dự án này, nhóm đã tìm hiểu phân tích các lý thuyết liên
quan đến lập trình ứng dụng, công nghệ phần mềm lý thuyết về toán toán ưu hoá và
quy hoạch tuyến tính,… để hình thành nên cơ sở lý luận thực hiện một đề tài về phát
triển phần mềm giải quyết bài toán quy hoạch tuyến tính đơn mục tiêu. Xin chân thành
cảm ơn khoa Toán Tin học và Khoa Công nghệ thông tin Trường ĐHKHTN đã hỗ trợ
giảng dạy chuyên môn cho chúng em, đồng thời cung cấp cơ sở vật chất cho chúng em
trong quá trình học tập. Xin cảm ơn thầy cô bộ môn và đặc biệt là thầy QHTT đã hỗ
trợ nhóm trong quá trình học tập cũng như làm bài tập nhóm.
Nghiên cứu còn sơ khai, khó tránh khỏi sơ suất và lỗi phát sinh trong quá trình
sử dụng, do hạn chế về các yếu tố nguồn lực cũng như thời gian thực hiện. Tuy nhiên
đó được lưu trữ công khai mã nguồn mở trên đường link: https
://github.com/DatMinhLeChon/LNP.pyapp , để các bạn, thầy cô có tư liệu
tham khảo cũng như sử dụng như một mã nguồn mở rộng để phát triển các dự án tốt hơn trong tương lai. v lOMoARcPSD|46958826 MỤC LỤC L Ờ
I C Ả
M ƠN .....................................................................................................................iv T ÓM T Ắ
T ............................................................................................................................ v N Ộ
I DUNG .......................................................................................................................... 1 1. GI Ớ
I THI Ệ U ĐỀ TÀI ...................................................................................................1 1.1. L ý do th ự c hi ệ n
................................................................................................1 1.2. B ố c ụ
c ..............................................................................................................1 2. C
Ơ SỞ LÝ THUY Ế T VÀ PHƯƠNG PHÁP LUẬ N
......................................................3 2.1. T ối
ưu hoá .......................................................................................................3 2.2. Q uy ho ạ ch tuy ế n
tính ......................................................................................3 2.3. C ông ngh ệ ph ầ n m ề m
......................................................................................4 2.4. Q
uy trình phát tri ể n d ự án công ngh ệ ph ầ n m ề m
...........................................6 2.5. K ỹ thu ậ t h ệ th ố n
g và Agile ...............................................................................8 3. P HÂN TÍCH D Ự
ÁN ................................................................................................11 3.1. Q uy trình th ự c hi ệ n d ự
án .............................................................................11 3.2.
S ơ đồ gantt .............................................................................................. 11 4.
T HI Ế T K Ế Ý NI Ệ M
....................................................................................................12 4.1.
Web Application................................................................................................12 4.1.1.
ASP .NET.........................................................................................................12 4.1.2.
Django (Python).............................................................................................12 4.2.
Window Application..........................................................................................12 4.2.1.
Tkinter (Python).............................................................................................12 4.2.2.
Winform/WPF (.NET).....................................................................................12 4.3.
Phân tích trade off.........................................................................................12 vi lOMoARcPSD|46958826
5. T HI Ế T K Ế SƠ KHỞ I .................................................................................................. 14 5.1. P hân tích và thi ế t k ế ch ứ
c năng ..................................................................... 14 5.2.
S ơ đồ quan h ệ th ự c th ể và ch ứ
c năng ........................................................... 14
6. T HI Ế T K Ế CHI TI Ế T ................................................................................................... 16 6.1. C ác thành ph ầ n con c ủ a ph ầ n m ề m
............................................................... 16 6.1.1. V
ậ t lí ................................................................................................................ 16
6.1.2. Prototype: ....................................................................................................... 17 6.2.
Functional baseline ........................................................................................ 17 7. P HÁT TRI Ể N.
........................................................................................................... 17 8. K I Ể M TH Ử
. .............................................................................................................. 21 9. NH Ậ N XÉT VÀ HƯỚ NG PHÁT TRI Ể N
...................................................................... 22 T ÀI LI Ệ U THAM KH Ả O.
....................................................................................................... 23 vii lOMoARcPSD|46958826 NỘI DUNG
1. GIỚI THIỆU ĐỀ TÀI
1.1. Lý do thực hiện
Với sự phát triển như vũ bão của các nền tảng công nghệ thông tin, các giải
pháp công nghệ nói chung hiện nay. Việc ứng dụng nó vào thiết kế giải pháp, và công cụ
để hỗ trợ công việc của các chuyên ngành, các lĩnh vực khác hay thậm chí là các hoạt
động sinh hoạt hằng ngày trong cuộc sống của con người là vô cùng cần thiết.
Lập trình ứng dụng là một lĩnh vực phát triển song song với sự phát triển của
khoa học và kỹ thuật máy tính nói riêng, khoa học nói chung và là xu thế tất yếu, lập
trình ứng dụng nâng cao hiệu quả công việc, giúp con người hoàn thành nó với thời gian
nhanh chóng, thậm chí nó có thể thay thế con người tự động lập lịch để thực thi những
tác vụ vô cùng phức tạp với độ chính xác gần như là tuyệt đối.
Quy hoạch tuyến tính và tối ưu hoá là phần quan trọng không thể yếu, là gốc rễ
của toán tối ưu, đóng vai trò quan trọng trong các hoạt động phân tích, tính toán và cải
tiến nói riêng. Như trong vận tải hàng hoá, điều độ logistics, tối ưu hoá dây chuyền sản
xuất, các bài toán lập kế hoạch, …
Do đó trong yêu cầu bài tập code của môn học Quy hoạch tuyến tính, nhóm
đã thực hiện phát triển một phần mềm tính toán bài toán Quy hoạch tuyến tính với các
thao tác đơn giản, dễ sữ dụng và cài đặt. 1.2. Bố cục
Bố cục nội dung bài báo cáo gồm 8 phần :
− Giới thiệu
− Cơ sở lý thuyết và Phương pháp luận
− Phân tích dự án
− Thiết kế sơ khởi
− Thiết kế chi tiết
− Kiểm thử
− Đóng gói và sử dụng 1 lOMoARcPSD|46958826
− Nhận xét và hướng phát triển 2 lOMoARcPSD|46958826
2. CƠ SỞ LÝ THUYẾT VÀ PHƯƠNG PHÁP LUẬN 2.1.Tối ưu hoá
Trong toán học, thuật ngữ tối ưu hóa chỉ tới việc nghiên cứu các bài toán có dạng
Cho trước: một hà
m f: A →R từ tập hợp A tới tập số thực
Tìm: một phần tử x0 thuộc A sao cho f(x0) ≤ f(x) với mọi x thuộc A ("cực tiểu
hóa") hoặc sao cho f(x0) ≥ f(x) với mọi x thuộc A ("cực đại hóa").
Một phát biểu bài toán như vậy đôi khi được gọi là một quy hoạch toán học
(mathematical program). Nhiều bài toán thực tế và lý thuyết có thể được mô hình
theo cách tổng quát trên. M
iền xác định A của hàm f được gọi là không gian tìm kiếm. Thông thường, A là một tập
co n của không gian Euclid Rn, thường được xác định bởi một tập các r àng buộc , các
đẳng thức hay bất đẳng thức mà các thành viên của A phải thỏa mãn. Các phần tử của A
được gọi là các lời giải khả thi. Hàm f được gọi là hàm mục tiêu, hoặc hàm chi phí.
Lời giải khả thi nào cực tiểu hóa (hoặc cực đại hóa, nếu đó là mục đích) hàm mục
tiêu được gọi là lời giải tối ưu.
Thông thường, sẽ có một vài cực tiểu địa phương và cực đại địa phương, trong
đó một cực tiểu địa phương x* được định nghĩa là một điểm thỏa mãn điều kiện: Với giá trị δ > 0
nào đó và với mọi giá trị x sao cho || − ∗|| ≤ ; Công thức sau luôn đúng: ( ∗) ≤ ( )
Nghĩa là, tại vùng xung quanh x*, mọi giá trị của hàm đều lớn hơn hoặc bằng
giá trị tại điểm đó. Cực đại địa phương được định nghĩa tương tự. Thông thường,
việc tìm cực tiểu địa phương là dễ dàng – cần thêm các thông tin về bài toán (chẳng
hạn, hàm mục tiêu là hà
m l ồ i ) để đảm bảo rằng lời giải tìm được là cực tiểu toàn cục.1
2.2. Quy hoạch tuyến tính 1
Wikipedia Tiếng Việt, URL: https://vi.wikipedia.org/wiki/Tối_ưu_hóa_(toán_h%E1%BB%8Dc) 3 lOMoARcPSD|46958826
Trong t oán học , quy hoạch tuyến tính (QHTT) (t iếng Anh : linear
programming - LP) là bài toán tối ưu hóa, trong đó hàm mục tiêu(objective
function) và các điều kiện ràng buộc đều là t uyến tính . 2
Trong bài toán này, cho một đ
a tạp (polytope) (chẳng hạn một đa giác hoặc
một đa diện), và một hàm ( tuyến,, tính,… (affine),= nhận+giá trị+thực⋯+ 123 ) 1 2
xác định trên đa tạp đó, mục đích là tìm một điểm trên đa tạp tại đó hàm có
giá trị nhỏ nhất (hoặc lớn nhất). Các điểm như vậy có thể không tồn tại, nhưng nếu
chúng tồn tại phải tìm được ít nhất một điểm.3
Phương pháp giải hệ phương trình truyến tính đã đã được tìm ra vào năm 1827
bởi Fourier. Vì thế nó có tên là phương pháp loại bỏ Fourier-Motzkin. Năm 1939, một
dạng bài toán quy hoạch tuyến tính tương đương với bài toán quy hoạch tuyến tính
tổng quát được đưa ra bởi nhà toán học và kinh tế học Leonid Kantorovich, và ông
cũng chính là người đề xuất phương pháp giải nó. Trong Thế chiến thứ 2, ông được
giao cho nhiệm vụ lập bảng kế hoạch chi tiêu và thu hồi nhằm giảm chi phí cho quân
đội và tăng tổn thất cho kẻ thù. Công việc mà Kantorovich làm ban đầu bị lãng quên. 4
Cùng thời với Kantorovich, nhà kinh tế học người Mỹ gốc Hà Lan
T.C.Koopmans đã đưa ra các bài toán kinh tế cổ điển dưới dạng bài toán tuyến tính.
Kantorovich and Kôpmans sau đó cùng nhận giải Nobel kinh tế năm 1975. Năm
1941, Frank Lauren Hitchcook cũng đưa các bài toán vận tải dưới dạng phương
trinh tuyến tính và đưa ra một đáp án rất giống với phương pháp simplex sau này.
Hitchcook qua đời năm 1957, và giải Nobel đã không được truy tặng.5
2.3. Công nghệ phần mềm
2Wikipedia Tiếng Việt, URL: https://vi.wikipedia.org/wiki/Quy_hoạch_tuyến_t%C3%ADnh
3Wikipedia Tiếng Việt, URL: https://vi.wikipedia.org/wiki/Quy_hoạch_tuyến_t%C3%ADnh 4
Wikipedia Tiếng Việt, URL: https://vi.wikipedia.org/wiki/Quy_hoạch_tuyến_t%C3%ADnh 5
Wikipedia Tiếng Việt, URL: https://vi.wikipedia.org/wiki/Quy_hoạch_tuyến_t%C3%ADnh 4 lOMoARcPSD|46958826
Công nghệ phần mềm là sự áp dụng một cách tiếp cận có hệ thống, có kỷ luật, và
định lượng được cho việc phát triển, sử dụng và bảo trì phần mềm.6 Ngành học kỹ sư phần
mềm bao trùm kiến thức, các công cụ, và các phương pháp cho việc định nghĩa yêu cầu
phần mềm, và thực hiện các tác vụ thiết kế, xây dựng, kiểm thử (software testing), và bảo trì
phần mềm.7 Kỹ sư phần mềm còn sử dụng kiến thức của các lĩnh vực như kỹ thuật máy
tính, khoa học máy tính, quản lý, toán học, quản lý dự án, quản lý chất lượng, công thái học
phần mềm (software ergonomics), và kỹ sư hệ thống (systems engineering).8
Trích dẫn một câu nói của Edsger Dijkstra về công nghệ phần mềm: Khi máy tính chưa
xuất hiện, thì việc lập trình chưa có khó khăn gì cả. Khi mới xuất hiện một vài chiếc máy tính
chức năng kém thì việc lập trình bắt đầu gặp một vài khó khăn nho nhỏ. Giờ đây khi chúng
ta có những chiếc máy tính khổng lồ thì những khó khăn ấy trở nên vô cùng lớn. Như vậy
ngành công nghiệp điện tử không giải quyết khó khăn nào cả mà họ chỉ tạo thêm ra những khó
khăn mới. Khó khăn mà họ tạo nên chính là việc sử dụng sản phẩm của họ. Lịch sử:
− Thập niên 1940: Các chương trình cho máy tính được viết bằng tay.
− Thập niên 1950: Các công cụ đầu tiên xuất hiện như là phần mềm biên dịch
Macro Assembler và phần mềm thông dịch đã được tạo ra và sử dụng rộng rãi
để nâng cao năng suất và chất lượng. Các trình dịch được tối ưu hoá lần
đầu tiên ra đời.
− Thập niên 1960: Các công cụ của thế hệ thứ hai như các trình dịch tối ưu
hoá và công việc kiểm tra mẫu đã được dùng để nâng cao sản phẩm và
chất lượng. Khái niệm công nghệ phần mềm đã được bàn thảo rộng rãi.
− Thập niên 1970: Các công cụ phần mềm, chẳng hạn trong UNIX các vùng
chứa mã, lệnh make, v.v. được kết hợp với nhau. Số lượng doanh nghiệp
nhỏ về phần mềm và số lượng máy tính cỡ nhỏ tăng nhanh. 6
“IEEE Standard Glossary of Software Engineering Terminology," IEEE std 610.12-1990, 1990. 7 Guide
to the Software Engineering Body of Knowledge” . 6-2-2004. 8 Guide
to the Software Engineering Body of Knowledge” . 6-2-2004. 5 lOMoARcPSD|46958826
− Thập niên 1980: các PC và máy trạm ra đời. Cùng lúc có sự xuất hiện của
mô hình dự toán khả năng. Lượng phần mềm tiêu thụ tăng mạnh.
− Thập niên 1990: Phương pháp lập trình hướng đối tượng ra đời. Các quá trình
nhanh như là lập trình cực hạn được chấp nhận rộng rãi. Trong thập niên này,
WWW và các thiết bị máy tính cầm tay phổ biến rộng rãi. Hiện nay: Các phần
mềm biên dịch và quản lý như là .NET, PHP, Java làm cho việc thiết kế, viết
phần mềm ứng dụng trở nên dễ dàng hơn nhiều. Hội nghị quốc tế về Công
nghệ phần mềm lần đầu tiên dược tổ chức tại Mỹ.
2.4. Quy trình phát triển dự án công nghệ phần mềm
Theo quy tắc chung, quy trình SDLC sẽ bao gồm 6 bước:
Bước 1: Analysis (Lập kế hoạch và phân tích yêu cầu)
Trước khi bắt đầu xây dựng phần mềm, chúng ta cần thu thập và xác
định rõ các yêu cầu của người dùng và các bên liên quan đối với sản phẩm phần
mềm sắp xây dựng. Chúng ta cần nghiên cứu thị trường để xác định các chức
năng mà phần mềm nên cung cấp cho người dùng để họ cảm thấy đây là phần
mềm hữu ích cho họ. Việc nghiên cứu này cũng giúp ta xác định được khả năng
tồn tại của phần mềm trên thị trường như thế nào?
Sau đó, các thành viên trong nhóm phát triển phần mềm sẽ làm việc cùng
với khách hàng để đưa ra các thông số kỹ thuật và yêu cầu chi tiết về sản phẩm
phần mềm dự định làm ra. Tất cả thông tin này sẽ được tổng hợp thành một tài
liệu được gọi là tài liệu đặc tả yêu cầu phần mềm (Software Requirement
Specification). Tài liệu sẽ bao gồm các yêu cầu về chức năng, giao diện, hiệu suất,
… Ngoài ra, còn có cả bản phác thảo về thành phần, nhiệm vụ của từng
developer và các thông số thử nghiệm để tạo nên một sản phẩm chất lượng.
Ở giai đoạn này, người quản lý và các nhà phát triển phần mềm sẽ thống
nhất việc lựa chọn kiểu mô hình phát triển phần mềm nào (Các kiểu mô hình
phát triển phần mềm sẽ được cụ thể trong phần tiếp theo)
Bước 2: Design (Thiết kế phần mềm) 6 lOMoARcPSD|46958826
Từ các yêu cầu và thông số kỹ thuật được đưa ra trong bước 1, các nhà
phát triển phần mềm sẽ vạch ra kiến trúc tổng thể cần thiết để tạo ra phần mềm.
Ngoài ra, các yếu tố như: ngân sách, thời gian, công nghệ áp dụng, mức độ rủi
ro,… cũng được xác định rõ ràng.
Kết quả cuối cùng của giai đoạn này là các đặc điểm kỹ thuật thiết kế. Nó
bao gồm các chỉ định về thiết kế kiến trúc, yêu cầu hệ thống cũng như đại diện
Back-end, Front-end,… cho phép cả nhóm phát triển theo dõi toàn bộ quá trình
phát triển nên phần mềm.
Bước 3: Development (Thực hiện)
Ở bước này, các nhà phát triển phần mềm sẽ bắt đầu viết code và triển
khai các thông số thiết kế đã đưa ra ở bước 2. Cụ thể, các Front-end developer sẽ
xây dựng phần giao diện của phần mềm. Các Back-end developer sẽ sử dụng các
loại ngôn ngữ lập t rình , framework để lập trình trên máy chủ và cùng với các
quản trị viên cơ sở dữ liệu xử lý dữ liệu.
Sau khi hoàn tất việc coding, developers sẽ deploy (triển khai) sản phẩm
trong môi trường phát triển. Lập trình viên sẽ tiến hành thử nghiệm sản phẩm
và có sự điều chỉnh cho phù hợp với yêu cầu đã đưa ra.
Giai đoạn này thường chiếm khá nhiều thời gian và nhân lực trong toàn
bộ quy trình phát triển phần mềm.
Bước 4: Testing (Kiểm thử phần mềm)
Sau khi hoàn tất phần lập trình phần mềm, sản phẩm sẽ tiếp tục chuyển cho
các tester (người kiểm thử phần mềm). Các tester sẽ tạo ra các tình huống kiểm thử
(test case) và tiến hành kiểm thử phần mềm. Mục đích của việc kiểm thử phần mềm
là xác minh và đảm bảo chất lượng của sản phẩm đúng như yêu cầu để ra.
Sau khi kiểm thử, tester sẽ cập nhật các lỗi vào công cụ quản lý và thông báo
các bug (lỗi) cho developers. Bước này, tester sẽ ngồi cùng với developers để xử lý các 7 lOMoARcPSD|46958826
bug hiện có và cập nhật vào hệ thống quản lý lỗi. Tùy vào mô hình phát triển
phần mềm được lựa chọn ở bước 1 mà hoạt động của developer và tester có thể
tiến hành lần lượt hoặc diễn ra song song.
Bước 5: Deployment stage (Giai đoạn triển khai)
Sau khi hoàn tất kiểm thử, phần mềm không còn lỗi, các nhà phát triển sẽ triển
khai sản phẩm trên Production environment (môi trường chứa ứng dụng thật, chạy với
người dùng thật, dữ liệu thật) và cung cấp sản phẩm hoàn thiện cho khách hàng.
Sau khi đăng ký, thử nghiệm Beta sẽ được tiến hành để thu thập các phản
hồi của người dùng thực tế để hoàn thiện chất lượng phần mềm khi triển khai ở quy
mô lớn. Ở bước này, developer cũng cần phải lên kế hoạch chuẩn bị cho mọi trường
hợp bất trắc có thể xảy ra để chủ động hơn trong việc giải quyết các sự cố bất ngờ.
Bước 6: Maintenance (Duy trì)
Sau khi phần mềm được đưa vào vận hành chính thức, khách hàng đã bắt
đầu sử dụng phần mềm ở mức chất lượng cao nhất, bước tiếp theo chúng ta cần
phải bảo trì sản phẩm. Công ty sẽ thành lập một nhóm chuyên về bảo trì và quản lý
các vấn để người dùng gặp phải trong quá trình sử dụng sản phẩm. Họ sẽ quản lý
và giải quyết tất cả các vấn để của người dùng gặp phải. Đồng thời, phần mềm cũng
được cập nhật sau khi triển khai để loại bỏ các lỗi và cải thiện hiệu suất.
2.5. Kỹ thuật hệ thống và Agile
Từ quan điểm tổng thể, kỹ thuật hệ thống tập trung vào việc phân tích và khơi gợi
nhu cầu của khách hàng cũng như chức năng cần thiết ngay từ đầu trong chu kỳ phát
triển, ghi lại các yêu cầu và sau đó tiến hành tổng hợp thiết kế. và xác thực hệ thống trong
khi xem xét toàn bộ vấn đề và vòng đời của hệ thống. Điều này bao gồm việc hiểu đầy đủ
tất cả các bên liên quan (Oliver và cộng sự) tuyên bố rằng quy trình kỹ thuật hệ thống có
thể được phân tách thành: Quy trình Kỹ thuật Hệ thống và Quy trình Kỹ thuật Quản lý.
kỹ thuật hệ thống. 8 lOMoARcPSD|46958826
Trong mô hình của Oliver, các mục tiêu của Quy trình Truy cập Mở là các bước
thiết kế kỹ thuật cần thiết trong vòng đời hệ thống, trong khi Quy trình Kỹ thuật bao
gồm một số bước để phát triển và xây dựng hệ thống:
• Đánh giá thông tin có sẵn,
• Xác định các biện pháp hiệu
quả, Với mục đích:
• Tạo mô hình hành vi,
• Tạo mô hình cấu trúc, thực hiện phân tích đánh đổi,
• Xây dựng tuần tự và lập kế hoạch thử nghiệm.
Mil – STD – 499B định nghĩa kỹ thuật hệ thống như sau: kỹ thuật hệ thống là một
cách tiếp cận đa ngành được sử dụng để phát triển, thử nghiệm một bộ tối ưu và tích hợp
các thiết kế sản phẩm và quy trình để thỏa mãn. nhu cầu của người sử dụng và cung cấp
thông tin cho người ra quyết định. Mặc dù có nhiều định nghĩa khác về kỹ thuật hệ thống,
nhưng chúng ta vẫn có thể nói kỹ thuật hệ thống có những đặc điểm sau:
Kỹ thuật hệ thống không tồn tại trong sự cô lập. Đó là một quá trình đa ngành,
làm việc cùng nhau và tích hợp các ngành khác nhau.
Kỹ thuật hệ thống chuyển đổi nhu cầu của người dùng thành đặc tả cấu hình
hệ thống có thể đáp ứng nhu cầu đó.
Kỹ thuật hệ thống gắn liền với quá trình phát triển sản phẩm và được áp dụng
ở giai đoạn đầu.
Tùy thuộc vào ứng dụng của chúng, mặc dù có một số mô hình được sử dụng
trong ngành, nhưng tất cả chúng đều nhằm mục đích xác định mối quan hệ giữa các
giai đoạn khác nhau được đề cập ở trên và kết hợp phản hồi. Cách tiếp cận kỹ thuật
hệ thống để xây dựng một hệ thống hoàn chỉnh bao gồm năm bước sau kết hợp với
bảy bước của quy trình thiết kế hệ thống phần mềm sẽ được áp dụng trong suốt dự án: 9 lOMoARcPSD|46958826
Bước 1: Xác dịnh phạm vi dự án Phân tích nhu cầu
Bước 2: Xác định và tính toán nhu cầu chức năng
Thiết kế ý niệm
Bước 3: Tính toán nguồn lực có sẵn
Bước 4: Xác định nền tảng và môi trường hoạt dộng của hệ thống
Bước 5: Xác định năng lực của hệ thống
Thiết kế sơ khởi
Bước 6: Thiết kế và xây dựng các chức năng con cùng hệ
Thiết kế chi tiết
thống phụ trợ, ước tính chi phí.
Bước 7: Xây dựng và phát triển một hệ thống chi tiết.
Bước 2: Xác định và tính toán nhu cầu chức năng
Cài đặt và vận hành 10 lOMoARcPSD|46958826 3. PHÂN TÍCH DỰ ÁN
3.1. Quy trình thực hiện dự án
Bỏ qua quy trình phân tích xác định nhu cầu (với nhu cầu phát triển được xác
định sẵn): Dự án code nhập các input là hàm mục tiêu, hàm ràng buộc và cho ra kết quả
là trị tối ưu và giá trị các biến trong hàm mục tiêu và ràng buộc.
Nhu cầu được xác định:
Chương trình code nhập vào dữ liệu hàm mục tiêu, ràng buộc của bài toán quy
hoạch tuyến tính. Xuất ra kết quả là giá trị tối ưu Z, và
Quy trình tập trung vào phân tích lựa chọn giải pháp công nghệ, và phân
tích thiết kế dựa trên giải pháp công nghệ đó. 3.2. Sơ đồ gantt
Sơ đồ Gantt quy trình và thời gian thực hiện dự án: 11 lOMoARcPSD|46958826
4. THIẾT KẾ Ý NIỆM
Đây là bước phân tích và lựa chọn stech stack cho dự án. Một số công nghệ thông
dụng có thể sử dụng: 4.1. Web Application 4.1.1. ASP .NET
Là công nghệ lập trình web, dựa trên nền tản ngôn ngữ lập trình C# đồng phát
triển bởi Microsoft. ASP .NET nổi lên là một trong những công nghệ Backend nổi bật
với các cấu trúc cực mạnh trong xử lí logic ( điển hình là ASP.NET MVC) 4.1.2. Django (Python)
Là công nghệ lập trình web, dựa trên nền tản ngôn ngữ lập trình Python với
cộng đồng phát triển open source lớn, tương thích với nhiều API. 4.2. Window Application 4.2.1. Tkinter (Python)
Là công nghệ lập trình giao diện app chạy trên máy tính, hỗ trợ đa hệ điều hạnh
với mã nguồn python.
4.2.2. Winform/WPF (.NET)
Lập trình window app với.NET Framework. Winform đã từ lâu trở thành công
nghệ phát triển app nhúng, các phần mềm dung trong công nghiệp, tự động hoá hay
quản lý công sở…
4.3. Phân tích trade off
So sánh các công nghệ: Tiêu chí ASP .NET Django Tkinter Winform Mã nguồn đa dạng 8 6 8 9
Dễ phát triển 4 4 9 9
Dễ sử dụng 9 9 8 6 Gỡ lỗi 6 7 8 8 Khả năng nâng cấp 8 8 8 5 Tổng 35 34 41 37
Sử dụng Tkinter, Python là tech của dự án. 12 lOMoARcPSD|46958826 13