分享
 
 
 

软件工程的技术问题

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

软件工程的技术问题

1. 范畴

说起软件工程,往往令人想起CMM、RUP、印度模式等。管理的因素,在软件开发过程中起着非常重要的作用,然而,软件工程并非只指软件开发的管理工作,而是一个范围很广的综合性学科。在软件工程中,大约一半的内容是专业性很强的,涉及到软件分析、设计甚至编码的技术。所谓的结构化、面向对象,都在软件工程的范畴内。“软件工程范围极为广泛。软件工程的某些方面属于数学或计算机科学,其他方面可归入经济学、管理学或心理学中。”1

本文不准备讨论软件工程过程的问题,而只是对软件工程中可用的技术,以及其产生的影响作一些探讨。这并不意味作者对管理的忽视,而是因为本文并非是软件工程的教科书,只是一篇专业论文,必须将准备探讨的问题划定在一个确定的范围内。

本文同样不会讨论软件工程的所有技术问题,准备探讨的议题包括:

l 软件工程的问题

l 接口

l 应用软件系统架构

l 软件设计技术

2. 软件工程的问题

软件业一直在探讨,如何使软件实现如同传统产业一样的大规模生产。软件工程的提出,便是为了实现这个愿望。然而,虽然软件工程至今已经有了很大的发展,然而,软件的大规模工业化生产仍然没有实现。原因何在?

从软件的本质属性来说,软件的复杂性是软件的本质属性,在这个属性没有改变之前,软件便不会实现同传统产业一样的工厂化生产。

从软件生产的介质来说,传统产业生产都是有形的物质产品,人的生产活动都受制于生产资料这些物质介质;然而,软件生产的介质,却是无形的人类的思维。物质资料的生产,受制于物质本身的属性,不容易为人类的思维所左右,并且容易被大量复制,这使得工业化大生成为可能。而人类的思维,却是如此的容易变化,更关键的是不能被复制,甚至同一个人,不同时期思维的复制都不可能,这使得软件这个纯粹依赖人的思维活动的生产实现大规模工业化生产是如此的困难。实际上,不仅仅是软件产业,凡是主要生产介质是人本身的活动的产业,都很难实现工业化生产,如咨询、演艺等。

从生产过程来看,对于传统产业来说,产品的设计和生产是分开的。在设计阶段,主要的工作是人的思维,因此,在这个阶段,同软件一样,不是批量生产的。而在生产阶段,主要的对象便是物质资料,并且一切标准已经制定,只需要在流水线上大量复制。对于传统产业来说,设计和生产的界限是如此的明确,并且,生产和设计的比重是如此的悬殊。然而,对于软件产业来说,软件的生产过程便是设计的过程,纯粹的生产过程几乎不存在(或许,光盘的复制算是),这使得软件的生产形态同传统产业必然存在区别。

对于软件的开发过程来说,从业务模型、需求分析、系统架构、系统分析和设计、到最后代码实现,越往前,抽象层次越高,可控性越小,越往后,越接近实际,可控性越大,因此,在软件开发中,核心团队的作用是如此巨大,一个软件产品的成败,核心团队的核心人员的作用在很大程度上是决定性的。对于软件开发来说,如果软件开发要实现工业化生产,必定是从后向前推进,从编码开始。印度模式或许给出了这么一个例子。

因此,我们在软件工程的路上,只是在不断的向工程化的目标迈进,但是,要达到这个目标,可能会花很长的时间。技术上的每一次进步,都使我们向这个目标迈进了一步。在软件工程的发展过程中,技术进步起了非常大,甚至可以说是决定性的作用。随着采用的技术的不同,所采用的管理方法也在不断变化。软件工程技术的很多方面,也是为管理做准备的。优秀的软件开发技术的采用,能够弥补我们在工程化方面的不足,从而使得软件开发更加可控,软件质量更加有保障。

下面,我们来具体探讨一下软件工程的技术的使用。

3. 接口

软件由各个不同的功能模块所组成,各个不同的部分既相互独立,又互相影响。所以,在软件系统中,保证各个部分的独立性和互相无错调用就成了一对矛盾。

为了保证系统各个部分的独立性,高内聚、低耦合是系统设计必须遵循的基本准则。高内聚、低耦合的要求,不仅仅是在横向的各个模块之间的要求,也是系统纵向的各个层次之间设计所必须遵循的准则。关于系统层次设计的问题,在后面的应用软件系统架构部分会给与论述。

同时,为了保证各个部分的互相无错调用,必须对调用制定一系列规则,这些规则便是接口。因此,这里所指的接口,不是程序语言上的interface语法的含义,而是一个广泛的概念。

从本质上来说,接口就是一个契约,他规定了接口的实现者(服务提供者)和调用者(客户)之间的交互规范。接口的引入给系统设计带来了很大的灵活性,在对象、模块之间解藕、设计模式的运用等地方,都可以看到妙用接口的身影。可以比较夸张的说,接口技术是面向对象设计的灵魂所在。

“面向接口编程,而不是面向实现编程”2。为了使软件架构更加合理,同时,也为了团队之间的合作,以及后续软件开发工作的顺利展开,软件设计的第一个工作,便是为软件的各个横向和纵向的部分制定调用接口。

未完待续

注:1《软件工程Java语言实现》 Stephen Schach McGraw-Hill

2《设计模式》

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有