一、软件定义
➢软件是用户与硬件之间的接口
➢软件是计算机系统中与硬件相互依存的一个部分(非硬件成分)一传统意义
➢它包括程序、数据及其相关文档的完整集合
●程序
按照事先设计的功能和性能要求执行的指令序列
●数据
使程序正常运行的参数及程序执行中处理的对象
●文档
与程序开发、维护和使用相关的资料总称
二、软件的分类
1、按软件功能分类
(1)系统软件
●使得计算机用户和其他软件将计算机当作一个整体,而不需要顾及到底层每个硬件的工作细节
●种类
➢操作系统软件
管理计算机硬件与软件资源的程序,同时也是计算机系统的内核与基石,常用的操作系统有DOS、Linux、Mac OS、0S/2、 UNIX、 MS Windows等
➢支撑软件
包括一系列基本工具和程序设计的集成开发环境,主要包括环境数据库、各种接口软件和工具组,IBM公司的Web Sphere, 微软公司的Studio. NET
(2)应用软件
应用软件是为了满足某一领域、某类问题的应用需求而提供的软件。
2、按软件工作方式分类
(1)实时处理软件
●指在事件或数据产生时,立即予以处理,并及时反馈信号,需要监测和控制的软件。
●主要包括数据采集、分析、输出三部分。
●机票预订系统软件,工业实时生产线,卫星监测
(2)分时软件
●指多个用户分享使用同一台计算机;多个程序分时共享硬件和软件资源。
●如: Windows和L inux都是分时操作系统
(3)交互式软件
●能实现人机通信的软件
●如:操作系统软件、游戏、模拟操作软件
(4)批处理软件
●把一组输入作业或一批数据以成批处理的方式一次运行,按顺序逐个处理完的软件。
●如:手机里用来发信息的软件,可以选择很多联系人群发信息
三、软件的架构
1、软件架构(software achitecture)定义
●有关软件整体结构与组件的抽象模式,用于指导大型软件系统各个方面的设计。
●软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。
2、软件架构设计意义
●软件架构设计是软件开发中至关重要的一环,良好的软件架构是一个软件开发项目成功的保证。
●系统的设计必须能在一系列变化之后仍然尽可能简单,所以必须为变化而设计。
●从而设计的目标应该是具有灵活性,可扩充性,可移植性。
3、软件架构分层
(1)含义
●将功能进行有序的分组
●应用程序专用功能位于上层,跨越应用程序领域的功能位于中层,而配置环境专用功能位于低层
(2)软件架构分层
➢目前的软件系统的开发越来越庞大复杂,要满足上述的设计目标越来越困难,而用分层对系统进行分而治之的管理是一种行之有效的办法
➢优点
●每个层次功能明确,逻辑清晰,
●上层只需要了解相邻的底层的细节,
●降低了层与层之间的耦合度。
●在这样的分布式分层应用系统中,高层的策略不会因为底层细节的变化而受到影响。
四、操作系统
●操作系统为计算机硬件和应用程序提供了一个交互的界面
●管理计算机的软硬件资源的系统软件。
1、不同角度的操作系统定义
●系统观点-----计算机资源管理
计算机系统的大脑,是整个系统的控制中心
●用户观点-----用户使用计算机的界面
操作系统是用户与计算机硬件之间的接口
➢命令方式
➢系统调用
➢图形界面
●软件观点-----程序、数据和文档的集合
在计算机中的所有软件中,它起到了核心和控制的作用,其他软件的运行都要依赖它的支持
2、DOS
●DOS (Disk Operation System)是个人计算机上使用的一种操作系统,通过命令行方式下输入命令对计算机资源进行管理。
●最初的计算机操作系统都是DOS
●DOS组成
➢MSDOS.SYS
为DOS的内核, 它主要用来管理和启动系统的各个部件
➢COMMAND.COM
DOS与用户的接口,它主要提供了一些DOS的内部命令
➢IO.SYS
主要负责系统的基本输入和输出
3、Windows操作系统
➢应用程序的代码运行在用户模式
➢操作系统核心运行在内核模式
4、UNIX操作系统
●通用的、 多任务、交互式的分时操作系统
●由美国bell lab于1969年在PDP-7型计算机上首先实现可应用于巨型计算机、普通PC机等多种不同的平台
●特点
➢结构简练
➢功能强
➢可移植性和兼容性都比较好
➢开放系统的代表
5、Linux操作系统
特点:
●模块化程度高
●源代码公开
●广泛的硬件支持
●安全性及可靠性好
●完整的网络集成
6、Mac OS
(1)简介
●Mac 0S是一套运行于苹果Macintosh系列电脑上的操作系统
●基于UNIX,设计简单直观、安全易用、高度兼容,以简单易用和稳定可靠著称。
(2)2个系列
● Glassic Mac OS
完全没有命令行模式,它是100%的图形操作系统
●Mac OS X
➢全屏模式
➢任务控制
➢快速启动面板
五、软件的开发
1、软件工程
(1)软件危机
●背景
➢人们对软件的需求量剧增和对软件正确性的更高要求,造成软件的规模越来越大、结构越来越复杂,以致软件的维护难度越来越大
➢由于微电子技术的发展,计算机硬件性价比不断提高,且质量稳定,相比之下,计算机软件的开发却跟不上硬件的发展,致使其成为软件的发展瓶颈
➢软件开发成本却逐年上升,质量没有可靠保证,软件开发的生产率远远不能够适应计算机应用的需求
●原因(除软件本身的特点外)
➢对软件开发成本和进度的估计常常很不准确
➢用户对已完成的软件系统不满意的现象经常发生
➢软件产品的质量往往靠不住,缺乏质量保证技术
➢软件常常是不可维护的
➢软件通常没有适当的文档资料
➢软件成本逐年上升
➢软件开发生产率提高的速度远不及软件需求的增长
●解决软件危机的途径
➢技术措施(方法和工具)
➢组织管理措施
(2)软件工程定义
●软件工程(Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。
●研究内容
➢研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件
➢研究如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的软件开发技术方法结合起来
●软件生命周期
软件有一个孕育、诞生、成长、成熟、衰亡的生存过程;在软件生命周期中,软件系统的开发是按阶段进行的
●软件开发过程
➢问题定义----要解决的问题是什么
➢可行性研究----对上一个阶段所确定的问题是否有行得通的解决办法
➢需求分析----为了解决这个问题,目标系统需要做什么
➢概要设计----概括地说,应该如何实现目标系统
➢详细设计----如何具体地实现这个系统
➢程序编写
➢软件测试
➢软件维护
2、用户界面和用户体验
(1)用户界面(User Interface, UI)
● UI是指对软件的人机交互、操作逻辑、界面美观的整体设计
●UI设计的三大原则
➢置界面于用户的控制之下
➢减少用户的记忆负担
➢保持界面的一一致性
●用户界面设计流程
➢确认目标用户
➢采集目标用户的习惯交互方式
➢提示和引导用户
●一致性原则
➢设计目标一致
➢元素外观一致
➢交互行为一致
●可用性原则
➢可理解
➢可达到
➢可控制
(2)用户体验(User Experience,UE)
● 用户体验是基于主观、在用户使用产品过程中建立的感受
● 用户体验的设计目标是有用(指用户的需求)、易用和友好。
六、程序设计语言简介
1、程序设计语言是一组用来定义计算机程序的语法规则。
2、程序设计语言的三个因素
(1)语法
●用字符组合成合法语句的规则集合
●作用
用于定义语言的各种要素间的形式关系,确定合法语句的结构描述,形成和产生一个合适的程序。
(2)语义
●指定一条合法语句的含义
●定义它的单词符号和语法单位的意义
●定义一个程序的意义的一组规则称为语义规则
●对于含义正确与否的判断,就要依靠语义;语法只关注句法结构,不管其含义。
(3)语用
●指实现的简易性、应用的效率和编程方法论
●可以把语用看做是程序与使用者的关系
七、程序设计语言的分类及编程模式
程序设计语言可以分为机器语言、汇编语言、高级语言三大类。
1、机器语言
●机器语言是用二进制代码表示的计算机能直接识别和执行的机器指令的集合。
●机器指令指计算机可以执行的命令。一般包括俩个部分:指令操作码和指令操作数。
●计算机唯一能识别的语言是机器语言。
2、汇编语言
●汇编语言采用助记符来编写程序,是机器语言的符号化。
●用指令助记符代替指令的二进制代码 ;
●用符号代替二进制表示地址
●面向硬件的语言
3、高级语言
●高级语言是面向用户的语言,是一种与自然语言相近并为计算机所接受和执行的计算机语言。
●高级程序设计语言都有自己规定的专用符号、英文单词、语法规则和语句结构(书写格式)
●高级语言与自然语言(英语)更接近,而与硬件功能相分离
●常用的高级语言有C、C++、 Java等等
(1)编译程序
编译程序把整个源程序翻译成目标程序。整个编译过程可划分为:源程序—词法分析—语法分析—语义分析—中间代码生成—代码优化—目标程序。
(2)汇编程序
汇编程序将编译程序运行得到的目标程序翻译为二进制的机器代码。
4、编程模式
●计算机语言的发展是一个不断演化的过程,其根本的推动力就是抽象机制更高的要求,以及对程序设计思想的更好支持。
●程序设计语言按照解决问题的模式来分类,可分为:
(1)过程式编程模式
过程式编程模式与人们实际思考问题的方式很接近。
(2)面向对象编程模式
●面向对象编程模式是软件系统设计与实现的新方法。
●有三个重要的特质:封装、继承与多态。
●面向对象模式基本思想
➢客观世界由对象组成
➢一切事物均可抽象为对象;
➢相同性质的对象抽象为类;
➢对象之间的联系由消息传递实现;
➢类之间的联系通过继承实现。
●面向对象程序设计定义
数据抽象+对象类+类继承
(3)函数式编程模式
●在函数式编程模式中程序被看为一个函数。
●函数是把一组输入映射到一组输出的黑盒子
●其优势为:支持模块化编程并且允许程序员使用已经存在的函数来开发新的函数
(4)说明式编程模式
●说明式模式依据逻辑推理的原则响应查询。
●由希腊数学家定义的规范的逻辑基础上发展而来的,并且后来发展成为一阶逻辑演算。
●逻辑推理以推导为基础。
补充:
1、为什么会有这么多的程序设计语言的产生?
答:程序设计语言被创造的目的主要有三个——实用目的、学术目的、商业及特殊应用需要。
参考博客:
https://www.cnblogs.com/Chaobs/p/4510359.html
2、软件维护的工作包括哪几个部分?
答:纠错性维护(校正性维护)、适应性维护、完善性维护或增强、预防性维护或再工程。
参考连接:
https://iask.sina.com.cn/b/iRzg0vDeC1iX.html
3、一个很好解释计算机网络的形象小例子
参考连接:https://blog.csdn.net/dala_da/article/details/78633740
4、对于云计算的理解
传统模式下,企业建立一套IT系统不仅仅需要购买硬件等基础设施,还有买软件的许可证, 需要专门的人员维护。当企业的规模扩大时还要继续升级各种软硬件设施以满足需要。对于企业来说,计算机等硬件和软件本身并非他们真正需要的,它们仅仅是完 成工作、提供效率的工具而已。对个人来说,我们想正常使用电脑需要安装许多软件,而许多软件是收费的,对不经常使用该软件的用户来说购买是非常不划算的。 可不可以有这样的服务,能够提供我们需要的所有软件供我们租用?这样我们只需要在用时付少量“租金”即可“租用”到这些软件服务,为我们节省许多购买软硬 件的资金。
我们每天都要用电,但我们不是每家自备发电机,它由电厂集中提供;我们每天都要用自来水,但我们不是每家都有井,它由自来水 厂集中提供。这种模式极大得节约了资源,方便了我们的生活。面对计算机给我们带来的困扰,我们可不可以像使用水和电一样使用计算机资源?这些想法最终导致 了云计算的产生。
云计算的最终目标是将计算、服务和应用作为一种公共设施提供给公众,使人们能够像使用水、电、煤气和电话那样使用计算机资源。
云计算模式即为电厂集中供电模式。在云计算模式下,用户的计算机会变的十分简单,或许不大的内存、不需要硬盘和各种应用软件,就可以满足我们的需求,因 为用户的计算机除了通过浏览器给“云”发送指令和接受数据外基本上什么都不用做便可以使用云服务提供商的计算资源、存储空间和各种应用软件。这就像连接 “显示器” 和“主机”的电线无限长,从而可以把显示器放在使用者的面前,而主机放在远到甚至计算机使用者本人也不知道的地方。云计算把连接“显示器”和“主机”的电 线变成了网络,把“主机”变成云服务提供商的服务器集群。
在云计算环境下,用户的使用观念也会发生彻底的变化:从“购买产品”到“购买 服务”转变,因为他们直接面对的将不再是复杂的硬件和软件,而是最终的服务。用户不需要拥有看得见、摸得着的硬件设施,也不需要为机房支付设备供电、空调 制冷、专人维护等等费用,并且不需要等待漫长的供货周期、项目实施等冗长的时间,只需要把钱汇给云计算服务提供商,我们将会马上得到需要的服务。
参考连接:
https://zhidao.baidu.com/question/253737047.html
https://bbs.csdn.net/topics/390333540
http://www.sohu.com/a/307265758_100135805