PDA

View Full Version : Phân tích thiết kế hệ thống & phát triển phân mềm



Khanhnguynnam
20-01-2010, 00:11
Chào cả nhà!

Mình có đọc qua về tích thiết kế hệ thống(PTTK-HT) và qui trình phát triển phần mềm (PTPM) nhưng có một số chỗ vướng mắc. Vì vậy, mình lập topic này để cùng mọi người thảo luận về những điểm giống và khác nhau cũng như các vấn đề xoay quanh chúng.

Đầu tiên, mình xin được mọi người giúp mình trả lời câu hỏi:
- Các bước cơ bản nhất khi PTTK-HT và khi PTPM?
- Có phải PTTK-HT là một bước trong qui trình PTPM?
- Nếu vậy, thì trong qui trình phát triển phần mềm, ta sẽ áp dụng PTTK-HT ở đâu và áp dụng như thế nào?

Cám ơn cả nhà :D

dinhtrungac
20-01-2010, 10:38
Chào cả nhà!

Mình có đọc qua về qui trình phân tích thiết kế hệ thống(PTTK-HT) và qui trình phát triển phần mềm (PTPM) nhưng có một số chỗ vướng mắc. Vì vậy, mình lập topic này để cùng mọi người thảo luận về những điểm giống và khác nhau cũng như các vấn đề xoay quanh chúng.

Đầu tiên, mình xin được mọi người giúp mình trả lời câu hỏi:
- Các bước cơ bản nhất khi PTTK-HT và khi PTPM?
- Có phải PTTK-HT là một bước trong qui trình PTPM?
- Nếu vậy, thì trong qui trình phát triển phần mềm, ta sẽ áp dụng PTTK-HT ở đâu và áp dụng như thế nào?

Cám ơn cả nhà :D

Chào bạn:
Như bạn nói, PTTK là một khâu trong quy trình phát triển phần mêm. Và nó là khâu quan trọng nhất, quyết định tới chất lượng của sản phẩm. Mình thì có học qua môn này nhưng lâu quá rùi. Bây giờ chia sẻ lại cho bạn chỉ là đề tài môn này mà mình đã làm cách đây khoảng 6 năm(Gồm báo cáo và Sourcecode): Bạn vào đây lấy nhé: http://vn.myblog.yahoo.com/dinhtrungac/article?new=1&mid=132! Có gì không hiểu thì chúng ta sẽ cùng chia sẻ tiếp.
Chúc vui!

bluesnake132
21-01-2010, 00:38
PTPM thì mình chưa được học,nhưng PTKT thì có học qua rùi.Nó là một bước trong qui trình xây dựng và phát triển phần mềm.Theo mình được biết thì sau khi có đầy đủ ý tưởng về trang web,Chúng ta sẽ bắt đầu vào phân tích, sao đó sẽ thiết kế,viễn này không những giúp dễ dàng xây dựng phần mềm theo 1 bản đồ đã được vạch ra,mà còn dễ dàng cho viêc sữa chữa và phát triển sao này.Theo mình được biết thì có nhiều giai đoạn trong viêc PT-TK.VD: PTTK Hệ Thống ,PTTK Hướng Đối Tượng.Theo chủ quan của mình thì đây là một môn rất khó, nó đòi hỏi bạn phải có cái nhìn vừa tổng quan, vừa chi tiết về hệ thống, vừa phải hiểu được cách lập trình và cả tính sáng tạo ..v.v.Nếu người thiết kế giỏi thì người lập trình sẽ rất dễ dàng cho viêc code.

Đó là một số ý kiến chủ quan của mình.Mong được ae đóng góp.

Khanhnguynnam
22-01-2010, 15:37
Chào bạn:
Như bạn nói, PTTK là một khâu trong quy trình phát triển phần mêm. Và nó là khâu quan trọng nhất, quyết định tới chất lượng của sản phẩm. Mình thì có học qua môn này nhưng lâu quá rùi. Bây giờ chia sẻ lại cho bạn chỉ là đề tài môn này mà mình đã làm cách đây khoảng 6 năm(Gồm báo cáo và Sourcecode): Bạn vào đây lấy nhé: http://vn.myblog.yahoo.com/dinhtrungac/article?new=1&mid=132! Có gì không hiểu thì chúng ta sẽ cùng chia sẻ tiếp.
Chúc vui!

