软件工程阶段性小测试题

本贴最后更新于 2006 天前,其中的信息可能已经时异事殊

软件工程阶段性小测试题 1
1.简述软件的概念。
软件是与计算机系统中硬件相互依存的部分,它是包括程序、数据及相关文档的完整集合。
2.根据自己的理解简述下软件工程的概念。
软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题,指导计算机软件开发和维护的一门工程学科。
3.软件的生命周期。(必考)
软件定义阶段 软件开发阶段 软件使用和维护阶段 退役阶段
问题的定义 可行性研究 需求分析 概要设计 详细设计 编码实现阶段 综合测试阶段 软件运行和维护阶段
4.根据自己的理解简述什么是 OOA 及 OOA 和 UML 的关系。
面向对象方法的概念:OOA/OOD,面向对象分析法/设计法 需求分析方法
UML:图形表示法、语言、工具,表达面向对象设计的工具,不是过程,也不是方法。
UML 是 OOA 重要工具是不确定需求或业务的角度按照面向对象的思想来分析业务
5.简述什么是需求,及需求的分类。
用户对目标软件系统在功能、行为、性能、设计约束等方面的期望
功能:所设计的软件要做什么?
性能:软件功能在执行过程中的速度、可使用性、响应时间、各种软件功能的恢复时间、吞吐能力、精度、频率等。
设计约束:在效果、实现的语言、数据库完整性、资源限制、操作环境等方面所要求的标准。
外部接口:与人、硬件、其他软件和其他硬件的相互关系。
功能需求:系统必须要完成的活动,也就是系统将要投入的业务应用。
技术需求:是指与企业的环境、硬件和软件有关的所有可操作目标。
6. 什么是 ER 图及 ER 图的三要素。
数据存储需求包括数据实体、数据实体的属性以及它们之间的关系。用来定义数据存储需求的模型被称为实体—联系图
实体 联系 属性


软件工程阶段性小测试题 2
1.简述下什么是软件设计,软件设计分成几个阶段?
需求分析阶段:已经明确了软件系统要“做什么”。 软件设计阶段:“怎么做”,是如何实现软件系统的需求。 软件设计:将需求描述的“做什么”问题,变为一个实施方案的创造性过程,使整个项目在逻辑上和物理上得以实现。软件设计是软件工程中的核心部分,也是第一个开发活动,也是最重要的活动,是软件项目实现的关键阶段。
确定设计方案 软件结构设计 数据文件设计
数据文件设计 书写总体设计文档
2.简述结构化软件设计的原理。
软件的模块化 抽象和逐步求精 模块独立性 信息隐蔽和局部化
3.简述模块的定义。
一个软件系统根据其功能,可以分解成许多较小的程序单元,这些具有独立功能的程序单元就是模块。
(1)模块是构成程序的基本构件。
(2)模块是具有独立功能,单独命名的一段程序。单独命名可以方便其他模块对其进行调用。
(3)模块的名称必须表达其功能。
4.衡量模块独立程度的两个定性度量标准是什么,在软件模块设计时,模块设计的目标是什么(两个指标达到的高低程度)。
耦合,内聚
。高内聚,低耦合
5.简述包含关系和扩展关系的表示方法,并简单举例子,并指出这两种关系的不同点。
包含关系用一个虚箭头另加《include》表示,从包含用例指向被包含用例
,所以取钱和输入密码之间就是包含关系
扩展关系用一个虚箭头外加《extend》表示,由扩展用例指向被扩展用例
,手机用户在用自动缴费机充值之后,可以打印小票,也可以不打印,这完全取决于用户的意愿,并不是必须要执行的
extend 关系和 include 关系最明显的区别就是:扩展用例是可选的,包含用例是必选的

6.简述程序设计语言的发展历程,并简述面向对象语言的特点。
1.第一代语言(机器语言 1GL)
2.第二代语言(汇编语言 2GL)
3.第三代语言(高级语言 3GL)
高级语言是面向用户的、基本上独立于计算机种类和结构的语言。
4.第四代语言(简称 4GL)
4GL 是非过程化语言,编码时只需说明“做什么”,不需描述算法细节。数据库查询和应用程序生成器是 4GL 的两个典型应用
抽象即去掉与主题无关的次要部分,而仅仅抽象取出与工作有关的实质的内容加以研究。
封装就是利用抽象数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型的内部,系统的其它部分只有通过封装在数据外部的被授权的操作,才能够与这个抽象数据类型进行交流。
2.继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。
3.多态性是允许你将父对象设置成为一个或更多的他的子对象的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。


