type
status
date
slug
summary
tags
category
icon
password

一、请结合建筑工程,阐述软件工程与建筑工程之间的相似之处,并解释软件相比建筑所具有的不同特性。(10分)

  • 建筑工程:
建设大楼的建筑工程过程: 建筑设计,调研分析——建筑方案设计——建筑施工建设——建筑工程竣工交付(按照建筑工程验收规范对工程质量等进行验收,并交付使用)
  • 软件工程:
学生选课软件的软件工程过程: 软件需求分析——软件设计——软件界面设计——软件实现(采用合适的软件开发环境与编程工具完成学生选课软件的实现)——软件交付(按照软件开发规范对软件系统进行质量控制、测试、交付与运行、维护等)
相似之处:
  1. 都是工程化的过程,需要经过规划、设计、构建和维护等阶段。它们都需要遵循一定的方法和标准,以确保最终产出的软件或建筑物符合预期的要求。
  1. 都需要进行需求分析。软件工程师和建筑师都需要了解用户或客户的需求,并将其转化为具体的设计方案。
  1. 都需要进行详细的设计和实际的构建过程。在设计阶段,需要考虑结构、功能、性能、安全性等方面的要求,并制定相应的计划。在构建阶段,需要按照设计进行实际的开发或建造工作。
  1. 都注重质量控制。在软件工程中,测试是确保软件功能和性能符合预期的重要手段。在建筑工程中,质量控制包括施工监督、质量检验等措施,以确保建筑物的结构安全和质量合格。
不同特性:
  1. 软件相比建筑更容易进行修改和变更。软件可以通过代码的修改或功能的添加来适应用户需求的变化。而建筑物的修改通常较为困难和昂贵,需要进行拆除和重建。
  1. 软件可以轻松地进行复制和分发,而建筑物的复制则需要进行繁琐的工程和建设过程。
  1. 软件的性能和质量可以通过各种指标进行测量和评估。而建筑物的性能和质量评估相对更为复杂,需要进行实地检验和测试。
  1. 软件的开发周期通常较短,可以快速迭代和更新。相比之下,建筑工程的周期更长,需要更多的时
 
 
 

二、请描述计算机指令、计算机程序、计算机软件、系统软件、应用软件、软件工程这些概念的内涵和关系。(10分 )

notion image
notion image
notion image
notion image
notion image
notion image
notion image
概念的内涵:
指令( Instruction):指挥计算机工作的指示和命令,在计算机内部用二进制表示,由操作码(操作类型)与操作数(地址)组成。
指令系统是所有指令的集合,反映了计算机的基本功能。
程序(Program):是为实现特定目标或解决特定问题而用计算机语言编写的命令(指令)序列的集合。
程序是为实现预期目的而顺序排列的指令或语句序列,并按事先设计好的功能和性能要求在计算机中执行。
执行程序的过程就是计算机的工作过程。
软件(Software):计算机系统中的程序及其文档。 软件可看作是程序系统或程序集合。
程序必须装入计算机内部才能工作;文档是给人看的。
 
系统软件: 是最靠近计算机硬件的一层软件——控制和协调计算机及外部设备、支持应用软件开发与运行的软件。它包括操作系统、驱动程序、编译器、数据库管理系统等。
支撑软件: 软件系统的中间层,支撑各种软件的开发、运行与维护的软件。例:如网络构件、中间件及软件运行平台、软件开发环境及工具各种接口软件与工具组等
应用软件: 最靠近计算机硬件的一层软件——控制和协调计算机及外部设备、支持应用软件开发与运行的软件。如如行业应用软件、文字与媒体处理软件、办公自动化软件、企业管理软件、工业控制软件各类嵌入式应用软件等。
系统软件、支撑软件、应用软件这三种软件之间的关系则是层层递进的。系统软件提供了底层的基础设施和环境,支撑软件构建在系统软件之上,为应用软件提供了开发和运行所需的基础支持。应用软件则是用户直接使用的程序,依赖于支撑软件和系统软件的功能和服务来运行。
软件(Software):是客观世界问题空间与解空间的具体表达;它追求表达能力强、更符合人类思维模式,具有构建性和易演化性的计算模型。
工程(Engineering) :是综合运用科学理论和技术方法改造客观世界及其物质特性的一门学科和技艺。工程强调以最短时间、少而精的人力物力做出高效、可靠且有用的东西。
软件工程(Software Engineering):研究或应用工程化方法来设计、创造、构建和维护有效、实用和高质量软件的一门学科。有多种定义方式,其中经典定义为:应用计算机科学理论和技术以及工程管理原则和方法,按预算和进度实现满足用户要求的软件产品的工程,或以此为研究对象的学科。
软件工程主要研究内容为:软件开发过程、软件开发方法、软件工程管理与支持、软件质量保障、软件工程度量、计算机辅助软件工程环境及工具等。
软件工程的框架:
目标——生产具有正确性、可用性以及成本合适的软件产品。
过程——生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。
原则——围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。
软件工程的要素:
方法——软件开发“如何做”的工程方法、原理与技术。
工具——软件工程方法的自动化或半自动化的支撑。
过程——软件工程方法与工具在软件开发与运行各阶段的运用。
 

