ABSTRACT
George Santayana's statement, "Those who cannot remember the
past are condemned to repeat it," is only half true. The past also
includes successful histories. If you haven't been made aware of
them, you're often condemned not to repeat their successes.
In a rapidly expanding field such as software engineering, this
happens a lot. Extensive studies of many software projects such as
the Standish Reports offer convincing evidence that many projects
fail to repeat past successes.
This paper tries to identify at least some of the major past software
experiences that were well worth repeating, and some that were not.
It also tries to identify underlying phenomena influencing the
evolution of software engineering practices that have at least helped
the author appreciate how our field has gotten to where it has been
and where it is.
A counterpart Santayana-like statement about the past and future
might say, "In an era of rapid change, those who repeat the past are
condemned to a bleak future." (Think about the dinosaurs, and
think carefully about software engineering maturity models that
emphasize repeatability.)
This paper also tries to identify some of the major sources of change
that will affect software engineering practices in the next couple of
decades, and identifies some strategies for assessing and adapting to
these sources of change. It also makes some first steps towards
distinguishing relatively timeless software engineering principles
that are risky not to repeat, and conditions of change under which
aging practices will become increasingly risky to repeat.
2. A Hegelian View of Software Engineering’s
Past
2.1 1950’s Thesis: Software Engineering Is
Like Hardware Engineering
When I entered the software field in 1955 at General Dynamics, the
prevailing thesis was, “Engineer software like you engineer
hardware.” Everyone in the GD software organization was either a
hardware engineer or a mathematician, and the software being
developed was supporting aircraft or rocket engineering. People
kept engineering notebooks and practiced such hardware precepts as
“measure twice, cut once,” before running their code on the
computer.
This behavior was also consistent with 1950’s computing
economics. On my first day on the job, my supervisor showed me
the GD ERA 1103 computer, which filled a large room. He said,
“Now listen. We are paying $600 an hour for this computer and $2
an hour for you, and I want you to act accordingly.” This instilled in
me a number of good practices such as desk checking, buddy
checking, and manually executing my programs before running
them. But it also left me with a bias toward saving microseconds
when the economic balance started going the other way.
The most ambitious information processing project of the 1950’s
was the development of the Semi-Automated Ground Environment
(SAGE) for U.S. and Canadian air defense. It brought together
leading radar engineers, communications engineers, computer
engineers, and nascent software engineers to develop a system that
would detect, track, and prevent enemy aircraft from bombing the
U.S. and Canadian homelands.
Figure 1 shows the software development process developed by the
hardware engineers for use in SAGE [1]. It shows that sequential
waterfall-type models have been used in software development for a
long time. Further, if one arranges the steps in a V form with Coding
at the bottom, this 1956 process is equivalent to the V-model for
software development. SAGE also developed the Lincoln Labs
Utility System to aid the thousands of programmers participating in
SAGE software development. It included an assembler, a library and
build management system, a number of utility programs, and aids to
testing and debugging. The resulting SAGE system successfully met
its specifications with about a one-year schedule slip. Benington’s
bottom-line comment on the success was “It is easy for me to single
out the one factor that led to our relative success: we were all
engineers and had been trained to organize our efforts along
engineering lines.”
Another indication of the hardware engineering orientation of the
1950’s is in the names of the leading professional societies for
software professionals: the Association for Computing Machinery
and the IEEE Computer Society.
2.2 1960’s Antithesis: Software Crafting
By the 1960’s, however, people were finding out that software
phenomenology differed from hardware phenomenology in
significant ways. First, software was much easier to modify than was
hardware, and it did not require expensive production lines to make
product copies. One changed the program once, and then reloaded
the same bit pattern onto another computer, rather than having to
individually change the configuration of each copy of the hardware.
This ease of modification led many people and organizations to
adopt a “code and fix” approach to software development, as
compared to the exhaustive Critical Design Reviews that hardware
engineers performed before committing to production lines and
bending metal (measure twice, cut once). Many software
applications became more people-intensive than hardware-intensive;
even SAGE became more dominated by psychologists addressing
human-computer interaction issues than by radar engineers.
TÓM TẮTGeorge Santayana tuyên bố, "những người không thể nhớ các trong quá khứ được lên án để lặp lại nó,"chỉ là một nửa sự thật. Quá khứ cũng bao gồm lịch sử thành công. Nếu bạn đã không được thực hiện nhận thức của họ, Anh thường lên án không để lặp lại những thành công. Trong một lĩnh vực nhanh chóng mở rộng như công nghệ phần mềm, điều này xảy ra rất nhiều. Các nghiên cứu sâu rộng của nhiều dự án phần mềm chẳng hạn như Các báo cáo Standish cung cấp bằng chứng thuyết phục rằng nhiều dự án không lặp lại qua những thành công. Bài báo này cố gắng để xác định ít nhất một số lớn qua phần mềm kinh nghiệm đó là cũng có giá trị lặp đi lặp lại, và một số đó là không. Nó cũng cố gắng để xác định các hiện tượng cơ bản ảnh hưởng đến các sự tiến hóa của công nghệ phần mềm thực tiễn đã giúp ít tác giả đánh giá cao cách lĩnh vực của chúng tôi đã gạt đến nơi nó và nó ở đâu. Một đối tác Santayana như tuyên bố về quá khứ và tương lai có thể nói, "trong một kỷ nguyên của sự thay đổi nhanh chóng, những người lặp lại quá khứ lên án đến một tương lai ảm đạm." (Suy nghĩ về những con khủng long, và suy nghĩ cẩn thận về kỳ hạn thanh toán phần mềm kỹ thuật kiểu đó nhấn mạnh lặp.) Bài báo này cũng cố gắng để xác định một số trong những nguồn chính của sự thay đổi mà sẽ ảnh hưởng đến công nghệ phần mềm thực hành trong các cặp vợ chồng tiếp theo của nhiều thập kỷ, và xác định một số chiến lược để đánh giá và thích nghi với Các nguồn của sự thay đổi. Nó cũng làm cho một số bước đầu tiên hướng tới phân biệt các nguyên tắc công nghệ phần mềm tương đối vô tận đó là nguy hiểm không để lặp lại, và các điều kiện của sự thay đổi mà lão hóa thực hành sẽ trở nên ngày càng nguy hiểm để lặp lại.2. một cái nhìn Hegelian của công nghệ phần mềm Quá khứ 2.1 năm 1950 luận án: công nghệ phần mềm là Như kỹ thuật phần cứng Khi tôi bước vào lĩnh vực phần mềm năm 1955 tại General Dynamics, các luận án hiện hành là, "kỹ sư phần mềm như bạn kỹ sư phần cứng." Tất cả mọi người trong tổ chức phần mềm GD là hoặc một kỹ sư phần cứng hoặc một nhà toán học, và phần mềm phát triển hỗ trợ máy bay hoặc tên lửa kỹ thuật. Người Giữ kỹ thuật máy tính xách tay và thực hành như vậy giới luật phần cứng như "đo lường hai lần, cắt một lần," trước khi chạy mã của họ trên các máy tính. Hành vi này cũng là phù hợp với máy tính năm 1950 kinh tế. Vào ngày đầu tiên của tôi vào công việc, giám sát của tôi cho thấy tôi GD ERA 1103 máy tính, đầy một phòng lớn. Ông nói, "Bây giờ nghe. Chúng ta đang trả $600 một giờ cho máy tính và $2 một giờ cho bạn, và tôi muốn bạn để hành động phù hợp. " Điều này instilled trong Tôi có một số các thực hành tốt như bàn kiểm tra, buddy kiểm tra, và theo cách thủ công thực hiện chương trình của tôi trước khi chạy họ. Nhưng nó cũng để lại tôi với một thiên vị về hướng tiết kiệm miligiây Khi sự cân bằng kinh tế bắt đầu đi theo cách khác. Dự án xử lý thông tin tham vọng nhất của những năm 1950 là sự phát triển của môi trường mặt đất Semi-Automated (SAGE) để bảo vệ máy Hoa Kỳ và Canada. Nó mang lại với nhau hàng đầu thế giới radar kỹ sư, kỹ sư truyền thông, máy tính kỹ sư và kỹ sư phần mềm mới xuất hiện để phát triển một hệ thống mà nào phát hiện, theo dõi và ngăn chặn đối phương máy bay ném bom các Quê hương Hoa Kỳ và Canada. Hình 1 cho thấy quá trình phát triển phần mềm phát triển bởi các phần cứng các kỹ sư để sử dụng trong SAGE [1]. Nó cho thấy rằng tuần tự Mô hình thác nước-loại đã được sử dụng trong phát triển phần mềm cho một thời gian dài. Hơn nữa, nếu một sắp xếp các bước trong một hình thức V với mã ở phía dưới, quá trình này năm 1956 là tương đương với V-người mẫu cho phát triển phần mềm. SAGE cũng phát triển các phòng thí nghiệm Lincoln Các hệ thống tiện ích để hỗ trợ hàng ngàn của các lập trình viên tham gia Phát triển phần mềm SAGE. Nó bao gồm lắp ráp một, một thư viện và xây dựng hệ thống quản lý, một số chương trình tiện ích, và aids để thử nghiệm và gỡ lỗi. Hệ thống SAGE kết quả thành công đã gặp Các đặc điểm kỹ thuật với về một phiếu lịch trình một năm. Của benington dưới cùng-Line bình luận về sự thành công là "nó là dễ dàng cho tôi để duy nhất trong một yếu tố đó đã dẫn đến sự thành công tương đối của chúng tôi: chúng tôi đã tất cả kỹ sư và đã được đào tạo để tổ chức những nỗ lực của chúng tôi dọc theo kỹ thuật đường." Các dấu hiệu khác của phần cứng kỹ thuật định hướng của các năm 1950 là trong tên của các xã hội chuyên nghiệp hàng đầu cho Các chuyên gia phần mềm: Hiệp hội cho thiết bị máy tínhvà IEEE Computer Society. 2.2 1960 ngược: phần mềm thủ công Bởi những năm 1960, Tuy nhiên, người đã tìm ra rằng phần mềm hiện tượng khác với phần cứng hiện tượng trong cách đáng kể. Đầu tiên, phần mềm đã dễ dàng hơn để sửa đổi hơn là phần cứng, và nó không bắt buộc dây chuyền sản xuất đắt tiền để làm cho sản phẩm sao. Một thay đổi chương trình một lần, và sau đó nạp lại cùng một khuôn mẫu chút lên một máy tính, thay vì phải cá nhân thay đổi cấu hình của mỗi bản sao của phần cứng. Này dễ sửa đổi dẫn nhiều người dân và các tổ chức để áp dụng một phương pháp "mã và sửa chữa" để phát triển phần mềm, như so với đánh giá thiết kế quan trọng đầy đủ phần cứng kỹ sư thực hiện trước khi cam kết để dây chuyền sản xuất và uốn kim loại (biện pháp hai lần, cắt một lần). Nhiều phần mềm ứng dụng đã trở thành hơn người chuyên sâu hơn phần cứng chuyên sâu; SAGE thậm chí trở thành hơn bị chi phối bởi nhà tâm lý học địa chỉ vấn đề con người-máy tính tương tác hơn bởi radar kỹ sư.
đang được dịch, vui lòng đợi..

