软件
软件是用户与硬件之间的接口,用户主要是通过软件与计算机进行交流的。
软件=程序+数据+文档
功能分类
系统软件
- 操作系统
- 支撑软件
应用软件
工作方式分类
- 实时处理软件
- 分时软件
- 交互式软件
- 批处理软件
架构
软件架构是有关软件整体结构与组件的抽象模式,用于知道大型软件系统各个方面的设计。
软件架构描述的对象是直接构成系统的抽象组件。
各个抽象组件之间的连接则明确和相对细致地描述了组件之间的通信。
软件架构的分层
优点:每个层次的功能明确,逻辑清晰,高层只需要了解相邻的低层的细节即可,从而降低了层与层之间的耦合度。
应用程序专用功能位于高层,跨越应用程序领域的功能位于中层,配置环境专用功能位于底层。
- 顶层是应用程序子系统层,包括应用程序专用的服务。
- 下面一层是业务专用层,包括一些应用程序中使用的业务专用构件。
- 中间件层包括各个构件。
- 得曾是系统软件曾,包括操作系统、数据库、与特定硬件的接口等构件。
操作系统
操作系统为计算机硬件和应用程序提供了一个交互的界面,并指挥计算机各部分硬件的基本工作。
系统观点——计算机资源管理
操作系统的作用类似于城市交通的决策、指挥、控制和调度中心,它组织和管理整个计算机系统的硬件和软件资源,在用户和程序之间分配系统资源,使之统一协调地、高效地完成各种复杂的任务。
用户观点——用户使用计算机的界面
软件观点——程序、数据和文档的集和
操作系统举例
DOS——磁盘操作系统
个人计算机上使用的一种操作系统,通过在命令行方式下输入命令对计算机资源进行管理。
Windows操作系统
DOS是一个单用户单任务的操作系统,而WIN允许用户同时执行多个程序,并在各个程序之间进行切换。
特点:
- 直观、高效的面向对象的图形用户界面,易学易用。
- 用户界面统一、友好、漂亮。
- 丰富的设备无关的图形操作。
- 多任务。
WIN体系结构
Windows操作系统采用了双模式结构来保护操作系统本身,以避免被应用程序的错误所波及。
操作系统核心运行在内核模式下,应用程序的代码运行在用户模式下。每当应用程序需要用到系统内核或内核的扩展模块所提过的服务,应用程序就通过硬件指令从用户模式切换到内核模式;在系统内核完成了所请求的服务之后,控制权又回到用户模式。
UNIX操作系统
UNIX是一个通用的、多任务、交互式的分时操作系统,可以应用于巨型计算机、个人计算机等各种不同的平台上。
特点:
- 提供可编程的命令语言
- 提供了许多程序包
- 文件系统简洁
- 可移植性强
- 网络通信功能强
组成:
- 内核:内核是操作系统的信和,它的作用是调度和管理计算机系统的各种资源。
- Shell:Shell是系统的用户界面,提供用户和内核进行交互操作的接口。
- 文件系统:文件系统是文件存放在磁盘等存储设备上的组织方式。
- 共用程序:共用程序是UNIX系统提供给用户的常用标准软件。
Linux系统
Linux是自由和开放源代码的类UNIX系统。
特点:
- 模块化程度高
- 源代码公开
- 广泛的硬件支持
- 安全性及可靠性好
- 完整的网络集成
Linux与UNIX
LInux成功地模仿了UNIX的界面和功能,带式源代码和UNIX没有关系。
区别:
- UNIX系统大多是与硬件配套的,而Linux则可运行在多种硬件平台上。
- UNIX有些版本,如AIX、HP-UX是商业软件,也是闭源的,而Linux是自由软件,是免费、源代码公开的。
Mac OS
Mac OS是一个运行于苹果公司Macintosh系列计算机上的操作系统。Mac OS基于UNIX,以简单易用和稳定可靠著称。
Classic Mac OS:
完全没有命令行模式,是一个百分之百的图形用户界面操作系统。它易于使用,但几乎没有内存管理、协调式多任务和对功能扩展冲突敏感。
Mac OS X使用基于BSD UNIX的内核,并具有带有UNIX风格的内存管理和先占式多任务处理功能,大大改进了内存管理,允许同时运行更多软件,并消除了由一个程序崩溃而导致其他程序崩溃的可能性。也是首个包括“命令行”模式的Mac OS。
软件开发
软件工程
软件工程是研究如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而被证明是正确的管理技术和当前能得到的最好的软件开发与维护方法结合起来的学课。
是役们研究用工程方法构建和维护有效地、实用的和高质量的软件的学科。
软件开发过程
- 问题定义——要解决的问题是什么
通过对用户的访问调查,系统分析员要简要地写出关于问题性质、工程目标和工程规模的书面报告,这份报告经过讨论和必要的修改后要得到用户的确认。 - 可行性研究——对上一个阶段所确定的问题有行得通的解决方法。
可行性研究比较简短,这个阶段的任务不是具体解决问题,而是研究问题的范围,探索这个问题是否值得去解决,是否有可行的解决方法。 - 需求分析——为了解决这个问题,目标系统需要做什么
在需求分阶段所确定的系统逻辑模型是以后设计和实现目标系统的基础,因此必须准确、完整地体现用户的需求。这个阶段的一项重要任务,使用正是文档准确地记录对目标系统的需求,这份文档通常称为规格说明书。 - 总体设计——概括地说,如何实现目标系统
- 详细设计——如何具体地实现这个系统
- 程序开发
- 软件测试
- 软件维护