三、请阐述计算机科学学科研究的主要范畴和未来发展的主要趋势。(10分)

范畴:
1.计算机科学理论
离散数学(集合论、图论、逻辑学/数理逻辑、代数学、计算数论、组合学、密码学等) 计算理论、数值计算 程序理论 运筹学
2.计算机系统结构
并行计算与高性能计算、高可信计算容错计与高可靠性计算 嵌入计算、普适计算与移动计算集成电路设计与多核计算 计算机存储技术 计算机性能评价 分布计算、网格计算与云计算 非传统计算(数据流机、推理机、神经计算机、归约机、知识库机等) 新型计算(纳米计算、量子计算、光计算、生物计算等)
3.计算机软件
软件语言与程序设计语言 软件方法学与程序设计方法学 操作系统 数据库系统 语言处理系统与编译技术 中间件 软件工程与软件体系结构等
4.计算机网络
计算机通信与数据通信 网络体系结构、网络管理 移动通信与计算 网络安全 互联网(Internet)与网络互连 物联网与传感网 计算机网络应用
5.人工智能
机器学习与数据挖掘 知识工程与专家系统 模式识别与计算视觉 自然语言处理与机器翻译 智能机器人 分布式人工智能与多主体计算 计算智能与仿生物智能计算
6.计算机应用技术
计算机图形学、数字图像处理、多媒体技术 中文信息处理、自然语言理解与处理计算机信息系统与管理信息系统、企业与行业信息化应用 计算机辅助技术与计算机集成制造 计算机控制、计算机仿真 新型学科交叉技术(X-Computing)、服务计算、生物计算与生物信息学、社会计算、绿色计算 智慧地球、计算机行业应用等等
7.计算机相关的学科交叉新技术
 
  • 发展趋势
notion image
notion image
巨型化——高效能计算、高可信高可靠计算 微型化——嵌入计算、片上计算机、多核计算 泛在化——普适计算、物联网、大数据、社会计算 网络化——互联网、分布计算、云计算 智能化——智能计算、智慧地球、智慧城市 服务化——服务计算、服务科学 交叉化——X-Computing,如生物计算、光计算等
 
 
 
 

四、请阐述软件发展所经历的主要阶段,以及软件工程出现以来软件工程方法的主要发展历程。(10分 )

软件发展所经历主要阶段:
1946-1956:程序设计时代;个体手工制作,采用机器语言/汇编语言编程,主要依靠个人编程技巧。 1956-1968:程序系统时代;作坊式小团队合作,采用高级语言编程,以个人编程技巧为主,开始有结构化方法。 1968以来,软件工程时代;工程化生产方式,采用软件工程方法,并逐步发展形成了结构化方法、面向数据结构方法、面向对象的方法、构件化方法、面向服务的方法等。
软件危机: 1960年代后期,随着软件规模及开发难度的增加,软件开发周期长、成本高、质量差、维护难,导致软件危机爆发 主要问题:对软件开发工作量和成本估计不准;软件开发进度难以控制;软件产品质量与可靠性差强人意。
软件工程的产生: 1968年10月,北大西洋公约组织NATO召开计算机科学会议,Fritz Bauer首次提出“软件工程”概念及克服“软件危机”的策略,强调按照工程化原则和方法组织软件开发工作。软件工程技术领域由此应运而生。
 
软件工程方法的主要发展历程:
1960's-1970's:结构化方法 方法:结构化程序设计方法、瀑布模型、螺旋模型等编程 语言:Fortran语言、Pascal语言、C语言 结构化方法好比建平房或用平房建设技术建造建筑物
1980's:面向对象的方法 方法:面向对象方法、面向对象模型及建模工具等 编程语言:C++(83)、Java(95)、Visual系列语言(90)等 面向对象方法好比建高楼,可以更方便地构建复杂建筑
1990's:构件化方法 方法:软构件方法、Web Services、软件复用方法等编程 语言::Visual系列语言、Windows操作系统等 构件化方法好比堆积木、造预制件等,可以批量地、快速地构建更为复杂的建筑。
2000's:面向服务的方法面向服务的体系结构SOA方法→ 基于互联网与云计算的软件开发方法
 
