原文地址:http://hurryguy.spaces.live.com/blog/cns!11D1743716676DEB!146.trak
Q:软件是什么?
A:软件所解决的问题范围太广,造成其形态也千差万别。从开发人员的角度来看, 通过编程而生成的指令集合及文档就叫做软件。
Q:软件是什么?
A:软件所解决的问题范围太广,造成其形态也千差万别。从开发人员的角度来看, 通过编程而生成的指令集合及文档就叫做软件。
把文档作为软件的一部份也比较好理解:
1) 用户需要学会如何使用,所以必须要有用户文档。
2) 软件需要后续维护,所以必须保存初始的设计文档。
这个问题不用太钻牛角尖,相信不会有人把软件和硬件搞混。
Q:软件的分类及其特点?
A:软件基本可分为以下几类:
1. 系统软件。为其他程序服务的程序。一般又可分为三大类
a) 操作系统。这类公司有Microsoft, redhat 等.
b) 数据库。这类公司有IBM, Oracle, Microsoft 等
c) 中间件。这类公司有BEA, IBM, Oracle 等
d) 工具软件。例如:编辑器,编译器,调试器,链接器等。这类公司有 Borland, Microsoft 等
一般来说系统软件代表了计算机技术的最高成就。这类软件的进入成本最高。
2. 实时软件。一般来说属于工业控制软件范畴。
3. 商业软件。商业信息处理。是最大的软件应用领域,占据了软件产业大概70-80%的市场份额。
这类软件又可分为两类:
a) 商业基础平台软件。这类公司有Oracle, SAP 等
b) 商业应用软件。这类公司以各式各样的软件集成商为代表
4. 嵌入式软件
并不单独出售软件,软件嵌入在硬件中作为产品的一部分发布。这类软件可分为以下几个大类:
a) 通信设备。这类公司有Cisco, Alcatel 等
b) 手持终端设备。这类公司有Nokia, Motorola等
c) 信息家电。这类公司有 SONY 等
5. 个人计算机软件
6. 工程和科学计算软件
7. 人工智能软件
以上各类软件所要解决的问题域,所占用的资源及时间都有很大的不同。所以生产各类软件的方式也有着极大的不同。
Q:软件开发的特点?
A:软件生产与传统行业产品的生产有着较大的不同。
1) 不同之处:
a) 软件的生产成本主要集中在研发阶段。软件产品的制造只是简单的Copy,其成本基本上可以忽略不计。
b) 软件的生产过程是一个智力过程,对开发人员的要求较高。
c) 软件很难复用。reusability 是软件工程要解决的核心问题。只有在软件生产的各个环节都有效的设计和复用以前的软件才能大大提高生产率。
b) 软件的生产过程是一个智力过程,对开发人员的要求较高。
c) 软件很难复用。reusability 是软件工程要解决的核心问题。只有在软件生产的各个环节都有效的设计和复用以前的软件才能大大提高生产率。
软件行业对代码的复用主要经历了以下阶段
i)Function Call
ii)Library (eg: Java语言功能库的强大使它的生产率要大大大于C&C++语言)
iii)Orient Object ( 代码级的对象复用 )
iv)COM/IDL (二进制级的对象复用)
v)构件(Component) -- 软件复用的最终解决方案
2) 相似之处:
a) 采用了工程化的方法,分阶段解决问题。
b) 需要自动化工具的支撑
c) 需要基础管理平台的支撑(eg: 项目管理,配置管理等)
最后强调一下软件开发的几个核心概念:
1. 复用
通过复用来提高软件生产率是最终的解决方案。
2. 工具
自动化工具是软件开发中必不可少的关键因素。
3. 过程
抽象并分解软件生产的各个阶段以简化问题的解决。
其实这三个概念也是所有传统产业生产过程的基本概念。软件工程也正是软件行业借鉴了其他行业的工程经验后在本行业的一次实践。