2010-08-23 29 views
11

Tôi làm việc cho một tổ chức khá khởi nghiệp trong một tập đoàn lớn. Nhóm này có một số kỹ sư cơ sở dữ liệu và một vài kỹ sư phần mềm (trong lĩnh vực khai thác dữ liệu). Chúng tôi đang phát triển với tốc độ nhanh, điều này đặt nhu cầu có một chiến lược kiến ​​trúc tổng thể hoặc lộ trình công nghệ (hoặc la bàn) trong vài năm tới. Là kỹ sư phần mềm, tôi đã được giao nhiệm vụ bắt đầu vào các cuộc họp hai tháng để dẫn dắt cuộc thảo luận đó. Vì vậy, câu hỏi của tôi là, làm thế nào để bạn bắt đầu vai trò của mình như một kiến ​​trúc sư? làm thế nào để bạn bắt đầu một cuộc thảo luận kiến ​​trúc trên toàn tổ chức? Tôi bắt đầu đọc cuốn sách "97 điều mọi kiến ​​trúc sư phần mềm nên biết", nhưng tôi muốn nghe nhiều hơn từ kinh nghiệm của bạn. Vì vậy, với tư cách là một kiến ​​trúc sư, bạn bắt đầu như thế nào?Bạn bắt đầu thảo luận kiến ​​trúc phần mềm bằng cách nào?

Trân trọng,

Trả lời

3
  1. bạn Tìm ra ai là trong nhóm của bạn
  2. Tìm hiểu những gì họ đang quan tâm ở mức độ phân tích hệ thống
  3. Tìm ra ai hiểu biết mọi người trong công ty rộng hơn
  4. Tìm hiểu những gì đang được sử dụng trong các công ty lớn hơn
  5. Tìm hiểu những gì mọi người đã sử dụng trước đó trong bộ phận cụ thể của bạn
  6. Mang tất cả các thông tin trên và u hãy bắt đầu nói về Bây giờ, Sớm và Cuối cùng. Đặc biệt chú ý đến cách bạn kết nối với thế giới bên ngoài cả về bên ngoài bộ phận và bên ngoài công ty.

Đừng bắt đầu nói về kiến ​​trúc cho đến khi bạn biết những gì bạn đang bắt đầu. Không bắt đầu thảo luận về kiến ​​trúc cho đến khi mọi người khác cũng vậy.

+1

câu trả lời hay, tốt hơn nhiều so với tôi =) +1 –

1

tôi đã không cá nhân đã có kinh nghiệm này, nhưng đây là một vài gợi ý:

  • Nhận đào tạo, và có được những người đó sẽ được trong các cuộc thảo luận được đào tạo về đề tài này. Bạn sẽ có một thời gian ý nghĩa hơn.
  • Có bản nháp ban đầu được cải thiện dựa trên ý tưởng của người khác. Bắt đầu từ bản nháp dễ dàng hơn nhiều so với bắt đầu từ đầu
  • Nhờ ai đó làm việc chặt chẽ với bạn về vấn đề này (tương tự với lập trình ghép nối). Hai tâm trí làm việc trong một giờ thường cung cấp đầu ra tốt hơn so với một tâm trí làm việc trong một giờ khi nói đến các hoạt động cường độ cao.
0

Điều này ít hơn từ kinh nghiệm và nhiều hơn nữa từ tư duy thiết thực. Trước hết khó xác định kiến ​​trúc phần mềm - một tham chiếu tuyệt vời để bắt đầu luôn là 'design patterns explained' vì điều này có cách tiếp cận phi phần mềm để hiểu kiến ​​trúc.

Bắt đầu nhìn vào vấn đề cốt lõi cụ thể của kiến ​​trúc như

  • tương đồng và biến
  • tách mối quan tâm
  • tập hợp hơn trừu tượng

Kiến trúc không phải là về loại bỏ sự phức tạp chứ không phải đó là khoảng quản lý nó. Vì vậy, bắt đầu bằng việc tìm hiểu những vấn đề mà bao gồm sự phức tạp trong bối cảnh dự án

0

Tập trung vào các yêu cầu không có chức năng và từ đó cố gắng chọn một mẫu kiến ​​trúc. Phân tích chất lượng phần mềm sẽ hữu ích. Sau đó tôi sẽ tôn tạo mẫu và mô tả nó cho nhóm, dựa trên mức độ chi tiết mà họ quan tâm.

2

Câu hỏi của bạn là một câu hỏi khó vì nó chạm vào nhiều lĩnh vực: thiết kế, lãnh đạo và phần mềm (hoặc kiến ​​trúc). Tôi sẽ giả định rằng bạn đã có một quy trình chuẩn, nhưng nếu bạn không thử một trong các quy trình Agile. Tôi sẽ nói về lãnh đạo và kiến ​​trúc phần mềm.