notion image
notion image
notion image
notion image
notion image
notion image
notion image
 
 
 

五、请阐述软件工程技术的主要发展趋势。(10分 )

软件工程技术主要发展趋势:
新型软件体系结构及开发方法——基于云计算平台的软件体系结构、模型驱动的开发方法MDA、敏捷软开发方法、软件集成开发环境及工具 软件构件化——软构件(Software Component)技、基于构件的软件复用(Software Reuse) 软件服务化——面向服务的体系结构SOA、WebServices、软件即服务SaaS、软件服务工程 软件需求工程(Requirement Engineering)——基于知识的软件需求分析、需求分析自动化 中间件(Middleware)技术——中间件平台、企业服务总线ESB、网络构件、基于中间件的软件集成技术软件质量保障——软件质量评测与度量、软件可靠性技术、软件过程改进模型 软件领域化——领域软件工程( Domain Engineering)、行业应用软件、企业应用软件
notion image
notion image
notion image
 

六、请阐述软件产业的主要发展历程。(10分)

阶段1:独立的程序(Independent Programming Service) 1950s-1960s:机器为中心,专业服务公司,如IBM
阶段2:软件产品(Software Product) 1960s-1970s:软件业独立发展,软件产品公司,如ADR
阶段3:企业解决方案(Enterprise Solution) 1970s-1980s:应用为中心,企业解决方案公司,SAP, Oracl
阶段4:支持大众应用的软件包(Packaged Software for Mass) 1980s-1994:个人为中心,大众软件公司,Microsoft, Apple
阶段5:网络软件与服务(Internet - Based Software and Service) 1990s,网络为中心,互联网公司,Netscape,Yahoo, Google 2000s,社会为中心,服务公司,Facebook, Twitter,YouTube
notion image
 
 

七、请阐述软件工程科学技术体系中研究对象和相关科学技术范畴主要包含哪些内容? (10分 )

研究对象: 软件+工程 (理论、技术、管理、方法;目标、原则、活动)
软件工程科学技术范畴: 软件过程(Software Process) 软件开发方法(Software Development Method) 软件需求工程(Software Requirement Engineering) 软件体系结构(Software Architecture) 软件开发工具与环境(Software Development Environment) 软件复用与软构件(Software Reuse & Component) 软件中间件(Software Middleware) 软件测试(Software Testing) 软件维护(Software Maintenance) 软件工程科学技术范畴 软件过程度量(Software Process ) 软件工程管理(Software Engineering Management) 软件质量(Software Quality ) 软件可信性(Software Dependability) 软件服务工程(Software Service Engineering) 领域工程(Domain Engineering) 软件逆向工程( Software Reverse Engineering )
notion image
notion image
notion image
 
 
 

八、请阐述IEEE CS SWEBOKv3软件工程知识体系涉及的各个方面,并和中国C- SWEBOK做比较说明。(10分)

IEEE CS SWEBOKv3软件工程知识体系(SWEBOK V3.0):
软件需求:软件需求基础、需求过程、需求捕获、需求分析、需求定义、需求验证、实际考虑、软件需求工具
软件设计:软件设计基础、软件设计关键问题、软件结构与体系结构、用户界面设计、软件设计质量分析与评价软件设计标注、软件设计策略与方法、软件设计工具
软件构造:软件构造基础、管理软件构造、实际考虑、构造技术和软件构造工具
软件测试:软件测试基础、软件测试级别、软件测试技术、软件测试度量、软件测试过程和软件测试工具
软件维护:软件维护基础、软件维护关键问题、软件维护过程、软件维护技术、软件维护工具
软件配置管理:软件配置管理过程的管理、软件配置标识、软件配置控制、软件配置状态簿记、软件配置状态审计、软件发布管理与交付
软件工程管理:初始化与范围定义、软件项目规划、软件项目执行、审查和评估、软件项目结束、软件工程测量、软件工程管理工具
软件工程模型与方法:模型化/建模、模型分类、模型分析、软件工程方法
软件工程过程:软件过程定义、软件生命周期、软件过程的评估和改进、软件度量、软件工程过程工具
软件质量:软件质量基础、软件质量管理过程、实际注意事项/需要考虑的条件、软件质量工具
软件工程经济学:软件工程经济学基础、生命周期经济学、风险与不确定性、经济分析方法、实际的考虑
软件工程职业实践:职业技能、团队动力和心理学、沟通技巧
计算基础:问题求解技巧、抽象化、程序设计基础、编程语言基础、调试工具和技巧、数据结构和数据表示、算法及其复杂性、系统的基本概念、计算机组织、编译器基础、操作系统基础、数据库基础和数据管理、网络通信基础、并行和分布式计算、基本用户的人因素、基础开发人员的人因素、安全软件开发与维护
工程基础:实证方法和试验技术、统计分析、测量、工程设计、建模、仿真和原型、标准、根本原因分析
数学基础:集合、关系与函数、基本逻辑、证明技巧、图与树、离散概率、有限状态机、语法、数值精度、准确度和误差、数论、代数结构
 
