A View of 20th and 21st Century Software Engineering
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.
1. INTRODUCTION One has to be a bit presumptuous to try to characterize both the past and future of software engineering in a few pages. For one thing, there are many types of software engineering: large or small; commodity or custom; embedded or user-intensive; greenfield or legacy/COTS/reuse-driven; homebrew, outsourced, or both; casual- use or mission-critical. For another thing, unlike the engineering of electrons, materials, or chemicals, the basic software elements we engineer tend to change significantly from one decade to the next. Fortunately, I’ve been able to work on many types and generations of software engineering since starting as a programmer in 1955. I’ve made a good many mistakes in developing, managing, and acquiring software, and hopefully learned from them. I’ve been able to learn from many insightful and experienced software engineers, and to interact with many thoughtful people who have analyzed trends and practices in software engineering. These learning experiences have helped me a good deal in trying to understand how software engineering got to where it is and where it is likely to go. They have also helped in my trying to distinguish between timeless principles and obsolete practices for developing successful software-intensive systems. In this regard, I am adapting the [147] definition of “engineering” to define engineering as “the application of science and mathematics by which the properties of software are made useful to people.” The phrase “useful to people” implies that the relevant sciences include the behavioral sciences, management sciences, and economics, as well as computer science. In this paper, I’ll begin with a simple hypothesis: software people don’t like to see software engineering done unsuccessfully, and try to make things better. I’ll try to elaborate this into a high-level decade-by-decade explanation of software engineering’s past. I’ll then identify some trends affecting future software engineering practices, and summarize some implications for future software engineering researchers, practitioners, and educators.
2
2. A Hegelian View of Software Engineering’s Past The philosopher Hegel hypothesized that increased human understanding follows a path of thesis (this is why things happen the way they do); antithesis (the thesis fails in some important ways; here is a better explanation); and synthesis (the antithesis rejected too much of the original thesis; here is a hybrid that captures the best of both while avoiding their defects). Below I’ll try to apply this hypothesis to explaining the evolution of software engineering from the 1950’s to the present
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.
OPERATIONAL PLAN
MACHINE SPECIFICATIONS
OPERATIONAL SPECIFICATIONS
PROGRAM SPECIFICATIONS
CODING SPECIFICATIONS
CODING
PARAMETER TESTING (SPECIFICATIONS)
ASSEMBLY TESTING (SPECIFICATIONS)
SHAKEDOWN
SYSTEM EVALUATION
Figure 1. The SAGE Software Development Process (1956) Another software difference was that software did not wear out. Thus, software reliability could only imperfectly be estimated by hardware reliability models, and “software maintenance” was a much different activity than hardware maintenance. Software was invisible, it didn’t weigh anything, but it cost a lot. It was hard to tell whether it was on schedule or not, and if you added more people to bring it back on schedule, it just got later, as Fred Brooks explained in the Mythical Man-Month [42]. Software generally had many more states, modes, and paths to test, making its specifications much more difficult. Winston Royce, in his classic 1970 paper, said, “In order to procure a $5 million hardware device, I would expect a 30- page specification would provide adequate detail to control the procurement. In order to procure $5 million worth of software, a 1500 page specification is about right in order to achieve comparable control.”[132]. Another problem with the hardware engineering approach was that the rapid expansion of demand for software outstripped the supply of engineers and mathematicians. The SAGE program began hiring and training humanities, social sciences, foreign language, and fine arts majors to develop software. Similar non-engineering people flooded into software development positions for business, government, and services data processing. These people were much more comfortable with the code-and-fix approach. They were often very creative, but their fixes often led to heavily patched spaghetti code. Many of them were heavily influenced by 1960’s “question authority” attitudes and tended to march to their own drummers rather than those of the organization employing them. A significant sub
One of nhin Thế Kỷ 20 and 21 software: điện lạnh Trừu icon George Santayana declared, "These people not nhơ is too not Khu up well for repeat it" just be a half really really. Too Khu are also include lịch used successfully. If you was not perform get their expressions, Anh typically up project is not for repeat the, the successful. Trọng an Lĩnh Vực nhanh chong expand like Công Nghệ software, control does happen many. These Nghiên look up deep expansion of multiple project software Chang limited like all the report Standish provided with the stock theory restore multiple Project failed to repeat the over these successful. Bãi tell does attempt to determine at least one the number of missing kinh experimental software which was also the value repeat repeat the go, and some of which is not is too Khu. It also attempt to definition of the show icon basic affects really child development of Công Nghệ software actual Tiễn, which was less helps author mark giá cao way Lĩnh Vực of we received to where it and it is at the start. One for take Santayana like 'declared about is too Khu and the future you can say, "Trọng an Kỷ Nguyên of really changed nhanh Chong, the people repeat the device is too Khu are the one well the future AM Đàm. " (think about those Suy con khủng dài, and Suy think about Cẩn hơn so với model Trường Thành Công Nghệ software click mạnh loop.) Bài tell does are attempt to to determine the number one in the primary sources really changes will affects actual Tiến Công Nghệ software in a few hex line discipline next, and definition of some Chiến Lược to mark giá and like Nghi with the source really of changes. It also make some of the first step guide to the special separated relative Võ Tấn Công Nghệ software resource rule it was Nguyễn hiem is not for repeat the, and the the terms of really changes according to which of the actual distribution Lão ciphertext would become be day as Nguy Hiểm for repeat. 1 Giới Thiệu one has one chut Táo bạo to attempt to described is too Khu and the future of Công Nghệ software in some trang. With one, you many categories Công Nghệ software: big hay less; row ciphertext or change option; embed or user name Lĩnh deep; Greenfield or di Serial / Cui TRẺ em / phở tái using định hướng; homebrew, outside, or both; . use the regular or Nhiệm, server important With control khác , do not as: điện lạnh power tử, physical database or ciphertext compound, the element Basic software we have the ky su xu direction of changes Đặng since an hex line discipline next. Có thể người đàn ông change, me have you can work on the more categories and the system of substitution Công Nghệ software since when the beginning as a program setting members to the years 1955. I am the execution an sai lam nhiều in Development, manager, and has been software, and hope students from them. I am the students be more questions from the ky su software deep Sắc and has kinh experimental, and interactive for these people have chu Đảo analysis of the xu direction and perform actions in Công Nghệ software. Which kinh experimental students have file helps me one satisfied Thuận good in attempt to understand that make substitution Công Nghệ software has to its at the start and where it is to be able to go. Hồ are the help me attempt to separated between resource rule out of current and perform gian Tiễn has occurred at the same time for Development successful the system software Lĩnh deep. Back to the problem this my being adjustment of the definition [147] "ky thuat" to determine its: điện lạnh as "the application khoa students and accounting learning that attributes of software was made useful for the Dan. " kiêm word "useful for the people" indicate that khoa students have the related to include khoa students distribution vi, khoa learning management, and Kinh Tế, as well as other khoa learning the computer. Trọng token tell does, me be start with one giả theory simple: software people could you want to see nhin Công Nghệ software execution failed, and attempt to make all the job better. I am be attempt to to interpret control to the one call interpret cao cấp the collection of line discipline collection of line discipline is too Khu Công Nghệ software. I am following will definition of some direction xu that affects actual Tiến Công Nghệ software in the future, and summary of some take effect against all the NHÀ Nghiên look up in the future Công Nghệ software, executing action and education. 2 2. one nhin Hegel of software: điện lạnh through NHÀ Triết students Hegel specified giả theory that increase really understand the know what people con after a con line of Luân Project (this is the reason at sao, the control happen way they work); reverse (Luân well Failed in some of the way important; here be a response interpret better); and tong hop (reverse denied too well origin of Luân; here be a loai lai Shot for good first of both during avoid disabled Tất their). following me be attempt to apply does giả theory to interpret really child development of Công Nghệ software from the following year 1950 to 'Nay2.1 năm 1950 luận án: công nghệ phần mềm là như phần cứng kỹ thuật khi tôi bước vào lĩnh vực phần mềm năm 1955 tại General Dynamics, 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à một kỹ sư phần cứng hoặc một nhà toán học, và phần mềm được phát triển hỗ trợ máy bay hoặc kỹ thuật tên lửa. 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ư là "biện pháp hai lần, cắt một lần," trước khi chạy mã của họ trên máy tính. Hành vi này cũng là phù hợp với năm 1950 tính toán 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 máy tính 1103 GD thời đại, đầ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 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 instilled trong tôi một số thực hành tốt như anh bạn bàn kiểm tra, kiểm tra, và thực hiện các chương trình của tôi theo cách thủ công trước khi chạy chúng. 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. Các dự án xử lý thông tin tham vọng nhất của những năm 1950 đã phát triển 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 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 sẽ phát hiện, theo dõi và ngăn chặn đối phương máy bay ném bom Hoa Kỳ và Canada quê hương. 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 kỹ sư phần cứng để sử dụng trong SAGE [1]. Nó cho thấy rằng mô hình thác nước-loại tuần tự đã được sử dụng trong phát triển phần mềm trong 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ã ở dưới cùng, này quá trình 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 Lincoln phòng thí nghiệm hệ thống tiện ích để hỗ trợ hàng ngàn của các lập trình viên tham gia trong 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à hỗ trợ để kiểm tra và gỡ lỗi. Hệ thống SAGE kết quả thành công đáp ứng 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à "thật 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 những 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 máy móc thiết bị máy tính và các Hiệp hội tin học IEEE2.2 1960 reverse: software Phác thảo bởi năm 1960, However, people found ra software which the current icon different from the hardware show icon in the way Đặng ke. Start priority, software is already easily than the more for change rather than Hardware, and it is not required Dây Lĩnh Vendor Đất Payment for work for duplicates work. One changes the program once, and then reload chut same Khuôn patterns on a computer, Chu non personal changed Configuration of each of copy of hardware. Nay easy change instructions multiple users and organizations info over one "codes and fix" way forwarding có thể for Development software, vì vậy with the mark giá full designed important ky su Hardware implemented before the cam for Dây Lĩnh Vendor and Uôn kim categories (Biên solution twice, truncate once). Many software applications have become more than people Lĩnh deep more than Hardware Lĩnh deep; SAGE even become more than is chi distributed bởi NHÀ tâm Bạn reason students resolve the problem of people con machine-machine interactive more than bởi radar ky su. plan active THÔNG NUM ky thuat MÁY THÔNG NUM ky thuat active CHƯƠNG TRÌNH Chi tiết: điện lạnh THÔNG NUM ky thuat Ma Hoa Ma Hoa THAM NUM testing (characteristics: điện lạnh) HỘI testing (characteristics: điện lạnh) Lĩnh DJI Thu May system rating Gia Hình 1: Quá trình phát triển phần mềm SAGE (1956) Một sự khác biệt phần mềm là phần mềm mà không mang ra ngoài. Như vậy, độ tin cậy phần mềm chỉ có thể không hoàn hảo được ước tính bằng mô hình độ tin cậy phần cứng, và "bảo trì phần mềm" là một hoạt động khác nhau nhiều so với bảo trì phần cứng. Phần mềm là vô hình, nó đã không cân nhắc bất cứ điều gì, nhưng chi phí rất nhiều. Thật khó để nói cho dù đó là đúng tiến độ hay không, và nếu bạn thêm nhiều người hơn để đưa nó trở lại đúng tiến độ, nó chỉ có sau, khi Fred Brooks giải thích trong Mythical Man-Month [42]. Phần mềm nói chung có nhiều nhiều quốc gia, chế độ, và con đường để kiểm tra, làm cho thông số kỹ thuật của nó nhiều khó khăn hơn. Winston Royce, trong bài báo kinh điển năm 1970 của mình, nói: "Để mua sắm các thiết bị phần cứng 5.000.000 $, tôi mong chờ một đặc điểm kỹ thuật 30 trang sẽ cung cấp đầy đủ chi tiết để kiểm soát việc mua sắm. Để mua sắm trị giá 5 triệu USD phần mềm, một đặc điểm kỹ thuật trang 1500 là về bên phải để đạt được kiểm soát so sánh được. "[132]. Một vấn đề khác với cách tiếp cận kỹ thuật phần cứng là sự mở rộng nhanh chóng của nhu cầu về phần mềm vượt xa việc cung cấp các kỹ sư và các nhà toán học. Chương trình SAGE bắt đầu tuyển dụng và đào tạo nhân văn, khoa học xã hội, ngoại ngữ, và chuyên ngành mỹ thuật phát triển phần mềm. Tương tự như những người không kỹ thuật tràn ngập vào các vị trí phát triển phần mềm cho doanh nghiệp, chính phủ, và các dịch vụ xử lý dữ liệu. Những người này đã thoải mái hơn nhiều với cách tiếp cận mã và sửa chữa. Họ thường rất sáng tạo, nhưng bản sửa lỗi của họ thường dẫn đến mã spaghetti rất nhiều vá. Nhiều người trong số họ đã bị ảnh hưởng nặng nề bởi "quyền câu hỏi" thái độ của năm 1960 và có xu hướng diễu hành đến tay trống của riêng mình chứ không phải là những người của tổ chức sử dụng chúng. Một phụ đáng kể
đang được dịch, vui lòng đợi..

