北航软件工程导论
- 格式:pdf
- 大小:218.65 KB
- 文档页数:12
软件工程导论(整理)软件工程导论软件工程导论是计算机科学与技术专业的一门重要课程,通过对软件工程的基本概念、方法和技术进行介绍和讲解,使学生对软件开发过程有全面的认识。
本文将从软件工程的定义与特点、软件生命周期、软件开发方法和软件工程的挑战等方面进行论述。
一、软件工程的定义与特点软件工程是指研究和应用科学原理、方法和工具,对软件进行全面的规划、开发、测试、部署和维护的一门工程学科。
软件工程具有以下特点:1. 抽象性:软件是虚拟存在,不同于硬件,具有高度的抽象性。
2. 复杂性:软件开发是一项复杂的任务,涉及多个环节和多个参与者之间的协同合作。
3. 可变性:软件需求会随着时间和需求的变化而变化,需要具备良好的变更管理能力。
4. 可靠性:软件在使用过程中需要具备稳定、健壮和可靠的特性。
5. 可维护性:软件应该具备良好的可维护性,便于后续对其进行修改和维护。
二、软件生命周期软件生命周期是指软件从提出到退役的全过程,一般包括需求分析、设计、编码、测试、部署和维护等阶段。
1. 需求分析:明确用户需求,采集并分析用户的需求,形成软件的需求规格说明。
2. 设计:根据需求分析的结果,进行系统的设计,包括软件架构设计、模块设计等。
3. 编码:根据设计结果,进行具体代码的编写,实现软件的功能。
4. 测试:对编码后的软件进行测试,验证软件是否满足需求并具备稳定性。
5. 部署:将测试通过的软件部署到目标环境中,进行系统集成和性能调优等操作。
6. 维护:对已发布的软件进行修改、优化、升级和Bug修复等工作,确保软件持续稳定运行。
三、软件开发方法软件开发方法是指用于规范和指导软件开发过程的方法论和模型。
其中较为常见的软件开发方法有瀑布模型、迭代模型和敏捷开发等。
1. 瀑布模型:瀑布模型是软件开发过程中最早提出的方法之一,将软件开发过程划分为需求分析、设计、开发、测试和维护等阶段,每个阶段按顺序进行。
2. 迭代模型:迭代模型将软件开发过程划分为多个迭代周期,每个周期完成一部分需求的开发和测试,并通过反复迭代逐步完善软件。
北航软件工程专业课
北航软件工程专业课主要包括以下几个方向:
1. 软件工程导论:主要介绍软件工程的概念、发展历史、基本理论和方法、软件开发流程等方面的内容。
2. 程序设计语言:主要介绍程序设计语言的概念、语法、语义、程序设计方法和技巧等方面的内容。
3. 操作系统原理:主要介绍操作系统的基本概念、发展历史、操作系统结构、进程管理、存储管理、文件系统和设备管理等方面的内容。
4. 计算机网络:主要介绍计算机网络的基本概念、协议体系、网络结构、网络互连和网络安全等方面的内容。
5. 软件工程实践:主要介绍软件开发过程中的实际问题和解决方法,包括需求分析、软件设计、软件开发、软件测试和软件维护等方面的内容。
以上是北航软件工程专业课的一些主要内容,如果需要了解更多细节,可以到学校官网或教育类网站查询,也可以向在北航软件工程专业就读的学生请教。
北航软件工程培养方案培养目标培养的学生将具有扎实软件工程专业基础、宽阔的知识面,富有创业和创新激情,并具有务实进取精神,实践能力强,能适应社会需求环境等的变化,具有良好的科技和人文素质,熟练的外语运用能力,规范的软件开发和项目组织能力、富有国际视野、竞争意识和团队合作精神,德、智、体全面发展的软件工程技术人才培养要求秉承北航“艰苦朴素、勤奋好学、全面发展、勇于创新”的校风和“德才兼备,知行合一”的校训,依托在计算机科学与技术领域的学科优势,使培养的学生德、智、体全面、协调发展。
具体要求如下:德育方面: ①热爱祖国,热爱科学,掌握了马克思主义、毛泽东思想和邓小平理论的主要内容,树立科学的世界观、人生观和价值观; ②树立终身学习的观念,具有严谨、求实和勇于创新、敢为人先的科学精神,积极参加社会实践; ③具有良好的自我教育、自我管理、自我发展的能力,具有责任心和社会责任感; ④具有法律意识和法律知识,自觉遵纪守法;智育方面: ①牢固掌握数学、物理等自然科学基础知识,较好地了解人文、艺术、社会、经济和管理科学的基础知识; ②系统地掌握本专业的计算机数学基础、计算机软件硬件基础基础知识和工程实践基础知识; ③系统地掌握计算机专业知识,具备初步的科研实践能力,每位学生都有自己的软件作品; ④具备良好的专业外语听、说、读、写基础,外语应用能力强;⑤了解计算机及软件工程领域的前沿技术。
掌握文献资料查询的基本方法,具备较强的自学和独立工作能力;体育方面:①掌握科学锻炼身体的基本知识和基本技能,达到国家规定的大学生体育合格标准;②至少拥有一项个人喜欢的体育项目,有良好的心里素质和身体素质。
学制学位本专业基本学制为四年,获得软件工程专业的学士学位。
每学年划分为两个20周的标准学期和一个2周的小学期。
每个标准学期采用17+1+2的形式,17周上课,2周考试,1周机动。
培养计划规定每18个课内学时计1学分。
独立的实践环节,每周(即每五个工作日)计1学分。
《软件工程》第一阶段导学材料一、本阶段课程学习内容:本课程的第一阶段由教材的第1-3章组成。
第1章是软件工程的概述,主要对软件的地位和作用,软件的发展和软件危机、软件工程学科的形成、软件的生存期及软件工程过程等方面的问题和基本概念作了简单的介绍。
第2章阐述了计算机系统工程的目的,系统分析的目标、过程,软件项目的可行性研究的必要性,软件项目的成本效益分析、技术分析的方法,对候选系统配置方案的评估过程,系统结构模型化的方法,系统定义与评审的过程。
第3章讲述了了软件需求分析的任务,软件需求分析工作的过程,对软件进行需求分析的原则、方法,软件系统的快速原型法和软件开发过程,结构化分析方法。
二、本阶段各章节的学习内容如下:第1章软件工程概述1)软件的概念和特点软件的一种公认的解释为,软件是计算机系统中与硬件相互依存的另一部分,包括程序、数据及其相关文档的完整集合。
其中程序是按事先设计好的功能和性能要求的指令序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发、维护和使用有关的图文材料。
软件的特点主要有:✧抽象性:软件是一种逻辑实体,而不是具体的物理实体。
✧软件的开发过程没有明显的制造过程。
软件是通过人的智力活动,把知识和技术转化成信息的一种产品。
✧软件的运行和使用期间,没有硬件磨损老化问题。
软件存在退化问题,软件使用中要克服以前没有发现的故障,但每次修改不可避免的会引入新问题,一次次修改导致软件的退化。
✧软件的开发受到计算机系统的限制。
另外,软件的开发是一项高强度的工作。
✧软件是复杂的,其复杂性来自软件反应的是复杂的实际问题以及程序逻辑结构的复杂性。
✧软件的成本很昂贵。
研发和维护都需要相当大的投入。
2)软件分类软件的分类放法有多种,有按软件规模分类、按功能分类、按软件的工作方式分类等等。
3)软件生存期和软件生存期模型软件工程过程通常包括四种基本的过程活动:软件规格说明、软件开发、软件确认、软件维护。
软件工程导论教学大纲一、说明(一)课程性质软件工程导论是计算机科学与技术专业的核心课程之一,属于必修课程。
该课程的先修课程有计算机导论、程序设计基础、数据结构、面向对象程序设计、离散数学等,后续课程有算法分析与设计,程序设计、软件测试等。
软件工程是研究软件开发维护和软件管理的一门工程科学,本课程是计算机科学与技术专业指导性教学计划规定的教学环节中的一部分。
通过本课程的学习,使学生了解软件工程的概念、原理和技术,初步掌握软件开发的基本方法和常用工具,建立软件开发和维护的工程化意识,培养独立思考的能力和团队合作的精神,为后续相关课程的学习以及从事软件开发与维护的实际工作打下良好的基础。
(二)教学目的本课程的教学目的,应使学生掌握大型复杂软件系统的开发方法、规则和工具。
首先,应使其克服长期书写小程序形成的“重编码、轻分析设计;重编码、轻技术资料建设和管理”的习惯;其次,要理解软件工程原理/方法/规则的必要性和掌握其技术细节;第三,要了解软件工程学的进展和前沿动态;第四,要通过软件系统设计的练习,巩固和应用所学知识。
(三)教学内容本课程面向软件工程专业的学生,介绍软件系统性质、目标、环境的分析方法,目标系统逻辑联系、功能联系、控制联系和状态转换过程的描述方法,软件结构、测试方案的设计要求和分析方法,软件工程学新进展,以及上述过程所用的规范化图文数表模型。
具体包括:软件工程概念及其过程模型、结构化分析/设计/实现方法和工具,面向对象方法学及面向对象的概念、模型、分析方法、设计方法、实现方法,软件项目管理及其定量度量方法、相关国际标准。
最后介绍佩特网等形式化方法、统一建模语言、软件常用技术和软构件的分类与检索。
(四)教学时数本课程的教学总时数为90学时,其中,课堂教学时数为54学时,实验教学时数为36学时。
(五)教学方式本课程的难点在于,学生不曾经过大型软件开发的训练,因此在讲解中要适时插入大量软件开发事例,要求教师具有一定的软件开发经验;本课程不安排具体编程环境和开发语言的学习,但必须以大型软件开发实例说明问题,因此要求教师熟悉多种开发环境和开发语言;此外,软件开发技术的滞后和软件应用的广泛性所形成的反差,要求教师了解并适时提出计算机辅助软件工程(CASE)的问题。
SA——结构化分析方法可行性研究:可行性研究实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程;技术可行性:对待开发的系统进行功能、性能和限制条件的分析,确定在现有的资源条件下,技术风险有多大,系统能否实现;经济可行性:这个系统的经济效益能超过它的开发成本吗?社会可行性:实用性怎样5. 耦合性:耦合是指一个模块与其它模块之间的联系,又称为块间联系,是模块之间相对独立性的度量;6. 内聚性:内聚是指模块内部各个成分之间的关系,又称为块内联系,是模块功能相对强度的度量;7. 模块的控制范围:一个模块的控制范围是指该模块本身及其所属的(直接或间接调用的)所有模块的集合;8. 模块的作用范围:受该模块内一个判定影响的所有模块的集合;9. 软件结构:软件结构图;10.模块:在软件中,通常把用一个名字就可以调用的一段程序称为模块;1. 编码:所谓编码就是把软件设计结果翻译成用某种程序设计语言书写的程序;2. 程序设计风格:所谓程序设计风格是指书写源程序的习惯、程序代码的逻辑结构与习惯的编程技术。
从软件工程要求出发,程序设计风格应包括以下要素:①源程序文档化②数据说明③语句构造④输入输出●白盒测试技术:逻辑覆盖和基本路径覆盖●黑盒测试技术:等价类划分、边界测试、错误推测、因果图●软件测试步骤:单元测试、集成测试和确认测试1. 校正性维护:满足用户对已开发产品的性能与运行环境不断提高的要求,进而达到延长软件寿命的目的;2.适应性维护:对程序使用期间发现的程序错误进行诊断和改正的过程,配合变化了的环境进行修改软件的活动;3. 完善性维护:满足用户在使用过程中提出增加新的功能或修改已有功能的建议而进行的工作;4. 预防性维护:为了改善未来的可维护性或可靠性而修改软件的工作。
5. 软件可维护性:维护人员理解、改正、改动或改进这个软件的难易程度。
6. 软件维护的副作用:(1)编码副作用。
2024年《软件工程导论》讲稿计算机系统发展迅速,但是人们仍然没有彻底摆脱“软件危机”的困扰,软件已经成为限制计算机系统发展的瓶颈。
计算机软件工程学就是为了研究如何消除软件危机而发展起来的。
那么什么是软件危机呢。
在开始讲软件危机时我要先提出一个概念:什么是软件。
(板书:软件危机、什么是软件)简单来举例像我们平时用的word、e____cel 都是计算机软件。
软件就是计算机系统中与硬件相互依存的另一部分,它包括程序、相关数据及其说明文档。
(软件的英文名为software板书:software____program+data+document)那它具有什么特性呢。
在这里我向大家绘制两幅图,大家可以比较讨论一下硬件的失效率刚开始是降低的,这个阶段就是磨合调整,通过调整失效率降低并达到一定时期的稳定,那____会失效率增高呢,硬件是物理实体它存在磨损用坏的问题。
再来看软件的失效图像,我绘制了两条,一条是理想情况下,另一天是实际情况下。
大家可以看出来吗。
没错,开发出来的软件并不是永远有效的,随着用户的需求增大等情况失效率会增高。
从图中我们还可以看出在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题。
因为软件是一种逻辑实体,并非具体的物理实体。
另外呢,软件复杂性很高,软件技术的发展落后于需求,成本也相当昂贵。
讲完软件的概念,那么软件危机就比较容易理解了,软件危机就是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
那么大家思考一下,能够正常运行的软件可能会存在软件危机吗。
答案是可能会。
实际上,几乎所有软件都不同程度地存在这些问题。
比方说,你在用软件时,它不能与你的计算机硬件环境兼容或是不能满足你的要求。
总结下来,软件危机需要应对两方面的问题:(1)如何开发软件,以满足对软件日益增长的需求(2)如何维护数量不断膨胀的已有软件软件危机又有哪些典型表现呢。
我们在进行一项工程时是不是经常会有一个工程预算,软件工程也不例外,如果对软件开发成本和进度的估计不准确,那么就很容易使用户不满。
软件工程导论知识点总结一、软件工程概述软件工程是将系统化、规范化、可度量化的方法应用于软件的开发、运行和维护的过程。
软件工程包括软件开发过程、软件工具和方法以及软件质量管理等方面。
二、软件生命周期模型1. 瀑布模型:依次完成需求分析、设计、编码、测试和维护等阶段。
2. 增量模型:将整个项目分为多个增量,逐步完成。
3. 螺旋模型:在瀑布模型基础上增加风险评估环节,不断迭代。
4. 原型模型:快速构建原型,反复修改完善。
5. 敏捷开发:注重快速响应变化,通过迭代交付高质量的软件。
三、需求分析需求分析是指对用户需求进行详细的调查和分析,并将其转换为可实现的系统规格说明。
主要包括功能性需求和非功能性需求两个方面。
四、设计1. 结构设计:确定系统各个组成部分之间的关系。
2. 数据设计:确定数据结构及其组织方式。
3. 接口设计:定义各个组成部分之间的接口。
4. 过程设计:定义系统中各个过程的执行方式。
五、编码编码是将设计好的系统规格说明转换为计算机可执行的程序代码,主要包括选择编程语言、编写代码、调试和测试等环节。
六、测试测试是对软件进行验证和确认,主要包括单元测试、集成测试、系统测试和验收测试等环节。
七、维护维护是指在软件交付后,对软件进行修改和更新以满足用户需求或修复缺陷。
维护包括预防性维护、适应性维护和完善性维护等方面。
八、软件质量管理软件质量管理是指通过各种手段确保软件产品满足用户需求,并具有可靠性、可用性、安全性等特点。
主要包括质量计划制定、质量保证控制和质量评估等环节。
九、常见开发模式1. 面向对象开发模式:采用面向对象的思想进行开发。
2. 组件化开发模式:将系统划分为多个组件进行开发。
3. 服务化开发模式:将系统划分为多个服务进行开发。
4. 微服务架构:将系统划分为多个微服务进行独立部署和运行。
十、常用工具和技术1. UML:统一建模语言,用于软件建模和设计。
2. IDE:集成开发环境,用于编码、调试和测试等环节。
《软件工程》第四阶段导学材料一、本阶段课程学习内容:本课程的第一阶段由教材的第10~13章组成。
第10章介绍了软件质量的定义与特性,软件质量的度量和评价方法,软件质量保证的概念、软件质量保证的任务,软件开发中质量检验的作用,软件质量保证体系的各部门之间的关系。
软件质量保证的实施方法,软件质量设计方法,软件设计质量、程序质量的评审内容。
软件可靠性的定义与主要指标,软件测试中的可靠性分析方法,容错软件的概念以及容错的一般方法等。
第11章介绍了软件维护的概念,软件维护的方法,程序修改的步骤及修改的副作用,软件可维护性的定义,软件可维护性的度量,提高软件可维护性的方法,软件的预防性维护法方法,软件配置管理的实现方法。
第12章介绍了软件工程标准的概念,软件工程标准的意义,软件工程标准的制定与推行,软件工程标准的层次,ISO9000-3标准及软件质量认证,软件文档的作用与分类方法。
第13章介绍了软件项目管理的过程,软件生产率和质量的度量,在软件工程中使用度量的方法,软件项目估算的方法,软件开发成本估算的方法,在软件工程环境中软件项目风险分析的方法,软件项目的进度安排,软件项目管理的组织与软件项目计划的制定方法。
二、本阶段各章节的学习内容如下:第十章软件质量保证1)软件质量定义:与软件产品满足规定的和隐含的需求能力有关的特征或特征的全体。
软件质量反应了以下三方面问题:✧软件需求是度量软件质量的基础。
✧在各种标准中定义了一些开发准则没来指导软件人员用工程化的方法来开发软件,如果不遵守这些准则,软件的质量就得不到保证。
✧软件还需要满足隐含的需求。
软件质量特性,反应了软件的本质。
通常用软件质量模型来描述影响软件质量的特性。
软件质量模型的共同特点是把软件质量特性定义为分层模型。
在分层模型中,最基本的叫做基本质量特性,它可以由子质量特性定义和度量。
二次特性在必要时可由它的一些子质量特性定义和度量。
影响较大的软件质量模型有:McCall质量模型;ISO的软件质量评价模型;上海软件中心的软件质量度量模型。
《软件工程》第二阶段导学材料一、本阶段课程学习内容:本课程的第一阶段由教材的第4~6章组成。
第4章讲解了软件设计的目标、任务和方法,模块的独立性,结构化设计方法,数据设计的原则,文件设计和过程设计的方法。
第5章阐述了进程间的通信方式,JSD方法的步骤与实现,实体动作分析,实体结构分析。
讲述了定义初始模型的方法,Jackson系统开发的方法。
第6章讲述了用户界面应具备哪些特性,用户界面设计的任务分析方法,用户界面任务和工作设计,用户界面的基本类型,数据输入界面、数据显示界面、控制界面的设计方法。
二、本阶段各章节的学习内容如下:第4章软件设计✧数据设计:关系图中描述的对象和关系,以及数据词典中描述详细数据内容转化为数据结构的定义。
✧体系结构的设计,软件系统各主要成分之间的关系。
✧接口设计根据数据流图定义软件内部各成分之间、软件与其他协同系统之间软件与用户之间的交互机制。
✧过程设计把结构成分转换成软件过程性描述软件设计是后续开发及维护的基础,如果没有设计,只能建立一个不稳定的系统结构。
1)软件设计的任务:从工程管理的角度来看,软件设计分两步完成。
✧概要设计,将软件需求转化为数据结构和软件的系统结构。
✧详细设计,即过程设计,对功能模块进行细化,完成算法及在概要设计中要完成的任务主要有以下几点:✧制定规范;✧软件系统结构的总体设计;✧处理方式设计(算法,模块间的控制方式等);✧确定信号的接受发送形式;✧数据的防护性设计(防卫性设计、一致性设计、冗余性设计);✧可靠性设计;✧编写概要设计阶段的文档;✧概要设计评审(可追溯性、接口、风险、实用性、质量、各种选择方案、限制等等)。
在详细设计中,完成的任务有:✧确定软件各个组成部分内的算法以及各部分的内部数据组织✧选定某种过程的表达形式来藐视各种算法✧进行详细设计评审在软件设计中将软件的体系结构按照自顶向下,对各个层次的过程和细节逐层细化,直到能够用程序设计语言实现为止,从而最终确立整个体系结构。