Luận án Tiến sĩ về mô hình triển khai phần mềm thuần hàm của Eelco Dolstra
Luận án tiến sĩ là công trình nghiên cứu chuyên sâu, đóng góp tri thức mới cho ngành học.
Universiteit Utrecht
Programming research and Algorithmics
Luan An
Luận án tiến sĩ
Năm xuất bản
Số trang
281
Thời gian đọc
43 phút
Lượt xem
0
Lượt tải
0
Phí lưu trữ
50 Point
Tổng quan nhanh
- Chủ đề:
- Khám Phá Mô Hình Triển Khai Phần Mềm Chức Năng Mới
- Số trang:
- 281 trang
- Trường:
- Universiteit Utrecht
- Chuyên ngành:
- Programming research and Algorithmics
- Tác giả:
- Eelco Dolstra
- Năm:
- 2006
Tóm tắt nội dung luận án
I.Khám Phá Mô Hình Triển Khai Phần Mềm Chức Năng Mới
Triển khai phần mềm hiện đại đối mặt nhiều thách thức. Các hệ thống thường phức tạp, gây ra sự không ổn định. Quản lý phụ thuộc chồng chéo là một vấn đề nan giải. Mô hình triển khai phần mềm thuần chức năng đề xuất một cách tiếp cận mới. Nó tập trung vào sự bất biến và khả năng tái tạo. Mỗi cấu hình hệ thống được coi là kết quả của một hàm. Hàm này nhận các đầu vào và tạo ra đầu ra duy nhất. Điều này đảm bảo tính nhất quán tối đa. Các vấn đề như "dependency hell" được giảm thiểu triệt để. Mô hình này mang lại độ tin cậy cao hơn cho quá trình triển khai. Triển khai trở nên dự đoán được hơn. Khả năng gỡ lỗi được cải thiện đáng kể. Đây là trọng tâm của luận văn tiến sĩ. Luận án tiến sĩ này khám phá sâu sắc khái niệm đó. Nó trình bày cơ sở lý thuyết vững chắc. Mục tiêu là định hình lại cách triển khai phần mềm. Nó cung cấp một nền tảng mới. Nền tảng này giải quyết các hạn chế của phương pháp truyền thống.
1.1. Giới Thiệu Mô Hình Triển Khai Phần Mềm Thuần Chức Năng
Triển khai phần mềm hiện đại đối mặt nhiều thách thức. Các hệ thống thường phức tạp. Phụ thuộc chồng chéo gây ra sự không ổn định. Mô hình triển khai phần mềm thuần chức năng đề xuất một cách tiếp cận mới. Nó tập trung vào sự bất biến và tái tạo. Mỗi cấu hình hệ thống là một hàm của các đầu vào của nó. Điều này đảm bảo tính nhất quán. Các vấn đề như "dependency hell" được giảm thiểu. Mô hình này mang lại độ tin cậy cao hơn. Triển khai trở nên dự đoán được. Khả năng gỡ lỗi được cải thiện đáng kể. Luận văn tiến sĩ này khám phá sâu sắc khái niệm đó. Nó trình bày cơ sở lý thuyết vững chắc. Mục tiêu là định hình lại cách triển khai phần mềm. Phương pháp này giảm thiểu rủi ro.
1.2. Bối Cảnh và Tầm Quan Trọng của Triển Khai Phần Mềm
Triển khai phần mềm là một khía cạnh quan trọng. Nó ảnh hưởng trực tiếp đến chất lượng hệ thống. Các vấn đề như cấu hình không đồng nhất, môi trường không nhất quán phổ biến. Chúng dẫn đến lỗi sản xuất khó phát hiện. Nhu cầu về một mô hình triển khai mạnh mẽ là cấp thiết. Mô hình này phải đảm bảo sự nhất quán. Nó cần hỗ trợ quản lý vòng đời phần mềm hiệu quả. Nghiên cứu sinh nhận thấy tầm quan trọng này. Nghiên cứu giải quyết sự phức tạp của việc cấu hình. Nó tìm kiếm giải pháp cho việc quản lý phụ thuộc phần mềm. Giải pháp đó cần đáng tin cậy và minh bạch. Công trình này đặt nền móng cho các hệ thống triển khai thế hệ tiếp theo. Nó góp phần vào sự phát triển ổn định của phần mềm.
II.Hệ Thống Nix Giải Pháp Triển Khai Chức Năng Đột Phá
Hệ thống Nix hiện thực hóa mô hình triển khai thuần chức năng. Nó sử dụng một "Nix store" độc đáo. Nix store lưu trữ tất cả các thành phần phần mềm. Các thành phần này là bất biến. Chúng được định địa chỉ bằng nội dung (content-addressed). Mỗi bản dựng tạo ra một đường dẫn duy nhất trong store. Đường dẫn này chứa hàm băm của tất cả các đầu vào. Điều này đảm bảo tính xác định của bản dựng. Các "derivations" mô tả cách xây dựng phần mềm. Derivations liệt kê các phụ thuộc, nguồn và hướng dẫn xây dựng. Chúng được biểu diễn bằng ngôn ngữ riêng. Kiến trúc này loại bỏ vấn đề xung đột phụ thuộc. Nó cũng cho phép nhiều phiên bản phần mềm cùng tồn tại. Luận án tiến sĩ này mô tả chi tiết kiến trúc đó. Nix đại diện cho một bước tiến quan trọng. Nó giải quyết các thách thức lâu năm trong quản lý phần mềm.
2.1. Kiến Trúc Cơ Bản của Hệ Thống Triển Khai Nix
Hệ thống Nix hiện thực hóa mô hình triển khai thuần chức năng. Nó sử dụng một "Nix store" độc đáo. Nix store lưu trữ tất cả các thành phần phần mềm. Các thành phần này là bất biến. Chúng được định địa chỉ bằng nội dung (content-addressed). Mỗi bản dựng tạo ra một đường dẫn duy nhất trong store. Đường dẫn này chứa hàm băm của tất cả các đầu vào. Điều này đảm bảo tính xác định của bản dựng. Các "derivations" mô tả cách xây dựng phần mềm. Derivations liệt kê các phụ thuộc, nguồn và hướng dẫn xây dựng. Chúng được biểu diễn bằng ngôn ngữ riêng. Kiến trúc này loại bỏ vấn đề xung đột phụ thuộc. Nó cũng cho phép nhiều phiên bản phần mềm cùng tồn tại. Luận án tiến sĩ này mô tả chi tiết kiến trúc đó.
2.2. Ngôn Ngữ Biểu Thức Nix và Tính Chất Chức Năng
Ngôn ngữ biểu thức Nix là trung tâm của hệ thống. Đây là một ngôn ngữ lập trình thuần chức năng. Nó được thiết kế đặc biệt cho quản lý gói và cấu hình. Ngôn ngữ này không có tác dụng phụ. Các biểu thức Nix luôn tạo ra cùng một đầu ra cho cùng một đầu vào. Điều này là cốt lõi cho tính chất xác định. Nó cho phép các nhà phát triển mô tả cấu hình hệ thống. Họ có thể định nghĩa các gói phần mềm. Mọi thứ đều được biểu diễn một cách rõ ràng và minh bạch. Tính chất chức năng đảm bảo sự tái tạo. Các môi trường có thể được sao chép hoàn hảo. Không có "trạng thái ẩn" nào gây ra sự không nhất quán. Viết luận án này nhấn mạnh tầm quan trọng của ngôn ngữ.
III.Cấu Trúc Luận Án Khám Phá Triển Khai Phần Mềm Hiện Đại
Cấu trúc của luận án tiến sĩ này được tổ chức rõ ràng. Nó dẫn dắt người đọc qua các khái niệm phức tạp. Luận án bắt đầu với tổng quan tài liệu về hiện trạng. Nó phân tích các vấn đề của triển khai phần mềm truyền thống. Tiếp theo, hệ thống Nix được giới thiệu chi tiết. Các chương sau đi sâu vào mô hình lý thuyết. Mô hình mở rộng (Extensional Model) và mô hình nội hàm (Intensional Model) được trình bày. Chúng cung cấp nền tảng toán học. Cuối cùng, luận án kết thúc với các kết luận. Nó đưa ra các đóng góp chính và hướng nghiên cứu tương lai. Mỗi phần được xây dựng hợp lý. Người đọc hiểu được sự phát triển của ý tưởng. Cấu trúc này tối ưu hóa việc truyền đạt kiến thức.
3.1. Tổng Quan Cấu Trúc Luận Án và Chương Trình
Cấu trúc của luận án tiến sĩ này được tổ chức rõ ràng. Nó dẫn dắt người đọc qua các khái niệm phức tạp. Luận án bắt đầu với tổng quan tài liệu về hiện trạng. Nó phân tích các vấn đề của triển khai phần mềm truyền thống. Tiếp theo, hệ thống Nix được giới thiệu chi tiết. Các chương sau đi sâu vào mô hình lý thuyết. Mô hình mở rộng (Extensional Model) và mô hình nội hàm (Intensional Model) được trình bày. Chúng cung cấp nền tảng toán học. Cuối cùng, luận án kết thúc với các kết luận. Nó đưa ra các đóng góp chính và hướng nghiên cứu tương lai. Mỗi phần được xây dựng hợp lý. Người đọc hiểu được sự phát triển của ý tưởng.
3.2. Mục Tiêu Nghiên Cứu và Câu Hỏi Cần Giải Đáp
Mục tiêu chính của nghiên cứu này là phát triển. Nó tạo ra một mô hình triển khai phần mềm mới. Mô hình này phải khắc phục nhược điểm hiện có. Nó cần cung cấp tính xác định và độ tin cậy. Các câu hỏi nghiên cứu tập trung vào tính khả thi. Làm thế nào để đạt được sự bất biến trong triển khai? Làm thế nào để quản lý các phụ thuộc phức tạp hiệu quả? Mô hình chức năng có thể giải quyết các vấn đề này không? Nghiên cứu sinh tìm cách trả lời những câu hỏi này. Nghiên cứu này thiết lập một khung lý thuyết. Nó cũng cung cấp một triển khai thực tế. Hướng dẫn luận án đã định hình các mục tiêu này. Mục tiêu rõ ràng định hướng toàn bộ công trình.
IV.Phương Pháp Nghiên Cứu Từ Mô Hình Đến Thực Tiễn Triển Khai
Phương pháp nghiên cứu kết hợp lý thuyết và thực nghiệm. Nó bắt đầu bằng việc xác định các vấn đề cốt lõi. Sau đó, một mô hình lý thuyết được xây dựng. Mô hình này dựa trên nguyên tắc chức năng. Các thuộc tính như sự bất biến được định nghĩa rõ ràng. Một hệ thống thực tế (Nix) được phát triển. Nó hiện thực hóa các nguyên tắc của mô hình. Quá trình này bao gồm thiết kế kiến trúc. Nó bao gồm triển khai các thành phần chính. Việc kiểm tra và đánh giá hệ thống thực tế được thực hiện. Điều này xác nhận tính đúng đắn của mô hình. Phương pháp luận đảm bảo tính khoa học. Nó giúp thu hẹp khoảng cách giữa lý thuyết và thực hành. Luận án tiến sĩ này sử dụng phương pháp toàn diện. Nó đảm bảo tính hợp lệ của kết quả.
4.1. Phương Pháp Luận Trong Xây Dựng Mô Hình Chức Năng
Phương pháp nghiên cứu kết hợp lý thuyết và thực nghiệm. Nó bắt đầu bằng việc xác định các vấn đề cốt lõi. Sau đó, một mô hình lý thuyết được xây dựng. Mô hình này dựa trên nguyên tắc chức năng. Các thuộc tính như sự bất biến được định nghĩa rõ ràng. Một hệ thống thực tế (Nix) được phát triển. Nó hiện thực hóa các nguyên tắc của mô hình. Quá trình này bao gồm thiết kế kiến trúc. Nó bao gồm triển khai các thành phần chính. Việc kiểm tra và đánh giá hệ thống thực tế được thực hiện. Điều này xác nhận tính đúng đắn của mô hình. Phương pháp luận đảm bảo tính khoa học. Nó giúp thu hẹp khoảng cách giữa lý thuyết và thực hành. Luận án tiến sĩ này sử dụng phương pháp toàn diện.
4.2. Các Mô Hình Triển Khai Mở Rộng và Nội Hàm
Luận án giới thiệu hai mô hình chính. Đó là mô hình mở rộng (Extensional Model) và mô hình nội hàm (Intensional Model). Mô hình mở rộng tập trung vào kết quả. Nó mô tả các hệ thống triển khai như các hàm. Các hàm này ánh xạ từ cấu hình đến trạng thái hệ thống. Mô hình nội hàm đi sâu hơn. Nó chi tiết hóa quá trình xây dựng. Nó mô tả cách các thành phần được tạo ra. Các hàm băm nội dung là yếu tố cốt lõi. Chúng đảm bảo tính duy nhất và bất biến. Các mô hình này cung cấp một khung lý thuyết chặt chẽ. Chúng chứng minh tính đúng đắn của phương pháp chức năng. Trích dẫn khoa học từ các công trình liên quan được sử dụng. Chúng hỗ trợ cho việc phát triển các mô hình này. Điều này củng cố nền tảng lý thuyết.
V.Đóng Góp Khoa Học Tiến Bộ Trong Luận Án Triển Khai Nix
Luận án tiến sĩ này mang lại nhiều đóng góp quan trọng. Nó định nghĩa và phát triển mô hình triển khai thuần chức năng. Mô hình này cung cấp một khuôn khổ mới. Nó giải quyết các vấn đề phổ biến của triển khai phần mềm. Việc thiết kế và thực hiện hệ thống Nix là một đóng góp lớn. Nix chứng minh tính khả thi của mô hình lý thuyết. Các mô hình lý thuyết (Extensional và Intensional) được trình bày. Chúng cung cấp sự hiểu biết sâu sắc. Chúng formal hóa các khái niệm triển khai. Bảo vệ luận án này trình bày một giải pháp toàn diện. Giải pháp này có tiềm năng thay đổi ngành công nghiệp. Nó mang lại sự tin cậy và khả năng tái sản xuất. Các đóng góp này có ý nghĩa lâu dài.
5.1. Đóng Góp Chính của Luận Án Đối Với Lĩnh Vực
Luận án tiến sĩ này mang lại nhiều đóng góp quan trọng. Nó định nghĩa và phát triển mô hình triển khai thuần chức năng. Mô hình này cung cấp một khuôn khổ mới. Nó giải quyết các vấn đề phổ biến của triển khai phần mềm. Việc thiết kế và thực hiện hệ thống Nix là một đóng góp lớn. Nix chứng minh tính khả thi của mô hình lý thuyết. Các mô hình lý thuyết (Extensional và Intensional) được trình bày. Chúng cung cấp sự hiểu biết sâu sắc. Chúng formal hóa các khái niệm triển khai. Bảo vệ luận án này trình bày một giải pháp toàn diện. Giải pháp này có tiềm năng thay đổi ngành công nghiệp. Nó mang lại sự tin cậy và khả năng tái sản xuất.
5.2. Hướng Phát Triển Tương Lai và Tiềm Năng Ứng Dụng
Nghiên cứu mở ra nhiều hướng phát triển tương lai. Các cải tiến có thể tập trung vào hiệu suất. Tối ưu hóa việc thu gom rác (garbage collection) là một lĩnh vực. Mở rộng khả năng tương tác với hệ thống hiện có cũng quan trọng. Ứng dụng của Nix không chỉ giới hạn ở triển khai server. Nó có thể được sử dụng trong phát triển phần mềm. Nó cũng áp dụng cho quản lý môi trường khoa học. Tiềm năng cho các hệ thống phân tán là rất lớn. Hướng dẫn luận án này cung cấp một nền tảng vững chắc. Nó hỗ trợ cho các nghiên cứu tiếp theo. Nghiên cứu sinh đã đặt nền móng cho đổi mới. Đổi mới này hứa hẹn cải thiện đáng kể quy trình phần mềm. Luận án tạo ra giá trị bền vững.
Tải xuống file đầy đủ để xem toàn bộ nội dung
Tải đầy đủ (281 trang)Trích đoạn nội dung luận án
Tải xuống để đọc toàn bộThe Purely Functional Software Deployment Model Het puur functionele softwaredeploymentmodel (met een samenvatting in het Nederlands) Proefschrift ter verkrijging van de graad van doctor aan de Universiteit Utrecht op gezag van de Rector Magnificus, Prof. Gispen, ingevolge het besluit van het College voor Promoties in het openbaar te verdedigen op woensdag 18 januari 2006 des middags te 12.45 uur door Eelco Dolstra geboren op 18 augustus 1978, te Wageningen Promotor: Prof. Doaitse Swierstra, Universiteit Utrecht Copromotor: Dr. Eelco Visser, Universiteit Utrecht The work in this thesis has been carried out under the auspices of the research school IPA (Institute for Programming research and Algorithmics).
Dit proefschrift werd mogelijk gemaakt met financiële steun van CIBIT|SERC ICT Adviseurs. Cover illustration: Arthur Rackham (1867–1939), The Rhinegold & The Valkyrie (1910), illustrations for Richard Wagner’s Der Ring des Nibelungen: the gods enter Walhalla as the Rhinemaidens lament the loss of their gold. ISBN 90-393-4130-3 Acknowledgements This thesis could not have come about without the help of many individuals. Foremost I wish to thank my supervisor and copromotor Eelco Visser.
He was also my master’s thesis supervisor, and I was quite happy that we were able to continue to work together on the Variability/TraCE project. He shared my eventual interest in configuration management- related issues, and package management in particular. His insights have improved this research and this thesis at every point. The Software Engineering Research Center (SERC), now known as CIBIT|SERC ICT Adviseurs, funded my PhD position.
Gert Florijn initiated the variability project and the discussions with him were a valuable source of insights. The results of the present thesis are probably not what any of us had expected at the start; but then again, the nice thing about a term like “variability” is that it can take you in so many directions. My promotor Doaitse Swierstra gave lots of good advice—but I ended up not imple- menting his advice to keep this thesis short. I am grateful to the members of the reading committee—Jörgen van den Berg, Sjaak Brinkkemper, Paul Klint, Alexander Wolf and Andreas Zeller—for taking the time and effort to go through this book.
Karl Trygve Kalle- berg, Armijn Hemel, Arthur van Dam and Martin Bravenboer gave helpful comments. Several people have made important contributions to Nix. Notorious workaholic Martin Bravenboer in particular was an early adopter who contributed to almost every aspect of the system. Armijn Hemel (“I am the itch programmers like to scratch”) contributed to Nixpkgs and initiated the NixOS, which will surely conquer the world.
René de Groot coined the marketing slogan for NixOS—“Nix moet, alles kan!” Roy van den Broek has replaced my hacky build farm supervisor with something much nicer (and Web 2. Eelco Visser, Rob Vermaas and Merijn de Jonge also contributed to Nixpkgs and the build farm. In addition, it is hard to overestimate the importance of the work done by the free and open source software community in providing a large body of non-trivial modular components suitable for validation. Thanks! The Software Technology group is a very pleasant work environment, and I thank all my current and former colleagues for that.
I especially thank my roommates Dave Clarke (“The cause of the software crisis is software”), Frank Atanassow (who demanded “pointable research”), Merijn de Jonge, Martin Bravenboer, Rob Vermaas and Stefan Hold- ermans. Andres Löh, Bastiaan Heeren, Arthur Baars, Karina Olmos and Alexey Rodriguez were more than just good colleagues. Daan Leijen insisted on doing things the right way. The #klaplopers provided a nice work environment in virtual space—though whether IRC is a medium that increases productivity remains an unanswered empirical question.
Arthur van Dam and Piet van Oostrum provided valuable assistance in wrestling with TEX. Atze Dijkstra, Bastiaan Heeren and Andres Löh had helpful advice (and code!) for the preparation of this thesis. And finally I would like to thank my family—Mom, Dad, Jitske and Menno—for their support and love through all these years. iii iv Contents I.
The state of the art. The Nix deployment system. Outline of this thesis. An Overview of Nix 19 2.
The Nix store. Transparent source/binary deployment. Deployment as Memory Management 49 3. What is a component?.
The file system as memory. The Nix Expression Language 61 4. Context-free syntax. The Extensional Model 87 5.
The Nix store. File system objects. Path validity and the closure invariant. Translating Nix expressions to store derivations.
Fixed-output derivations. Building store derivations. The simple build algorithm. The parallel build algorithm.
Garbage collection roots. Stop-the-world garbage collection. Concurrent garbage collection. The Intensional Model 135 6.
A content-addressable store. The hash invariant. Equivalence class collisions. Adding store objects.
Building store derivations. Assumptions about components. Applications 165 vi Contents 7. The Nix Packages collection.
The standard environment. Supporting third-party binary components. Binary patch creation. Continuous Integration and Release Management 209 8.
The Nix build farm. Discussion and related work. Service configuration and deployment. Capturing component compositions with Nix expressions.
Maintaining the service. Composition of services. Variability and crosscutting configuration choices. Low-level build management using Nix.
247 vii Contents viii Part I. Introduction This thesis is about getting computer programs from one machine to another—and having them still work when they get there. This is the problem of software deployment. Though it is a part of the field of Software Configuration Management (SCM), it has not been a subject of academic study until quite recently [169].
The development of principles and tools to support the deployment process has largely been relegated to industry, system administrators, and Unix hackers. This has resulted in a large number of often ad hoc tools that typically automate manual practices but do not address fundamental issues in a systematic and disciplined way. This is evidenced by the huge number of mailing list and forum postings about de- ployment failures, ranging from applications not working due to missing dependencies, to subtle malfunctions caused by incompatible components. Deployment problems also seem curiously resistant to automation: the same concrete problems appear time and again.
De- ployment is especially difficult in heavily component-based systems—such as Unix-based open source software—because the effort of dealing with the dependencies can increase super-linearly with each additional dependency. This thesis describes a system for software deployment called Nix that addresses many of the problems that plague existing deployment systems. In this introductory chapter I describe the problem of software deployment, give an overview of existing systems and the limitations that motivated this research, summarise its main contributions, and outline the structure of this thesis. Software deployment Software deployment is the problem of managing the distribution of software to end-user machines.
That is, a developer has created some piece of software, and this ultimately has to end up on the machines of end-users. After the initial installation of the software, it might need to be upgraded or uninstalled. Presumably, the developer has tested the software and found it to work sufficiently well, so the challenge is to make sure that the software works just as well, i., the same, on the end-user machines. I will informally refer to this as correct deployment: given identical inputs, the software should behave the same on an end-user machine as on the developer machine1.
This should be a simple problem. For instance, if the software consists of a set of files, then deployment should be a simple matter of copying those to the target machines. In 1 I’m making several gross simplifications, of course. First, in general there is no single “developer”.
Second, there are usually several intermediaries between the developer and the end-user, such as a system administra- tor. However, for a discussion of the main issues this will suffice. Introduction practice, deployment turns out to be much harder. This has a number of causes.
These fall into two broad categories: environment issues and manageability issues. Environment issues The first category is essentially about correctness. The software might make all sorts of demands about the environment in which it executes: that certain other software components are present in the system, that certain configuration files exist, that certain modifications were made to the Windows registry, and so on. If any of those environmental characteristics does not hold, then there is a possibility that the software does not work the same as it did on the developer machine.
Some concrete issues are the following: • A software component is almost never self-contained; rather, it depends on other components to do some work on its behalf. These are its dependencies. For correct deployment, it is necessary that all dependencies are identified. This identification is quite hard, however, as it is often difficult to test whether the dependency specifi- cation is complete.
After all, if we forget to specify a dependency, we don’t discover that fact if the machine on which we are testing already happens to have the depen- dency installed. • Dependencies are not just a runtime issue. To build a component in the first place we need certain dependencies (such as compilers), and these need not be the same as the runtime dependencies, although there may be some overlap. In general, deployment of the build-time dependencies is not an end-user issue, but it might be in source- based deployment scenarios; that is, when a component is deployed in source form.
This is common in the open source world. • Dependencies also need to be compatible with what is expected by the referring component. In general, not all versions of a component will work. This is the case even in the presence of type-checked interfaces, since interfaces never give a full specification of the observable behaviour of a component.
Also, components often exhibit build-time variability, meaning that they can be built with or without certain optional features, or with other parameters selected at build time. Even worse, the component might be dependent on a specific compiler, or on specific compilation options being used for its dependencies (e., for Application Binary Interface (ABI) compatibility). • Even if all required dependencies are present, our component still has to find them, in order to actually establish a concrete composition of components. This is often a rather labour-intensive part of the deployment process.
Examples include setting up the dynamic linker search path on Unix systems [160], or the CLASSPATH in the Java environment. • Components can depend on non-software artifacts, such as configuration files, user accounts, and so on. For instance, a component might keep state in a database that has to be initialised prior to its first use. Software deployment • Components can require certain hardware characteristics, such as a specific proces- sor type or a video card.
These are somewhat outside the scope of software deploy- ment, since we can at most check for such properties, not realise them if they are missing. • Finally, deployment can be a distributed problem. A component can depend on other components running on remote machines or as separate processes on the same machine. For instance, a typical multi-tier web service consists of an HTTP server, a server implementing the business logic, and a database server, possibly all running on different machines.
So we have two problems in deployment: we must identify what our component’s re- quirements on the environment are, and we must somehow realise those requirements in the target environment. Realisation might consist of installing dependencies, creating or modifying configuration files, starting remote processes, and so on. Manageability issues The second category is about our ability to properly manage the deployment process. There are all kinds of operations that we need to be able to perform, such as packaging, transferring, installing, upgrading, uninstalling, and answering various queries; i., we have to be able to support the evolution of a software system.
Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ
Trích dẫn luận án này
Eelco Dolstra (2006). Mô hình triển khai phần mềm thuần hàm: Luận án Tiến sĩ [Luận án tiến sĩ, Universiteit Utrecht]. LuanAn.net. https://luanan.net/ly-luan-va-lich-su-giao-duc/phd-thesis
Câu hỏi thường gặp
Luận án "Mô hình triển khai phần mềm thuần hàm: Luận án Tiến sĩ" nghiên cứu về vấn đề gì?
Luận án tiến sĩ là công trình nghiên cứu chuyên sâu, đóng góp tri thức mới cho ngành học.
Luận án "Mô hình triển khai phần mềm thuần hàm: Luận án Tiến sĩ" được bảo vệ tại trường nào?
Luận án này được bảo vệ tại Universiteit Utrecht. Năm bảo vệ: 2006.
Luận án "Mô hình triển khai phần mềm thuần hàm: Luận án Tiến sĩ" thuộc chuyên ngành gì?
Luận án "Mô hình triển khai phần mềm thuần hàm: Luận án Tiến sĩ" thuộc chuyên ngành Programming research and Algorithmics. Danh mục: Lý Luận và Lịch Sử Giáo Dục.
Luận án "Mô hình triển khai phần mềm thuần hàm: Luận án Tiến sĩ" có bao nhiêu trang?
Luận án "Mô hình triển khai phần mềm thuần hàm: Luận án Tiến sĩ" có 281 trang. Bạn có thể xem trước một phần tài liệu ngay trên trang web trước khi tải về.
Cách tải luận án "Mô hình triển khai phần mềm thuần hàm: Luận án Tiến sĩ" về máy như thế nào?
Để tải luận án về máy, bạn nhấn nút "Tải xuống ngay" trên trang này, sau đó hoàn tất thanh toán phí lưu trữ. File sẽ được tải xuống ngay sau khi thanh toán thành công. Hỗ trợ qua Zalo: 0559 297 239.