软件的定义
-
定义:
软件(Software)是一系列按照特定顺序组织的计算机数据和指令的集合。一般来讲软件被划分为系统软件、应用软件和介于这两者之间的中间件。软件并不只是包括可以在计算机上运行的电脑程序,与这些电脑程序相关的文档一般也被认为是软件的一部分。简单的说软件就是程序加文档的集合体。
-
软件与硬件的层次关系:
-
软件按功能分类:
-系统软件:操作系统和支撑软件。
-应用软件 -
按软件的工作方式分类:
实时处理软件
分时软件
交互式软件
批处理软件 -
软件架构:
1、 定义:
从本质上来看,软件架构是属于一种系统草图。在软件架构所描述的对象就是直接的进行系统抽象组件构成。连接系统的各个组件之间就是做到把组件之间所存在的通讯比较明确与相对细致的实施描述。处于相应的系统实现环节,那么就会使得细化这些抽象组件成为现实的组件,比如可以是具体的某个类或者是对象。从面向对象领域进行分析,那么各个组件之前实施的连接实现往往是接口。
2、软件架构的分层:
- 顶层程序子系统层,包括应用程序中使用的业务专业构件。
- 业务专用层,应用程序中使用的业务专用构件。
- 中间层包括GUI建构器,与数据库管理系统的接口,电子表格程序,图表编译器等等。
- 底层是系统软件层包括操作系统数据库,与特定硬件的接口等构件。
-
3、系统的分层标准:可见度,易变性,通用性,层数。
6.操作系统:
什么是操作系统:
操作系统是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。(来源百度百科)
但是书上的定义却不是这么复杂,简单来说操作系统就是应用程序与计算机之间的中间人。人们根据自己不同的角度,给操作系统定义为用以控制和管理计算机系统资源的软件。
1. 系统观点———计算机资源管理
2. 用户观点———用户使用计算机的界面
3. 软件观点———程序、数据文档的集合
那我们常用的计算机操作系统有哪些呢?
- DOS:磁盘操作系统是个人计算机上使用的一种操作系统,通过在命令行方式下输入命令对计算机资源进行管理。
在Windows运行对话框里,输入cmd,将打开运行窗口,显示命令提示符,它就是Windows提供的支持DOS命令的环境,这里就可以运行DOS命令。 - Windows:Windows操作系统是美国微软公司研发的一套操作系统,它问世于1985年,起初仅仅是Microsoft-DOS模拟环境,后续的系统版本由于微软不断的更新升级,不但易用,也当前应用最广泛的操作系统。
1、前面的DOS操作系统对使用者要求较高,并且同时DOS是一个单用户、单任务的操作系统,每次只允许一个用户执行一条命令,完成一个任务。而相比较于DOS,Windows之所以能取到这么好的成功在于以下几个特点:
- 直观高效的面对对象的图形用户界面,易于用户学习、理解、和使用。
- 用户界面统一、友好、漂亮。
- 丰富的设备无关的图形操作
- 允许用户同时运行多个应用程序,在一个程序中同时多进行几件事情。
2、体系结构:采用双模式结构保护自身,以避免被应用程序的错误所波及。如图所示:
-
UNIX操作系统:
Unix是一个强大的操作系统,它的特点是多用户和多任务,这和很多其他操作系统是基本相似的,但是Unix作为一个单独的独立操作系统,它的任务机制和窗口界面和其他操作系统都有着很大的不同。但按照操作系统的类别来划分,它可以被归类为分时操作系统,所谓分时操作系统,值得就是计算机将CPU的处理以时间段进行划分,优先级高的优先执行,若执行程序优先级降低,则推出执行,转而执行优先级更高的程序和事务。分时操作系统的执行效率是非常高的。Unix是1969年美国贝尔实验室开发成功的。
有如下几大优秀的特点:1.多任务和多用户的分时操作系统; 2.操作系统内核、系统调用、应用程序是Unix的三级系统结构,系统内核通常包括核心管理和控制中心,还有其他的很多系统内核管理机制;系统调用则是管理进程、文件等的一级程序;应用程序则包括其他很多应用级软件、编译程序等; 3.nix操作系统是使用C语言编写的,C语言具有高级语言的通俗性,也具有低级语言的高效性,非常便于移植和编写; 4.Unix系统的三级架构都是精心编写的,实现操作系统会显得非常简洁美观,同时,操作系统也提供了完善的功能; 5.为了保证系统的安全性能,Unix采用了树状的目录管理结构,因此Unix系统在很多地方上具有良好的保密性、安全性和可维护性; 6. 进程对换是Unix系统在进行进程调换时的重要特性,为此,Unix系统能够实现更高效的内存管理,并且大大节约内存的容量; 7.通信机制是操作系统中非常重要的一部分,Unix提供了多种操作系统的通信机制:
组成:
-
内核:操作系统的核心,调度和管理计算机系统的各种资源。
-
Shell:系统的用户界面,提供用户与内核进行交互的接口。它接收用户输入的命令并把它送入内核去执行。
-
文件系统:文件存放在磁盘等存储设备上的组织方法。
-
共用程序:常用标准软件,包括编译工具、网络管理工具、开发工具、及保密与安全工具。
-
Linux:Linux是自由和开放源代码的类UNIX操作系统。
- 简介:
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统。伴随着互联网的发展,Linux得到了来自全世界软件爱好者、组织、公司的支持。它除了在服务器操作系统方面保持着强劲的发展势头以外,在个人电脑、嵌入式系统上都有着长足的进步。使用者不仅可以直观地获取该操作系统的实现机制,而且可以根据自身的需要来修改完善这个操作系统,使其最大化地适应用户的需要。
- 特点:
-模块化程度高 -源代码公开 -广泛的硬件支持 -安全性和可靠性好 -完整的网络集成
- 简介:
Linux与UNIX: 二者之间的相同与差异
- Mac OS:
- Mac OS是一套运行于苹果Macintosh系列电脑上的操作系统。Mac OS是首个在商用领域成功的图形用户界面操作系统。现行的最新的系统版本是macOS 10.15 beta 4 ,且网上也有在PC上运行的Mac系统(Hackintosh)。
- Mac系统是基于Unix内核的图形化操作系统;一般情况下在普通PC上无法安装的操作系统。由苹果自行开发。苹果机的操作系统已经到了OS 10,代号为Mac OS X(X为10的罗马数字写法),这是MAC电脑诞生15年来最大的变化。新系统非常可靠;它的许多特点和服务都体现了苹果的理念。
- 另外,疯狂肆虐的电脑病毒几乎都是针对Windows的,由于MAC的架构与Windows不同,所以很少受到病毒的袭击。macOS操作系统界面非常独特,突出了形象的图标和人机对话。苹果不仅自己开发系统,也涉及到硬件的开发。
发展进程:
-
2011年7月20日Mac OS X已经正式被苹果改名为OS X。
-
2016年,OS X改名为macOS,与iOS,tvOS,watchOS相照应.最新版本为macOS 10.14.6(Mojave),
-
2019年5月14日凌晨发布。
-
2018年3月30日,苹果推送了macOS High Sierra 10.13.4正式版,新版本增强了对外接eGPU的支持,还新增了此前iMac Pro专属的墨水云墙纸。
-
2018年9月25日,苹果推送macOS Mojave 10.14,增加了深色模式,更新了Safari浏览器,Mac App Store,访达,桌面,股市,语音备忘录,家庭App等。
-
北京时间2019年6月4日凌晨1点,2019年WWDC全球开发者大会上苹果发布macOS Catalina 10.15,用户能将iPad用作Mac电脑的第二块显示屏,可以实现语音控制。
智能手机操作系统简介:塞班、安卓、iOS、Windows Phone、黑莓等等,其中在国内安卓系统较多。
软件的开发:
-
软件工程的定义:软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来的学科。它涉及到程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。
-
软件开发过程:
- 软件有一个从孕育、诞生、成长、成熟到衰亡的生存过程,这个就是软件的生命周期。那我们如何将一个软件从无变到有呢?
1、问题的定义:要解决的问题是什么,也就是说在前期通过对用户的访问调查,系统分析员要简要的写出关于问题实质,工程目标和工程规模的书面报告,这份报告经过讨论和必要的修改后要得到用户的确认。
2、可行性研究—对上一个阶段所确定的问题是否有行得通的解决方法:这个阶段的任务不是具体解决问题,而是研究问题的范围,探索这个问题是否值得去解决,是否有可行的解决办法。一般来说。只有投资可能取得较大效益的那些工程才值得进行下去,可行性研究之后的阶段需要投入更多的人力物力,及时终止不值得投资的工程项目,可以避免更大的浪费。
3、需求的分析——为了解决这个问题,目标系统需要做什么。确定这个目标系统必须具备那些功能,在需求分析阶段要和用户紧密联系,充分交流信息,以得出经过用户确认的系统逻辑模型,这个确认好的模型是以后设计和实现目标系统的基础,这个阶段最重要的就是用正式的文档准确记录对目标系统的需求,也叫做规格说明书。
4、总体设计——应该如何实现目标系统:首先确定设计几种可能的实现目标系统的方案,通常设计三种方案低成本、中等成本、高成本并且对每种设计方案应该做出详细的解释以及利弊,在用户确定方案后能快速地进入下一个阶段。那么如何设计这些方案的程序就是个问题了,设计主要要求的就是模块化,也就是说总体设计的另一个重要任务就是如何搭建模块组成以及模块之间的关系。
5、详细设计——如何具体实现这个系统:在这个阶段要详细的设计每个模块,确定模块实现的功能所需的算法和数据结构,就是将之前开发的大致框架更加具体化,来填充之前没有的相关细节。也并不是编写程序,而是设计出程序的详细规格说明,根据需要具体实现的细节来设计相关的功能。
6、程序开发:关键任务就是写出容易理解并且正确的、容易维护的程序模块。根据实际环境,开发人员应选择一种适合的高级程序设计语言(必要使用汇编语言),将一些细节程序书写出来,保持程序的可读性以及正确性。
7、软件测试:通过各种类型的测试软件使达到预定的要求,主要有单元测试,集成测试,验收测试。还可以用其他测试方法来进行测试。
8、软件维护:通过各种必要的维护活动是系统持久地满足客户的需要。有四种维护方法,改正性维护、适应性维护、完善性维护、预防性维护等等。并且每一次维护活动应该准确记录下来,作为正式文档加以保存
根据完成任务的性质将软件周期分为八个板块,但是实际应用中由于影响因素很多,所以都会影响周期的划分,所以这八个分块也是简单的大致,具体实现应该根据具体的情况而定。
用户界面以及用户体验:用户界面应该友好,并且用户体验也是一个很重要的标准,设计目标就是友好,有用,好用。
经典用户界面欣赏:
软件行业职业简介:
-
项目管理类:
-项目经理:是项目成功策划和执行总负责的人,是项目团队的领导者,并且必须在一系列的项目计划、组织和控制活动中作好领导工作,从而实现项目目标。
-QA工程师:负责质量管理体系标准要求的有关质量保证的人员。 -
开发类:
-软件需求分析师:需要与客户进行深入和细致的沟通,深入理解业务需求,梳理出需求的各个功能点、每个功能的业务的业务性质。
-软件开发工程师:对从事软件开发相关人员的统称,工作内容都是关于软件开发,所以对工程师要求就比较高,除了需要要求的掌握的汇编语言之外,还需要掌握额外的开发技术。
-系统分析师:具有从事计算机应用系统分析和设计工作能力及业务水平,能指导系统架构师和高级程序员工作的人员,也负责设计与开发应用软件系统,来帮助企业经营者管理和营运公司。
-系统架构师:主要职责就是设计一个企业系统的基础架构,并提供关于如何建立和维护系统的指导方针。 -
测试类:
-软件测试工程师:在理解软件业务需求上,根据每个功能点以及分类,编写功能测试用例,并将测试用例分组归类为测试软件。
-软件产品测试经理:软件测试经理相当于是一个软件工程师队伍的领导人,能有效的领导一个团队. -
系统、安全以及维护
-网络工程师:从事计算机网络系统的设计、建设、运行、和维护工作。
-IT基础设施工程师
-网络安全管理员
-安全开发工程师
-数据库管理员
-系统管理员 -
销售类
-售前工程师
-售后技术工程师
-系统集成工程师
课上介绍了计算机软件的定义,并讨论了计算机软件的分类以及架构,从软件的功能、开发、规模和工作方式三个方面进行分类。还介绍了操作系统,以及开发软件的八大步骤,最后介绍了有关软件工程的相关职业,提前做好自己的职业规划也是很重要的,有目标的学习为未来的工作打好基础!