软件开发的核心技术

《编程导论(Java)·0.1.5 问题求解》

程序员采用编程语言编写源代码的活动——编程常常概括成问题求解(problem solving)。

待解决的问题可大可小,而问题的解决方案正好需要计算机的参与。因此将编程活动称为问题求解,将计算机科学视为问题求解的科学。

问题的大小主要反映在代码量和软件开发参与者的数量上。

实际问题可以是:

2       打印乘法99表;

2       求50000的阶乘;

2       建立一种新的大型网络游戏平台;

2       开发一个具有学生注册、班级课程录入、学生成绩查询……功能的学生成绩管理系统;

2       管理企业各种资源,如人力资源、仓库、资金等等

2      建设数字化医院,构建面向区域的医疗信息共享与协同平台、以电子病历为核心的临床信息系统……

对于小项目的软件开发或小规模编程(programming-in-the-small )
,通常具有以下特点:(1) 代码由一个或几个程序员编写,每个程序员都能够了解项目的全部细节。(2)项目可能是独立的项目,也可能是大项目的一部分,但任务明确,开发的主要目的是编写清晰而有效的代码。

对于大项目或大规模编程(programming-in-the-large),具有以下特点:(1)需要一个大型开发团队,组成人员包括项目经理、软件体系架构师、需求分析员、软件设计师、界面设计人员、测试人员、程序员等等,没有一个人能够了解整个系统的所有细节。(2)开发的对象是一个复杂的系统,开发工作的首要问题是开发团队的有效交流与沟通、关注软件的可复用性和可维护性。

问题的大小使得软件开发的方法学上存在巨大的差别。通常将大规模编程称为系统开发,如开发大型管理信息系统、各种系统软件;将小规模编程称为(狭义的)问题求解,此时关注求解问题所需的所有详尽的步骤/操作,而对详尽步骤的描述,称为算法。

因此计算机软件开发的核心技术有二:

★程序的组织(面向对象技术)、问题求解(算法)。



许多C程序员,拥有较扎实的底层技术,但是在强调算法和数据结构、系统编程(阅读《Windows核心编程》、《Unix编程艺术》等)的同时,倾向于贬低程序组织的重要性;

一些Java/C#程序员,研究设计模式、框架,可能忽视了对操作系统原理,编译原理、算法等底层知识的时间投入。还有一些搞Java web开发的,可能对底层更加不感冒。

我在这里将程序组织和问题求解,作为软件开发的核心技术的简略概括,希望读者不要受某些偏执狂的影响,至少在大学阶段,你要能上能下——从宏观上认识程序组织,从细节上认识(侠义的)问题求解。工作后,按照自己的情况,再去加强某些方面——毕竟时间有限。

在讲授C语言的时候,我也会按照“程序组织”这个主题,展开#include、函数(结构化编程、接口与实现分离)的内容;

另外,请大家注意,“现在,假设该程序非常庞大,需要多个人合作,分别编写is3X(int)、isInclude5(int)和foo(int)....”,在类似的文字中,提醒读者,虽然我们书上的例子,只有一个输出语句,但是它代表的是,比如说一千多行的代码!

我曾经看见过某个大牛讽刺OO的狂热份子,用多层的类+模式来完成一个简单的工作。baby,例子能不简化吗?说大炮打蚊子,倒是可以。所以,在11.1 说明
中,我也再次强调了程序组织的重要性,提醒这是一个好的实践的机会。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-07-28 14:30:01

软件开发的核心技术的相关文章

让你提前认识软件开发(24):C语言的发展历史和主要特点

第1部分 重新认识C语言 C语言的发展历史和主要特点 作为一门众所周知的计算机编程语言,C语言是谁发明的呢?它是如何演进的?它有何特点?到底有多少人在使用它? 1. C语言之父 C语言是1972年由美国贝尔实验室的计算机科学家Dennis Ritchie(丹尼斯·里奇)设计发明的.因此,Dennis Ritchie被誉为"C语言之父"(他已于2011年10月9日去世,享年70岁).图1中的人物就是Dennis Ritchie. 图1 "C语言之父" Dennis R

强烈推荐一本今年八月份的新书《后台开发:核心技术与应用实践》,作者腾讯资深后台开发工程师徐晓鑫

   昨天被华章安利了一本今年8月份的新书<后台开发:核心技术与应用实践>,极好的书,评价和口碑超高.   这本书腾讯公司资深研发工程师多年后台开发经验总结,获腾讯.Facebook.微软.阿里.百度多位资深技术专家高度认可. 完整勾勒后台开发技术能力体系,多维度讲解了成为一名后台开发工程师所需掌握的核心技术.开发工具和实践方法,后台工程师修炼必读.作者sharexu是位值得推崇的女性开发者.   后台开发是一个“历史悠久”的领域,同是也是一个沉淀深厚,高技术价值的领域.本书清晰.严谨.务实的