Cám ơn anh, em down và cũng xem qua rồi. Nhưng thật tốt nếu mọi người có được những bài học kinh nghiệm, những ý kiến chủ quan của anh về PTTK và PTPM. Rồi những bước cơ bản nhất khi PTTK và khi PTPM là gì? Nội dung và ý nghĩa mỗi bước đó ra sao? Vì em nghĩ, cái quan trọng hơn cả là cách tư duy và phân tích. Mong anh chia sẻ. Thân!

[=========> Bổ sung bài viết <=========]


PTPM thì mình chưa được học,nhưng PTKT thì có học qua rùi.Nó là một bước trong qui trình xây dựng và phát triển phần mềm.Theo mình được biết thì sau khi có đầy đủ ý tưởng về trang web,Chúng ta sẽ bắt đầu vào phân tích, sao đó sẽ thiết kế,viễn này không những giúp dễ dàng xây dựng phần mềm theo 1 bản đồ đã được vạch ra,mà còn dễ dàng cho viêc sữa chữa và phát triển sao này.Theo mình được biết thì có nhiều giai đoạn trong viêc PT-TK.VD: PTTK Hệ Thống ,PTTK Hướng Đối Tượng.Theo chủ quan của mình thì đây là một môn rất khó, nó đòi hỏi bạn phải có cái nhìn vừa tổng quan, vừa chi tiết về hệ thống, vừa phải hiểu được cách lập trình và cả tính sáng tạo ..v.v.Nếu người thiết kế giỏi thì người lập trình sẽ rất dễ dàng cho viêc code.
Đó là một số ý kiến chủ quan của mình.Mong được ae đóng góp.

Oài, không phải khó... mà là cực khó :-s Như bạn nói, PTTK hay PTPM đều phải trải qua những giai đoạn khác nhau, đều có những phương pháp tiến hành khác nhau.

Ví dụ:
- Phân tích thiết kế có phương pháp phân tích hướng cấu trúc, hướng đối tượng...
- Phát triển phần mềm có mô hình RUP, thác nước, xoắn ốc, ...
Nhưng mình nghĩ, chúng đều hội tụ những điểm chung nhất mà bất kì phương pháp, hay mô hình nào cũng có. Và dưới đây là cách mình phân chia giai đoạn:

* Phân Tích Thiết Kế
- Xác định hay đặc tả yêu cầu
+ Nhiệm vụ của hệ thống
+ Chức năng của hệ thống
+ Phạm vi của hệ thống
+ Môi trường của hệ thống
- Phân tích hệ thống về chức năng
+ Vẽ mô hình phân rã chức năng
+ Mô hình luồng dữ liệu các mức
- Phân tích hệ thống về dữ liệu
+ Mô hình thực thể liên kết
+ Mô hình quan hệ
- Thiết kế hệ thống.
+ Thiết kế giao điện
+ Thiết kế CSDL
+ Thiết kế xử lý

* Phát Triển Phần Mềm
- Xây dựng phần mềm:
+ Bao gồm tất cả các bước trong khi PTTK.
+ Tiếp theo là cài đặt phần mềm bằng một ngôn ngữ nào đó.
--> kết quả của giai đoạn này là ta có được một phần mềm ở mức thô, tức là có thể chạy và cho kết quả (kết quả đúng hoặc sai) cũng có thể phát sinh lỗi trong quá trình chạy.
- Phát triển phần mềm:
+ Cài đặt và kiểm thử HOẠT ĐỘNG của phần mềm.
--> hoạt động cho ta biết phần mềm có chạy đúng hay không. Giai đoạn này sẽ fix hết các lỗi cũng như chưa hợp lý để có được phần mềm nhưng khi đặc tả. Kết quả sẽ được một phần mềm hoạt động ổn định.
+ Bảo trì CHẤT LƯỢNG của phần mềm
--> ở giai đoạn này, chắc chắn đã có một phần mềm hoạt động đúng, nhưng chưa chắc đã tốt vì trong quá trình sử dụng sẽ có nhiều vấn đề phát sinh. Do đó để đảm bảo chất lượng của phần mềm, ta cần giải quyết những bất cập đó.

--> Trên đây là cách phân chia giai đoạn theo quan điểm của mình. Và mình nghĩ, phân chia như thế nào không quan trọng, quan trọng là phải thực hiện đầy đủ các công việc cơ bản nhất khi PTTK cũng như PTPM.

