1999年可靠软件技术大会:Ada 语言的多元应用与发展前景
大会概况
1999年6月7日至11日,第四届可靠软件技术国际会议(Ada - Europe’99)在西班牙桑坦德举行。此次会议由欧洲国家Ada协会联盟Ada - Europe联合ACM SIGAda和Ada - Spain共同主办,由西班牙坎塔布里亚大学和马德里理工大学的成员组织。这是Ada - Europe系列会议连续举办的第19年,一直以来都是欧洲Ada领域的主要活动,与之对应的是美国的ACM SIGAda会议(原Tri - Ada)。
会议并非仅聚焦于Ada语言,而是涵盖了更广泛的可靠软件技术领域,包括形式化方法、测试、软件架构与设计、软件工程工具等方面的论文。随着计算机应用在日常生活系统中的控制作用日益增强,可靠软件技术的重要性愈发凸显,会议旨在推动相关技术的发展,以更低的总体成本实现更优质、更可靠的软件。
Ada语言的研究与应用现状
- 研究热度回升 :自Ada 95标准进行重大修订后,Ada语言在许多研究机构重新受到关注。免费软件GNAT编译器以及其他免费或低成本编译器的出现是推动这一趋势的重要因素。研究人员可以获取编译器和运行时系统的源代码,从而能够探索新的语言结构、运行时特性和替代实现方式,会议上有多篇论文围绕这些方向展开。
- 工业应用广泛 :在对软件可靠性有要求的领域,Ada语言的工业应用经验丰富,尤其在飞机、火车或核电站控制系统等安全关键系统中。最近为安全关键系统开发的Ravenscar Profile(一组对任务模型的限制,可用于构建可认证的运行时系统)备受关注,它使基于Ada 95任务模型的应用程序能够用于具有严格安全要求的系统,会议上有部分论文探讨了安全关键系统以及Ravenscar Profile的作用。
会议亮点
- 论文与教程丰富 :本次会议收到了来自17个国家的大量论文投稿,几乎是往年的两倍。程序委员会精心评审后,挑选出36篇高质量论文,涵盖了Ravenscar Profile与高完整性系统、软件架构与设计、测试、形式化方法、教育、分布式系统、实时调度与内核、工具、Ada在硬件/软件协同设计中的作用、容错以及案例研究等多个软件技术领域。此外,会议还安排了一系列精彩的教程,由国际专家介绍可靠软件技术的入门和高级知识,包括面向Ada程序员的Java、使用Ada进行Windows开发、软件互操作性原理与实践等。
- 特邀演讲精彩 :会议邀请了三位杰出的演讲嘉宾,其中两位在撰写前言时尚未确定出席情况,另外两位分别是洛克希德·马丁公司的C. Douglass Locke,他发表了题为“实时Ada应用的架构视角”的演讲;纽约大学和Ada Core Technologies(ACT)的Edmond Schonberg,带来了“GNAT的演进架构”的报告。
会议组织与贡献者
- 组织委员会 :会议的成功举办离不开众多人员的努力。组织委员会成员分工明确,包括会议主席Michael González Harbour(西班牙坎塔布里亚大学)、程序联合主席Michael González Harbour(西班牙坎塔布里亚大学)和Juan A. de la Puente(马德里理工大学)、教程主席Ángel Álvarez(马德里理工大学)、展览主席Alejandro Alonso(马德里理工大学)、宣传主席J. Javier Gutiérrez García(西班牙坎塔布里亚大学)以及Ada - Europe会议联络人Alfred Strohmeier(瑞士洛桑联邦理工学院)等。
- 程序委员会 :程序委员会由可靠软件技术领域的国际专家组成,他们花费大量时间仔细评审所有投稿论文、摘要和教程提案。部分成员还负责指导一些论文的完善,为会议的技术质量提供了有力保障。
Ada语言在不同领域的应用前景
- 非安全关键领域潜力大 :在非安全关键的应用领域,虽然C++和Java等语言更受程序员和系统开发者关注,但Ada语言的使用有望增加。一方面,随着越来越多的系统实现计算机控制,对可靠软件的需求不断增长,如手机、电视、汽车等设备都依赖可靠的软件运行;另一方面,如今许多学术机构开始教授Ada语言,由于编译器成本降低,这一情况在过去几年有了显著变化。对于教师和学生来说,Ada语言是教学和实践的理想选择,可先使用类似Pascal的子集作为入门语言,后续再深入学习抽象、面向对象编程、并发编程、实时编程等概念。
- 分布式系统应用受关注 :随着分布式计算机系统的增多,使用Ada语言进行分布式系统编程的经验也越来越受到重视。会议的分布式系统部分是论文数量最多的板块之一,Ada程序员有多种实现分布式的方法可供选择,包括通过操作系统调用、使用中间件(如CORBA)或利用语言定义的分布式系统附件。会议论文对这些可能性进行了全面探索。
- 硬件/软件协同设计新方向 :今年会议特别设立了硬件/软件协同设计板块。此前的会议未涉及该主题,但由于有多个团队提议将Ada作为硬件/软件协同设计的系统级规范语言,这一领域引起了Ada社区的兴趣。如果这些提议得到足够支持,Ada语言有望在未来开拓这一重要且不断扩展的应用领域。
实时系统的软件架构分析
在实时系统中,无论是否使用Ada语言,常用的软件架构实际上并不多。这些基本架构源于特定应用领域的传统方法,并自然地应用于以Ada为主要语言的系统中。在许多情况下,这些架构已根深蒂固,人们在开发同一领域的新应用时,往往不再考虑最初采用这些架构的原因。
本文将从以下几个方面对实时系统中使用(或不使用)Ada的基本软件架构进行讨论和比较:
-
Ada架构构造的选择
:不同架构通常会使用不同的Ada架构构造。
-
满足实时约束的能力
:架构在满足系统实时要求方面的表现。
-
对系统运行中错误的响应
:应用程序在遇到错误时的应对方式。
-
架构相关成本
:包括开发、维护等方面的成本。
这些讨论虽然具有一定的主观性,但基于作者长期在多种系统中的工作经验,读者可以从中了解到得出结论的依据。
实时Ada系统可以用四种架构家族来描述,分别是Timeline、Event - Driven、Pipeline和Client - Server架构,下面将详细介绍它们的主要特点:
|架构家族|提供有界应用响应时间的能力|成本|安全性|
| ---- | ---- | ---- | ---- |
|Timeline|能够较好地控制响应时间,基于时间线进行任务调度,可预测性强|开发和维护成本相对较高,需要精确的时间规划和管理|在时间管理良好的情况下,安全性较高,能有效避免时间冲突导致的错误|
|Event - Driven|响应时间取决于事件的触发和处理机制,可能存在一定的不确定性|成本相对较低,开发较为灵活|需要对事件处理进行严格的设计和测试,以确保在各种事件情况下的安全性|
|Pipeline|数据按顺序在各个处理阶段流动,响应时间相对稳定|成本适中,需要合理设计管道结构和数据流动|在数据处理流程设计合理的情况下,安全性有保障,可有效隔离错误|
|Client - Server|客户端请求由服务器处理,响应时间受服务器负载影响|成本受服务器性能和数量的影响,可能较高|需要考虑服务器的可靠性和安全性,以防止客户端请求处理失败|
以下是实时系统软件架构选择的流程图:
graph TD
A[确定实时系统需求] --> B{是否对响应时间有严格要求}
B -- 是 --> C{是否有明确的时间线}
C -- 是 --> D[选择Timeline架构]
C -- 否 --> E{是否以事件驱动为主}
E -- 是 --> F[选择Event - Driven架构]
E -- 否 --> G{是否有数据处理流程}
G -- 是 --> H[选择Pipeline架构]
G -- 否 --> I[选择Client - Server架构]
B -- 否 --> J[根据其他因素选择合适架构]
综上所述,Ada语言在可靠软件技术领域具有广泛的应用和发展前景,通过本次会议的交流和探讨,我们可以看到该领域的最新研究成果和发展趋势。无论是在安全关键系统、分布式系统还是硬件/软件协同设计等方面,Ada语言都展现出了独特的优势和潜力。同时,对实时系统软件架构的深入分析有助于开发者根据具体需求选择合适的架构,提高系统的性能和可靠性。
1999年可靠软件技术大会:Ada 语言的多元应用与发展前景
各架构家族的具体分析
-
Timeline架构
- 特点 :Timeline架构基于时间线进行任务调度,任务按照预先设定的时间顺序依次执行。这种架构的可预测性强,能够较好地控制应用的响应时间。例如,在航空航天领域的飞行控制系统中,许多任务需要按照精确的时间顺序执行,Timeline架构可以确保这些任务按时完成,从而保障飞行安全。
- Ada构造选择 :在Timeline架构中,常使用Ada的时间相关特性,如延迟语句(delay)来实现任务的定时执行。以下是一个简单的示例代码:
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Real_Time; use Ada.Real_Time;
procedure Timeline_Example is
Next_Time : Time := Clock;
Period : constant Time_Span := Milliseconds (100);
begin
loop
Put_Line ("Task executed at " & Image (Clock));
Next_Time := Next_Time + Period;
delay until Next_Time;
end loop;
end Timeline_Example;
- **优缺点**:优点是响应时间可预测性高,安全性好;缺点是开发和维护成本相对较高,需要精确的时间规划和管理。如果时间规划不合理,可能会导致任务执行延迟或冲突。
-
Event - Driven架构
- 特点 :Event - Driven架构的响应时间取决于事件的触发和处理机制。系统等待事件的发生,当事件触发时,相应的处理程序被调用。例如,在图形用户界面(GUI)应用中,用户的鼠标点击、键盘输入等操作都是事件,系统根据这些事件做出相应的响应。
- Ada构造选择 :可以使用Ada的任务和保护对象来实现事件处理。保护对象可以用于同步对共享资源的访问,任务可以负责监听和处理事件。以下是一个简单的事件处理示例:
with Ada.Text_IO; use Ada.Text_IO;
package Event_Package is
protected type Event_Handler is
entry Wait_For_Event;
procedure Trigger_Event;
private
Event_Occurred : Boolean := False;
end Event_Handler;
end Event_Package;
package body Event_Package is
protected body Event_Handler is
entry Wait_For_Event when Event_Occurred is
begin
Event_Occurred := False;
end Wait_For_Event;
procedure Trigger_Event is
begin
Event_Occurred := True;
end Trigger_Event;
end Event_Handler;
end Event_Package;
procedure Event_Driven_Example is
Handler : Event_Package.Event_Handler;
begin
-- 模拟事件触发
Handler.Trigger_Event;
-- 等待事件
Handler.Wait_For_Event;
Put_Line ("Event handled.");
end Event_Driven_Example;
- **优缺点**:优点是开发灵活,成本相对较低;缺点是响应时间可能存在一定的不确定性,需要对事件处理进行严格的设计和测试,以确保在各种事件情况下的安全性。
-
Pipeline架构
- 特点 :Pipeline架构中,数据按顺序在各个处理阶段流动,每个阶段完成特定的处理任务。例如,在数据处理系统中,数据可能先经过采集阶段,然后进行清洗、分析,最后输出结果。
- Ada构造选择 :可以使用Ada的任务来实现各个处理阶段,通过通道(channel)来实现任务之间的数据传递。以下是一个简单的管道示例:
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Real_Time; use Ada.Real_Time;
procedure Pipeline_Example is
task type Stage_1 is
entry Input (Data : Integer);
end Stage_1;
task type Stage_2 is
entry Input (Data : Integer);
end Stage_2;
task body Stage_1 is
Data : Integer;
begin
accept Input (Data : Integer) do
Put_Line ("Stage 1 received data: " & Integer'Image (Data));
-- 模拟处理
delay Milliseconds (100);
-- 将数据传递给Stage 2
declare
S2 : Stage_2;
begin
S2.Input (Data * 2);
end;
end Input;
end Stage_1;
task body Stage_2 is
Data : Integer;
begin
accept Input (Data : Integer) do
Put_Line ("Stage 2 received data: " & Integer'Image (Data));
end Input;
end Stage_2;
S1 : Stage_1;
begin
S1.Input (10);
end Pipeline_Example;
- **优缺点**:优点是响应时间相对稳定,数据处理流程清晰,安全性有保障;缺点是需要合理设计管道结构和数据流动,如果某个阶段出现问题,可能会影响整个管道的运行。
-
Client - Server架构
- 特点 :Client - Server架构中,客户端向服务器发送请求,服务器处理请求并返回结果。例如,在网络应用中,浏览器作为客户端向服务器请求网页资源,服务器处理请求并将网页内容返回给浏览器。
- Ada构造选择 :可以使用Ada的分布式系统特性来实现客户端和服务器之间的通信。以下是一个简单的客户端 - 服务器示例:
-- 服务器端
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Sockets; use Ada.Sockets;
procedure Server is
Server_Socket : Socket_Type;
Server_Address : Sock_Addr_Type;
Client_Socket : Socket_Type;
Buffer : String (1 .. 1024);
Last : Natural;
begin
Create_Socket (Server_Socket);
Server_Address.Addr := Inet_Addr ("127.0.0.1");
Server_Address.Port := 1234;
Bind_Socket (Server_Socket, Server_Address);
Listen_Socket (Server_Socket);
Accept_Socket (Server_Socket, Client_Socket);
Receive_Socket (Client_Socket, Buffer, Last);
Put_Line ("Received: " & Buffer (1 .. Last));
Close_Socket (Client_Socket);
Close_Socket (Server_Socket);
end Server;
-- 客户端
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Sockets; use Ada.Sockets;
procedure Client is
Client_Socket : Socket_Type;
Server_Address : Sock_Addr_Type;
Message : String := "Hello, server!";
begin
Create_Socket (Client_Socket);
Server_Address.Addr := Inet_Addr ("127.0.0.1");
Server_Address.Port := 1234;
Connect_Socket (Client_Socket, Server_Address);
Send_Socket (Client_Socket, Message);
Close_Socket (Client_Socket);
end Client;
- **优缺点**:优点是可以实现资源的集中管理和共享;缺点是响应时间受服务器负载影响,成本受服务器性能和数量的影响,可能较高,需要考虑服务器的可靠性和安全性,以防止客户端请求处理失败。
总结与展望
综上所述,不同的软件架构在实时系统中各有优劣,开发者需要根据系统的具体需求来选择合适的架构。以下是一个架构选择的总结表格:
|架构家族|适用场景|优点|缺点|
| ---- | ---- | ---- | ---- |
|Timeline|对响应时间要求严格、有明确时间顺序的任务|响应时间可预测性高,安全性好|开发和维护成本高|
|Event - Driven|事件触发型系统,如GUI应用|开发灵活,成本低|响应时间有不确定性|
|Pipeline|数据按顺序处理的系统,如数据处理系统|响应时间稳定,数据处理流程清晰|需要合理设计管道结构|
|Client - Server|需要资源集中管理和共享的系统,如网络应用|可实现资源共享|受服务器负载和性能影响|
随着计算机技术的不断发展,可靠软件技术领域也在不断进步。Ada语言凭借其丰富的特性和在可靠性方面的优势,在实时系统、分布式系统、硬件/软件协同设计等多个领域都有着广阔的应用前景。未来,我们可以期待Ada语言在更多的应用场景中发挥重要作用,同时,软件架构也将不断创新和优化,以满足日益增长的系统需求。
以下是一个未来发展趋势的流程图:
graph TD
A[可靠软件技术发展] --> B{技术创新}
B -- 是 --> C{新架构出现}
C -- 是 --> D[推动Ada语言新应用]
C -- 否 --> E[优化现有架构]
B -- 否 --> F[拓展现有应用领域]
D --> G[满足更多系统需求]
E --> G
F --> G
总之,1999年的可靠软件技术大会为我们展示了Ada语言的多元应用和发展潜力,通过对不同软件架构的深入分析,我们可以更好地利用Ada语言来开发高质量、可靠的软件系统。
1万+

被折叠的 条评论
为什么被折叠?



