软件工程.
- 格式:docx
- 大小:18.89 KB
- 文档页数:4
软件工程的基础知识
软件工程的基础知识包括以下内容:
1. 软件开发生命周期:软件开发生命周期指的是软件从需求获取到维护和升级的整个过程。
常见的软件开发生命周期模型包括瀑布模型、迭代模型、增量模型等。
2. 软件需求工程:软件需求工程是明确用户需求并将其转化为可实现的软件系统的过程。
包括需求获取、需求分析、需求规格化和需求验证等阶段。
3. 软件设计:软件设计是确定软件系统结构和组件之间的关系,并描述其行为的过程。
包括结构设计、详细设计、接口设计、数据库设计等。
4. 编程与实现:根据软件设计的规范和要求,使用特定的编程语言开发软件系统,并进行测试和调试。
5. 软件配置管理:软件配置管理是对软件、文档和相关组件进行版本控制和配置管理的过程,包括变更控制、配置标识、配置状态管理等。
6. 软件测试与质量保证:软件测试是为了发现和修复软件中的缺陷和错误,确保软件质量符合预期要求的过程。
包括单元测试、集成测试、系统测试和验收测试等。
7. 软件维护:软件维护是在软件发布后对其进行更新、修复和
改进的过程。
常见的软件维护类型包括改正性维护、适应性维护、完善性维护和预防性维护等。
8. 软件项目管理:软件项目管理是为了有效地规划、组织和控制软件项目开发过程的活动。
包括项目计划、资源分配、进度控制、风险管理等。
9. 软件工程标准与规范:软件工程标准与规范是为了保证软件开发过程和软件质量的一致性和可重复性而制定的一套规则和指南,如ISO/IEC 12207、CMMI等。
以上是软件工程的基础知识,掌握这些知识可以帮助开发人员更好地理解和实践软件开发过程,提高软件质量和开发效率。
软件工程专业需掌握的知识
软件工程专业主要需要学:程序设计基础、面向对象程序设计、软件工程导论、离散结构、数据结构与算法、工程经济学、团队激励与沟通、软件工程职业实践、计算机系统基础、操作系统、数据库概论、网络及其计算、人机交互的软件工程方法、软件工程综合实践、软件构造、软件设计与体系结构、软件质量保证与测试、软件需求分析、软件项目管理等。
软件工程是一门普通高等学校本科专业,属计算机类专业,基本修业年限为四年,授予工学学士学位。
该专业涉及程序设计语言、数据库、软件开发工具、系统平台、设计模式等方面,培养学生适应计算机应用学科的发展,特别是软件产业的发展,使其具备计算机软件的基础理论、基本知识和基本技能,具有用软件工程的思想、方法和技术来分析、设计和实现计算机软件系统的能力。
就业方向
软件服务外包属于智力人才密集型现代服务业,学生毕业后主要就业去向包括软件外包与服务企业、信息产品与服务企业,担任程序员、软件测试员、项目经理等工作岗位。
考研方向
可报考计算机技术、计算机应用技术、计算机科学与技术、软件工程等学科领域的研究生。
软件工程三级学科软件工程是一门计算机科学的分支学科,主要研究如何使用系统化、规范化、可量化的方法来开发和维护高质量的软件。
软件工程三级学科包括软件工程基础、软件开发技术和软件工程应用。
一、软件工程基础1. 软件需求工程软件需求工程是指对用户需求进行分析和描述的过程,目的是确保开发出符合用户需求的高质量软件。
该领域研究如何收集、分析和描述用户需求,并将其转化为可执行的任务。
2. 软件设计与架构软件设计与架构是指将用户需求转换为具体的设计方案和系统架构。
该领域研究如何将系统划分为不同模块,并定义它们之间的关系,以及如何选择合适的编程语言和技术来实现这些模块。
3. 软件测试与验证软件测试与验证是指通过一系列测试活动来评估和验证开发出来的软件是否符合预期要求。
该领域研究如何进行测试计划、测试用例设计、测试执行等活动,以及如何评估测试结果并提供反馈。
4. 软件质量保障软件质量保障是指通过一系列管理和技术手段来确保软件开发过程中的质量,并在软件交付后维护其质量。
该领域研究如何制定软件开发流程、规范和标准,以及如何进行配置管理、版本控制、缺陷跟踪等活动。
二、软件开发技术1. 软件工程方法论软件工程方法论是指一系列系统化的方法和技术,用于实现高质量的软件开发。
该领域研究如何选择合适的开发模型(如瀑布模型、敏捷开发等)、项目管理方法(如SCRUM、XP等)、需求分析方法(如面向对象分析、用例驱动等)等。
2. 软件编程语言与工具软件编程语言与工具是指用于实现软件功能的程序语言和辅助工具。
该领域研究各种编程语言和框架,以及各种辅助工具如IDE、代码生成器等。
3. 软件架构与设计模式软件架构与设计模式是指在系统设计中常用的一些通用解决方案。
该领域研究各种架构风格(如分层、客户端-服务器、RESTful等)和设计模式(如单例模式、工厂模式等),以及如何应用它们来解决实际问题。
4. 软件开发工具链软件开发工具链是指一系列工具和流程,用于支持软件开发的各个环节。
软件工程名词解释汇总软件工程名词解释汇总1·软件工程(Software Engineering):软件工程是一门应用计算机科学和数学原理以及工程方法论来开发、维护和管理软件项目的学科。
2·软件生命周期(Software Development Life Cycle, SDLC):软件生命周期是指软件开发过程的不同阶段,包括需求分析、设计、编码、测试和部署等。
3·需求工程(Requirements Engineering):需求工程是软件工程中的一个重要阶段,旨在理解和定义用户需求,并将其转化为可执行的软件规格说明。
4·设计模式(Design Pattern):设计模式是在软件设计中反复出现的问题的解决方案,它是一种被广泛接受和验证的经验总结。
5·可行性研究(Feasibility Study):可行性研究是对软件项目进行评估,以确定项目的可行性和可行性报告。
6·原型开发(Prototyping):原型开发是一种快速开发技术,通过创建软件的原型来验证系统需求,以便更好地满足用户的期望。
7·面向对象(Object-Oriented):面向对象是一种软件开发方法,其基本思想是以对象为中心,将问题划分为一组相互作用的对象。
8·可移植性(Portability):可移植性是指软件在不同平台上的可运行性,包括硬件和操作系统。
9·故障排除(Troubleshooting):故障排除是一种通过逐步分析和排除故障来修复软件或硬件故障的方法。
10·用户界面(User Interface, UI):用户界面是用户与软件交互的界面,包括图形界面、命令行界面等。
11·数据库管理系统(Database Management System, DBMS):数据库管理系统是一种用于管理和组织数据的软件系统,它提供了对数据的存储、检索和操作等功能。
软件工程(0835)软件工程(0835)软件工程(Software Engineering,简称SE)是一门关于软件开发和维护的学科,旨在提高软件开发过程的效率和质量。
它涉及使用系统化的、可量化的方法来设计、测试和维护软件。
在当今快速发展的信息技术时代,软件工程的重要性不言而喻。
本文将从软件工程的定义、发展历程以及软件工程的主要原则等方面进行探讨。
1. 软件工程的定义软件工程是一种以工程化方式实现(Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software)的软件开发过程,它通过对软件进行规划、设计、实施、测试和维护,并结合经验和工具的应用,以及对用户需求的深入了解,来提高软件开发过程的效率和质量。
2. 软件工程的发展历程软件工程的发展经历了多个阶段。
起初,软件开发只是无序的活动,缺乏规范和管理。
后来,随着软件规模的增加和软件复杂度的提高,人们意识到需要系统化地对软件开发进行管理和控制。
于是,软件工程的概念应运而生。
1968年,第一次国际软件工程研讨会(International Conference on Software Engineering,简称ICSE)召开,标志着软件工程作为一个独立的学科正式确立。
自那以后,软件工程在理论和实践中不断发展,并逐渐形成了一套完整的理论体系。
3. 软件工程的主要原则软件工程遵循一些基本原则,这些原则旨在确保软件的质量和可靠性。
以下是软件工程的几个主要原则:(1)追求简单原则(KISS Principle):应当尽量保持软件设计的简单性,避免使用过于复杂的方法和技术,以便易于理解和维护。
(2)分而治之原则(Divide and Conquer Principle):将软件系统划分为多个独立的模块,分别进行设计和实现,以便提高系统的可维护性和扩展性。
软件工程专业术语1. 软件工程 (Software Engineering)软件工程是一门关于设计、开发、测试和维护软件的学科。
它涵盖了一系列的方法、工具和技术,旨在提高软件开发的效率和质量。
2. 需求工程 (Requirement Engineering)需求工程是软件工程的一个重要环节,它负责收集、分析和规范软件系统的需求。
通过需求工程,可以确保软件开发符合用户的期望和预期。
3. 软件开发生命周期 (Software Development Life Cycle, SDLC)软件开发生命周期是指软件从概念到退役的整个过程。
它包含需求分析、设计、编码、测试和部署等阶段,每个阶段都有相应的工作任务和产物。
4. 原型设计 (Prototype Design)原型设计是软件开发过程中的一种设计技术,目的是通过建立一个简化的模型来验证系统的功能和用户界面。
原型设计可以帮助开发团队和客户更好地理解系统的要求。
5. 软件测试 (Software Testing)软件测试是用来检验系统是否满足规定要求的过程。
它包括单元测试、集成测试、系统测试和验收测试等不同层次和阶段的测试。
6. 配置管理 (Configuration Management)配置管理是为了管理和跟踪软件系统的版本和变更。
它包括对代码、文档和配置文件等进行版本控制,并确保系统有追溯和可重现性。
7. 敏捷开发 (Agile Development)敏捷开发是一种迭代和增量的软件开发方法,强调与客户的紧密合作、快速反馈和灵活应变。
敏捷开发通常采用短周期的迭代,每个迭代都会交付一部分可用的软件产品。
8. 面向对象 (Object-Oriented)面向对象是一种常用的软件设计方法,它以对象为中心,将数据和对该数据的操作封装到对象中。
面向对象的设计具有高度的可重用性和可维护性。
9. 设计模式 (Design Pattern)设计模式是一套被广泛应用于软件设计的解决方案。
软件工程的六个阶段软件工程的六个阶段软件工程是一套系统化、规范化、科学化的方法,用于开发和维护软件系统。
从需求分析到软件实现,软件工程的过程被分为六个阶段。
这六个阶段分别是:计划、需求分析、设计、编码、测试和维护。
下面将详细介绍每个阶段的主要目标和活动。
一、计划阶段计划阶段是软件工程的第一个阶段,其主要目标是确定软件系统的总体规划和目标。
在这个阶段中,软件项目的范围、时间、成本等因素被认真考虑和评估。
也需要识别项目相关的团队成员和资源分配。
计划阶段的主要活动包括需求收集、风险评估、项目计划和进度安排等。
二、需求分析阶段需求分析阶段是软件工程的第二个阶段,其主要目标是确认用户对软件系统的具体需求。
在这个阶段中,软件工程师与用户紧密合作,通过访谈、问卷调查等方式获取用户需求。
然后,将这些需求规范化,形成详细且可执行的需求文档。
需求分析阶段还包括需求的优先级划分和需求验证。
三、设计阶段设计阶段是软件工程的第三个阶段,其主要目标是制定软件系统的高级结构和组件之间的接口设计。
在这个阶段中,软件工程师根据需求文档,确定软件系统的整体结构和模块划分。
然后,设计系统各个模块的具体实现方法,并定义它们之间的接口。
设计阶段的主要活动包括系统架构设计、模块设计和接口设计等。
四、编码阶段编码阶段是软件工程的第四个阶段,其主要目标是实现软件系统的具体功能。
在这个阶段中,软件工程师将已经设计好的系统模块编写成可执行的代码。
在编码过程中,需要遵循一定的编码规范和代码风格,以保证代码的质量和可维护性。
编码阶段也包括代码的调试和修复bug等工作。
五、测试阶段测试阶段是软件工程的第五个阶段,其主要目标是验证软件系统的正确性和稳定性。
在这个阶段中,软件工程师根据需求文档和设计文档,设计测试用例并执行测试。
通过测试可以发现和修复软件系统中的错误和缺陷。
测试阶段包括单元测试、集成测试、系统测试和验收测试等不同层次和阶段的测试。
六、维护阶段维护阶段是软件工程的一个阶段,其主要目标是维护和改进已经发布的软件系统。
Q1====P141-4.P125-126
一、下图给出的程序流程图代表一个非结构化的程序,请问:
(1)为什么说它是非结构化的?
(2)设计一个等价的结构化程序。
(3)在(2)题的设计中你使用附加的标志变量flag吗?若没用,请再设计一个使用flag的程序;若用了,再设计一个不用flag的程序。
答:(1)通常所说的结构化程序,是按照狭义的结构程序的定义衡量,符合定义规定的程序。
图示的程序的循环控制结构有两个出口,显然不符合狭义的结构程序的定义,因此是非结构化的程序。
(2)使用附加的标志变量flag,至少有两种方法可以把该程序改造为等价的结构化程序,以下给出了等价的结构化程序的盒图。
(3)不使用flag的等价结构化程序盒图:
Q2=====P54-5P48
二、拨校外电话需要
先拨0
+意思是和,
(a
(b
(c
答:(1)据估算平均无故障时间MTTF的公式有:
1/K(Et/100000-100/100000)=0.4
1/K(Et/100000-300/100000)=2
得:K=1000,Et=350即程序中的错误总数达350。
(2)当MTTF=10h时,有
1/K(350/100000-Ec/100000)=10
得:Ec=340.按七八月分测试改错进度估算,还需进行2个月的集成测试。
(3)MTTF和测试时间τ之间的函数关系曲线如下:
Q5=====P142-8P137
四、画出下列伪码程序的流图,计算它的环形复杂度。
你觉得这个程序的逻辑有什么问题吗?
CEXAMPLE
LOOP:DOWHILEX>0
A=B+1
IFA>10
THENX=A
ELSEY=Z
ENDIF
IFY<5
THENPRINTX,Y
ELSEIFY=2
THENGOTOLOOP
ELSEC=3
ENDIF
ENDIF
G=H+R
ENDDO
IFF>0
ENDIF
STOP
答:(1
(2
{
}//语句块1
if((x==4)||(y>5))
{j=x*y+10;}//语句块2
j=j%3;//语句块3
}
(1)对于第一个判定((x>3)&&(z<10)):
条件x>3取真值记为T1,取假值记为-T1
条件z<10取真值记为T2,取假值记为-T2 对于第二个判定((x==4)||(y>5)):
条件x==4取真值记为T3,取假值记为-T3
条件y>5取真值记为T4,取假值记为-T4
根据条件覆盖的基本思想,要使上述4个条件可能产生的8种情况至少满足一次,设计测试用例如下:
(2)组合覆盖的目的是要使设计的测试用例能覆盖每一个判定的所有可能的条件取值组合。
对DoWork函数中的各个判定的条件取值组合加以标记:
1、x>3,z<10记做T1T2,第一个判定的取真分支
2、x>3,z>=10记做T1-T2,第一个判定的取假分支
3、x<=3,z<10记做-T1T2,第一个判定的取假分支
画出程序流程图。
程序是结构化吗?说明理由。
若程序是非结构化的,设计一个等价的结构化程序并且画出流程图。
此程序的功能是什么?它完成预定功能有什么隐含的前提条件。
答:(1)该程序流程图:
(2)结构化的程序是单入口单出口,而该程序的流程图有两个出口,是非结构化程序。
(3)其等价的结构化程序流程图:
(4)该程序有二分查找的功能,它完成预定功能的隐含前提条件是:表数据是由小到大已作好排序的有序序列。
1.模块(B)定义为受该模块内一个判断影响的所有模块集合。
A.控制域B、作用域C、宽度D、接口
2.大型系统的对象模型包含五个层次(D)
A.主题层类与对象层结构层代码层服务层
B、主题层设计层结构层代码层服务层
C、主题层设计层结构层属性层服务层
D、主题层类与对象层结构层属性层服务层
3.在进行软件测试时,首先应当进行(A),然后再进行组装测试,最后再进行有效性测试。
A.单元测试B、集成测试C、确认测试D、组合测试
4.产生软件危机的原因主要与两个方面的问题有关:(C)
A.软件在计算机中很难识别,存在磁盘中也看不到。
B.软件设计对人的智商要求很高,也要求很高的资金投入。
C.软件产品本身的特点与其它工业产品不一样,而且在软件的开发和维护过程中用的方法不正确。
D.
5
A
C
6
A
C
7.
A
C
8
A.Java
9
A
C
10.Petri
A.位置
C、状态
11
A
12
A
13
A.
B.对象间可实现相互间直接的数据访问
C.父类子类间的等级关系称为继承
D.所有对象都划分为类.
14.有风险分析的软件生存周期模型是(A)
A.瀑布模型B.喷泉模型C.螺旋模型D.增量模型
15.面向对象分析技术的特征是()
A.耦合与内聚B.抽象化和模块化C.模块封装和内部信息隐蔽D.模块和模块化。