精华内容
下载资源
问答
  • C++是一门以C为基础发展而来一门面向对象的高级程序设计语言,从1983年由Bjarne Stroustrup教授在贝尔实验室创立开始至今,已有...由于C++过于复杂,并且经历了长时间的发展演变,目前对于C++标准支持较好主要有GN

    C++是一门以C为基础发展而来的一门面向对象的高级程序设计语言,从1983年由Bjarne Stroustrup教授在贝尔实验室创立开始至今,已有30多个年头。

    C++从最初的C with class,经历了从C++98、C++ 03、C++ 11、C++ 14再到C++17多次标准化改造,功能得到了极大的丰富,已经演变为一门集面向过程、面向对象、函数式、泛型和元编程等多种编程范式的复杂编程语言,入门具有一定的难度。

    由于C++过于复杂,并且经历了长时间的发展演变,目前对于C++标准支持的较好主要有GNU C++和Visual C++,严格来说,目前还没有一个完全支持ISO C++的版本。

    1954年,John Backus发明了世界上第一种计算机高级语言Fortran,为之后出现的高级编程语言奠定了基础。

    1970年,AT&T的Bell实验室的 Ken Thompson,以BCPL语言为基础,设计出简单且接近硬件的B语言(取BCPL的首字母),并且他用B语言写了第一个Unix操作系统。

    到了1972年,Bell实验室的Dennis Ritchie和Ken Thompson共同发明了C语言,并使用C重写Unix。

    1979年,Bjame Stroustrup到了Bell实验室,开始从事将C改良为带类的C(C with Classes)的工作,1983年该语言被正式命名为C++,主要意图是表明C++是C的增强版,1985年发布了第一个C++版本。

    第一个版本的C++,因其面向对象的思想使得编程变得简单,并且又保持了C语言的运行效率,在推出的一段时间内,得到了快速的发展,占据了编程语言界的半壁江山。

    从1985年到1998年,C++从最初的C with Classes新增了很多其他的特性,比如异常处理、模板、标准模板库(STL)、运行时异常处理(RTTI)与名字空间(Namespace)等。

    1998年,C++标准委员会统筹C++的所有特性,发布了第一个C++国际标准C++98。

    从1998年到2003年,是C++标准从C++98到C++03的迭代期,期间C++扩增了很多额外的特性,比如以Boost MPL(Boost Metaprogramming Library)与Loki等为代表的模板元编程库的出现,让开发者更加便捷的使用C++在编译器的执行能力,即通过代码编译获得计算结果,学术性的称为模板元编程。

    到了2003年,C++标准委员会总结最新技术并发布了C++03标准。

    从2003年到2011年,也就是从C++03到C++11,期间C++引入了对象移动、右值引用、lamba表达式(函数式编程)、编译时类型识别(auto)、别名模板以及很多新型关键词(如nullptr、decltype、constexpr)等现代编程语言常具备的能力,让C++与时俱进,开发效率得到了很大的提升。这些新的特性随着C++11标准的发布而被正式确立下来。

    近年来,C++标准的变更周期缩短,由C++11到C++14以及最近的C++17都只用了3年的时间。

    C++14引入了二进制文字常量、将类型推导从Lambda函数扩展到所有函数、变量模板以及数字分位符等。

    C++14 是对 C++11的重要补充和优化,是C++发展历程中的一个小型版本,虽然新增的内容较少,但是仍然为用户“带来了极大的方便”,为实现使C++“对新手更为友好”这一目标作出努力。

    到了2017年,C++迎来了C++17标准。

    此次对C++的改进和扩增,让C++变得更加容易接受和便于使用了。

    C++17引入了许多新的特性,比如类模板参数推导、UTF-8文字常量、fold表达式、新类型以及新的库函数等。

     

    C++仍在不断的发展,下一个版本将是C++20,C++历史上的标准变更如下。

    年份C++ 标准名称非正式名称

    语言的发展是一个逐步递进的过程,C语言也不例外,C语言也有自己的标准。

    C语言从1972诞生以来,先后经历了K&R C、ANSI C、C89、C99和最新的C11标准的变更,其特性不断丰富,功能不断强大。

    语言的发展也是相互促进和交融吸收的,C++是直接从C语言发展过来的,而C语言是从B语言发展过来的,B语言则是从BCPL发展而来,BCPL(Basic CPL)则从CPL发展而来,CPL则从ALGOL60演变而来。

    每一门新语言的诞生以及后续的演变和发展,都站在了其他语言的肩膀之上,取其精华,弃其糟粕,让语言变得更加的强大。

     

    优缺点:

    现在的趋势是多语言混成编程,故本文是针对混合编程。

    1、C++优势:

    1.1  性能优势。

    1.2  可进化性(可复用性),进化出本团队顺手的类库。

     

    2、C++小的优势或疑似优势:

    2.1  “万金油”。混合编程时代,“万金油”价值小。

    相对于其他的语言,C++具有它自己的优势,主要体现在以下几个方面:

        1、 C++实现了面向对象程序设计。在高级语言当中,处理运行速度是最快的,大部分的游戏软件,系统都是由C++来编写的。

        2、 C++语言非常灵活,功能非常强大。如果说C语言的优点是指针,那么C++的优点就是性能和类层次结构的设计。

        3、C++非常严谨、精确和数理化,标准定义很细致。

        4、 C++语言的语法思路层次分明、相呼应;语法结构是显式的、明确的。

        当然,这只是C++的一部分优势,在运用过程中,我们会逐渐发现C++语言之美。

     

    3、C++根本缺点:

    难学。新手被指针搞死,

    中手(约3年工作经验)被stl标准库和模板搞死,

    高手(约5年工作经验)被boost搞死。由于stl难懂,大量的项目禁用stl。

    我曾经看了一段20行的stl代码,看了30分钟,发现两行代码(两个for)就可以搞定。csdn有一个真实的案例,某个项目有了较多的boost,那人离职后,项目就费了。请一个boost高手的成本比重写项目还高。

     

    4、缓解的方法:

    C++软件工程师进一步分工:

    a,新手主要负责界面,只需要会使用指针,无需管理指针。管理指针封装在基础库中。

    b,中手老手负责逻辑层。

    c,专人负责与数据库打交道。

     

    5、C++非根本缺点:

    5.1可理解性差。“难学”引起,其实熟悉stl的人看熟悉stl的人代码很好理解。解决方法:

    a,分成若干个库,新手参与的库,禁止或少用stl。

    b,stl中的常用功能,重写在一个新库中,此库可理解性最重要。

     

    6、小缺点或不是缺点。

    6.1.门槛高。新手无需用到指针管理、内存管理、线程管理,直接用stl的vector或MFC的CArray分配空间。内存管理、线程管理一个产品、项目只需要一个人会,就可以了。

    6.2,开发效率低。如果有多年积累的基础库,开发效率反而高。因为这些基础库,是非常适合当前团队的。

    6.3,初级程序员易犯错误。初级程序员,只有权限修改少量库(以界面居多)。

     

    相对与java和C

    宽泛点来说,从结果角度上看C几乎什么都能做,C++几乎什么都能做好。但是从开发成本上说,很多情况下C/C++不是最好的选择。眼下C最主要的使用领域应该是Unix系系统的开发以及某些Unix系系统的软件的相关开发。C++恐怕还是游戏开发。

    作为通用语言,可以适应各种类型的开发算是必备属性(同理,Java其实也是几乎什么都能做,只是限制相对来说要大一点并且很多事情做不了那么好)。

    C/C++的规则比较宽泛,可以用来进行一些更贴近硬件的开发,而大部分C/C++开发环境也是这么做的。这造成相对来说用C/C++开发往往对其他语言的依赖比较小。

    C++方面,因为C++还同时具有完整的元编程功能(虽然并不特别好用),使得在保证功能的前提下也是目前性能最高的语言没有之一。

    所以当开发一个软件特别是对性能有需求的软件的时候,就算别的开发语言都不能用,最后总还是有C++可以用。

    对于热爱编程的人来说,有一群一起学习一起解答的小伙伴很重要!

    小编有一个免费的C/C++编程学习交流俱乐部【点击进入】

    还有编程学习文件(源码,零基础教程,项目实战教学视频),欢迎初学者和正在进阶中的小伙伴们!

    展开全文
  • 软件工程专业介绍在目前的IT领域中,软件业是规模最大,发展速度最快,应用前景最广阔的领域,也是目前国内就业需求较大,薪资水平较高的行业之一。软件工程专业是研究用工程化方法构建和维护有效的、实用的和高质量...
    f86284ae-321c-eb11-8da9-e4434bdf6706.pngfa6284ae-321c-eb11-8da9-e4434bdf6706.png软件工程

    fc6284ae-321c-eb11-8da9-e4434bdf6706.jpeg

    fd6284ae-321c-eb11-8da9-e4434bdf6706.gifff6284ae-321c-eb11-8da9-e4434bdf6706.gif专业介绍ff6284ae-321c-eb11-8da9-e4434bdf6706.gif

    在目前的IT领域中,软件业是规模最大,发展速度最快,应用前景最广阔的领域,也是目前国内就业需求较大,薪资水平较高的行业之一。

    软件工程专业是研究用工程化方法构建和维护有效的、实用的和高质量的软件的专业。

    它的学习内容涉及程序设计语言、数据库、软件设计与架构、软件系统平台、测试与维护、项目管理等多个方面。

    本专业紧贴软件行业的人才需求,为本行业培养合格的应用和开发人才。

    fd6284ae-321c-eb11-8da9-e4434bdf6706.gifff6284ae-321c-eb11-8da9-e4434bdf6706.gif主要专业课程ff6284ae-321c-eb11-8da9-e4434bdf6706.gif

    Java面向对象程序设计、 Python程序设计、数据结构、操作系统、数据库技术、计算机网络、计算机组成原理、软件工程导论、UML需求分析、软件设计与体系结构、软件项目管理、软件测试与质量保证、 Java EE企业应用开发、NET应用开发、HTML5前端开发、 Android应用开发、云计算架构、云上开发、云上运维等。

    fd6284ae-321c-eb11-8da9-e4434bdf6706.gifff6284ae-321c-eb11-8da9-e4434bdf6706.gif就业方向ff6284ae-321c-eb11-8da9-e4434bdf6706.gif

    本专业毕业生可从事云计算、Web应用与移动应用相关软件和系统的开发、测试与维护等工作,也可在软件企业中承担软件项目管理、软件需求分析和软件架构设计等工作。

    126384ae-321c-eb11-8da9-e4434bdf6706.png

    文案制作 / 信息中心-赖裕君

    图片来源 / 信息中心-赖裕君

    排版编辑 / 信息中心-赖裕君

    责任总监 / 信息中心-陈佩萍

    图文审核 / 信息中心-温程盛

    146384ae-321c-eb11-8da9-e4434bdf6706.gif

    展开全文
  • 三层架构优缺点

    2011-11-06 22:04:41
    人们对封装、复用、扩展、移置等方面要求,使得双层架构显然更加臃肿繁琐,三层程序架构体系应运而生,可以说,三层架构体系结构是面向对象思想发展必然产物。当然三层架构对于目前来说早已经不是什么新鲜事物...
  • 最早由Intel推出,由于其典型结构和完善总线专用寄存器集中管理,众多逻辑位操作功能及面向控制丰富指令系统,堪称为一代“经典”,为以后其它单片机的发展奠定了基础。目前在教学场合和对性能要求不...

    51单片机

    应用最广泛的8位单片机当然也是初学者们最容易上手学习的单片机,最早由Intel推出,由于其典型的结构和完善的总线专用寄存器的集中管理,众多的逻辑位操作功能及面向控制的丰富的指令系统,堪称为一代“经典”,为以后的其它单片机的发展奠定了基础。目前在教学场合和对性能要求不高的场合大量被采用。

    特点

    51单片机之所以成为经典,成为易上手的单片机主要有以下特点:
    从内部的硬件到软件有一套完整的按位操作系统,称作位处理器,处理对象不是字或字节而是位。不但能对片内某些特殊功能寄存器的某位进行处理,如传送、置位、清零、测试等,还能进行位的逻辑运算,其功能十分完备,使用起来得心应手。
    同时在片内RAM区间还特别开辟了一个双重功能的地址区间,使用极为灵活,这一功能无疑给使用者提供了极大的方便。
    乘法和除法指令,这给编程也带来了便利。很多的八位单片机都不具备乘法功能,做乘法时还得编上一段子程序调用,十分不便。

    缺点

    51单片机虽然是经典但是缺点还是很明显的
    AD、EEPROM等功能需要靠扩展,增加了硬件和软件负担。
    虽然I/O脚使用简单,但高电平时无输出能力,这也是51系列单片机的最大软肋。
    运行速度过慢,特别是双数据指针,如能改进能给编程带来很大的便利。
    51保护能力很差,很容易烧坏芯片。

    MSP430单片机

    MSP430系列单片机是1996年开始推向市场的一种16位超低功耗的混合信号处理器,给人们留下的最大的亮点是低功耗而且速度快,汇编语言用起来很灵活,寻址方式很多,指令很少,容易上手。主要是由于其针对实际应用需求,把许多模拟电路、数字电路和微处理器集成在一个芯片上,以提供“单片”解决方案。在低功耗及超低功耗的工业场合应用的比较多。

    特点

    MSP430单片机其迅速发展和应用范围的不断扩大,主要取决于以下的特点。
    强大的处理能力,采用了精简指令集(RISC)结构,具有丰富的寻址方式( 7 种源操作数寻址、 4 种目的操作数寻址)、简洁的 27 条内核指令以及大量的模拟指令;大量的寄存器以及片内数据存储器都可参加多种运算;还有高效的查表处理指令;有较高的处理速度,在 8MHz 晶体驱动下指令周期为 125 ns 。这些特点保证了可编制出高效率的源程序。
    在运算速度方面,能在 8MHz 晶体的驱动下,实现 125ns 的指令周期;16 位的数据宽度、 125ns 的指令周期以及多功能的硬件乘法器(能实现乘加)相配合,能实现数字信号处理的某些算法(如 FFT 等)。
    超低功耗方面,MSP430 单片机之所以有超低的功耗,是因为其在降低芯片的电源电压及灵活而可控的运行时钟方面都有其独到之处;电源电压采用的是 1.8~3.6V 电压,因而可使其在 1MHz 的时钟条件下运行时, 芯片的电流会在 200~400uA 左右,时钟关断模式的最低功耗只有 0.1uA。

    缺点

    可能不太容易上手,不适合初学者入门,资料也比较少,只能跑官网去找。
    占的指令空间较大,因为是16位单片机,程序以字为单位,有的指令竟然占6个字节,虽然程序表面上简洁, 但与pic单片机比较空间占用很大。

    STM32单片机

    由ST厂商推出的STM32系列单片机,行业的朋友都知道,这是一款性价比超高的系列单片机,应该没有之一,功能及其强大。其基于专为要求高性能、低成本、低功耗的嵌入式应用专门设计的ARM Cortex-M内核,同时具有一流的外设:1μs的双12位ADC,4兆位/秒的UART,18兆位/秒的SPI等等,在功耗和集成度方面也有不俗的表现,当然和MSP430的功耗比起来是稍微逊色的一些,但这并不影响工程师们对它的热捧程度,由于其简单的结构和易用的工具再配合其强大的功能在行业中赫赫有名。

    特点

    STM32单片机其强大的功能主要表现在:
    内核:ARM32位Cortex-M3CPU,最高工作频率72MHz,1.25DMIPS/MHz,单周期乘法和硬件除法。
    存储器:片上集成32-512KB的Flash存储器;6-64KB的SRAM存储器。
    时钟、复位和电源管理:2.0-3.6V的电源供电和I/O接口的驱动电压;POR、PDR和可编程的电压探测器(PVD);4-16MHz的晶振;内嵌出厂前调校的8MHz RC振荡电路,内部40 kHz的RC振荡电路;用于CPU时钟的PLL;带校准用于RTC的32kHz的晶振。
    调试模式:串行调试(SWD)和JTAG接口;最多高达112个的快速I/O端口、最多多达11个定时器、最多多达13个通信接口。

    TMS单片机

    这里也提一下TMS系列单片机,虽不算主流。由TI推出的8位CMOS单片机,具有多种存储模式、多种外围接口模式,适用于复杂的实时控制场合。虽然没STM32那么优秀,也没MSP430那么张扬,但是TMS370C系列单片机提供了通过整合先进的外围功能模块及各种芯片的内存配置,具有高性价比的实时系统控制。同时采用高性能硅栅CMOS EPROM和EEPROM技术实现。低工作功耗CMOS技术,宽工作温度范围,噪声抑制,再加上高性能和丰富的片上外设功能,使TMS370C系列单片机在汽车电子,工业电机控制,电脑,通信和消费类具有一定的应用。

    PIC单片机

    PIC单片机系列是美国微芯公司(Microship)的产品,共分三个级别,即基本级、中级、高级,是当前市场份额增长最快的单片机之一,CPU采用RISC结构,分别有33、35、58条指令,属精简指令集。

    同时采用Harvard双总线结构,运行速度快,它能使程序存储器的访问和数据存储器的访问并行处理,这种指令流水线结构,在一个周期内完成两部分工作,一是执行指令,二是从程序存储器取出下一条指令,这样总的看来每条指令只需一个周期,这也是高效率运行的原因之一。

    特点

    PIC单片机之所以成为一时非常热的单片机不外乎以下特点:
    具有低工作电压、低功耗、驱动能力强等特点。PIC系列单片机的I/O口是双向的,其输出电路为CMOS互补推挽输出电路,I/O脚增加了用于设置输入或输出状态的方向寄存器,从而解决了51系列I/O脚为高电平时同为输入和输出的状态。
    当置位1时为输入状态,且不管该脚呈高电平或低电平,对外均呈高阻状态;置位0时为输出状态,不管该脚为何种电平,均呈低阻状态,有相当的驱动能力,低电平吸入电流达25mA,高电平输出电流可达20mA。相对于51系列而言,这是一个很大的优点。
    它可以直接驱动数码管显示且外电路简单。它的A/D为10位,能满足精度要求。具有在线调试及编程(ISP)功能。

    缺点

    其专用寄存器(SFR)并不像51系列那样都集中在一个固定的地址区间内(80~FFH),而是分散在四个地址区间内。只有5个专用寄存器PCL、STATUS、FSR、PCLATH、INTCON在4个存储体内同时出现,但是在编程过程中,少不了要与专用寄存器打交道,得反复地选择对应的存储体,也即对状态寄存器STATUS的第6位(RP1)和第5位(RP0)置位或清零。
    数据的传送和逻辑运算基本上都得通过工作寄存器W(相当于51系列的累加器A)来进行,而51系列的还可以通过寄存器相互之间直接传送,因而PIC单片机的瓶颈现象比51系列还要严重,这在编程中的朋友应该深有体会。

    AVR单片机

    AVR单片机是Atmel公司推出的较为新颖的单片机,其显著的特点为高性能、高速度、低功耗。它取消机器周期,以时钟周期为指令周期,实行流水作业。AVR单片机指令以字为单位,且大部分指令都为单周期指令。而单周期既可执行本指令功能,同时完成下一条指令的读取。通常时钟频率用4~8MHz,故最短指令执行时间为250~125ns。

    特点

    AVR单片机能成为最近仍是比较火热的单片机,主要的特点:
    AVR系列没有类似累加器A的结构,它主要是通过R16~R31寄存器来实现A的功能。在AVR中,没有像51系列的数据指针DPTR,而是由X(由R26、R27组成)、Y(由R28、R29组成)、Z(由R30、R31组成)三个16位的寄存器来完成数据指针的功能(相当于有三组DPTR),而且还能作后增量或先减量等的运行,而在51系列中,所有的逻辑运算都必须在A中进行;而AVR却可以在任两个寄存器之间进行,省去了在A中的来回折腾,这些都比51系列出色些。
    AVR的专用寄存器集中在00~3F地址区间,无需像PIC那样得先进行选存储体的过程,使用起来比PIC方便。AVR的片内RAM的地址区间为0~00DF(AT90S2313) 和0060~025F(AT90S8515、AT90S8535),它们占用的是数据空间的地址,这些片内RAM仅仅是用来存储数据的,通常不具备通用寄存器的功能。当程序复杂时,通用寄存器R0~R31就显得不够用;而51系列的通用寄存器多达128个(为AVR的4倍),编程时就不会有这种感觉。
    AVR的I/O脚类似PIC,它也有用来控制输入或输出的方向寄存器,在输出状态下,高电平输出的电流在10mA左右,低电平吸入电流20mA。这点虽不如PIC,但比51系列还是要优秀的。

    缺点

    是没有位操作,都是以字节形式来控制和判断相关寄存器位的。
    C语言与51的C语言在写法上存在很大的差异,这让从开始学习51单片机的朋友很不习惯。
    通用寄存器一共32个(R0~R31),前16个寄存器(R0~R15)都不能直接与立即数打交道,因而通用性有所下降。而在51系列中,它所有的通用寄存器(地址00~7FH)均可以直接与立即数打交道,显然要优于前者。

    Freescale单片机

    主要针对S08,S12这类单片机,当然Freescale单片机远非于此。Freescale系列单片机采用哈佛结构和流水线指令结构,在许多领域内都表现出低成本,高性能的的特点,它的体系结构为产品的开发节省了大量时间。此外Freescale提供了多种集成模块和总线接口,可以在不同的系统中更灵活的发挥作用。

    特点

    Freescale单片机的特有的特点如下:
    全系列:从低端到高端,从8位到32位全系列应有尽有,其推出的8位/32位管脚兼容的QE128,可以从8位直接移植到32位,弥补单片机业界8/32 位兼容架构中缺失的一环。
    多种系统时钟模块:三种模块,七种工作模式。多种时钟源输入选项,不同的mcu具有不同的时钟产生机制,可以是RC振荡器,外部时钟或晶振,也可以是内部时钟,多数CPU同时具有上述三种模块;可以运行在FEI,FEE,FBI,FBILP,FBE,FBELP,STOP这七种工作模式。
    多种通讯模块接口:Freescale单片机几乎在内部集成各种通信接口模块:包括串行通信接口模块SCI,多主I2C总线模块,串行外围接口模块 SPI,MSCAN08控制器模块,通用串行总线模块(USB/PS2)。
    具有更多的可选模块:具有LCD驱动模块,带有温度传感器,具有超高频发送模块,含有同步处理器模块,含有同步处理器的MCU还具有屏幕显示模块OSD,还有少数的MCU具有响铃检测模块RING和双音多频/音调发生器DMG模块。
    可靠性高,抗干扰性强,多种引脚数和封装选择。
    低功耗、也许Freescale系列的单片机的功耗没有MSP430的低,但是他具有全静态的“等待”和“停止”两种模式,从总体上降低您的功耗!新近推出的几款超低功耗已经与MSP430的不相上下。

    STC单片机

    说到STC单片机有人会说到,STC也能算主流?基于它是国内还算是比较不错的单片机来说。STC是单时钟/机器周期的单片机,说白了STC单片机是51与AVR的结合体,有人说AVR是51的替代单片机,但是AVR单片机在位控制和C语言写法上存在很大的差异。

    而STC单片机结合了51和AVR的优点,虽然功能不及AVR那么强大,但是在AVR能找到的功能,在STC上基本都有,同时STC单片机是51内核,这给以51单片机为基础的工程师们提供了极大的方便,省去了学习AVR的时间,同时也不失AVR的各种功能。

    STC单片机是高速、低功耗、超强抗干扰的新一代8051单片机51单片机,指令代码完全兼容传统8051,但速度快8~12倍,内部集成MAX810专用复位电路。4路PWM 8路高速10位A、D转换,针对电机电机 的供应商控制,强干扰场合,成为继51单片机后一个全新系列单片机。

    特点

    下载烧录程序用串口方便好用,容易上手,拥有大量的学习资料及视频,同时具有宽电压:5.5~3.8V、2.4~3.8V, 低功耗设计:空闲模式,掉电模式(可由外部中断唤醒)。
    STC单片机具有在应用编程,调试起来比较方便;带有10位AD,内部EEPROM,可在1T/机器周期下工作,速度是传统51单片机的8~12倍,价格也较便宜。
    4通道捕获/比较单元,STC12C2052AD系列为2通道,也可用来再实现4个定时器或4个外部中断,2个硬件16位定时器,兼容普通8051的定时器。4路PCA还可再实现4个定时器,具有硬件看门狗、高速SPI通信端口、全双工异步串行口,兼容普通8051的串口,同时还具有先进的指令集结构,兼容普通8051指令集。

    有需要嵌入式资料的可以加我:3290323464
    欢迎全国各地的大佬和学生一起讨论交流哦!!!
    视频资料http://www.makeru.com.cn/live/1758_1146.html?s=143793

    展开全文
  • 第一章面向对象程序设计概述学习目标/GOALS了解面向对象程序设计方法的发展历程了解面向过程和面向对象两种程序设计方法的优缺点掌握面向对象程序设计的特点掌握面向对象程序设计的相关术语和基本特征了解目前常用的...
  • 软件工程 ...接下来我们会一一叙述这些软件开发方法实现过程和其中特点以及优缺点。 结构化方法 结构化方法:结构化方法是应用最为广泛一种开发方法。按照信息系统生命周期,应用结构化系..
    • 软件工程

    在上个世纪60年代中期爆发了众所周知的软件危机。为了克服这一危机,在1968、1969年连续召开的两次著名的NATO会议上提出了软件工程这一术语,并在以后不断发展、完善。与此同时,软件研究人员也在不断探索新的软件开发方法。

    • 软件开发方法

    目前常用的开发方法有四种,分别是结构化方法、原型法和面向对象方法。接下来我们会一一叙述这些软件开发方法的实现过程和其中的特点以及优缺点。

    1. 结构化方法

    结构化方法:结构化方法是应用最为广泛的一种开发方法。按照信息系统生命周期,应用结构化系统开发方法,把整个系统的开发过程分为若干阶段,然后一步一步她依次进行,前一阶段是后一阶段的工作依据;每个阶段又划分详细的工作步骤,顺序作业。

    每个阶段和主要步骤都有明确详尽的文档编制要求,各个阶段和各个步骤的向下转移都是通过建立各自的软件文档和对关键阶段、步骤进行审核和控制实现的。它是由结构化分析、结构化设计和结构化程序设计三部分有机组合而成的。

    它的基本思想:把一个复杂问题的求解过程分阶段进行,而且这种分解是自顶向下,逐层分解,使得每个阶段处理的问题都控制在人们容易理解和处理的范围内。以数据流图,数据字典,结构化语言,判定表,判定树等图形表达为主要手段,强调开发方法的结构合理性和系统的结构合理性的软件分析方法。结构化方法具有如下特点。

    (1)遵循用户至上原则。

    (2)严格区分工作阶段,每个阶段有明确的任务和取得的成果。   

    (3)强调系统开发过程的整体性和全局性。   

    (4)系统开发过程工程化,文档资料标准化。 

    结构化分析方法是一种面向数据流而基于功能分解的分析方法, 在该阶段主要通过采用数据流程图、编制数据字典等工具, 描述边界和数据处理过程的关系, 力求寻找功能及功能之间的说明。

    该方法的优点是:理论基础严密,它的指导思想是用户需求在系统建立之前就能被充分了解和理解。由此可见,结构化方法注重开发过程的整体性和全局性。

    该方法的缺点是:开发周期长;文档、设计说明繁琐,工作效率低;要求在开发之初全面认识系统的信息需求,充分预料各种可能发生的变化,但这并不十分现实;若用户参与系统开发的积极性没有充分调动,造成系统交接过程不平稳,系统运行与维护管理难度加大。 

    结构化设计方法的局限性:

    i.不能直接反映问题域: 结构化分析方法以数据流为中心, 强调数据的流动及每一个处理过程, 不是以问题域中的各事物为基础, 打破了各事物的界限, 分析结果不能直接反映问题域, 容易隐蔽一些对问题域的理解偏差。

    ii.数据和代码缺乏保护机制: 一个特定全程数据既可以被操作这些数据的过程访问, 也可以被其他过程访问, 这给程序设计带来了不安定因素, 一个不正常的数据修改或者过程调用可能会破坏正常的程序执行流程或结果。

    iii.分析和设计体系不一: 结构化分析的结果是数据流图, 结构化设计的结果是模块结构图。 二者的表示体系不一致, 分析文档很难与设计文档对应, 所以从分析到设计的“ 转换”过程容易因理解上的错误而使得设计文档与用户的原本需求相差甚远。

    iv.开发过程复杂: 由于结构化方法将过程和数据分离为相互独立的实体, 程序员在编程时必须时刻考虑到所要处理的数据的格式。 对于不同的数据格式做相同的处理或对于相同的数据格式做不同的处理都需要编写不同的程序, 而且往往不能对数据的安全性进行有效的控制。 如果程序进行扩充或升级, 也需要大量修改函数, 因此结构化程序的可重用性不好。 要使数据与程序始终保持兼容, 已成为程序员的一个沉重的负担。

    1. 面向对象方法

    面向对象方法是一种运用对象、类、封装、继承、多态和消息等概念来构造、测试、重构软件的方法。随着应用系统日益复杂庞大和面向对象程序设计语言的日益成熟,面向对象的系统开发方法以其直观、方便的优点获得广泛应用。 是以认识论为基础,用对象来理解和分析问题空间,并设计和开发出由对象构成的软件系统(解空间)的方法。 

    由于问题空间和解空间都是由对象组成的,这样可以消除由于问题空间和求解空间结构上的不一致带来的问题。简言之,面注重软件开发中人的作用。 

    面向对象设计基本步骤:

    • 根据概念层类图,进行实体类设计。

    • 设计实体类的操作入口,如管理器类和容器类。

    • 根据GRASP九大原则,进行业务逻辑类的设计。涉及到活动图。

    • 用例实现。一般会涉及到类图和协作图。

    基本思想:尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界、解决问题的方法与过程, 也就是使描述问题的问题空间与实现解法的求解空间在结构上尽可能一致。

    面向对象分析是把对问题域和系统的认识理解, 正确地抽象为规范的对象( 包括类、继承层次) 和消息传递联系, 最终建立起问题域的简洁、精确、可理解的面向对象模型, 为后续的面向对象设计和面向对象编程提供指导。面向对象分析通常建立三种模型: 对象模型、动态模型、功能模型。其中, 对象模型描述了系统的静态结构,确定类的名称和类间的关系;动态模型表示瞬时的、行为化的系统的“ 控制”性质, 规定了对象模型中的对象的合法变化序列;功能模型表明了系统中数据之间的依赖关系, 以及有关数据的处理功能。

    面向对象方法的局限:

    i.开发过程管理要求高:在面向对象分析过程中,需要多次迭代,开发过程要经过“修改-评价-再修改”的多次反复

    ii.系统复用性低:面向对象方法通过信息隐藏和封装等手段屏蔽了对象内部的执行细节,控制了错误的蔓延,但发生错误时,定位故障代价大,对于需求变化频繁的系统,很难得到一个高度可复用的面向对象软件系统设计。

    iii.开发人员易将原型取代规范系统分析:缺乏规范化的文档资料,不易于后期维护。

    面向对象方法学的优点:

    i.与人类习惯的思维方法一致。

    ii.稳定性好。传统方法所建立起来的软件系统的结构紧密依赖于系统要完成的功能。当功能需求发生变化时将引起软件结构的整体改变。面向对象方法基于构造问题领域的对象模型,以对象为中心构造软件系统。当功能需求发生变化时,往往仅需要一些局部性的修改。

    iii.可重用性好,重用是提高生产效率的最主要的方法。对象是比较理想的模块和可重用的软件成分。类重用的方法,创建该类的实例,派生。

    iiii.较易开发大型软件。

    iiiii.可维护性好面向对象的软件稳定性比较好。面向对象的软件比较容易修改,面向对象的软件比较容易理解,易于测试和调试

    1. 原型法

    原型法的基本思想与结构化方法不同,原型法认为在很难一下子全面准确地提出用户需求的情况下,首先不要求一定要对系统做全面、详细的调查、分析,而是本着开发人员对用户需求的初步理解,先快速开发一个原型系统,然后通过反复修改来实现用户的最终系统需求。是在投入大量的人力,物力之前,在限定的时间内,用最经济的方法开发出一个可实际运行的系统模型,用户在运行使用整个原型的基础上,通过对其评价,提出改进意见,对原型进行修改,统一使用,评价过程反复进行,使原型逐步完善,直到完全满足用户的需求为止。 

    适用范围:处理过程明确、简单系统;涉及面窄的小型系统不适合于:大型、复杂系统,难以模拟;存在大量运算、逻辑性强的处理系统;管理基础工作不完善、处理过程不规范;大量批处理系统   

    原型应当具备的特点如下。   

    (1)实际可行。   

    (2)具有最终系统的基本特征。   

    (3)构造方便、快速,造价低。   

    原型法的特点在于原型法对用户的需求是动态响应、逐步纳入的,系统分析、设计与实现都是随着对一个工作模型的不断修改而同时完成的,相互之间并无明显界限,也没有明确分工。

    系统开发计划就是一个反复修改的过程。适于用户需求开始时定义不清的系统开发,开发方法更宜被用户接受;但如果用户配合不好,盲目修改,就会拖延开发过程。 

    • 总结

    通过对这几种方法的实现简介和它们的优缺点介绍,不同的方法适用于不同的软件开发。如果说想要找一个统一的,合适所有软甲开发工程的开发方法,在目前阶段是不合适的,因为如果你用原型法去做大型软件,其中的花费,会拖垮大部分的公司,而且系统的使用大概率的会出现不能正常使用的状态,所以,开发软件用合适的开发方法,才是软件开发人员的主要作用。

    展开全文
  • 1.2.4 Android移动Web项目开发三种解决方案:Native, Web和Hybrid缺陷分析 4 1.2.5国内外应用现状 6 1.2.6 研究现状总结 7 1.3研究目标与内容 7 1.3.1多窗口浏览器模式实现机制 7 1.3.2跨域交互即缓存处理方法...
  • 至于2者选择或者说优缺点,每个人有心理自己判断。这里不做赘述。首先对ORM技术做一个简单叙述: ​ ORM:即Object-Relationl Mapping,它作用是在关系型数据库和对象之间作一个映射,这样,我们在具体操作...
  • Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案,与NHibernate相似同属于ORM框架,至于两者之间的优缺点不太好评价,需要的朋友可以google下。使用ORM框架的目的,主要...
  • 1.3 MATLAB等软件简介及优缺点 MATLAB是矩阵实验室(Matrix Laboratory)简称,是美国MathWorks公司出品商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算高级技术计算语言和交互式环境,主要...
  • python简介

    2010-06-14 09:30:00
    Python是一种面向对象、直译式...   python的优缺点优点  简单————Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格
  • 3D打印100问.doc

    2019-07-23 15:09:54
    答:3D打印起源于19世纪末美国,并在20世纪80年代得以发展和推广。在20世纪80年代中期,SLS被在美国德州大学奥斯汀分校卡尔Deckard博士开发出来并获得专利,项目由DARPA赞助。1979年,类似过程由RF ...
  • 面试题64 ViewState优缺点有哪些 面试题65 Session、ViewState、Cookie之间有何区别 5.3 ASP.NET、控件 面试题66 如何使用GridView控件绑定数据源 面试题67 请简述ASP.NET中常见页面跳转方法 面试题68 什么是Web...
  • Python简介 - Python的历史 / Python的优缺点 / Python的应用领域 搭建编程环境 - Windows环境 / Linux环境 / MacOS环境 从终端运行Python程序 - Hello, world / print函数 / 运行程序 使用IDLE - 交互式环境(REPL) ...
  • 软件测试经典面试题 (超实用)

    热门讨论 2012-02-16 13:48:08
    3、结构化程序设计和面向对象程序设计各自特点及优缺点是什么? 28 4、简述什么是存储过程和触发器? 28 5、使用C语言编写一个函数,用于交换两个变量值(地址传递)。 29 6、请简述DNS、活动目录、域概念。 ...
  • C++语言是目前应用最广面向对象的编程语言。 1-3 什么是结构化程序设计方法?这种方法有哪些优点和缺点? 解: 结构化程序设计思路是:自顶向下、逐步求精;其程序结构是按功能划分为若干个基本模块;各模块...
  • SpringCloud微服务框架的优缺点 SpringCloud项目部署到k8s的流程 第十三章 SpringCloud组件介绍 服务注册与发现组件Eureka 客户端负载均衡组件Ribbon 服务网关Zuul 熔断器Hystrix API网关SpringCloud Gateway 配置...
  • 3.1.2 非归档模式的优缺点 91 3.1.3 非归档模式转换成归档模式 91 3.2 备份概述 92 3.3 物理备份 92 3.3.1 冷备份 92 3.3.2 热备份 93 3.3.3 RMAN备份 95 3.4 备份前的环境配置 98 3.4.1 连接到...
  • 《大话数据结构》

    2018-12-06 15:46:34
    3.5.4线性表顺序存储结构的优缺点 54 3.6线性表的链式存储结构 55 反正也是要让相邻元素间留有足够余地,那干脆所有元素都不要考虑相邻位置了,哪有空位就到哪里。而只是让每个元素知道它下一个元素的位置在哪里。 ...
  • 大话数据结构

    2019-01-10 16:35:22
    3.5.4线性表顺序存储结构的优缺点 54 3.6线性表的链式存储结构 55 反正也是要让相邻元素间留有足够余地,那干脆所有元素都不要考虑相邻位置了,哪有空位就到哪里。而只是让每个元素知道它下一个元素的位置在哪里。 ...
  • 大话数据结构 程杰

    2018-09-01 10:06:43
    3.5.4线性表顺序存储结构的优缺点 54 3.6线性表的链式存储结构 55 反正也是要让相邻元素间留有足够余地,那干脆所有元素都不要考虑相邻位置了,哪有空位就到哪里。而只是让每个元素知道它下一个元素的位置在哪里。 ...
  • 3.5.4 线性表顺序存储结构的优缺点 54 3.6 线性表的链式存储结构 55 反正也是要让相邻元素间留有足够余地,那干脆所有元素都不要考虑相邻位置了,哪有空位就到哪里。而只是让每个元素知道它下一个元素的位置在哪里。...
  • 9-12 <br/>1、 摘要 2、 关键词 3、 Framework 4、 Struts起源 5、 Struts工作原理 6、 Struts安装 7、 一个实例 8、 Struts优缺点 9、 Struts项目实施经验 10、 总结...
  • ORACLE数据库系统是美国ORACLE公司(甲骨文)提供以分布式数据库为核心一组软件产品,是目前最流行客户/服务器(CLIENT/SERVER)或B/S体系结构数据库之一。  拉里•埃里森  就业前景 从就业与择业...
  • 在介绍各种调试技术的时候,还对它们的优缺点进行了分析和说明。  第6章指导读者掌握如何把MySQL系统嵌入企业级应用程序。这一章的示例项目将帮助读者运用学到的技巧来进行系统集成。  第7章是本书探讨MySQL代码...

空空如也

空空如也

1 2
收藏数 33
精华内容 13
关键字:

发展对象目前的优缺点