Một Xem Kỹ thuật phần mềm 20 và 21 thế kỷ
tuyên bố TÓM TẮT George Santayana của "Những người không thể nhớ quá khứ bị kết á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ọ, 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. Các 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 những thành công trong quá khứ. Bài viết này cố gắng xác định ít nhất là một số kinh nghiệm phần mềm qua chính là cũng có giá trị lặp đi lặp lại, và một số không có. Nó cũng cố gắng xác định các hiện tượng cơ bản ả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 như thế nào lĩnh vực của chúng tôi đã nhận được đến nơi mà nó đã, đang và nó ở đâu. Một tuyên bố đối tác Santayana như về quá khứ và tương lai có thể nói, "Trong thời đại thay đổi nhanh chóng, những người lặp lại quá khứ 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 kỹ thuật 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ố nguyên nhâ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ài thập kỷ tới, và xác định một số chiến lược cho đánh giá và thích ứng 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 trong việc phân biệt các nguyên tắc vượt thời gian tương đối kỹ thuật phần mềm có nguy hiểm không lặp lại, và điều kiện của sự thay đổi, theo đó hoạt động quá trình lão hóa sẽ ngày càng trở nên nguy hiểm để lặp lại.
1. GIỚI THIỆU Một có được một chút táo bạo để cố gắng mô tả cả quá khứ và tương lai của công nghệ phần mềm trong một vài trang. Đối với một điều, có rất nhiều loại công nghệ phần mềm: lớn hay nhỏ; hàng hóa hoặc tùy chỉnh; nhúng hoặc người sử dụng chuyên sâu; Greenfield hoặc di sản / COTS / tái sử dụng theo định hướng; homebrew, thuê ngoài, hoặc cả hai; sử dụng casual- hoặc nhiệm vụ quan trọng. Đối với một điều, không giống như các kỹ thuật của các điện tử, vật liệu, hoặc các hóa chất, các yếu tố kỹ sư phần mềm cơ bản chúng ta có xu hướng thay đổi đáng kể từ một thập kỷ tiếp theo. May mắn thay, tôi đã có thể làm việc trên nhiều loại và thế hệ của công nghệ phần mềm kể từ khi bắt đầu từ một lập trình viên vào năm 1955 tôi đã thực hiện tốt nhiều sai lầm trong việc phát triển, quản lý và mua lại phần mềm, và hy vọng học được từ họ. Tôi đã có thể học hỏi từ nhiều kỹ sư phần mềm sâu sắc và giàu kinh nghiệm, và để tương tác với nhiều người chu đáo những người có xu hướng phân tích và thực tiễn trong công nghệ phần mềm. Những kinh nghiệm học tập đã giúp tôi một việc tốt trong cố gắng để hiểu làm thế nào công nghệ phần mềm đã để nó ở đâu và nơi mà nó có khả năng để đi. Họ cũng giúp ích trong tôi đang cố gắng để phân biệt giữa các nguyên tắc vượt thời gian và thực hành lạc hậu để phát triển hệ thống phần mềm chuyên sâu thành công. Về vấn đề này, tôi đang thích ứng [147] định nghĩa về "kỹ thuật" để xác định kỹ thuật là "ứng dụng khoa học và toán học mà các thuộc tính của phần mềm được thực hiện hữu ích cho mọi người." Cụm từ "hữu ích cho người dân" ngụ ý rằng khoa học có liên quan bao gồm các ngành khoa học hành vi, khoa học quản lý và kinh tế, cũng như khoa học máy tính. Trong bài báo này, tôi sẽ bắt đầu với một giả thuyết đơn giản: người làm phần mềm không muốn nhìn thấy công nghệ phần mềm thực hiện không thành công, và cố gắng làm cho mọi việc tốt hơn. Tôi sẽ cố gắng xây dựng này thành một cấp cao thập kỷ-by-thập kỷ qua lời giải thích của công nghệ phần mềm của. Sau đó tôi sẽ xác định một số xu hướng ảnh hưởng đến thực hành kỹ thuật phần mềm trong tương lai, và tóm tắt một số tác động đối với các nhà nghiên cứu trong tương lai công nghệ phần mềm, các học viên và các nhà giáo dục.
2
2. Một Xem Hegel về quá khứ Kỹ thuật phần mềm của Triết gia Hegel đưa ra giả thuyết rằng việc gia tăng sự hiểu biết của con người đi theo con đường của luận án (đây là lý do tại sao sự việc xảy ra cách họ làm); phản đề (luận án không thành công trong một số cách quan trọng, đây là một lời giải thích tốt hơn); và tổng hợp (phản đề từ chối quá nhiều của luận án ban đầu, đây là một giống lai nắm bắt được tốt nhất của cả hai trong khi tránh các khuyết tật của họ). Dưới đây chúng tôi sẽ cố gắng áp dụng giả thuyết này để giải thích sự phát triển của công nghệ phần mềm từ những năm 1950 đến nay
2.1 1950 của 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, luận án hiện hành là " Kỹ sư phần mềm 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 được phát triển được hỗ trợ máy bay hoặc tên lửa kỹ thuật. Người ta cứ máy tính xách tay kỹ thuật và thực hành giới phần cứng như "đo hai lần, cắt một lần," trước khi chạy mã của họ trên máy tính. Hành vi này cũng là phù hợp với kinh tế tính toán năm 1950. Vào ngày đầu tiên của tôi trong công việc, giám sát của tôi chỉ cho tôi thấy GD ERA 1103 máy tính, trong đó chứa đầy một căn phòng lớn. Ông nói, "Bây giờ lắng nghe. Chúng tôi đang phải trả $ 600 một giờ cho máy tính này và 2 đô la một giờ cho bạn, và tôi muốn bạn hành động phù hợp. "Này thấm nhuần trong tôi một số thực hành tốt như kiểm tra bàn, kiểm tra bạn thân, 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ị đối với micro tiết kiệm khi cân đối 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 năm 1950 là sự phát triển của đất Môi trường bán tự động (SAGE) cho Mỹ và phòng không của Canada. Nó đã quy tụ các kỹ sư radar, các kỹ sư truyền thông, kỹ sư máy tính, và các kỹ sư phần mềm mới ra đời hàng đầu để phát triển một hệ thống có thể phát hiện, theo dõi và ngăn chặn máy bay địch ném bom từ 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 kỹ sư phần cứng để sử dụng trong SAGE [1]. Nó cho thấy rằng mô hình thác nước kiểu tuần tự đã được sử dụng trong phát triển phần mềm trong 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 các hệ thống phòng thí nghiệm Lincoln tiện ích để hỗ trợ hàng ngàn lập trình viên tham gia 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à hỗ trợ để kiểm tra và sửa lỗi. Hệ thống SAGE kết quả thành công đáp ứng thông số kỹ thuật của mình với một lịch trình khoảng một năm trượt. Dưới dòng bình luận Benington của sự thành công là "Nó rất dễ dàng cho tôi để chọn ra các yếu tố một đã dẫn đến thành công tương đối của chúng tôi: chúng tôi đã được 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 dọc theo đường kỹ thuật." Một dấu hiệu cho thấy phần cứng định hướng kỹ thuật của năm 1950 là 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 Computing Machinery và máy tính IEEE Hội
2.2 phản 1960: Phần mềm Phác thảo Vào những năm 1960, tuy nhiên, mọi người phát hiện ra rằng phần mềm hiện tượng khác với phần cứng Hiện tượng theo những cách đáng kể. Đầu tiên, phần mềm được dễ dàng hơn để thay đổi hơn là phần cứng, và nó không đòi hỏi dây chuyền sản xuất tốn kém để 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 từng cấu hình của mỗi bản sao của phần cứng. Dễ dàng sửa đổi này khiến cho nhiều người và tổ chức thực hiện một "mã và sửa chữa" cách tiếp cận để phát triển phần mềm, so với thiết kế quan trọng đầy đủ giá mà các kỹ sư phần cứng 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 ngày càng trở nên những người chuyên sâu hơn 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.
KẾ HOẠCH VẬN HÀNH
MÁY KỸ THUẬT
SỐ KỸ THUẬT HOẠT ĐỘNG
CHƯƠNG TRÌNH KỸ THUẬT
MÃ HÓA KỸ THUẬT
MÃ HÓA
THÔNG SỐ KIỂM TRA (Thông số kỹ thuật)
HỘI KIỂM TRA (Thông số kỹ thuật)
chạy thử
HỆ THỐNG ĐÁNH GIÁ
Hình 1: Quá trình phát triển phần mềm SAGE (1956) Một sự khác biệt phần mềm là phần mềm đã không mang ra ngoài. Như vậy, độ tin cậy phần mềm chỉ có thể không hoàn hảo được ước tính bằng mô hình độ tin cậy phần cứng, và "bảo trì phần mềm" là một hoạt động khác nhau nhiều so với bảo trì phần cứng. Phần mềm là vô hình, nó đã không cân nhắc bất cứ điều gì, nhưng chi phí rất nhiều. Thật khó để nói cho dù đó là đúng tiến độ hay không, và nếu bạn thêm nhiều người hơn để đưa nó trở lại đúng tiến độ, nó chỉ có sau, khi Fred Brooks giải thích trong Mythical Man-Month [42]. Phần mềm nói chung có nhiều nhiều quốc gia, chế độ, và con đường để kiểm tra, làm cho thông số kỹ thuật của nó nhiều khó khăn hơn. Winston Royce, trong bài báo kinh điển năm 1970 của mình, nói: "Để mua sắm các thiết bị phần cứng 5.000.000 $, tôi mong chờ một đặc điểm kỹ thuật 30 trang sẽ cung cấp đầy đủ chi tiết để kiểm soát việc mua sắm. Để mua sắm trị giá 5 triệu USD phần mềm, một đặc điểm kỹ thuật trang 1500 là về bên phải để đạt được kiểm soát so sánh được. "[132]. Một vấn đề khác với cách tiếp cận kỹ thuật phần cứng là sự mở rộng nhanh chóng của nhu cầu về phần mềm vượt xa việc cung cấp các kỹ sư và các nhà toán học. Chương trình SAGE bắt đầu tuyển dụng và đào tạo nhân văn, khoa học xã hội, ngoại ngữ, và chuyên ngành mỹ thuật phát triển phần mềm. Tương tự như những người không kỹ thuật tràn ngập vào các vị trí phát triển phần mềm cho doanh nghiệp, chính phủ, và các dịch vụ xử lý dữ liệu. Những người này đã thoải mái hơn nhiều với cách tiếp cận mã và sửa chữa. Họ thường rất sáng tạo, nhưng bản sửa lỗi của họ thường dẫn đến mã spaghetti rất nhiều vá. Nhiều người trong số họ đã bị ảnh hưởng nặng nề bởi "quyền câu hỏi" thái độ của năm 1960 và có xu hướng diễu hành đến tay trống của riêng mình chứ không phải là những người của tổ chức sử dụng chúng. Một phụ đáng kể
đang được dịch, vui lòng đợi..