可能是Windows上最好用的国产PDF软件,有核心技术就是牛!

说起PDF文档,大家肯定都不陌生,不论是校园里的论文文献,还是公司的机密文件.通知通告,用PDF格式存储.发布的情况不在少数.为了方便查看PDF文档,电脑上就得安装PDF软件,也就是PDF阅读器. 关于PDF阅读器,度娘上一搜一大把!不过其中最热门,最受业内人士认可的PDF阅读器,一个是Adobe reader,一个则是国产精品,福昕PDF阅读器. Adobe公司作为PDF格式的创造者,其阅读器自然广受欢迎,今天我们暂且不讨论它.今天我们讨论的重点是福昕PDF阅读器能够同Adobe reader

拼多多跑分软件开发

拼多多跑分系统找<詹慧:137微1089电6705>.拼多多跑分APP.拼多多跑分软件开发.拼多多跑分模式开发平台. 拼多多跑分比支付宝跑分更安全靠谱也正因为此,有些朋友甚至直接怀疑它的真实性,总觉得不会有天上掉馅饼的好事.但实际上跑分这一行业的存在是真的,并且赚钱也的确非常的轻松.而网络上之所以会有那么的负面新?闻,并不是对行业的否定,而是因为在其高利润的引领下市?场变得越来越复杂,项目成熟,但是很多商家却“不成熟”,所以平台跑路或者被风控等现象频发.但是今天小编要分享给大家的跑分平台与大家

陀螺世界软件开发

原为工程师和实施工程师的区别,工程内容智能不同,工作形式不同,工作内容不同,因为工程师要对公司硬件和软件进行维护,硬件包括机房机柜.网线光纤.pdu服务器,网络设备安全设备等实施工程师,包括常用操作系统,应用软件及公司所开发的软件安装调试,定制开发及维护. 行业互联网被称为“互联网下半场”,未来发展空间广阔.工业互联网是行业互联网的一部分,包含工业制造行业.能源行业(采煤.电厂.新能源.电网.行业内铁路和港口).车联网行业等诸多典型行业.未来工业互联网发展的技术需求及对应的网络架构和核心技术是本

分享影视软件开发

分享影视系统开发公司找<詹慧:137微1089电6705>,分享影视系统APP开发,分享影视系统软件开发,分享影视源码开发,现成案例支持定制. 一.分享影视系统介绍 分享影视APP是一款汇聚影音播放神器,影片免费在线观看,视频超快加载,多个营销广告位.支持后台缓存下载.多地区的影库和充值频道等多种功能.影视玩家必备项目. 二.分享影视系统玩法 1.打开 APP 即可体验观看 注册:选填推荐码 + 短信认证 + 手机验证码 (一台设备绑定一个账号) 登录:手机账号+密码登录 (密码不能通过后台修

结构化方法和面向对象方法在软件开发中的对比

学习过C语言和JAVA的同学们一定清楚,这两种语言代表了两种不同的开发方式,即以C语言为代表的结构化开发方法和JAVA代表的面向对象的开发方法.由于二者在程序结构上有着很大的区别,因此,在软件开发领域中,根据自己的需求来选择合理的开发方式就显得尤为重要. 开发软件通常有三个层次: 1.满足用户需求 2.可维护性,即可修改性,让软件能随着用户需求的变更而容易改变 3.可重用性(在其它软件中,能尽量重用该软件的模块) 通过对软件的这三个主要层次的分析,我们就能在实际开发中确定我们的选择. 结构化方法

敏捷软件开发简述

前言:由于我读了邹欣老师的<构建之法:现代软件工程(第二版)>,因此对敏捷软件开发有了比较大的兴趣.于是我在网上找了一些论文,比如Requirements Engineering and Agile Software Development.A decade of agile methodologies: Towards explaining agile software development.在读了这些论文之后,对敏捷软件开发有了大致的了解.这篇博文主要是简单介绍敏捷软件开发,重点集中在主

敏捷软件开发VS传统软件工程

敏捷软件开发:又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新兴软件开发方法,是一种应对快速变化的需求的一种软件开发能力. 与传统软件工程相比,它们的具体名称.理念.过程.术语都不尽相同,相对于"非敏捷",更强调程序员团队与业务专家之间的紧密协作.面对面的沟通(认为比书面的文档更有效).频繁交付新的软件版本.紧凑而自我组织型的团队.能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发中"人"的作用. 本文将介绍敏捷软件开发的历史背景与发展,