软件工程阶段性小测试题 3
1.简述软件设计两个阶段的任务分别是什么?
第一阶段
1.设计软件结构
2.数据结构及数据库设计
3.编写总体设计文档
4.评审
第二阶段
复审 编写详细设计说明书、用户操作手册等文档
数据结构设计和数据库设计
接口设计
过程设计
代码设计、输入/输出设计、网络设计等等
2.简述结构化软件设计的原理。
软件的模块化 抽象和逐步求精 模块独立性 信息隐蔽和局部化
3.简述结构化软件设计中使用模块的优点。
减少复杂性 提高软件的可靠性 提高软件的可维护性
有助于软件工程的组织管理 有助于信息屏蔽
4.衡量模块独立程度的两个定性度量标准是什么,在软件模块设计时,模块设计的目标是什么(两个指标达到的高低程度)。
偶合 内聚
高内聚低耦合
5.简述包含关系和扩展关系的表示方法,并简单举例子,并指出这两种关系的不同点。
表示方法:包含关系用一个虚箭头另加《include》表示,从包含用例指向被包含用例 所以取钱和输入密码之间就是包含关系
扩展关系用一个虚箭头外加《extend》表示,由扩展用例指向被扩展用例
举例: 手机用户在用自动缴费机充值之后,可以打印小票,也可以不打印,这完全取决于用户的意愿,并不是必须要执行的
不同点: extend 关系和 include 关系最明显的区别就是:扩展用例是可选的,包含用例是必选的

7.简述软件详细设计的表达工具有哪些?
包括流程图、盒图(N-S 图)、问题分析图(PAD 图)、判定表、判定树、过程设计语言(PDL)。

1 操作
wise 在 2019-06-25 16:47:33 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    91 引用 • 751 回帖 • 1 关注
  • 机器学习

    机器学习(Machine Learning)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

    83 引用 • 37 回帖
  • Node.js

    Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。

    139 引用 • 269 回帖 • 28 关注
  • iOS

    iOS 是由苹果公司开发的移动操作系统,最早于 2007 年 1 月 9 日的 Macworld 大会上公布这个系统,最初是设计给 iPhone 使用的,后来陆续套用到 iPod touch、iPad 以及 Apple TV 等产品上。iOS 与苹果的 Mac OS X 操作系统一样,属于类 Unix 的商业操作系统。

    85 引用 • 139 回帖
  • Shell

    Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。

    123 引用 • 74 回帖
  • Kubernetes

    Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。

    110 引用 • 54 回帖 • 1 关注
  • 国际化

    i18n(其来源是英文单词 internationalization 的首末字符 i 和 n,18 为中间的字符数)是“国际化”的简称。对程序来说,国际化是指在不修改代码的情况下,能根据不同语言及地区显示相应的界面。

    8 引用 • 26 回帖 • 1 关注
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 5 关注
  • BAE

    百度应用引擎(Baidu App Engine)提供了 PHP、Java、Python 的执行环境,以及云存储、消息服务、云数据库等全面的云服务。它可以让开发者实现自动地部署和管理应用,并且提供动态扩容和负载均衡的运行环境,让开发者不用考虑高成本的运维工作,只需专注于业务逻辑,大大降低了开发者学习和迁移的成本。

    19 引用 • 75 回帖 • 653 关注
  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    149 引用 • 257 回帖
  • SVN

    SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。

    29 引用 • 98 回帖 • 694 关注
  • 一些有用的避坑指南。

    69 引用 • 93 回帖 • 1 关注
  • TensorFlow

    TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。

    20 引用 • 19 回帖 • 1 关注
  • 快应用

    快应用 是基于手机硬件平台的新型应用形态;标准是由主流手机厂商组成的快应用联盟联合制定;快应用标准的诞生将在研发接口、能力接入、开发者服务等层面建设标准平台;以平台化的生态模式对个人开发者和企业开发者全品类开放。

    15 引用 • 127 回帖
  • 持续集成

    持续集成(Continuous Integration)是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

    15 引用 • 7 回帖
  • Sublime

    Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。

    10 引用 • 5 回帖
  • 正则表达式

    正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列遵循某个句法规则的字符串。

    31 引用 • 94 回帖 • 2 关注
  • 深度学习

    深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。

    53 引用 • 40 回帖 • 1 关注
  • GitBook

    GitBook 使您的团队可以轻松编写和维护高质量的文档。 分享知识,提高团队的工作效率,让用户满意。

    3 引用 • 8 回帖
  • Caddy

    Caddy 是一款默认自动启用 HTTPS 的 HTTP/2 Web 服务器。

    12 引用 • 54 回帖 • 159 关注
  • 钉钉

    钉钉,专为中国企业打造的免费沟通协同多端平台, 阿里巴巴出品。

    15 引用 • 67 回帖 • 335 关注
  • Kotlin

    Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,由 JetBrains 设计开发并开源。Kotlin 可以编译成 Java 字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。在 Google I/O 2017 中,Google 宣布 Kotlin 成为 Android 官方开发语言。

    19 引用 • 33 回帖 • 63 关注
  • 开源

    Open Source, Open Mind, Open Sight, Open Future!

    407 引用 • 3578 回帖
  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    354 引用 • 1823 回帖 • 1 关注
  • 设计模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

    200 引用 • 120 回帖
  • 黑曜石

    黑曜石是一款强大的知识库工具,支持本地 Markdown 文件编辑,支持双向链接和关系图。

    A second brain, for you, forever.

    16 引用 • 130 回帖
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3190 引用 • 8214 回帖 • 1 关注