Phương pháp / công cụ để tự phát triển [đóng]


10

Giả sử bạn phải tự phát triển một phần mềm có kích thước trung bình. Giống như nếu đó là một dự án cá nhân bạn muốn thực hiện.

Những phương pháp / công cụ nào bạn sẽ sử dụng để xác định những gì cần được phát triển, học hỏi và có một ý tưởng toàn cầu về những gì hệ thống cũng như chi tiết của nó?

Về cơ bản để giữ cho bản thân theo dõi và không bị lạc trên đường.


3
Bút chì, giấy và bộ não của tôi. Có một bảng trắng giúp. Nghiêm túc mà nói, rất nhiều công việc thiết kế của tôi xảy ra ngay trong IDE. Bạn có một câu hỏi cụ thể, dựa trên một vấn đề bạn đang gặp phải không? Nó sẽ giúp chúng tôi trả lời câu hỏi nếu chúng tôi biết cụ thể vấn đề bạn đang cố gắng giải quyết.
Robert Harvey

@RobertHarvey haha ​​Điều đó rất đúng. Vâng, loại. Tôi đang phát triển một ý tưởng mà tôi có, dự án cá nhân. Đó chỉ là phần mềm lớn hơn tôi tưởng tượng và có những thứ tôi vẫn sẽ phải học cách nó hoạt động và sau đó tìm ra cách phát triển nó.
Cassio

1
@RobertHarvey Các vấn đề chính có lẽ là thiếu động não về các chi tiết, theo dõi những gì cần phải làm và quan điểm về toàn bộ hệ thống.
Cassio

2
Tôi chắc chắn 99,9% rằng chúng tôi có câu hỏi này trong một hoặc hai câu hỏi khác, nhưng tôi không thể tìm thấy chúng vào lúc này.
Adam Lear

4
Tôi luôn cố gắng để bị lạc trên đường. Đó là một con đường học tập nhanh.
Joel Etherton

Câu trả lời:


5

Thông thường tôi chỉ sử dụng Mercurial, nếu tôi muốn một tính năng tôi chỉ cần thêm nó và nếu tôi không muốn nó nữa tôi chỉ cần loại bỏ nó. Ngoài ra, tôi cố gắng viết bình luận cam kết của mình thật tốt để không bị lạc.


Yup - Mercurial là một trong những công cụ có cảm giác như chúng được tạo ra bởi Apple :) Đơn giản nhưng mạnh mẽ, đẹp mắt nhưng hữu ích ...
Rook

4

Nó có thể dễ dàng phát triển vượt quá tầm chú ý của bạn. Không phải là nhịp , bề rộng .

Thật khó để xem xét quá nhiều yếu tố cùng một lúc .

Và rồi ... nó trở thành một tàu lượn siêu tốc hồi quy .
Tất cả mọi thứ bạn làm phá vỡ những điều trước đó, và quay trở lại không giúp đỡ.

Để tránh điều đó, bạn nên tích cực kiểm tra hồi quy .
Tự động. (Bạn không thể làm điều đó khác đi và tỉnh táo)

Kiểm tra sẽ thêm một căng thẳng khó khăn cho năng lượng của bạn.

Nếu dự án là tất cả về UI ... có lẽ bạn sẽ nướng:

  • Kiểm tra giao diện người dùng là khó .
  • Kiểm tra giao diện người dùng tự động là ... vẫn còn khó .

Ý tưởng chưa được kiểm tra vào phút cuối cho các dự án tập trung vào UI
Đăng ký người thânthời gian rảnhthích nhấp chuột như một người kiểm tra giao diện người dùng.
Tôi đang nghĩ "thiếu niên" ở đây.

Các vấn đề khác:

  • Nó sẽ mất mãi mãi .
  • Bạn sẽ đối đầu với khối nhà văn .
    (Nó không thực sự tồn tại như một điều kiện, đó là một người hiểu sai phổ biến gắn liền với sự thiếu kỷ luật của họ )

Nếu bạn đã quen và yêu thích một số loại kiểm soát phiên bản , hãy sử dụng nó.
Bắt đầu học một cái bây giờ sẽ làm bạn mất tập trung .

Vẽ đồ thị cho bạn những ý tưởng, như đã chỉ ra, có thể giúp ích.

Tôi đã sử dụng Freemind , CMaps , XMind , Yed , graphviz , và ... cái gì khác.

XMind là vô nghĩa:

  • rất nhanh để chèn dữ liệu vào
  • bố trí tự động
  • cố gắng hết sức để làm cho bạn ở lại trên chủ đề
  • rất tốt để ghi chép trong một bài học (tôi rất mong tôi có nó ở trường đại học )
  • vẫn khó sử dụng trong khi làm bạn suy nghĩ về điều gì đó bạn chưa rõ ở đó.

