Brooks, Fredrick P.,. "Không Silver Bullet: Essence và tai nạn của công nghệ phần mềm," Máy tính, Vol 20, No 4 (April 1987), pp 10-19 Đây là bài viết nổi tiếng của Brooks mà Cockburn nêu tại Agile Software phát triển. Trong đó, Brooks định nghĩa một số khái niệm liên quan đến phát triển phần mềm để giúp mọi người thấy những gì làm cho phát triển phần mềm cứng trong một nỗ lực (có thể) để ngăn cản người chúng ta tin rằng có được nêu ra là để được một viên đạn bạc mà sẽ làm cho phát triển phần mềm dễ dàng đủ cho bất cứ ai để làm tốt. Ông nói có hai lớp học của các phẩm chất của phần mềm: phẩm chất cần thiết, và phẩm chất tình cờ. Những phẩm chất cần thiết là vô cùng khó khăn để giải quyết hoặc cải thiện, trong khi những phẩm chất tình cờ có thể được cải thiện thông qua công cụ hỗ trợ. Những phẩm chất cần thiết tất cả phải làm wth thiết kế của phần mềm: hiểu được vấn đề và thiết kế và thử nghiệm các contstruct khái niệm. Những phẩm chất tình cờ có để làm với việc thực hiện xây dựng trong mã và thử nghiệm nó. Những phẩm chất cần thiết là những: Phức tạp: thiết kế phần mềm phức tạp: các khái niệm miền hiểu biết đến mức mà người ta có thể xác định họ và mối quan hệ giữa chúng chính xác là khó; định nghĩa này là điều cần thiết nếu chúng ta muốn dịch những khái niệm thành mã. Không giống như các đối tượng vật lý, không có hai bộ phận của một phần mềm xây dựng là như nhau. Mở rộng quy mô của một thực thể phần mềm thiết phải có nghĩa là một nhân rộng trong các thành phần và độ phức tạp. Các vấn đề liên quan với độ phức tạp là: khó khăn trong việc giao tiếp của thiết kế giữa các đội viên; khó khăn trong việc liệt kê tất cả các trạng thái có thể của chương trình (trong đó tập không đáng tin cậy); làm cho chương trình khó sử dụng; làm cho chương trình khó khăn để thay đổi mà không gây tác dụng phụ không mong muốn. Sự phức tạp làm cho cái nhìn tổng quan cứng (nhìn thấy và trói lỏng lẻo), và gánh nặng học tập to lớn có nghĩa là doanh thu là tốn kém. Vô hình: không thể nhìn thấy nó cùng một lúc như bạn làm một mảnh vật chất của một cái gì đó. Nó cũng rất khó khăn ngay cả để hình dung vì có rất nhiều cách để nhìn vào các thiết kế tương tự: ". Thực tế của phần mềm là không vốn nhúng trong không gian" này ức chế truyền thông của cấu trúc và thiết kế. Có thể thay: chúng ta chỉ cần đẩy bit xung quanh cuối cùng; thay đổi ý tưởng. Vì vậy nó luôn luôn có thể thay đổi một phần của phần mềm. Phần mềm là vốn linh hoạt mà các sản phẩm vật chất là không. (McConnell, pp. 19-20). Thay đổi này có hai cách: người sử dụng phần mềm theo những cách không lường ban đầu trong việc thiết kế và muốn hỗ trợ tốt hơn cho rằng; và những thay đổi máy / OS vật lý bên dưới chúng ta. Sự phù hợp: phần mềm phải phù hợp để hạn chế bên ngoài (phần cứng đặc biệt, hệ thống di sản và dữ liệu, quy định) mà làm cho nó khó khăn để giảm độ phức tạp. Nhiều sự phức tạp của việc tương tác với các hệ thống con người là tùy ý, và kể từ khi phần mềm được percieved như thay đổi, nó thường được xem như là điều mà phải phù hợp, không phải là con người. Những phẩm chất tình cờ là tất cả về việc thực hiện và kiểm tra, và những có được giải quyết gần như cũng như họ có thể được giải quyết, vì vậy tôi không mong đợi nhiều đột phá hơn. Dưới đây là những điều mà Brooks nói đã giúp làm giảm tác động của các chất tình cờ (giữ trong tâm trí ông đang viết này vào giữa những năm 1980): ngôn ngữ cấp cao (bao gồm định hướng đối tượng). Ngôn ngữ cấp cao cho phép lập trình để thể hiện thực hiện với các khái niệm gần gũi hơn với cái mà chúng ta sử dụng trong thiết kế. Chúng tôi đang làm giảm bớt hoặc loại bỏ các bước dịch giữa các mô hình dữ liệu, hoạt động, sequances và thông tin liên lạc và đăng ký và bit. Điều này giúp loại bỏ rất nhiều sự phức tạp dịch. Nhưng Brooks nói rằng "một ngôn ngữ cấp cao nhất có thể làm là để funish tất cả các cấu trúc mà các lập trình viên tưởng tượng trong chương trình trừu tượng" và mặc dù mức độ của chúng ta suy nghĩ về những cấu trúc đang được cải thiện, nó làm như vậy tại một tốc độ ngày càng giảm. Thời gian chia sẻ và hỗ trợ hệ điều hành tốt hơn: thời gian chia sẻ tương phản với hàng loạt chế biến, và nó giúp bởi vì chúng tôi dành rất ít thời gian trong chu kỳ mã và kiểm tra. Hỗ trợ hệ điều hành tốt hơn, tôi có nghĩa là sự khác biệt betweeen DOS (mà không có thư viện và hầu như không có hệ thống hỗ trợ cuộc gọi) và UNIX (trong đó có nhiều thư viện và một tập hợp hệ thống gọi lớn, cho phép bạn không cần phải thực hiện các mã hiển thị, trình điều khiển đĩa, Mã hệ thống tập tin, vv). Sau đó ông nói về những hy vọng cho tương lai, và giảm giá tất cả như là viên đạn bạc: Ada và ngôn ngữ cấp cao khác, định hướng đối tượng, AI (cả trong ý tưởng của phần mềm giải quyết các vấn đề mà trước đây các tên miền của trí tuệ con người, và trong hệ thống chuyên gia), các hệ thống chuyên gia, lập trình tự động (chúng tôi chỉ định các yêu cầu và các phần mềm viết code cho chúng tôi); lập trình đồ họa (một LabVIEW la), bằng chứng xác minh thiết kế dựa trên công cụ tốt hơn, và máy trạm. Ông ra ba lĩnh vực đầy hứa hẹn có thể giúp thúc đẩy đạt được (lưu ý: không nhất thiết phải xây dựng) phần mềm tốt hơn: Mua so với build. Hãy nhớ rằng vào giữa năm 1980, thị trường phần mềm vẫn còn nhỏ. Incremental, phát triển lặp với thông tin phản hồi từ người dùng cuối: bởi vì điều này sẽ giúp tinh chỉnh các yêu cầu, chứng minh các thiết kế, và cải thiện tinh thần Xác định, duy trì và chiều chuộng thiết kế tuyệt vời: một số người chỉ tốt hơn ở thiết kế phần mềm hơn so với những người khác. Hãy thử để xác định chúng, giữ chân họ trong tổ chức của bạn, và chiều chuộng họ để họ có được những kỹ năng và bồi thường mà họ cần.
đang được dịch, vui lòng đợi..