dinhtrungac
23-01-2010, 23:26
Cám ơn anh, em down và cũng xem qua rồi. Nhưng thật tốt nếu mọi người có được những bài học kinh nghiệm, những ý kiến chủ quan của anh về PTTK và PTPM. Rồi những bước cơ bản nhất khi PTTK và khi PTPM là gì? Nội dung và ý nghĩa mỗi bước đó ra sao? Vì em nghĩ, cái quan trọng hơn cả là cách tư duy và phân tích. Mong anh chia sẻ. Thân!

[=========> Bổ sung bài viết <=========]



Oài, không phải khó... mà là cực khó :-s Như bạn nói, PTTK hay PTPM đều phải trải qua những giai đoạn khác nhau, đều có những phương pháp tiến hành khác nhau.

Ví dụ:
- Phân tích thiết kế có phương pháp phân tích hướng cấu trúc, hướng đối tượng...
- Phát triển phần mềm có mô hình RUP, thác nước, xoắn ốc, ...
Nhưng mình nghĩ, chúng đều hội tụ những điểm chung nhất mà bất kì phương pháp, hay mô hình nào cũng có. Và dưới đây là cách mình phân chia giai đoạn:

* Phân Tích Thiết Kế
- Xác định hay đặc tả yêu cầu
+ Nhiệm vụ của hệ thống
+ Chức năng của hệ thống
+ Phạm vi của hệ thống
+ Môi trường của hệ thống
- Phân tích hệ thống về chức năng
+ Vẽ mô hình phân rã chức năng
+ Mô hình luồng dữ liệu các mức
- Phân tích hệ thống về dữ liệu
+ Mô hình thực thể liên kết
+ Mô hình quan hệ
- Thiết kế hệ thống.
+ Thiết kế giao điện
+ Thiết kế CSDL
+ Thiết kế xử lý

* Phát Triển Phần Mềm
- Xây dựng phần mềm:
+ Bao gồm tất cả các bước trong khi PTTK.
+ Tiếp theo là cài đặt phần mềm bằng một ngôn ngữ nào đó.
--> kết quả của giai đoạn này là ta có được một phần mềm ở mức thô, tức là có thể chạy và cho kết quả (kết quả đúng hoặc sai) cũng có thể phát sinh lỗi trong quá trình chạy.
- Phát triển phần mềm:
+ Cài đặt và kiểm thử HOẠT ĐỘNG của phần mềm.
--> hoạt động cho ta biết phần mềm có chạy đúng hay không.
+ Bảo trì CHẤT LƯỢNG của phần mềm
--> ở giai đoạn này, chắc chắn đã có một phần mềm hoạt động đúng, nhưng chưa chắc đã tốt vì trong quá trình sử dụng sẽ có nhiều vấn đề phát sinh. Do đó để đảm bảo chất lượng của phần mềm, ta cần giải quyết những bất cập đó.

--> Trên đây là cách phân chia giai đoạn theo quan điểm của mình. Và mình nghĩ, phân chia như thế nào không quan trọng, quan trọng là phải thực hiện đầy đủ các công việc cơ bản nhất khi PTTK cũng như PTPM.

Year! bạn Khanhnguynnam đã mô tả tương đối đầy đủ và chi tiết. Nói tóm lại là có rất nhiều phương pháp khác nhau để phát triển một ứng dụng. Nhưng tất cả đều có những điểm chung mà như bạn Khanhnguynnam đã liệt kê ra. Thanks bài viết của bạn, qua đây thực sự mình cũng học được rất nhiều. Mong các bạn khác hãy tiếp tục chia sẻ nhé.

Khanhnguynnam
24-01-2010, 01:12
Ui, qui trình là như vậy, nhưng khi băt tay vào làm, thì còn rất nhiều điều phát sinh, mà cần phải đem ra bàn bạc. Chẳng hạn, khi phân tích hệ thống về chức năng, đầu tiền, ta phải vẽ "biểu đồ ý niệm xử lý", biểu đồ này mô tả các giao dịch của hệ thống với tác nhân ngoài, được biểu diễn bởi các xử lý(giao dịch), các luồng thông tin, kho lưu trữ ... (tất cả đều có qui ước đặt tên). Nhưng, làm thế nào đây, khi hệ thống là một website chứ không phải một công ty, phòng ban hay tổ chức nào đó?
- Với hệ thống là một công ty, tổ chức: hầu hết các xử lý đều được thực hiện bởi hệ thống, kết quả của những xử lý đó phải được lưu trữ, hoặc là đầu vào của xử lý khác...còn rất nhiều, nhưng
- Với hệ thống là một website thì sao? theo mình thấy, hầu hết các xử lý là ở người dùng chứ không phải website, website chỉ tiếp nhận xử lý từ người dùng. Và để ý ta sẽ thấy, người dùng chỉ là tác nhân ngoài, còn website mới là hệ thống, trong khi đó, khi liệt kê các xử lý thì hầu hết xử lý này đều được thực hiện bởi tác nhân ngoài(ở đây là người dùng) chứ không phải là hệ thống(ở đây là website).