中国C- SWEBOK:
面向中国软件工程教育需要,基于SWEBOK 3.0及相关知识体系,结合中国软件工程教育的实践经验,提出面向中国的软件工程知识体系C-SWEBOK,支持中国高校的软件工程专业教育;
在中国建立软件工程学科知识结构的一致化概念,为中国高校软件工程专业教育与课程体系提供依据和指导。
增加软件服务工程、软件工程典型应用等2个知识领域KA,改造与扩充软件工程职业实践知识领域。
软件服务工程: 服务体系结构与设计、软件服务使能技术、服务业务分析、服务管理、服务应用实践
软件工程典型应用: 网络软件与应用、企业信息系统与数据分析、电子商务与互联网金融、信息安全与可信软件、嵌入式系统及其应用、多媒体与游戏软件、中文信息处理系统、典型行业软件应用
软件工程职业实践:职业技能、团队动力和心理学、沟通技巧、企业软件开发与管理实践
 
 
notion image
notion image
ppt3 第三讲东西很多 抄抄抄
notion image
notion image
C-SWEBOK多2个点 1个点不太一样
notion image
 
 

九、请描述软件I程阶段之一:软件设计的内涵,解释软件设计主要涵盖哪些方面,进一步阐述软件设计的各个过程。( 10分)

notion image
notion image
软件设计的各个过程:
notion image
 
软件设计涵盖方面:
notion image
notion image
notion image
notion image
notion image
notion image
notion image
软件设计是软件工程生命周期中的关键阶段之一,它在分析软件需求的基础上,进一步产生软件内部结构的描述,以作为软件构造的基础。软件设计的目标是确定如何构建软件系统以满足用户需求,并确保软件具备良好的结构、可维护性、可扩展性和可重用性。
软件设计主要涵盖以下方面:
  1. 功能设计:确定软件系统的功能模块及其相互关系,包括业务处理逻辑、功能模块的划分和组织等。
  1. 数据设计:设计软件系统中的数据结构、数据库模式以及数据的输入、输出和存储方式,确保数据的完整性、一致性和有效性。
  1. 用户界面设计:设计软件系统的用户界面,包括用户交互方式、界面布局、操作流程等,以提供用户友好的使用体验。
  1. 架构设计:确定软件系统的整体结构和组成部分之间的关系,包括模块的划分、模块之间的接口定义、系统层次结构等。
  1. 性能设计:考虑软件系统的性能要求,包括响应时间、吞吐量、资源利用率等方面的设计与优化。
  1. 安全性设计:设计软件系统的安全机制,包括身份验证、访问控制、数据加密等,以保护系统的安全性和数据的机密性。
  1. 可维护性设计:考虑软件系统的可维护性,包括模块的独立性、代码的可读性、易于修改和扩展等方面的设计。
软件设计的过程包括以下几个阶段:
  1. 需求分析:理解用户需求,将需求转化为可执行的规格说明文档。
  1. 总体设计(概要设计):在需求规格的基础上,进行系统的整体设计,确定系统的组成模块、模块之间的关系以及基本的数据结构和算法。
  1. 详细设计:在总体设计的基础上,进行更加详细的设计,包括每个模块的内部设计、算法设计、数据结构设计等。
  1. 接口设计:设计模块之间的接口定义,确保模块之间的协作和数据交换的正确性。
  1. 数据库设计:设计数据库的概念结构、物理结构和数据操作规则,确保数据的一致性和完整性。
  1. 用户界面设计:设计用户界面的布局、交互方式和视觉风格,以提供良好的用户体验。
  1. 验证和评审:对设计文档进行验证和评审,确保设计的一致性、正确性和可行性。
  1. 最后,设计过程通常会与软件编码阶段交替进行,设计的结果会指导程序员进行具体的软件编写和实现。