Tóm tắt
báo cáo George Santayana của "Những người không thể nhớ
quá khứ đang lên án lặp lại nó," chỉ là một nửa sự thật. Quá khứ cũng
có lịch sử thành công. Nếu bạn đã không được thực hiện nhận thức của
họ, bạn thường lên án không để lặp lại thành công của họ.
Trong một lĩnh vực phát triển nhanh chóng như công nghệ phần mềm, điều này
xảy ra rất nhiều. Một số nghiên cứu của nhiều dự án phần mềm như
các báo cáo Standish cung cấp bằng chứng thuyết phục rằng nhiều dự án
không để lặp lại thành công vừa qua.
Bài viết này cố gắng xác định ít nhất là một số các phần mềm qua chính
kinh nghiệm đó là cũng có giá trị lặp đi lặp lại, và một số mà không được.
Nó cũng cố gắng xác định tiềm ẩn hiện tượng ảnh hưởng đến sự
phát triển của thực hành kỹ thuật phần mềm đã ít nhất đã giúp
tác giả đánh giá cao lĩnh vực của chúng tôi đã nhận được đến nơi mà nó đã
và nơi nó được.
Một người đồng Santayana giống như tuyên bố về quá khứ và tương lai
có thể nói, "Trong một thời đại của sự thay đổi nhanh chóng, những người lặp lại quá khứ đang
bị kết án một tương lai ảm đạm." (Hãy suy nghĩ về những con khủng long, và
suy nghĩ cẩn thận về phần mềm mô hình trưởng thành công đó
nhấn mạnh lặp lại.)
Bài viết này cũng cố gắng xác định một số trong những nguồn chính của sự thay đổi
đó sẽ ảnh hưởng đến thực hành kỹ thuật phần mềm trong vòng vài
thập kỷ, và nhận biết một chiến lược đánh giá và thích nghi với
các nguồn của sự thay đổi. Nó cũng làm cho một số bước đầu tiên hướng tới
việc phân biệt các nguyên tắc tương đối vượt thời gian kỹ thuật phần mềm
đó là rủi ro không để lặp lại, và điều kiện thay đổi, theo đó
thực hành lão hóa sẽ ngày càng trở nên nguy hiểm để lặp lại.
2. A View Hegel Kỹ thuật của phần mềm
Past
2.1 1950 Luận văn: Kỹ thuật phần mềm là
như kỹ thuật phần cứng
Khi tôi bước vào lĩnh vực phần mềm năm 1955 tại General Dynamics, các
luận án hiện hành là: "phần mềm Kỹ sư như bạn kỹ
sư. Phần cứng" Mọi người trong tổ chức phần mềm GD hoặc là một
kỹ sư phần cứng hay một nhà toán học, và các phần mềm đang
phát triển được hỗ trợ máy bay hoặc tên lửa kỹ thuật. Người
giữ máy tính xách tay kỹ thuật và thực hành giới luật phần cứng như
"đo hai lần, cắt một lần," trước khi chạy code của họ trên
máy tính.
Hành vi này cũng là phù hợp với điện toán năm 1950 của
kinh tế học. Vào ngày đầu tiên của tôi trong công việc, giám sát của tôi đã cho tôi xem
những GD ERA 1.103 máy tính, trong đó chứa đầy một căn phòng lớn. Ông nói,
"Bây giờ nghe. Chúng tôi đang phải trả $ 600 một giờ cho máy tính này và $ 2
một giờ cho bạn, và tôi muốn bạn để hành động phù hợp. "Điều này thấm nhuần trong
tôi một số thực hành tốt như kiểm tra bàn, bạn
kiểm tra, và tự thực hiện chương trình của tôi trước khi chạy
chúng . Nhưng nó cũng để lại cho tôi một sự thiên vị về phía micro tiết kiệm
khi sự cân bằng kinh tế bắt đầu đi theo cách khác.
Các dự án xử lý thông tin tham vọng nhất của năm 1950
là sự phát triển của đất Môi trường bán tự động
(SAGE) trị và phòng không của Canada. Nó mang lại cùng
các kỹ sư radar, các kỹ sư truyền thông, máy tính hàng đầu
các kỹ sư và kỹ sư phần mềm non trẻ để phát triển một hệ thống mà
sẽ phát hiện, theo dõi và ngăn chặn máy bay địch từ ném bom
của Mỹ và quê hương Canada.
Hình 1 cho thấy quá trình phát triển phần mềm được phát triển bởi các
phần cứng kỹ sư để sử dụng trong SAGE [1]. Nó cho thấy rằng tuần tự
mô hình thác nước-loại đã được sử dụng trong phát triển phần mềm cho một
thời gian dài. Hơn nữa, nếu một sắp xếp các bước trong một hình thức V với Mã hóa
ở phía dưới, quá trình này năm 1956 là tương đương với V-mô hình
phát triển phần mềm. SAGE cũng phát triển Labs Lincoln
Hệ thống Tiện ích để giúp các lập trình viên tham gia hàng ngàn năm
phát triển phần mềm SAGE. Nó bao gồm một nhà lắp ráp, một thư viện và
xây dựng hệ thống quản lý, một số chương trình tiện ích, và viện trợ để
kiểm tra và gỡ lỗi. Hệ thống SAGE kết quả thành công đáp ứng
thông số kỹ thuật của nó với khoảng một lịch trình một năm trượt. Benington của
dòng dưới cùng bình luận về sự thành công là "Nó là dễ dàng cho tôi để duy nhất
ra khỏi các yếu tố một dẫn đến sự thành công tương đối của chúng tôi: chúng tôi là tất cả các
kỹ sư và đã được đào tạo để tổ chức các nỗ lực của chúng tôi cùng
đường dây kỹ thuật."
Một biểu hiện khác của phần cứng định hướng kỹ thuật của
năm 1950 là trong những cái tên của các xã hội chuyên nghiệp hàng đầu cho
các chuyên gia phần mềm: Hiệp hội máy tính
và Hiệp hội IEEE Computer.
2.2 phản 1960: Phần mềm Crafting
Vào những năm 1960, tuy nhiên, người ta đã phát hiện ra rằng phần mềm
hiện tượng khác nhau từ Hiện tượng phần cứng trong
cách đáng kể. Đầu tiên, phần mềm được dễ dàng hơn nhiều để thay đổi hơn là
phần cứng, và nó không yêu cầu dây chuyền sản xuất đắt tiền để làm
bản sao của sản phẩm. Một thay đổi chương trình một lần, và sau đó nạp lại
cùng một khuôn mẫu bit trên một máy tính khác, thay vì phải
thay đổi riêng lẻ cấu hình của mỗi bản sao của phần cứng.
Dễ dàng này của việc biến đổi khiến nhiều người dân và các tổ chức để
áp dụng một "mã và sửa chữa" phương pháp tiếp cận để phát triển phần mềm, như
so với các thiết kế đầy đủ Critical Nhận xét rằng phần cứng của
các kỹ sư thực hiện trước khi cam kết dây chuyền sản xuất và
uốn kim loại (đo hai lần, cắt một lần). Nhiều phần mềm
ứng dụng càng trở nên người thâm so với phần cứng chuyên sâu;
thậm chí SAGE càng bị chi phối bởi tâm lý học giải quyết
các vấn đề tương tác của con người-máy tính hơn bởi các kỹ sư radar.
đang được dịch, vui lòng đợi..