--> Vậy mọi người quan niệm như thế nào? và phân tích như thế nào để có được lược đồ "ý niệm xử lý" đúng với hệ thống?

--> Dưới đây là lược đồ ý niệm xử lý mình vẽ cho một website bán hàng (site TMDT - nói thì oai, chứ ở VN, có mấy site xứng đáng là TMDT :P)
http://img268.imageshack.us/img268/3164/capture1qs.png (http://img268.imageshack.us/i/capture1qs.png/)
--> Nhìn vào đó thấy rõ rằng, hầu hết các xử lý(các ô hình chữ nhật) đều được thực hiện bởi người dùng chứ không phải hệ thống :-ss. Mong mọi người phân tích và giúp mình làm rõ vấn đề này.

tjendat17
24-01-2010, 01:36
:! Kiến thức sâu rộng. Bái phục bái phục

Khanhnguynnam
24-01-2010, 01:44
:! Kiến thức sâu rộng. Bái phục bái phục
Không biết bạn đang chê hay khen, nhưng mình cũng rất vui vì bạn đã quan tâm đến những vướng mắc của mình. Mình chỉ nói những gì mình nghĩ thui, mong bạn và mọi người giúp đỡ. Mình ko dấu dốt :">

vao8.com
24-01-2010, 15:51
Tài liệu mình đang cần, sắp thi rồi, cám ơn bạn hen :)

danchithancong
03-03-2010, 14:52
mấy bác dùng chương trình gì để vẽ mấy cái mô hình quan hệ vậy

linhberos
03-03-2010, 21:59
Theo mình bạn nên post cả tài liệu bạn đang học lên cho mọi người tham khảo nữa. Còn về chương trình vẽ có thể dùng visio, Relation Rose, Visual Paradigm....

caocuong_caca
08-12-2010, 21:40
Anh Trung cho em hoi cai do an cua anh ko co database ha?

thanhdanhsoft
16-12-2010, 13:07
Theo mình nghĩ, thiết kế phần mềm là một chủ đề rất lớn, không biết bàn đến bao giờ cho xong.

Vậy nên cách tốt nhất là ai có những kinh nghiệm nào thấy là hay thì chia sẽ, còn không thì có thể hỏi những vấn đề mình vướn.
Hiện tại mình vẫn đang kim quản lý dự án và phân tích thiết kế.Mình cũng không theo một chuẩn duy nhất nào về kiến thức đã học trong trường lớp.
Công việc thiết kế phần mềm hiện tại của mình là:
1/Lấy yêu cầu của khách hàng
2/Phân tích yêu cầu & Thiết kế DB & Giao diện demo
3/Review lại với khách hàng
4/Điều chỉnh giao diện và DB
5/Code
...Trong quá trình này thường xuyên trao đổi về các chức năng đã làm.
...Complete từng chức năng cho người dùng thông qua sự phản hồi của khách hàng.

aminpro
22-12-2010, 23:08
PTTKHT giống như một kiến trúc sư khi được thuê thiết kế nhà. anh ta phải biết được yêu cầu của chủ nhà: hướng, kiểu dáng,....
khi có những thông tin đó anh ta thiết kế sao cho ngôi nhà đáp ứng yêu cầu của chủ nhà và đáng ứng thông số kỹ thuật: móng nhà, đọ co ngót bê tông,....
sau khi ra được bản thiết kế thì chuyển sang cho công nhân xây dựng. người công nhân xây dựng không khác gì một developer code. bên xây dựng ra được một bản vẽ thì bên cntt ra được quy trình và các biểu đồ luồng dữ liệu,...
người làm pttkht là người phải hiểu được bài toán đang cần giải và mô tả sao cho code thể hiện được.

các bạn đừng áp dụng máy móc quá. khi có được yêu cầu các bạn cần mô tả được các tác nhân tham gia, sau đó xây dựng mối quan hệ giữa các tác nhân đó. đó chính là phân tích hệ thống