通过这些过程,软件设计师能够将用户需求转化为具体的软件设计模型和技术文档,为软件构造和实现提供指导和依据。
 
 
 
 

十、请针对结构化软件设计和面向对象软件设计的差异性进行对比阐述。(10分)

结构化软件设计
notion image
notion image
面向对象软件设计
notion image
 
结构化软件设计和面向对象软件设计是两种不同的设计方法,它们在设计思想、设计过程和设计要素等方面存在差异。
  1. 设计思想:
  • 结构化软件设计:结构化设计方法强调将软件系统划分为模块,并通过定义输入、输出和处理过程之间的关系来实现模块化设计。它侧重于数据流和处理流程的组织和控制,强调功能和过程的分解和组合。
  • 面向对象软件设计:面向对象设计方法将软件系统看作是由各种相互作用的对象组成的。它强调将系统的功能和数据封装在对象中,并通过对象之间的消息传递和协作来实现系统功能。它侧重于抽象、封装、继承和多态等面向对象的特性。
  1. 设计过程:
  • 结构化软件设计:结构化设计过程通常包括需求分析、总体设计、模块设计和详细设计等阶段。在每个阶段,设计人员通过数据流图、程序流程图和数据结构等工具来描述系统的结构和处理流程。
  • 面向对象软件设计:面向对象设计过程通常包括需求分析、领域建模、系统设计和详细设计等阶段。在领域建模阶段,设计人员通过类图、对象图和时序图等工具来描述系统的对象结构、行为和交互。
  1. 设计要素:
  • 结构化软件设计:结构化设计注重于模块、数据流和处理流程的设计。设计要素包括模块的划分和组织、数据流的定义和控制、程序流程的设计和数据结构的选择等。
  • 面向对象软件设计:面向对象设计注重于对象、类和消息的设计。设计要素包括对象的抽象和封装、类的定义和关系、消息的传递和协作,以及继承、多态和接口等面向对象的特性的应用。
总体而言,结构化软件设计更注重功能和过程的组织和控制,适用于较为简单和功能集中的系统;而面向对象软件设计更注重对象的抽象和封装,适用于复杂和可扩展的系统。选择合适的设计方法取决于系统的需求和特点,以及设计团队的经验和技术能力。
 
 
 
 
 
 
结构化软件设计和面向对象软件设计是两种不同的方法论,它们在软件设计和开发过程中有着不同的理念、原则和实践方式。
  1. 结构化软件设计:
      • 基本思想: 结构化设计强调将系统分解为若干个模块,每个模块具有清晰的输入、处理和输出。它使用模块化、自顶向下和逐步求精的方法来设计系统。
      • 重点: 主要关注数据流和功能分解,着重于算法、流程和数据结构。
      • 特点: 通过层次化、分层次的设计方法来管理复杂性,模块之间通过参数传递或全局变量进行通信。
      • 优点: 结构化设计具有清晰的模块化结构、易于理解和维护、适用于小规模系统的优点。
  1. 面向对象软件设计:
      • 基本思想: 面向对象设计将系统看作是一组相互作用的对象集合,这些对象具有数据和操作数据的方法。它着重于描述系统中的对象以及它们之间的关系。
      • 重点: 强调对象、类、继承、封装和多态等概念,通过抽象和建模来表示现实世界中的实体和行为。
      • 特点: 将系统划分为对象,这些对象封装了数据和相关的方法,对象之间通过消息传递进行通信。
      • 优点: 面向对象设计具有高度的灵活性、可重用性和扩展性,更贴近现实世界的描述,适用于大型、复杂系统的开发。
比较两者的差异:
  • 思想基础不同: 结构化设计着重于数据流和功能分解,而面向对象设计关注对象和对象之间的交互。
  • 概念不同: 结构化设计侧重于模块、流程和数据结构,而面向对象设计强调对象、类、继承和多态。
  • 通信方式不同: 结构化设计中模块之间通过参数传递或全局变量通信,而面向对象设计中对象之间通过消息传递通信。
  • 应用范围不同: 结构化设计适用于小规模系统或任务,而面向对象设计更适用于大规模、复杂系统,并具有更好的可重用性和扩展性。
在实际应用中,有时候两种方法也可以结合使用,称为结构化对象设计,以兼顾两者的优点,更好地适应特定的软件开发需求。
中华优秀传统文化英文解读术语翻译网络安全数学基础 回忆版
Loading...