Lãnh đạo. Cuốn sách tuyệt vời của Fred Brooks, The Mythical Man-Month, nói về việc có một nhà lãnh đạo kỹ thuật cách một đội phẫu thuật có một nhà lãnh đạo. Cá nhân, tôi thích hợp tác nhiều hơn tôi thấy với các bác sĩ, vì vậy hãy coi đội phẫu thuật của Brooks là cực đoan. Tuy nhiên, bạn cần một người nào đó để điều phối kỹ thuật những người đang làm những việc như phân bổ người làm việc ở các phần khác nhau của hệ thống, quyết định những phần khó khăn nhất (để họ không được hoãn lại cho đến khi chúng đắt tiền thay đổi/sửa lỗi) và đưa ra lựa chọn khi nhóm không đồng ý. Loại lãnh đạo kỹ thuật này là cần thiết cho dù bạn đang xây dựng phần mềm, xe hơi hay gậy pogo.

Kiến trúc/thiết kế. Câu thần chú tiêu chuẩn là "Mỗi hệ thống đều có kiến ​​trúc" nhưng hệ quả là không phải mọi kiến ​​trúc đều được lựa chọn một cách có chủ ý. Bạn có thể ngầm sao chép kiến ​​trúc từ dự án cuối cùng của bạn, nói một hệ thống 3 tầng. Hoặc nó có thể được quyết định trước khi bạn biết bạn đang sử dụng một khuôn khổ như EJB. Khi bắt đầu một dự án, bạn sẽ đưa ra quyết định về kiến ​​trúc và một số sẽ khó thay đổi sau này. Bạn sẽ lưu dữ liệu như thế nào? Bạn sẽ sử dụng một khuôn khổ (ví dụ như Spring, EJB, RoR)? Bạn sẽ xử lý dữ liệu tăng dần hay theo lô?

Khá nhiều kiến ​​trúc có thể bị buộc phải đáp ứng các yêu cầu của bạn. Ví dụ: bạn có thể sử dụng RoR để tạo bộ điều nhiệt. Nhưng bạn sẽ có một thời gian dễ dàng hơn khi kiến ​​trúc của bạn phù hợp với yêu cầu. Đôi khi bạn sẽ có các yêu cầu, chẳng hạn như độ trễ của giao diện người dùng thấp, có thể được hỗ trợ bởi lựa chọn kiến ​​trúc khôn ngoan, như sử dụng AJAX. Vì vậy, sự khởi đầu của dự án của bạn là một cơ hội để suy nghĩ về những điều này và làm cho họ đúng. (Và điều này không có nghĩa là bạn đi lên núi, suy nghĩ kỹ lưỡng, sau đó đọc câu trả lời của bạn cho nhóm - ở đây một lần nữa tôi ủng hộ sự cộng tác).

Đừng ngại nghĩ về kiến ​​trúc ở phía trước, đặc biệt là về những cách có thể giúp bạn tránh khó khăn, nhưng cũng không cố gắng quyết định mọi thứ trước. Bạn sẽ gặp rắc rối nếu một phần của nhóm của bạn bắt đầu sử dụng Ruby on Rails trong khi một phần khác bắt đầu sử dụng EJB - vì vậy hãy đưa ra một số quyết định kỹ thuật, những quyết định bắt buộc bạn và những người sẽ giải quyết những rủi ro lớn nhất của bạn.

Điều cuối cùng: Thảo luận kiến ​​trúc ban đầu là một phước lành và lời nguyền. Họ là một phước lành trong đó họ có được ý tưởng ra sớm và cho phép bạn chọn thiết kế của bạn hơn là sai lầm vào nó. Nhưng họ là một lời nguyền trong đó mọi người sẽ có ý kiến, và nó có thể khó khăn để có được tất cả họ chỉ trong cùng một hướng (tức là trở lại sự cần thiết cho lãnh đạo kỹ thuật).

Tôi khuyên bạn nên Chương 12 của Applied Software Architecture để được hướng dẫn về câu hỏi của bạn. Danh sách các đầu đề đưa ra một ý tưởng hay về lời khuyên của nó: Tạo một tầm nhìn, kiến ​​trúc sư là chuyên gia tư vấn kỹ thuật chính, kiến ​​trúc sư đưa ra quyết định, các huấn luyện viên kiến ​​trúc sư, kiến ​​trúc sư phối hợp, kiến ​​trúc sư thực hiện, người ủng hộ kiến ​​trúc sư. Cuốn sách 97 Things bạn đề cập đến là một bộ sưu tập ngọc trai của trí tuệ hơn là một hướng dẫn gắn kết với kiến ​​trúc.

George Fairbanks, Tác giả của Just Enough Software Architecture

Các vấn đề liên quan