[Question] Lập kế hoạch trước khi thực hiện 1 project ! |
16/03/2007 06:42:55 (+0700) | #1 | 46993 |
|
Seii TaiShogun
Member
|
0 |
|
|
Joined: 27/03/2006 09:18:27
Messages: 107
Location: Chiến trường
Offline
|
|
- Xưa nay có lẽ trong các coder , không ít người chưa từng 1 lần thử lập ra 1 bản kế hoạch , thử phác thảo sơ qua những bước cần làm trong 1 project . Những coder này đa số ỷ lại rằng những bước cần làm đã ở trong đầu họ , và họ lao vào làm ngay , không hề chuẩn bị .
- Với những coder senior , pro , đã có nhiều năm kinh nghiệm trong coding , từng tham gia nhiều project lớn nhỏ đủ loại , thì đối với những project nhỏ , thông dụng , những bước cần làm có thể đã quá quen thuộc với họ , cho nên họ có thể bỏ qua khâu lập kế hoạch mà bắt tay vào làm ngay , còn đối với các project lớn , đòi hỏi làm việc teamwork , coding OOP thì cho dù coder giỏi tới đâu cũng phải làm việc theo 1 kế hoạch , 1 chuẩn được design ra cho teamwork , cho project đó .
NOTE : ngay cả đối với project nhỏ , Shogun biết những người đã làm việc với PHP từ năm 2001-2002 , nhưng tới nay trước khi làm 1 project dù đơn giản tới đâu , ít nhất họ cũng phải lập ra 1 cái dự tính trong đầu .
- Còn với những coder mới chập chững vào nghề , hay junior developer , lời khuyên là trước khi thực hiện bất kỳ 1 project nào , hãy dành ra ít phút để viết 1 bản kế hoạch ra giấy , dựa vào đó sẽ giúp ta sẽ không bị rối , không bỏ sót các module , class cần thiết .
- Lý thuyết suông đã khá nhiều . Bây giờ Shogun xin đề cập về cách lập kế hoạch (khả năng của Shogun có hạn , nên chỉ đề cập về PHP Project)
1/ Phần khảo sát :
- Xác định loại project : website e-commerce / advertisement / CMS / forum / multimedia .
- Xác định đối tượng sẽ truy cập website : everyone / customer / only private member .
- Xác định nhu cầu upgrade / thay đổi layout của project có thường xuyên không .
- Xác định những thông tin , nội dung , mặt hàng sẽ đưa lên website . Số lượng sản phẩm , số lượng hit dự tính trong 1 ngày để order hosting / server .
2/ Phần thi công :
a. Design database :
- Phần này trong các công ty làm việc teamwork là việc của teamleader .
- Có nhiều bạn vừa code vừa design db , nhưng như vậy sẽ làm db không thống nhất , dễ thiếu sót .
- Nên tìm hiểu , xác định các loại data cần thiết và design db đầu tiên .
b. Design layout :
- Phần này là của designer , sau khi design layout sẽ đưa cho khách hàng duyệt , qua các khâu chỉnh sửa , tới khi hoàn tất thì bắt đầu cắt layout để làm template .
- CSS , DHTML , XHTML cũng được làm trong công đoạn này .
c. Xác định module , class , function cần thiết :
- Phần này cũng là của teamleader .
- Xác định , đưa ra chuẩn , pattern , quy chế chung về tên biến , tên class , ... để tiện lợi cho việc ráp code .
d. Code các module , class , function :
- Bây giờ mới là phần của coder .
- Code , test , cuối ngày làm việc up lên server bằng các software như subversion quản lý source .
- Teamleader sẽ view lại sơ qua các phần đã hoàn tất trong ngày , xem xem có phần nào cần làm lại hay chỉnh sửa ko .
3/ Phần hoàn thành :
- Sau khi tất cả các module , class , function đã xong , teamleader phối hợp với coder ráp code , test lại trên sản phẩm hoàn chỉnh , Fix các lỗi security trước khi bàn giao .
4/ Phần nghiệm thu :
- Đưa demo cho khách hàng coi . Chỉnh sửa lại theo yêu cầu của khách hàng . Và cuối cùng là lấy $$$ (cái này sale lấy , coder đừng hòng ) .
Trên là 1 kế hoạch cho 1 project loại vừa và nhỏ do Shogun tự design . Các bạn xem thử , nếu có gì thiếu sót Shogun mong được tiếp thu ý kiến từ các bạn .
Các bạn nếu có bản kế hoạch (nhỏ , vừa , lớn gì cũng được) , hãy post lên để Shogun và mọi người cùng tham khảo .
Thân ! Đoàn Minh Quân ! |
|
|
|
|
[Question] Lập kế hoạch trước khi thực hiện 1 project ! |
16/03/2007 09:27:16 (+0700) | #2 | 47034 |
jpg
Member
|
0 |
|
|
Joined: 03/07/2006 21:35:55
Messages: 89
Offline
|
|
Cảm ơn bạn , nó tốt cho người mới chập chững bước vào nghề lập trình web như mình |
|
|
|
|
[Question] Lập kế hoạch trước khi thực hiện 1 project ! |
16/03/2007 09:41:18 (+0700) | #3 | 47037 |
jpg
Member
|
0 |
|
|
Joined: 03/07/2006 21:35:55
Messages: 89
Offline
|
|
Nhưng mình xin hỏi Leader có vai trò gì trong project của bạn ? hay chỉ ngồi nghĩ ra các hàm ,các class và bảo coder ngồi code , theo mình thì bạn cần chú ý với phiên bản phần mềm sử dụng nữa bởi khi up lên host sẽ sinh ra nhiều vấn đề .
1.Theo tớ thì vấn đề bảo mật cần được chú ý ngay từ đầu chứ không phải được chú ý ngay từ đầu chứ không phải là code xong rồi mới nghĩ đến bảo mật nhất là đối với các ứng dụng thương mại điện tử
2.
Code , test , cuối ngày làm việc up lên server bằng các software như subversion quản lý source .
subversion ở đây là gì , phần mềm nào hỗ trợ việc này ? Có Help của phần mềm đó ko ? Tôi có thể tìm thấy nó ở đâu |
|
|
|
|
[Question] Lập kế hoạch trước khi thực hiện 1 project ! |
16/03/2007 11:25:54 (+0700) | #4 | 47078 |
L0ng3ta
Locked
|
0 |
|
|
Joined: 17/09/2002 13:47:43
Messages: 264
Location: Địa cầu
Offline
|
|
vậy vai trò của project manager vưt đi được rồi. |
|
|
|
|
[Question] Re: Lập kế hoạch trước khi thực hiện 1 project ! |
16/03/2007 14:19:28 (+0700) | #5 | 47117 |
|
SuperChicken
Elite Member
|
0 |
|
|
Joined: 11/07/2006 18:31:27
Messages: 635
Location: bottom of hell
Offline
|
|
Shogun cũng đã nói là đây chỉ áp dụng cho project vừa và nhỏ, thế nên có thể xem leader là manager cho project đó cũng đc chứ sao
Theo tui thấy phần design database là 1 trong những công đoạn quan trọng nhất, mình phải nghĩ tới trường hợp mở rộng ứng dụng, thế nên database phải design cho tốt để khi mở rộng ko cần phải thay đổi DB (đụng tới DB thì oải lắm :lol )
@jpg: subversion là những chương trình quản lý source code, ví dụ như Tortouise (hix, chỉ nhớ mang máng tên nó gần giống như con rùa, chẳng nhớ chính xác nữa :lol ). Bực cái là cái subversion server ở cty tớ lại chạy linux, trong khi project lại chạy trên windows, làm mình toàn up thẳng lên server, cái subversion để đó làm chỗ chứa source thui :lol . |
|
|
|
|
[Question] Lập kế hoạch trước khi thực hiện 1 project ! |
16/03/2007 14:33:30 (+0700) | #6 | 47120 |
|
SuperChicken
Elite Member
|
0 |
|
|
Joined: 11/07/2006 18:31:27
Messages: 635
Location: bottom of hell
Offline
|
|
À, còn cái khâu "cắt - ráp" layout cũng lắm chuyện lắm đó. Hix, không biết người khác thì sao chứ tui thì noob PS lắm, cắt cực muốn chết, đến hồi ráp lại còn khổ hơn nữa, mỗi trình duyệt hiển thị 1 kiểu khác nhau, fix đc cho trình duyệt này thì trình duyệt kia lại nhảy lung tung. Với lại ai có kinh nghiệm làm việc team ko, bày tui với nào, hixhix, dù "team" tui có ... 2 người mà tui đã thấy khó chịu rồi, ko hiểu sao tui không chịu nổi cách viết code cẩu tả, làm tui cứ phải chỉnh lại muốn chết luôn ( |
|
|
|
|
[Question] Re: Lập kế hoạch trước khi thực hiện 1 project ! |
17/03/2007 07:39:32 (+0700) | #7 | 47283 |
|
Seii TaiShogun
Member
|
0 |
|
|
Joined: 27/03/2006 09:18:27
Messages: 107
Location: Chiến trường
Offline
|
|
to jpg : xin trả lời trong tầm cỡ các công ty vừa và nhỏ
- Vai trò của team leader là phân tích các project phức tạp , định hướng các công nghệ sẽ sử dụng , các giải pháp sẽ ứng dụng vào project . Đề ra hướng giải quyết , kế hoạch thực hiện 1 project .
- Team leader không phải là người chỉ ngồi nghĩ ra các function , các class và bảo coder làm , vì nếu chỉ là người ngồi nghĩ ra các thứ đó thì không thể lên được team leader ) ) , các thứ đó bắt buộc coder nào cũng phải có trong đầu rồi . Team leader chỉ chia các module , các class ra và giao cho mỗi coder làm 1 phần . Ex : anh A viết phần class thực hiện các lệnh với MySQL , anh B viết phần xử lý session , cookie , anh C viết phần xác thực dữ liệu input , output .
- Và cuối cùng , team leader cũng phải ngồi code như các coder khác , thậm chí khi gần deadtime , team leader là người phải đua sao cho kịp , trong khi các coder có quyền đi chơi . :lol
- Nói về security , mình xin nói đến safe-coding : việc xác thực dữ liệu trước khi input , output là việc đương nhiên coder nào cũng phải tự giác làm , chứ không phải đợi kế hoạch bảo làm mới làm đâu . Ex : nhiều bạn nghĩ chỉ cần lọc các ký tự đặc biệt , còn a-z A-Z 0-9 là ok hết , thực ra chưa đủ , 1 input dự tính là họ tên thì không thể chấp nhận 0-9 ; còn output , khi query cần tránh ra cái statement tồi tề "SELECT * FROM" , hãy xác định những field nào query .
to Siêu trộm :
- Với Firefox : cần xác thực các position , nếu không browser sẽ thả trôi nổi các position không xác thực , nó không tự giác như IE đâu .
- Còn cắt layout thì xác định kích thước các DIV (nếu dùng XHTML) , các table (nếu dùng HTML standard) trước rồi cứ vào Photoshop mà bụp bụp thôi .
- Viết code mà viết cái kiểu cứ cho chạy là được sớm muộn gì cũng bị loại ra khỏi team . Bất kỳ coder nào cũng có 1 phong cách code riêng , nhưng khi join vào 1 team , phải code theo chuẩn chung của team đó .
to L0ng3ta :
- Project manager còn phải xét tới price , deadtime , không còn đơn thuần là tech nữa .
- Nếu có xét trên teamleader , hãy xét vai trò của architect . |
|
|
|
|
[Question] Lập kế hoạch trước khi thực hiện 1 project ! |
17/03/2007 08:42:12 (+0700) | #8 | 47301 |
minhhuy
Member
|
0 |
|
|
Joined: 16/03/2007 21:12:02
Messages: 10
Offline
|
|
tôi đang làm 1 trang web về ebooks bằng php ,nhưng vì là newbie nên làm lung tung hết , thiết kế template tới đâu code tới đó, chưa xác định được mục tiêu , bố trí code lung tung ben làm nảy sinh đủ vấn đề , ví dụ nhưng hiện trang của tôi chỉ hiện được phần phân trang ở phía dưới ko hiện được phía trên do bố trí code xàm , và nhiều cái khác , khó lắm ! chẳng dể chút nào , nhiều người toàn sài free sourse nên cái gì cũng thấy dể còn tự làm 100% sao mà phê quá |
|
|
|
|
[Question] Re: Lập kế hoạch trước khi thực hiện 1 project ! |
17/03/2007 09:35:11 (+0700) | #9 | 47318 |
|
SuperChicken
Elite Member
|
0 |
|
|
Joined: 11/07/2006 18:31:27
Messages: 635
Location: bottom of hell
Offline
|
|
@Shogun: tui lại thấy ráp layout cho FF thì lại dễ hơn ấy chứ :lol IE mới là "chuối" :lol
@minhhuy: đúng là làm lại 1 site từ đầu thì sẽ vất vả, nhưng dù sao cũng phải lên kế hoạch chứ, ít nhất là trong đầu bạn, cần những class gì, method nào,... Riêng tui, không phải là vì theo đúng quy trình đã học nhưng lúc nào tui cũng design DB rồi đến class, xong thì code những đoạn xử lý trước rồi mới ráp vào layout chứ tui thấy "thiết kế template tới đâu code tới đó" thì e lại càng khó hơn, chẳng hạn bạn cần function của những class cơ bản (như class giao tiếp với DB), không lẽ lại bỏ dở đó, ngồi quay lại viết cái function đó, lúc đó công việc bị cắt ngang có phải khó hơn không? |
|
|
|
|
[Question] Lập kế hoạch trước khi thực hiện 1 project ! |
17/03/2007 12:27:01 (+0700) | #10 | 47381 |
|
Seii TaiShogun
Member
|
0 |
|
|
Joined: 27/03/2006 09:18:27
Messages: 107
Location: Chiến trường
Offline
|
|
to minhhuy :
- Bạn thử khoan code tiếp , hãy dành ra ít phút viết 1 bản kế hoạch , post lên đây để mọi người cùng xem và góp ý cho bạn , có lẽ sau đó công việc sẽ nhanh chóng , dễ dàng hơn với bạn .
Tới giờ vẫn chưa có ai post bản kế hoạch lên cả . Ai có ý định làm website thì viết kế hoạch đi , sẵn dịp này tập làm việc có kế hoạch luôn , sẽ tốt cho những project lớn sau này . |
|
|
|
|
[Question] Re: Lập kế hoạch trước khi thực hiện 1 project ! |
17/03/2007 15:25:15 (+0700) | #11 | 47415 |
114v
Member
|
0 |
|
|
Joined: 08/07/2006 23:27:00
Messages: 191
Offline
|
|
Seii TaiShogun wrote:
khi query cần tránh ra cái statement tồi tề "SELECT * FROM" , hãy xác định những field nào query .
- Với Firefox : cần xác thực các position , nếu không browser sẽ thả trôi nổi các position không xác thực , nó không tự giác như IE đâu .
Vậy em muốn select hết cũng phải viết hết ra hả anh? Em hình dung như thế này. Khi thực thi câu lệnh SQL, nếu thấy *, lập tức bụp 1 cái để lấy hết, còn nếu liệt kê field ra thì nó phải so sánh xem cái này, cái này có trong CSDL ko... chắc là tốn thời gian hơn.
position như thế nào anh? em thấy nó có 5 loại, không biết chọn loại nào. Kinh nghiệm của em thì thằng Firefox là chúa chuẩn xác, đặt bao nhiêu pixel thì nó lấy bấy nhiêu, nếu dư thì đè lên, còn thằng IE thì tự động xếp tầng nên không thấy được lỗi đó.
Em thì chưa làm dự án nào ra hồn, nhưng đây là các bước em làm:
- Thiết kế CSDL.
- Thiết kế giao diện và template engine sao cho phù hợp.
- Viết code, trong quá trình viết chèn thử CSDL, viết chỗ nào test luôn chỗ đó. |
|
|
|
|
[Question] Lập kế hoạch trước khi thực hiện 1 project ! |
18/03/2007 05:25:12 (+0700) | #12 | 47518 |
|
Seii TaiShogun
Member
|
0 |
|
|
Joined: 27/03/2006 09:18:27
Messages: 107
Location: Chiến trường
Offline
|
|
to 114v :
- Safe-coding là để security , mà muốn security thì phải chấp nhận hy sinh 1 phần hiệu suất , tốc độ . Nhưng đây là với các bước quan trọng , còn chuyện SELECT thì bạn cứ thử query 1000 lần 2 giải pháp đó coi , xem nó chênh lệch nhau được mấy mili second .
- Thử thay thế standard = XHTML là sẽ nếm mùi căn chỉnh từng pixel ngay mà .
- Cái kế hoạch phải chi tiết hơn 1 chút bạn à :
. Thiết kế giao diện : design layout , cắt layout , ráp .
. Template engine thì đa số là sử dụng các open source chứ còn tự code ra 1 cái template engine ra hồn thì cũng đòi hỏi 1 trình độ nhất định .
. Viết code : viết class xử lý những gì , module xử lý những gì .
- Nói tóm lại : kế hoạch không thể viết trong vài dòng ngắn ngủi như bạn đâu , và mỗi loại project có cách lập kế hoạch khác nhau , bạn còn chưa nêu kế hoạch bạn đưa ra là dành cho project nào . |
|
|
|
|
[Question] Re: Lập kế hoạch trước khi thực hiện 1 project ! |
18/03/2007 07:50:36 (+0700) | #13 | 47542 |
|
LocNguyen
Member
|
0 |
|
|
Joined: 25/02/2007 00:57:22
Messages: 11
Offline
|
|
mình thấy mô hình của shogun giống mô hình thác quá. Nghĩa là thực hiện từ đầu tới cuối sau đó nghiệm thu vào giao cho khách hàng.
vậy nếu khi giao mà khách hàng không đồng ý, họ chỉ ra vài điểm không hài lòng liên quan đến cốt lỏi của project thì sao ? mình lại phải bắt đầu từ đầu. Điều nầy khó khăn như vượt thác vậy.
Theo mình thì chúng ta nên áp dụng mô hình xoắn ốc, nghĩa là khi thực hiện xong một nghiệp vụ nào sẽ đưa khách hàng bảng demo của nghiệp vụ đó, sau khi kiểm tra khách hàng ko đồng ý chúng ta sửa lại vẫn mất nhiều thời gian.
Tóm lại mình thấy cách của shogun rất chuẩn nhưng cần phải liên hệ với khách hàng để kiểm tra thường xuyên. "khách hàng là thượng đế mà" ) |
|
|
|
|
[Question] Lập kế hoạch trước khi thực hiện 1 project ! |
18/03/2007 08:12:48 (+0700) | #14 | 47550 |
|
Seii TaiShogun
Member
|
0 |
|
|
Joined: 27/03/2006 09:18:27
Messages: 107
Location: Chiến trường
Offline
|
|
Seii TaiShogun wrote:
4/ Phần nghiệm thu :
- Đưa demo cho khách hàng coi . Chỉnh sửa lại theo yêu cầu của khách hàng . Và cuối cùng là lấy $$$ (cái này sale lấy , coder đừng hòng ) .
Bạn không đọc kỹ . Và hình như bạn cũng chưa từng tham gia làm 1 project có kế hoạch bao giờ .
Shogun nói như vậy tại sao :
1/ Mô hình thác , mô hình xoắn ốc : Shogun chưa nghe qua 2 mô hình này .
2/
- Ví dụ : bạn design layout , khách hàng không thích => làm lại , xong lại không thích nữa => làm lại nữa , cứ như vậy vài chục lần bạn chịu nổi không , cho nên khi làm freelancer , outsouring có 1 điều luật bất thành văn là sau khi xong bản demo (đương nhiên bản demo này đã làm được tất cả các chức năng khách hàng yêu cầu ) , khách hàng chỉ có quyền yêu cầu modify , chứ không có quyền yêu cầu build lại từ đầu .
- Ví dụ : xong layout , không hài lòng , nói không hài lòng phần nào (banner , button , color ...) , và chỉ modify lại phần đó theo ý khách hàng , không có chuyện không hài lòng nguyên cái layout vì trước khi làm layout 2 bên đã cùng trao đổi và thống nhất các yếu tố cơ bản rồi .
- Ví dụ : xong phần code , thấy thiếu module (ví dụ module search theo tính năng ) thì thêm module , không có chuyện code lại từ đầu vì 2 bên đã thống nhất project có những chức năng gì rồi .
3/ Xong phần nào đưa cho khách hàng coi ngay => không thể .
- Lý do : xong class thực hiện các hàm mysql đưa cho khách hàng coi liệu có hiểu không ?
4/ Khách hàng chỉ ra sai sót trong cốt lõi hệ thống :
- Cốt lõi nghĩa là phần code , mà phần code mà để sai sót có thể nhìn thấy bởi 1 user bình thường thì dẹp công ty đi là vừa .
- Còn sai sót trong phần security , trong streaming ... thì khách hàng nhìn thấy được nghĩa là khách hàng đọc được code , am hiểu về safe-coding , streaming => tự làm luôn đi .(ngoại trừ nhận outsouring từ các coder đàn anh , đương nhiên họ đọc được code , nhưng Shogun làm thì thấy toàn là test xem chạy ok chưa , ok là send cho khách luôn , không ai rảnh ngồi đọc code lại , công đọc lại thà tự làm) |
|
|
|
|
[Question] Lập kế hoạch trước khi thực hiện 1 project ! |
19/03/2007 08:13:39 (+0700) | #15 | 47719 |
vinhsteven
Member
|
0 |
|
|
Joined: 09/03/2007 23:32:04
Messages: 4
Offline
|
|
Em là newbie nên em hỏi một chút, có j mấy anh đừng la tội nghiệp. Khi các anh hoàn thành cái project đó và để khách hàng test OK, nhưng làm sao khách hàng biết được nó có đảm bảo độ an toàn hay chưa? Lỡ sau này có phát sinh sự cố j thì sẽ làm sao? |
|
|
|
|
[Question] Lập kế hoạch trước khi thực hiện 1 project ! |
19/03/2007 22:06:34 (+0700) | #16 | 47812 |
|
conmale
Administrator
|
Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
|
|
Bài này hay lắm ).
Seii TaiShogun wrote:
1/ Phần khảo sát :
- Xác định loại project : website e-commerce / advertisement / CMS / forum / multimedia .
- Xác định đối tượng sẽ truy cập website : everyone / customer / only private member .
- Xác định nhu cầu upgrade / thay đổi layout của project có thường xuyên không .
- Xác định những thông tin , nội dung , mặt hàng sẽ đưa lên website . Số lượng sản phẩm , số lượng hit dự tính trong 1 ngày để order hosting / server .
Phần này tối quan trọng. Nếu không nắm 100% requirement là cái gì mà đi sâu vào thực hiện là hỏng (vì phí thời gian + tiền bạc). Sau phần này có thể có 1 phần chuyển tiếp gọi là "prototype" (phần làm bảng mẫu). Nó có thể có vài trang giao diện, vài chức năng đơn giản để khách hàng xem để họ đánh giá.
Sau giai đoạn "prototype" là giai đoạn "scoping" (đánh giá tổng quát) về thời gian, tài nguyên, nhân lực, tiền bạc... để tiến hành dự án. "scoping" phải thỏa mãn được đòi hỏi của khách hàng và phải đưa vào khoảng "dự phòng" nếu khách hàng đổi ý.
Seii TaiShogun wrote:
2/ Phần thi công :
a. Design database :
- Phần này trong các công ty làm việc teamwork là việc của teamleader .
- Có nhiều bạn vừa code vừa design db , nhưng như vậy sẽ làm db không thống nhất , dễ thiếu sót .
- Nên tìm hiểu , xác định các loại data cần thiết và design db đầu tiên .
b. Design layout :
- Phần này là của designer , sau khi design layout sẽ đưa cho khách hàng duyệt , qua các khâu chỉnh sửa , tới khi hoàn tất thì bắt đầu cắt layout để làm template .
- CSS , DHTML , XHTML cũng được làm trong công đoạn này .
c. Xác định module , class , function cần thiết :
- Phần này cũng là của teamleader .
- Xác định , đưa ra chuẩn , pattern , quy chế chung về tên biến , tên class , ... để tiện lợi cho việc ráp code .
d. Code các module , class , function :
- Bây giờ mới là phần của coder .
- Code , test , cuối ngày làm việc up lên server bằng các software như subversion quản lý source .
- Teamleader sẽ view lại sơ qua các phần đã hoàn tất trong ngày , xem xem có phần nào cần làm lại hay chỉnh sửa ko .
Phần này gần như các mảng có thể thực hiện song song nhau. Không nhất thiết là database phải được design đầu tiên. Việc đưa ra chuẩn lúc này không đúng lúc. Chuẩn phải được thống nhất cho mọi project, không nên tạo "chuẩn" cho từng project.
Seii TaiShogun wrote:
3/ Phần hoàn thành :
- Sau khi tất cả các module , class , function đã xong , teamleader phối hợp với coder ráp code , test lại trên sản phẩm hoàn chỉnh , Fix các lỗi security trước khi bàn giao .
Test có nhiều dạng test cần thiết. Test chức năng, test khả năng chịu load, test bảo mật.... Đúng ra giai đoạn test là giai đoạn chiếm thời gian khá lớn trong công trình.
Seii TaiShogun wrote:
4/ Phần nghiệm thu :
- Đưa demo cho khách hàng coi . Chỉnh sửa lại theo yêu cầu của khách hàng . Và cuối cùng là lấy $$$ (cái này sale lấy , coder đừng hòng ) .
Phần nghiệm thu này cũng có phần test, gọi là UAT (User Acceptance Testing). Đôi khi trong quá trình UAT, công trình phải quay ngược lại phần design và điều chỉnh lại cho đúng với đòi hỏi (và thay đổi từ khách hàng). Mỗi lần như thế (development cycle), các tiến trình lại diễn ra. Trong suốt quá trình này, project manager luôn luôn đi sát để kiểm tra, phân hoạch thế nào cho thời hạn, tài nguyên, nhân sự vẫn sát với điều đã thỏa thuận ban đầu. Tech lead / architect phải đi sát để xem và điều chỉnh những sai số từ design đến ứng dụng. Coder phải bám sát với convention và công tác mình được phân bổ.
Thân. |
|
What bringing us together is stronger than what pulling us apart. |
|
|
|
[Question] Re: Lập kế hoạch trước khi thực hiện 1 project ! |
19/03/2007 23:09:31 (+0700) | #17 | 47828 |
minhhuy
Member
|
0 |
|
|
Joined: 16/03/2007 21:12:02
Messages: 10
Offline
|
|
Nếu làm việc theo nhóm mà đòi hỏi phải lập trình hướng đối tượng thì sao àh? em lập trình theo function quen rồi , lập trình hướng đối tượng thấy lạ lẳm quá |
|
|
|
|
[Question] Re: Lập kế hoạch trước khi thực hiện 1 project ! |
19/03/2007 23:19:40 (+0700) | #18 | 47829 |
minhhuy
Member
|
0 |
|
|
Joined: 16/03/2007 21:12:02
Messages: 10
Offline
|
|
114v wrote:
Seii TaiShogun wrote:
khi query cần tránh ra cái statement tồi tề "SELECT * FROM" , hãy xác định những field nào query .
- Với Firefox : cần xác thực các position , nếu không browser sẽ thả trôi nổi các position không xác thực , nó không tự giác như IE đâu .
Vậy em muốn select hết cũng phải viết hết ra hả anh? Em hình dung như thế này. Khi thực thi câu lệnh SQL, nếu thấy *, lập tức bụp 1 cái để lấy hết, còn nếu liệt kê field ra thì nó phải so sánh xem cái này, cái này có trong CSDL ko... chắc là tốn thời gian hơn.
position như thế nào anh? em thấy nó có 5 loại, không biết chọn loại nào. Kinh nghiệm của em thì thằng Firefox là chúa chuẩn xác, đặt bao nhiêu pixel thì nó lấy bấy nhiêu, nếu dư thì đè lên, còn thằng IE thì tự động xếp tầng nên không thấy được lỗi đó.
Em thì chưa làm dự án nào ra hồn, nhưng đây là các bước em làm:
- Thiết kế CSDL.
- Thiết kế giao diện và template engine sao cho phù hợp.
- Viết code, trong quá trình viết chèn thử CSDL, viết chỗ nào test luôn chỗ đó.
Bạn chứa hiểu ý của anh ấy rùi ! nếu bạn dùng SELECT * FROM thì có bao nhiêu nó lôi ra hết trong khi bạn chỉ cần id , vậy thì quá lảng phí tài nguyên máy chủ,nếu là 1 project lớn thì sự lảng phí này là thảm họa
Ngoài ra tôi còn 1 điều cần tránh khi viết function là có quá nhiều tham số vì như vậy sẽ rất khó nhớ trật tự các tham số , thay vào đó người ta hay dùng mảng , mình đang nói về php , các ngôn ngử khác ko biết thế nào vì php có thể dùng 1 chuổi để làm key cho mảng |
|
|
|
|
[Question] Re: Lập kế hoạch trước khi thực hiện 1 project ! |
20/03/2007 00:39:53 (+0700) | #19 | 47842 |
jpg
Member
|
0 |
|
|
Joined: 03/07/2006 21:35:55
Messages: 89
Offline
|
|
minhhuy wrote:
Nếu làm việc theo nhóm mà đòi hỏi phải lập trình hướng đối tượng thì sao àh? em lập trình theo function quen rồi , lập trình hướng đối tượng thấy lạ lẳm quá
Chào bạn ! Khi bạn tham gia một dự án thì không có chuyện "em quen thế này ,hay em quen thế kia " ,
Câu này của Seii TaiShogun nhe (Tớ ko nhớ rõ là ở đâu):
Mỗi coder có phong cách viết code riêng như khi hoàn nhập vào đội thì phải tuân theo chuẩn chung mà người quản lí quy định như cách đặt tên hàm ,biến,class bởi bạn viết code người đọc ko phải là bạn mà là một người khác nên phải viết sao cho :
+rành mạch dễ hiểu
+dễ bắt lỗi
+dễ chỉnh sửa thêm yêu cầu
|
|
|
|
|
[Question] Re: Lập kế hoạch trước khi thực hiện 1 project ! |
20/03/2007 02:52:52 (+0700) | #20 | 47864 |
|
SuperChicken
Elite Member
|
0 |
|
|
Joined: 11/07/2006 18:31:27
Messages: 635
Location: bottom of hell
Offline
|
|
Xài PHP mà ko wen OOP hả bạn, vậy thì hơi căng à nhe (không chỉ riêng PHP, mà hiện giờ nếu ko OOP thì quả thật sẽ gặp nhiều khó khăn lắm đó, ráng học cho kỹ phần đó vào).
Còn Shogun, tui không tin là bạn lại chưa nghe mô hình thác đổ và xoắn ốc )
Anh conmale nói cũng chí lý lắm, phần requirement analys cũng quan trọng lắm đấy, phần này mình cũng thường hỏi kỹ "khách hàng" (thật ra khách hàng ở đây là bên sale-marketing của cty mình :lol xem họ cần những chức năng gì, có mở rộng nhu cầu sử dụng về sau hay không, từ đó thiết kế DB sẽ tổng quát hơn). |
|
|
|
|
[Question] Re: Lập kế hoạch trước khi thực hiện 1 project ! |
20/03/2007 10:00:41 (+0700) | #21 | 47955 |
114v
Member
|
0 |
|
|
Joined: 08/07/2006 23:27:00
Messages: 191
Offline
|
|
minhhuy wrote:
114v wrote:
Seii TaiShogun wrote:
khi query cần tránh ra cái statement tồi tề "SELECT * FROM" , hãy xác định những field nào query .
- Với Firefox : cần xác thực các position , nếu không browser sẽ thả trôi nổi các position không xác thực , nó không tự giác như IE đâu .
Vậy em muốn select hết cũng phải viết hết ra hả anh? Em hình dung như thế này. Khi thực thi câu lệnh SQL, nếu thấy *, lập tức bụp 1 cái để lấy hết, còn nếu liệt kê field ra thì nó phải so sánh xem cái này, cái này có trong CSDL ko... chắc là tốn thời gian hơn.
position như thế nào anh? em thấy nó có 5 loại, không biết chọn loại nào. Kinh nghiệm của em thì thằng Firefox là chúa chuẩn xác, đặt bao nhiêu pixel thì nó lấy bấy nhiêu, nếu dư thì đè lên, còn thằng IE thì tự động xếp tầng nên không thấy được lỗi đó.
Em thì chưa làm dự án nào ra hồn, nhưng đây là các bước em làm:
- Thiết kế CSDL.
- Thiết kế giao diện và template engine sao cho phù hợp.
- Viết code, trong quá trình viết chèn thử CSDL, viết chỗ nào test luôn chỗ đó.
Bạn chứa hiểu ý của anh ấy rùi ! nếu bạn dùng SELECT * FROM thì có bao nhiêu nó lôi ra hết trong khi bạn chỉ cần id , vậy thì quá lảng phí tài nguyên máy chủ,nếu là 1 project lớn thì sự lảng phí này là thảm họa
Ngoài ra tôi còn 1 điều cần tránh khi viết function là có quá nhiều tham số vì như vậy sẽ rất khó nhớ trật tự các tham số , thay vào đó người ta hay dùng mảng , mình đang nói về php , các ngôn ngử khác ko biết thế nào vì php có thể dùng 1 chuổi để làm key cho mảng
Vậy là bạn càng không hiểu ý của mình. Ý là thế này, trong bảng có các field sau:
id, name, pass, localtion, email.................. gì gì đó nữa, tương đối nhiều.
Giờ muốn lấy hết tất cả các field vậy nên viết hết ra hay là nên dùng * ???
Cách bạn nói cũng chưa hẳn hay, bạn biết tới hàm parse_str chưa ) gọn nhẹ và dễ nhìn, thích hợp cho hàm. |
|
|
|
|
[Question] Re: Lập kế hoạch trước khi thực hiện 1 project ! |
20/03/2007 16:35:50 (+0700) | #22 | 48000 |
|
conmale
Administrator
|
Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
|
|
114v wrote:
minhhuy wrote:
114v wrote:
Seii TaiShogun wrote:
khi query cần tránh ra cái statement tồi tề "SELECT * FROM" , hãy xác định những field nào query .
- Với Firefox : cần xác thực các position , nếu không browser sẽ thả trôi nổi các position không xác thực , nó không tự giác như IE đâu .
Vậy em muốn select hết cũng phải viết hết ra hả anh? Em hình dung như thế này. Khi thực thi câu lệnh SQL, nếu thấy *, lập tức bụp 1 cái để lấy hết, còn nếu liệt kê field ra thì nó phải so sánh xem cái này, cái này có trong CSDL ko... chắc là tốn thời gian hơn.
position như thế nào anh? em thấy nó có 5 loại, không biết chọn loại nào. Kinh nghiệm của em thì thằng Firefox là chúa chuẩn xác, đặt bao nhiêu pixel thì nó lấy bấy nhiêu, nếu dư thì đè lên, còn thằng IE thì tự động xếp tầng nên không thấy được lỗi đó.
Em thì chưa làm dự án nào ra hồn, nhưng đây là các bước em làm:
- Thiết kế CSDL.
- Thiết kế giao diện và template engine sao cho phù hợp.
- Viết code, trong quá trình viết chèn thử CSDL, viết chỗ nào test luôn chỗ đó.
Bạn chứa hiểu ý của anh ấy rùi ! nếu bạn dùng SELECT * FROM thì có bao nhiêu nó lôi ra hết trong khi bạn chỉ cần id , vậy thì quá lảng phí tài nguyên máy chủ,nếu là 1 project lớn thì sự lảng phí này là thảm họa
Ngoài ra tôi còn 1 điều cần tránh khi viết function là có quá nhiều tham số vì như vậy sẽ rất khó nhớ trật tự các tham số , thay vào đó người ta hay dùng mảng , mình đang nói về php , các ngôn ngử khác ko biết thế nào vì php có thể dùng 1 chuổi để làm key cho mảng
Vậy là bạn càng không hiểu ý của mình. Ý là thế này, trong bảng có các field sau:
id, name, pass, localtion, email.................. gì gì đó nữa, tương đối nhiều.
Giờ muốn lấy hết tất cả các field vậy nên viết hết ra hay là nên dùng * ???
Cách bạn nói cũng chưa hẳn hay, bạn biết tới hàm parse_str chưa ) gọn nhẹ và dễ nhìn, thích hợp cho hàm.
Bất cứ sub-process nào đòi hỏi CPU (cpu-bound) đều cần phải xét kỹ. parse_str (hoặc một hàm tương tự nào khác) xử lý một chuỗi rồi trả về giá trị của các fields, xem thì gọn nhưng nếu ứng dụng đó phức tạp, hàm này được gọi nhiều thì tài nguyên sẽ hao tổn rất lớn. Nếu chỉ pass field values thì các value này được dùng ngay mà không phải tốn thời gian process thêm cái gì khác trước khi có thể dùng. Đó là chưa kể phần delay sẽ xảy ra nữa.
Thân. |
|
What bringing us together is stronger than what pulling us apart. |
|
|
|
[Question] Re: Lập kế hoạch trước khi thực hiện 1 project ! |
20/03/2007 23:36:36 (+0700) | #23 | 48071 |
|
SuperChicken
Elite Member
|
0 |
|
|
Joined: 11/07/2006 18:31:27
Messages: 635
Location: bottom of hell
Offline
|
|
Hì, đại ca conmale mà bắt bẻ là cấm có chạy đâu đc :lol . Bạn nghĩ sao mà lại nói dùng parse_str "gọn nhẹ" vậy, nếu đã học qua môn "Compiler" chắc bạn đã không nói vậy ) . |
|
|
|
|
[Question] Re: Lập kế hoạch trước khi thực hiện 1 project ! |
21/03/2007 14:43:12 (+0700) | #24 | 48301 |
114v
Member
|
0 |
|
|
Joined: 08/07/2006 23:27:00
Messages: 191
Offline
|
|
|
|
[Question] Re: Lập kế hoạch trước khi thực hiện 1 project ! |
21/03/2007 19:58:26 (+0700) | #25 | 48317 |
|
conmale
Administrator
|
Joined: 07/05/2004 23:43:15
Messages: 9353
Location: down under
Offline
|
|
114v wrote:
Em vẫn chưa hiểu sao lại nói nó chậm nhỉ, cũng chỉ là tách array ra thôi mà được cái là linh động hơn khi dùng một đống tham số trong hàm. Em nghĩ cái này nhẹ hơn cái xử lý statement trong MYSQLi ấy chứ )
Vậy... tách array không hảo tổn tài nguyên à? ).
Giả sử em có một ứng dụng, ứng dụng này có 100 hàm, mỗi hàm dùng parse_str vài chục lần. Trong quá trình hoạt động, nếu có nhiều người access ứng dụng này, con số sử dụng parse_str sẽ gia tăng theo cấp số. Bao nhiêu tài nguyên sẽ được sử dụng để parse hàng trăm hoặc hàng ngàng entries?
Riêng phần xử lý statement cho SQL có tính chất hoàn toàn khác, không thể so sánh được.
Thân. |
|
What bringing us together is stronger than what pulling us apart. |
|
|
|
[Question] Re: Lập kế hoạch trước khi thực hiện 1 project ! |
23/03/2007 08:00:29 (+0700) | #26 | 48721 |
minhhuy
Member
|
0 |
|
|
Joined: 16/03/2007 21:12:02
Messages: 10
Offline
|
|
cách mà tôi nói thật tình không phải tôi nghĩ ra , mà là tôi đọc được trong 1 ebook tiếng anh . ebook ấy rất hay , mình nghĩ cách đó vừa đơn giản và hiệu quả
còn về vấn đề "select * " hay select từng field thì có phải ý bạn là trong table của bạn có 8 field mà bạn cần lấy ra đến 6,7 field nên bạn nghĩ là dùng select * cho tiện đúng không ,nhưng bạn có nghĩ đến trường hợp bạn cần láy ra 1 vài thông tin trên table khác thông qua khóa ngoại hay chưa , mình không rành lắm về CSDL nhưng mình đảm bảo là khi bạn làm 1 đề tài lớn 1 chút cần phải thiết kế 1 CSDL có cả chục table thi bạn sẽ gặp nhiều vấn đề khi dùng "select *" .
|
|
|
|
|
[Question] Re: Lập kế hoạch trước khi thực hiện 1 project ! |
23/03/2007 23:07:35 (+0700) | #27 | 48843 |
114v
Member
|
0 |
|
|
Joined: 08/07/2006 23:27:00
Messages: 191
Offline
|
|
minhhuy wrote:
cách mà tôi nói thật tình không phải tôi nghĩ ra , mà là tôi đọc được trong 1 ebook tiếng anh . ebook ấy rất hay , mình nghĩ cách đó vừa đơn giản và hiệu quả
còn về vấn đề "select * " hay select từng field thì có phải ý bạn là trong table của bạn có 8 field mà bạn cần lấy ra đến 6,7 field nên bạn nghĩ là dùng select * cho tiện đúng không ,nhưng bạn có nghĩ đến trường hợp bạn cần láy ra 1 vài thông tin trên table khác thông qua khóa ngoại hay chưa , mình không rành lắm về CSDL nhưng mình đảm bảo là khi bạn làm 1 đề tài lớn 1 chút cần phải thiết kế 1 CSDL có cả chục table thi bạn sẽ gặp nhiều vấn đề khi dùng "select *" .
Đã nói ở trên là lấy hết, 8 field thì lấy hết 8 cái luôn. Khóa ngoại thì có gì đâu, trong LEFT JOIN thường thấy kiểu a.*,b.*,c.* vân vân.
Còn cái ebook kia là gì vậy bạn, ebook nhiều lắm, không biết cái ấy rất hay nó tên gì
minhhuy wrote:
Ngoài ra tôi còn 1 điều cần tránh khi viết function là có quá nhiều tham số vì như vậy sẽ rất khó nhớ trật tự các tham số , thay vào đó người ta hay dùng mảng , mình đang nói về php , các ngôn ngử khác ko biết thế nào vì php có thể dùng 1 chuổi để làm key cho mảng
conmale wrote:
Vậy... tách array không hảo tổn tài nguyên à? .
Giả sử em có một ứng dụng, ứng dụng này có 100 hàm, mỗi hàm dùng parse_str vài chục lần. Trong quá trình hoạt động, nếu có nhiều người access ứng dụng này, con số sử dụng parse_str sẽ gia tăng theo cấp số. Bao nhiêu tài nguyên sẽ được sử dụng để parse hàng trăm hoặc hàng ngàng entries?
Riêng phần xử lý statement cho SQL có tính chất hoàn toàn khác, không thể so sánh được.
Thân.
Để thuận lợi thì phải chấp nhận tốn, mà nếu hàm dùng các tham số như bình thường cũng tốn tương đương vậy. Kiểu viết OOP cũng tốn khá nhiều tài nguyên mà người ta vẫn viết Em cũng thấy một số script để format cái URL cho SEO cũng hay dùng parse_str. Nói chung cũng tùy cái mà dùng chứ không nên cái nào cũng dùng. Thảo luận vấn đề này hơi lạc đề so với topic Nếu anh conmale thích châm thì anh viết 1 bài về tối ưu PHP, MySQL để mọi người cùng châm |
|
|
|
|
[Question] Lập kế hoạch trước khi thực hiện 1 project ! |
31/03/2007 03:13:15 (+0700) | #28 | 50594 |
|
Mr. dang
Member
|
0 |
|
|
Joined: 27/08/2006 20:17:39
Messages: 2
Offline
|
|
nãy giờ đọc toàn thấy mấy đại ca cò kè linh tinh lạc đề, quay lại chuyện chính đi
em hiện là sv, đang táy máy cái php chơi, em định viết 1 cái code blog ajax, nhưng hồi giờ chưa làm trong group lần nào nên không có kinh nghiệm. mí anh nếu có thể thì giúp em một bản kế hoạch chi tiết được không, sẵn tiện để làm ví dụ luôn, chớ đọc đi đọc lại bài hướng dẫn mà em vẫn cứ thấy mơ hồ lém |
|
|
|