Một cây bút chì và một cuốn sổ tay vẫn đạt điểm khá tốt trong top ten của tôi:

  • Tôi quét nhiều ghi chú của tôi
  • Tôi làm nhiều bản vẽ nhỏ.

    • (Nếu bạn nghĩ với hình ảnh, bạn có thể không bao giờ tìm thấy một công cụ động não hoàn thành)

Như một phương sách cuối cùng, bạn luôn có thể chuẩn bị các điểm mạnh cho tiêu dùng của riêng bạn :)


+1. Tuy nhiên, bạn có bất cứ đề xuất nào về vấn đề "làm cho bạn suy nghĩ về điều gì đó bạn chưa rõ ở đó" không?
Cassio

@Cassio Tôi chuyển đổi qua lại giữa xmind và bút chì + sổ phác thảo, tạo danh sách nhọn trong libreoffice, viết ra các ví dụ và kiểm tra một số triển khai gần đúng. Đó là một quá trình khá tốn thời gian, nhưng bạn phải loại bỏ một số dòng suy nghĩ không chính đáng để đi đến một cái gì đó cảm thấy đúng. (PS: giấy nhàu nát trước khi ném nó là cathartic)
ZJR

1
@ZJR Thật vậy. Đôi khi tôi chỉ sợ viết những thứ tôi không cần và lãng phí thời gian cho nó, nhưng bây giờ tôi thấy rằng đó là cách quá trình hoạt động. Ban đầu chúng tôi viết một số thứ vô dụng nhưng chúng tôi cải thiện theo thời gian. :) Cảm ơn!
Cassio

3

Lập trình chữ.

Người thực hành lập trình biết chữ có thể được coi là một nhà tiểu luận, mối quan tâm chính của nó là với sự thể hiện và xuất sắc của phong cách. Một tác giả như vậy, với từ điển đồng nghĩa trong tay, chọn tên của các biến một cách cẩn thận và giải thích ý nghĩa của từng biến. Anh ấy hoặc cô ấy phấn đấu cho một chương trình dễ hiểu vì các khái niệm của nó đã được giới thiệu theo thứ tự tốt nhất cho sự hiểu biết của con người, sử dụng hỗn hợp các phương pháp chính thức và không chính thức để củng cố lẫn nhau.

Nếu bạn đang viết một bài báo (hoặc sách hoặc báo cáo hoặc tài liệu) về dự án của bạn, thì bạn có xu hướng ở lại làm nhiệm vụ.

Bắt đầu với một phác thảo về những gì bạn đang làm: sử dụng tổng quan trường hợp, phát hành 1, phát hành 2, phát hành n. Viết một bản tóm tắt các trường hợp sử dụng. Ưu tiên chúng. Đưa họ vào nước rút và phát hành.

Mỗi bản phát hành có chế độ xem trường hợp sử dụng, chế độ xem logic, chế độ xem xử lý, chế độ xem thành phần, chế độ xem triển khai. Đối với nước rút, chi tiết các trường hợp sử dụng. Xuất bản tài liệu HTML để hiển thị những gì bạn sẽ làm. Sau khi chi tiết các trường hợp sử dụng cho lần chạy nước rút, hãy viết mô hình logic. Viết mã để hỗ trợ này. Viết tài liệu xử lý. Viết mã để hỗ trợ nó. Tạo mô-đun. Viết tài liệu xem thành phần. Viết các bài kiểm tra và tài liệu hỗ trợ. Xuất bản kết quả chạy nước rút dưới dạng tài liệu HTML.

Lặp lại cho mỗi lần chạy nước rút. Xem lại và chỉnh sửa tài liệu của bạn theo thời gian.

Có rất nhiều và rất nhiều công cụ lập trình biết chữ. Họ có thể giúp bạn tạo một nguồn tạo tài liệu mã cả từ một văn bản.

Tôi sử dụng nhân sưPyLit nhưng đó là vì tôi là lập trình viên Python.


Tốt để loại bỏ một bài báo đại học ra khỏi nó và sau đó quên nó, xấu nếu có kế hoạch phát hành hoặc bảo dưỡng sản phẩm sau đó. Mọi người ở mọi nơi dù sao cũng nên sử dụng doxygen , ngay cả trên python. Nhưng đó chỉ là vì tôi là một người hâm mộ :)
ZJR

2

Nếu bạn muốn viết ra ý tưởng của mình, bạn có thể sử dụng một công cụ bản đồ tư duy như XMind hoặc FreeMind . Cả hai công cụ đều miễn phí (dành cho cá nhân cho XMind) và chúng rất tuyệt khi động não và sắp xếp ý tưởng của bạn. Điều về các công cụ này chỉ là bạn có ít cơ hội để quên một cái gì đó.

