软件工程
本文档总结软件工程的一些知识,侧重于了解。
问:计算机软件
计算机软件指的是计算机系统中与硬件相互依赖的另一部分,包括程序、数据和有关的文档。
问:软件危机的主要原因
缺乏好的开发方法和手段;软件本身特点;开发效率低。
软件生命周期
软件生命周期分为3个阶段:软件定义阶段、软件开发阶段
(1) 软件定义阶段,任务是确定软件开发工作必须完成的目标,确定工程的可行性;
(2) 软件开发阶段,任务是具体完成设计和实现定义阶段所定义的软件,通常包括总体设计、详细设计、编码和测试;
(3) 软件维护阶段,任务是使软件在运行中持久地满足用户的需要。
https://www.nowcoder.com/profile/7404313/test/8130955/3131?onlyWrong=0
https://www.nowcoder.com/profile/7404313/test/8130955/55220?onlyWrong=0
https://www.nowcoder.com/profile/7404313/test/8130955/57997?onlyWrong=0
https://www.nowcoder.com/profile/7404313/test/8133214/58141?onlyWrong=0
https://www.nowcoder.com/profile/7404313/test/8133214/57880?onlyWrong=0
https://www.nowcoder.com/profile/7404313/test/8133214/57923?onlyWrong=0
https://www.nowcoder.com/profile/7404313/test/8133214/58000?onlyWrong=0
结构化方法软件需求分析工具
结构化分析的常用工具有数据流图、数据字典、判定树和判定表
https://www.nowcoder.com/profile/7404313/test/8133296/3129?onlyWrong=0
问:软件设计的主要任务
https://www.nowcoder.com/profile/7404313/test/8133296/3133
软件设计,包括软件的结构设计、数据设计、接口设计和过程设计。
- 结构设计 :定义软件系统各主要部件之间的关系;
- 数据设计 :将模型转换成数据结构的定义;
- 接口设计 :软件内部,软件和操作系统间及软件和人之间如何通信;
- 过程设计 :系统结构部件转换成软件的过程描述。
面向过程的系统采用的集成策略
对面向过程的系统采用的集成策略有自顶向下(也就是先整体再局部)和自底向上(也就是先局部再整体)两种
问:软件工程的三要素
方法(开发方法)、工具(支持方法的工具)、过程(管理过程)。
问:软件需求分析阶段的主要工作
需求分析是软件生命周期的一个重要阶段,它的基本任务是准确地回答”系统必须做什么”这个问题,它的主要工作分为4个方面,分别为需求获取、需求分析、编写需求规格说明书及需求评审。
- 需求获取是通过和用户的接触初步确定系统的功能;
- 需求分析的任务是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求;
- 在需求分析阶段结束以前,系统分析员应该写出需求规格说明书;
- 需求评审是根据需求规格说明书来严格审查和验证需求分析的结果。
问:软件需求规格说明
软件需求规格说明应重点描述软件的目标,包括软件的功能需求、性能需求、外部接口、属性及约束条件等。
- 功能需求是软件需求规格说明,给出软件要执行什么功能的详尽描述。
- 性能需求是指定量的描述软件系统应满足的具体性能需求,即各种软件功能的速度、响应时间、恢复时间。
- 外部接口指软件如何与人、系统的硬件及其他硬件和其他软件进行交互。
- 属性是指与软件有关的质量属性,如正确性、可用性、可靠性、安全性、可维护性等。
- 约束条件包括影响软件实现的各种设计约束,如使用的标准、编程语言、数据库完整性方针、资源限制、运行环境等方面的要求。
https://www.nowcoder.com/profile/7404313/test/8129910/58186?onlyWrong=0
问:软件需求规格说明书的作用
软件需求规格说明书的编制是为了使用户和软件开发者双方对该软件的初始规定有一个共同的理解,使之成为整个开发工作的基础。软件需求规格说明书包含硬件、功能、性能、输入输出、接口界面、警示信息、保密安全、数据与数据库、文档和法规的要求。
软件规格说明书是开发软件的方向,程序员要根椐需求规格说明书去开发软件,作用在于便于用户、开发人员进行理解和交流,反映出用户问题的结构,可以作为软件开发工作的基础和依据,并作为确认测试和验收的依据。但不包括软件设计的依据。
https://www.nowcoder.com/profile/7404313/test/8114731/3132
https://www.nowcoder.com/profile/7404313/test/8133214/3132?onlyWrong=0
https://www.nowcoder.com/profile/7404313/test/8133296/58071?onlyWrong=0
软件设计
软件设计是软件工程的重要阶段,是一个把软件需求转换为软件表示的过程。软件设计的基本目标是用比较抽象概括的方式确定目标系统如何完成预定的任务,即解决软件“怎么做”的问题。
面向数据流的设计方法
在面向数据流的设计方法中,一般把数据流图中的数据划分变换流和事务流。
(1) 交换流:信息沿输入通路进入系统,同时由外部形式变换为内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。
(2) 事务流:沿传入路径进入系统,由外部形式变换为内部形式后到达事务中心,事务中心根据数据项计值结果从若干动作路径中选定一条执行。有这样形状的成为事务流。
关联、聚合和组合
https://www.nowcoder.com/profile/7404313/test/8130955/15073?onlyWrong=0
https://www.nowcoder.com/profile/7404313/test/8130955/15866?onlyWrong=0
https://www.nowcoder.com/profile/7404313/test/8133214/55300?onlyWrong=0
问:软件开发模型
https://www.nowcoder.com/profile/7404313/test/8114731/56412?onlyWrong=0
快速原型法
https://www.nowcoder.com/profile/7404313/test/8129910/4441#summary
https://www.nowcoder.com/profile/7404313/test/8133214/4441?onlyWrong=0
https://www.nowcoder.com/profile/7404313/test/8133214/2232?onlyWrong=0
https://www.nowcoder.com/profile/7404313/test/8133296/4436?onlyWrong=0
问:瀑布模型
瀑布模型,提供一种结构化的、自顶向下的软件开发方法,是所有软件生命周期模型的基础。
https://www.nowcoder.com/profile/7404313/test/8129910/4443?onlyWrong=0
https://www.nowcoder.com/profile/7404313/test/8130955/4442?onlyWrong=0
问:演化模型
演化模型,针对实现不能完整定义需求的软件项目,利用迭代的思想,使软件逐步开发、逐步完善的机制,产品需求分解成多组,分批循环开发。
问:螺旋模型
螺旋模型,遵从瀑布模型,迭代和风险驱动的开发过程,将瀑布模型的多个阶段转化到多个迭代过程中,适合大型系统的开发。过程:需求、架构、设计、开发、测试。
https://www.nowcoder.com/profile/7404313/test/8130955/4444?onlyWrong=0
螺旋模型是一种演化软件开发过程模型,它兼顾了快速原型的迭代特征以及瀑布模型的系统化与严格监控。螺旋模型最大的特点在于引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减小损失。同时,在每个迭代阶段构建原型是螺旋模型用以减小风险的途径。螺旋模型更适合大型的昂贵的系统级的软件应用。
问:喷泉模型
喷泉模型,主要用于面向对象软件技术开发项目,特点是各项活动之间没有明显界限。过程为:分析、设计、实现、确认、维护和演化。
问:软件设计中模块划分应遵循的准则
- 高内聚低偶合:指功能集中模块化,低耦合只模块之间相互影响尽量小,改动一个模块不影响另一个模块或者尽可能减少影响
- 模块大小规模适当
- 模块的依赖关系适当等
https://www.nowcoder.com/profile/7404313/test/8129910/57922?onlyWrong=0
https://www.nowcoder.com/profile/7404313/test/8130955/22264?onlyWrong=0
E-R模型向关系模型的转换的规则
https://www.nowcoder.com/profile/7404313/test/8133214/4462?onlyWrong=0
https://www.nowcoder.com/profile/7404313/test/8133214/57907?onlyWrong=0
代码评审
代码评审也称代码复查,是指通过阅读代码来检查源代码与编码标准的符合性以及代码质量的活动。
问:结构化程序设计的原则
自顶向下、逐步求精、模块化、限制使用goto语句
维护性的特性
https://www.nowcoder.com/profile/7404313/test/8129910/2231?onlyWrong=0
软件实施活动的进入准则
需求工件已经被基线化,详细设计工件已经被基线化,构架工件已经被基线化
问:
在数据流图中,用标有名字的箭头表示数据流。在程序流程图中,用标有名字的箭头表示控制流。
问:模型驱动开发技术
过程建模
数据建模
对象建模。
工厂模式是比较常用的设计模式,它遵循了设计原则中的开放-封闭原则。
https://www.nowcoder.com/profile/7404313/test/8129910/55299
其他
系统软件中主要包括操作系统,语言处理程序和实用程序。
层次模型、网状模型和关系模型
不知道考什么
https://www.nowcoder.com/profile/7404313/test/8129910/2277?onlyWrong=0
B/S架构软件与C/S架构软件的区别
C/S又称Client/Server或客户/服务器模式。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统,如Oracle、Sybase、Informix或 SQL Server。客户端需要安装专用的客户端软件。
B/S是Brower/Server的缩写,客户机上只要安装一个浏览器(Browser),如Netscape Navigator或Internet Explorer,服务器安装Oracle、Sybase、Informix或 SQL Server等数据库。浏览器通过Web Server 同数据库进行数据交互。
https://www.nowcoder.com/profile/7404313/test/8129910/15285?onlyWrong=0
面向对象的五大原则
https://www.nowcoder.com/profile/7404313/test/8066549/14362?onlyWrong=0
MVC
https://www.nowcoder.com/profile/7404313/test/8130955/45212?onlyWrong=0
https://www.nowcoder.com/profile/7404313/test/8130955/1331?onlyWrong=0
名词辨析:CAD、CAI、CAM、CASE
- CAD(Computer Aided Design):计算机辅助设计,指利用计算机及其图形设备帮助设计人员进行设计工作。
- CAI(Computer Aided Instruction):计算机辅助教学,是在计算机辅助下进行的各种教学活动,以对话方式与学生讨论教学内容、安排教学进程、进行教学训练的方法与技术。
- CAM(Computer Aided Manufacturing):计算机辅助制造 ,是将计算机应用于制造生产过程的过程或系统。
- CASE(Computer Aided Software Engineering):计算机辅助软件工程,用来辅助软件开发、运行、维护、管理、支持等过程中的活动的软件称为软件开发工具。
在面向对象方法中,对象有如下一些基本特点:标识唯一性、分类性、多态性、封装性、模块独立性好。
DAO模式
DAO的本质是提供数据访问接口
https://www.nowcoder.com/profile/7404313/test/8129910/15008?onlyWrong=0
值对象模式
https://www.nowcoder.com/profile/7404313/test/8133214/15007?onlyWrong=0
可维护性
https://www.nowcoder.com/profile/7404313/test/8130955/2231?onlyWrong=0
游戏软件和通用软件
https://www.nowcoder.com/profile/7404313/test/8130955/14553?onlyWrong=0
模型驱动开发技术
过程建模、数据建模、对象建模。