知识点总结:
一、软件的定义
软件=程序+数据+文档
①软件是用户与硬件之间的接口
②软件是计算机系统中与硬件相互依存的一个部分(非硬件部分)
③软件是包括程序、数据及其相关文档的集合
④程序是按照事先设计的功能和性能要求执行的指令序列;数据包括使程序能正常运行的参数及程序运行过程中所处理的对象;文档是与程序开发、维护和使用有关的资料总称
二、软件的分类
1.按软件的功能分为:系统软件、应用软件
(1)系统软件
①使得计算机用户和其他软件将计算机当作一个整体,而不需要顾及到底层每个硬件的工作细节
②种类:操作系统、支撑软件
•操作系统是管理计算机硬件与软件资源的程序,同时也是计算机系统的内核与基石,是所有软件运行的基础(有DOS,Linux、Mac OS、OS/2、UNIX、MS Windows等)
•支撑软件包括一系列基本工具和程序设计的集成开发环境,注意包括环境数据库、各种接口软件和工具组(有IBM公司的Web Sphere,微软公司的Studio.NET等)
(2)应用软件
①为了满足某一领域、某类问题的应用需求而提供的软件
2.按软件的规模分类
3.按软件的工作方式分类
(1)实时处理软件
①指在事件或数据产生时,立刻予以处理,并及时反馈信号,需要监测和控制的软件
②主要包括数据采集、分析、输出三部分
③应用:机票预订系统软件、工业实时生产线、卫星监测
(2)分时软件
①指多个用户分享使用同一台计算机;多个程序分时共享硬件和软件资源
②如:Windows和Linux都是分时操作系统
(3)交互式软件
①能实现人机通信的软件
②如:操作系统软件、游戏、模拟操作软件
(4)批处理软件
①把一组输入作业或一批数据以成批处理的方式一次运行,按顺序逐个处理完的软件
②如:手机里用来发信息的软件,可以选择很多联系人群发信息
三、软件架构
1.定义:
①软件架构是有关软件整体结构与组件的抽象模式,用于指导大型软件系统各个方面的设计
②软件架构是一个系统的草图
③软件架构描述的对象是直接构成系统的抽象组件
2.意义
软件架构设计是软件开发中至关重要的一环,良好的软件架构是一个软件开发项目成功的保证。系统的设计在一系列变化之后仍然要尽可能地简单,所以必须为变化而设计。从而设计的目标应该是具有灵活性、可扩充性、可移植性
3.软件架构的分层
(1)背景:目前的软件系统,特别是企业的系统,越来越庞大、复杂,要满足设计目标越来越困难,而用分层对系统进行分而治之的管理是一种行之有效的办法
(2)优点:每个层次功能明确,逻辑清晰,高层只需要了解相邻的低层的细节即可,从而降低了层与层之间的耦合度。在这样的分布式分层应用系统中,高层的策略不会因为低层细节的变化而受到影响
(3)含义:将功能进行有序的分组,应用程序专用功能位于上层,跨越应用程序领域的功能位于中层,而配置环境专用功能位于低层
四、操作系统
1.含义:操作系统为计算机硬件和应用程序提供了一个交互的界面,管理计算机的软硬件资源的系统软件
2.什么是操作系统
(1)系统观点——计算机资源管理
是计算机软件的核心,是计算机系统的大脑,是整个系统的控制中心
(2)用户观点——用户使用计算机的界面
操作系统是用户与计算机硬件之间的接口
-命令方式
-系统调用
-图形界面
(3)软件观点——程序、数据和文档的集合
在计算机中的所有软件中,它起到了核心和控制的作用,其他软件的运行都要依赖它的支持
3.DOS(磁盘操作系统)
最初的计算机操作系统都是DOS
组成:
(1)MSDOS.SYS:为DOS的内核,它主要用来管理和启动系统的各个部件
(2)COMMAND.COM:DOS与用户的接口,它主要提供了一些DOS的内部命令
(3)IO.SYS:主要负责系统的基本输入和输出
4.Windows体系结构
应用程序的代码运行在用户模式
操作系统核心运行在内核模式
5.UNIX操作系统
(1)简介
•UNIX是美国贝尔实验室于1969年在PDP-7型计算机上首先实现的
•UNIX是通用的、多任务、交互式的分时操作系统
•可应用于巨型计算机,普通PC机等多种不同的平台特点
•特点:结构简洁、功能性强、可移植性和兼容性都比较好、开放系统的代表
(2)UNIX之美
提供了可编程的命令语言;提供了许多程序包;文件系统简洁;可移植性强;网络通信功能强
(3)组成
6.Linux操作系统
(1)简介:Linux是由芬兰赫尔辛基大学的学生Linux Torvalds于1991年开发的
(2)特点:自由和开放源码;类Unix操作系统
7.Mac OS
(1)简介
•Mac OS是一套运行于苹果Macintosh系列电脑上的操作系统
•基于UNIX,设计简单直观、安全易用、高度兼容,以简单易用和稳定可靠著称
(2)两个系列
•Classic Mac OS:完全没有命令行模式,它是100%的图形操作系统
•Mac OS X:全屏模式;任务控制;快速启动面板
五、软件的开发
1.软件危机
(1)背景
•人们对软件的需求量剧增和对软件正确性的更高要求,造成软件的规模越来越大、结构越来越复杂,以致软件的维护难度越来越大
•由于微电子技术的发展,计算机硬件性价比不断提高,且质量稳定,相比之下,计算机软件的开发却跟不上硬件的发展,致使其成为软件的发展瓶颈
•软件开发成本逐年上升,质量没有可靠保证,软件开发的生产率远远不能够适应计算机应用的需求
(2)定义:软件危机指的是在计算机软件的开发维护过程中所遇到的一系列严重问题
(3)原因(除软件本身的特点外)
•对软件开发成本和进度的估计常常很不准确
•用户对已完成的软件系统不满意的现象经常发生
•软件产品的质量往往靠不住,缺乏质量保证技术
•软件常常是不可维护的
•软件通常没有适当的文档资料
•软件成本逐年上升
•软件开发生产率提高的速度远不及软件需求的增长
(4)解决软件危机的途径
•技术措施(方法和工具)
•组织管理措施
2.软件工程(Software Engineering,简称SE)
(1)定义:是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科
(2)研究内容
•研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件
•研究如何把经过时间考验而被证明是正确的管理技术和当前能够得到的最好的软件开发与维护方法结合起来
3.软件开发过程
(1)软件的生命周期:软件从孕育、诞生、成长、成熟到衰亡的生存过程
(2)软件开发的阶段:问题定义—可行性研究—需求分析—系统设计(概要设计、详细设计)—程序开发—软件测试—软件维护
4.用户界面与用户体验
(1)用户界面(user interface,UI)
①UI是指对软件的人机交互、操作逻辑、界面美观的整体设计
②UI设计的三大原则
•置界面于用户的控制之下
•减少用户的记忆负担
•保持界面的一致性
③用户界面的设计流程:确认目标用户—采集目标用户的习惯交互方式—提示和引导用户
④一致性原则:设计目标的一致性,元素外观的一致性,人机交互行为的一致性
⑤可用性原则:可理解,可达到,可控制
(2)用户体验(user experience,UE)
•任何个性化的前提都是满足人们的需求,这个需求就是要做好用户体验—让用户因为使用苹果的产品而爽起来——苹果公司CEO 斯蒂芬·乔布斯
•用户体验比商业利益更重要——百度CEO 李彦宏
①用户体验是基于主观、在用户使用产品过程中建立的感受
②用户体验设计的目标:有用(指用户的需求),易用,友好
六、软件行业职业简介
(1)项目管理类:项目经理、质量保证(QA)工程师
(2)开发类:需求分析师、开发工程师、人机系统开发工程师、系统分析师、系统架构师
(3)测试类:测试工程师、产品测试经理
(4)系统类:网络工程师、基础设施工程师
(5)安全类:网络安全管理员、安全开发工程师
(6)维护类:数据库管理员、系统管理员
(7)销售类:售前工程师、售后技术工程师、系统集成工程师
七、程序设计语言
1.定义:程序设计语言是一组用户来定义计算机程序的语法规则,是一种用来标准化的交流技巧,用来向计算机发出指令
2.三个元素
①语法:指用字符组合成合法语句的规则集合
•作用:用于定义语言各种要素之间的形式关系,确定合法语句的结构描述,形成和产生一个合适的程序
•规则包括词法规则(单词符号的形成规则)、语法规则(语法单位的形成规则)
②语义:指一条合法语句的含义
•语义规则:定义一个程序的意义的一组规则
③语用:语用问题指实现的简易性、应用的效率和编程的方法论,可以把语用看作是程序与使用者的关系
3.基本成分:数据成分、运算成分、控制成分、传输成分
4.分类:机器语言、汇编语言、高级语言
①机器语言
•机器语言是用二进制代码表示的计算机能直接识别和执行的机器指令的集合
•机器指令是指计算机可以执行的命令
•机器指令一般包括两个部分:指令的操作码和指令的操作数
•计算机唯一能识别的语言是机器语言
②汇编语言
•采用助记符来编写程序,是机器语言的符号化
•用指令助记符代替指令的二进制操作码
•用符号代替二进制地址码
•是面向硬件的语言
③高级语言
•高级语言是面向用户的语言,是一种与自然语言相近并为计算机所接受和执行的计算机语言
•每一种高级语言都有自己规定的专业符号、标识符、语法规则和语句结构(书写格式)
•高级语言与自然语言更接近,而与硬件功能相分离(彻底脱离了具体的指令系统)
•常用的高级语言有C、C++、Java等
5.编程模式
•计算机语言的发展是一盒不断演化的过程,其基本的推动力就是更高的抽象机制要求,以及对程序设计思想的更好支持
•程序设计语言按照解决问题的模式可分为:过程式编程模式、面向对象编程模式、函数式编程模式、说明式编程模式
①面向对象模式:软件系统设计与实现的新方法(结构化程序设计、信息隐藏、知识表示、模块化、数据抽象、并行处理)
•基本思想:客观世界由对象组成,一切事物均可抽象为对象,相同性质的对象抽象为类,对象之间的联系由消息传递实现,类之间的联系通过继承实现
•面向对象程序设计定义:数据抽象+对象类+类继承
②函数式模式
•程序被看作一个数学函数
•函数是把一组输入映射到一组输出的黑盒子
•优势:支持模块化编程,允许程序员使用已经存在的函数来开发新的函数
③说明式编程模式
•依据逻辑推理的原则响应查询
•由希腊数学家定义的规范的逻辑基础上发展而来的,并且后来发展成为一阶逻辑演算
•逻辑推理以推导为基础
拓展:
1.第四代非过程化语言
4GL 是非过程化语言,编码时只需说明“做什么”,不需描述算法细节。数据库查询和应用程序生成器是 4GL 的两个典型应用。用户可以用数据库查询语言(SQL)对数据库中的信息进行复杂的操作。 用户只需将要查找的内容在什么地方、 据什么 根条件进行查找等信息告诉 SQL,SQL 将自动完成查找过程。应用程序生成器则是根据用户的需求“自动生成”满足需求的高级语言程序。真正的第四代程序设计语言应该说还没有出现。所谓的第四代语言大多是指基于某种语言环境上具有 4GL 特征的软件工具产品, System Z、如PowerBuilder、FOCUS 等。第四代程序设计语言是面向应用,为最终用户设计的一类程序设计语言。它具有缩短应用开发过程、降低维护代价、最大限度地减少调试过程中出现的问题以及对用户友好等优点。
2.现代计算机内部的数据都只以二元方式储存,即开-关模式(on-off)。现实世界中代表信息的各种数据,例如名字、银行账号、度量以及同样低端的二元数据,都经由程序设计语言整理,成为高端的概念。
一个程序中专门处理数据的那个系统被称为程序语言的型态系统(type system);对型态系统的研究和设计被称为型态理论(type theory)。语言可以被分为静态型态系统(statically typed systems),例如C++和Java,和动态型态系统(dynamically typed systems),例如Lisp,JavaScript,Tcl和Prolog。前者可被进一步分为包含宣告型态(manifest type)的语言,即每一个变量和函数的型态都清楚地宣告,或type-inferred语言(例如MUMPS,ML)。
大多数语言还能够在内置的型态基础上组合出复杂的数据结构型态(使用数组,列表,堆栈,文件等等)。面向对象语言(Object Oriented Language,又译作“物件导向语言”)允许程序员定义新的数据型态,即“对象”或“物件”(objects),以及运行于该对象的函数(functions)和方法(methods)。
除了何时以及如何确定表达式和型态的联系,另外一个重要的问题就是语言到底定义了哪些型态,以及允许哪些型态作为表达式的值。诸如C编程语言之类的低端语言允许程序命名内存位置、内存区域以及编译时的常量;ANSI C甚至允许表达式返回结构值(struct values)。功能性的语言一般允许变量直接使用运行时计算出的值,而不是指出该值可能储存的内存地址。
(来自:https://baike.baidu.com/item/%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1%E8%AF%AD%E8%A8%80/2317999?fr=aladdin)