Cá nhân tôi đã sử dụng Freemind trước khi bắt đầu dự án cá nhân cuối cùng của mình. Tôi không có phương pháp cụ thể mỗi se . Tôi chỉ đưa ra ý tưởng của mình trong các buổi một giờ mỗi hai ngày. Tôi nghĩ rằng việc sắp xếp các phiên động não giúp tôi thấy rõ hơn những gì sai, những gì không thiết yếu nhưng có thể hữu ích trong các phiên bản tiếp theo, v.v.

Trong lần xác nhận mã đầu tiên của tôi, tôi cũng đã lưu tệp động não trong kho lưu trữ mã nguồn (tôi đã sử dụng bitbucket ) và luôn cập nhật những ý tưởng mới nhất của mình.


Rất tốt. Tôi đã thử nghiệm tất cả những thứ này. Cảm ơn!
Cassio

2

Coi nó như một dự án phần mềm thực sự (vì nó là một). Chỉ có một vài điều thay đổi bởi vì số lượng nhà phát triển là một. Bạn vẫn cần kiểm soát nguồn. Bạn vẫn cần một cách để tổ chức các tính năng để được thêm một lỗi để sửa. Bạn vẫn cần kiểm tra tự động để kiểm tra xem bạn không tạo hồi quy trong mã. Bạn cũng nên có một cách tự động để biên dịch mã (nếu cần), chạy thử nghiệm và xem các báo cáo.

Tôi đang làm việc trên một dự án cá nhân giống như bạn mô tả. Tôi đang sử dụng Git, Redmine, JUnit và Jenkins để đáp ứng tất cả các danh mục tôi đã mô tả. Luồng công việc của tôi là:

  • Chọn một vé để làm việc trên
  • Chi nhánh cơ sở mã
  • Phát triển mã và kiểm tra cho nhiệm vụ (cam kết thay đổi chi nhánh tại các điểm lưu tốt)
  • Hợp nhất nhánh trở lại thân cây
  • Xác minh rằng bản dựng đã thành công, các thử nghiệm đã được thông qua và không có vấn đề nào khác
  • Nói lại

Giữ mọi thứ được quản lý và tổ chức cũng quan trọng như khi có nhiều nhà phát triển. Với nhiều nhà phát triển, bạn cần tổ chức để thông tin được lan truyền đến mọi người. Khi chỉ là bạn, bạn đã có tất cả thông tin, nhưng nhớ tất cả các phần của hệ thống là khó khăn. Một hệ thống được quản lý giúp bạn dễ dàng hơn và bạn có thể tập trung vào nhiệm vụ trong tay.


2

Công cụ:

  • Hệ thống Phiên bản Điều khiển (ngay cả khi bạn là nhà phát triển duy nhất trong nhà để xe hoặc PC cá nhân tại nhà): GIT, Mercurial, Tourtoise

  • Trình chỉnh sửa với mã nguồn nổi bật, ngay cả khi bạn có IDE (Scintilla, Vim, Notepad)

  • Bảng đen, bảng trắng trong thế giới thực, một số nội dung không phù hợp với Ứng dụng Công cụ thiết kế của bạn.

  • Công cụ thiết kế: Rational Rose, Umbrello, (UML, ER,) Visio hoặc "Công cụ thiết kế dành cho nhà phát triển kém" như Power Point, Corel Draw, Open Office Draw

  • Văn bản / Mã nguồn Công cụ so sánh văn bản, ví dụ WinMerge


Rất hữu ích! Tôi đang đặt tất cả những thứ này để thực hành. Cảm ơn.
Cassio

1

Nó phụ thuộc vào cách bạn có thể phân biệt và xử lý các nhiệm vụ khác nhau, bởi vì bạn sẽ cần xem xét từng bước của quy trình phát triển.

Tôi nghĩ rằng các công cụ chỉ hữu ích nếu bạn đã biết cách sử dụng chúng và một trong những sai lầm tồi tệ nhất là học cách một công cụ hoạt động thay vì học những gì phải làm với nó.

Đầu tiên, theo tôi, bạn phải viết ra những gì bạn mong đợi phần mềm sẽ làm và đặc biệt là những gì nó sẽ không làm. Đó là một điểm rất quan trọng. Bước tiếp theo là chia hệ thống cuối cùng thành các hệ thống con thấp hơn, làm cho quá trình xây dựng dễ dàng hơn. Và cuối cùng nhưng không kém phần quan trọng, bạn sẽ cần phải chọn công cụ của mình. Về cơ bản là một IDE tốt, một VCS và một người lập mô hình dữ liệu. Bạn có thể thêm rất nhiều công cụ khác để trợ giúp, nhưng chú ý đừng bắt đầu đi sai đường.

Chà, sự khởi đầu có vẻ không hấp dẫn lắm, nhưng quá trình sẽ trở nên thú vị theo thời gian.


Vâng! Hãy nhớ rằng mã là - nếu dự án được thiết kế tốt - một phần nhỏ của toàn bộ.
Lucas Maus
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.