课程总结题目《软件工程》课程总结学生姓名学号学院专业班级指导教师职称教授2014 年 11 月《软件工程》课程总结一、学习目标 通过系统的学习,了解软件开发从项目确定到需求分析,再到概 要及详细设计、代码实现、开发后的软件测试这一完整软件开发过程。
学习上面提到的每一个步骤中完成任务的相关方法与工具。
学完后应 初步具备管理整个软件开发完整流程的能力。
提高软件的质量与生产 率,最终实现软件的社会化大生产。
在给定成本、进度的前提下,开 发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用 性、可适应性、可移植性、可追踪性和可互操作性并且满足用户需求 的软件产品。
二、学习态度 这一学期的软件工程课就要进入尾声了,在复习理论知识的同 时,更需要回顾和反思自己的学习态度。
在这学期的软件工程学习中,我从来没有迟到、早退以及旷课。
不过因为参加银行从业考试请了一次假。
在这学期中,我每节课都是 按时上课,虽然我对软件、计算机这方面没有天赋,但是我尽量做到 认真听课,提醒自己不要开小差。
听很多人说这是一门比较深奥的课 程,刚开始的时候我比较排斥这门课,但是老师讲的风趣幽默,慢慢 的我开始进入状态,上课认真做笔记,认真听讲。
三、学习内容 通过一学期软件工程的学习,使我了解到了很多以前都不知道的 知识。
现将所学课本外的知识总结如下:第一章 软件工程概述 软件工程是工程化软件开发与维护的方法论软件的开发者维护 者或软件项目管理者都将是软件工程的实践者,并都需要掌握与应用 软件工程方法。
1.1.软件是计算机系统中的逻辑成分,是程序、数据、文档等诸 多元素的集合,需要有物理硬件的支持才能产生作用。
是一系列按照 特定顺序组织的计算机数据和指令的集合。
软件并不只是包括可以在 计算机上运行的电脑程序,与这些电脑程序相关的文档一般也被认为 是软件的一部分。
1.2.软件危机(software crisis),20 世纪 60 年代以前,计 算机刚刚投入实际使用,软件设计往往只是为了一个特定的应用而在 指定的计算机上设计和编制,采用密切依赖于计算机的机器代码或汇 编语言,软件的规模比较小,文档资料通常也不存在,很少使用系统 化的开发方法,设计软件往往等同于编制程序,基本上是个人设计、 个人使用、个人操作、自给自足的私人化的软件生产方式。
软件危机 主要表现在:软件开发费用和进度失控,生产出来的软件难以维护, 软件产品质量难以保证等等。
1.3.软件工程是关于软件开发,使用与维护的工程方法学,并是 工程技术、工程管理与工程经济的有机综合。
1.4.结构化方法学是传统的主流方法学,以功能为基本元素,包括结构化分析、结构化设计与结构化实现,可对整个软件生命周期提 供方法学支持。
第二章 软件开发过程模式 软件开发过程模式是一个有关开发的实施路线与步骤的工程框 架,软件开发时务、方法、工具、标准、规程等诸多要素,即基于这 个工程框架凝结于一体。
2.1.软件生命周期是软件由提出到开发到投入应用的全过程。
瀑 布模式是最传统的过程模式,“瀑布”形象表达了其自顶向下、逐级 细化的过程特征。
2.2.原型进化模式的开发流程是:开发者先建立原型系统供用户 评价或使用,然后根据用户的意见反馈,对原型系统不断修正,由此 是它逐步接近并最终达到目标系统的要求。
2.3.增量模式是瀑布模式和原型进化模式优点的结合。
螺旋模式 是一种可较好规避开发风险的过程模式。
还学了送代模式是软件的分 析、设计与实现可交替反复进行的模式。
迭代模式有对面向对象方法 更好的过程支持,可使面向对象方法获得更有成效的工程应用。
2.4.最后学习了组件复用模式。
如下图 1 为组件复用模型。
第三章 软件项目 项目是一个工程作业单元,并 物合在一起的工 程模式开发即以 并通过项目实施 件开发各项工作 管理者必须事先 划。
项目成本估算 码行成本估计、软基于组件的需求框架描述 组件复用率分析基于组件复用的需求细化 与修正基于组件的系统框架设计 所缺新组件开发基于组件的系统集成图 1 组件复用模型管理 具有工程独立性的 是一个可将人、财、 程容器。
软件的工 项目为单位进行, 有效管理。
为使软 有序的进行,项目 制定项目开发计 的方法有:程序代 件功能点成本估计、软件过程成本估计。
软件风险管理的主要任务是风险识别、风险 评估和风险防范。
软件文档是工程模式软件开发的成果体现。
所谓软 件配置,也是基于软件生产轨迹进行过程控制与产品追踪。
最后学了 软件质量管理,也是对软件品质的优劣进行评价。
第四章 计算机系统工程 项目是基于计算机的系统工程需要有对整个计算机系统较全面 的考虑诸多方面的因素,如:硬件设备、数据资源、网络环境、其他 协作软件等,是待开发软件系统以的环境因素,然而绝不能有半点忽 视,而必须在软件系统创建之前就认真分析。
只有这样,软件项目才 能有正确的工作方向,所开发出来的软件才不会是空中楼阁。
计算机 系统结构如图 2 所示:图 2.计算 机系统 组成第计算机系统硬件系统网络系统软件系统操作系 统数据库管 理系统五章人工系统应用系统需求分析需求分析是一项非常关键的软件工程活动,是在开始软件设计、实现之前必须先期完成的任务,需求分析需要解答的问题是“软件能够做什么”。
系统分析师将承担软件需求分析任务,其工作目标是确定用户软件需求,发现软件的用户价值。
本章要点是:分析任务与过程;获取用户需求;需求建模;需求验证。
需求分析是对高层需求框架的细化,将涉及用户细节需求,并需要确认软件规格,其过程如图 3 所示:需求框架分析用户需求需求规约建立需求模型定义软件规格需求验证软件规格说明需求规格说明 书如图 3.需求分析过程第六章 结构化分析建模 软件分析的关键是建立分析模型,实际上,在进行软件业务分析 时就已建立了模,如业务树、业务流。
然而,业务分析模型是面向用 户的’一般只涉及用户需求规约,因此在进一步的面向设计的分析建 模中,分析者还需要考虑软件技术问题,以支持软件规格定义,支持 软件由分析到设计的过渡。
分析建模特点是分析模型建立在需求规约 基础上,并要求从数据、功能、行为等多个建模时叫建立模型,以使 得对软件问题能有比较全面的建模解说。
功能建模师对系统的数据加 工的图解。
行为建模用于说明软件系统与环境的交互。
还学了数据字 典,它是用于定义软件元素,以使软件元素获得严格的、详细的、精 确地规格说明。
如下图 4 为需求分析中规约、模型、字典之间的关系。
需求规约功能模型数 据 模 型数据字典行为模型图 4.需求分析中规约、模型、字典之间的关系 第七章 基于 UML 的面向对象分析建模UML 是一种可很好适应面向对象技术的建模方法,不仅可直观反 映面向对象技术要素,并可有效贯通分析与设计,而使整个开发过程 一体化。
UML 是统一建模语言,有统一的语法规则,语义规则与语用 规则,并可从多个不同视角建立软件模型。
用例建模是面向用户需求 的,能够反映系统的用户价值。
活动图用于描述系统动态过程,主要 图形元素有:活动、转换、起点、终点、判断、并发、同步、泳道等。
类分析建模的首要工作是发现实体类,可使用名词搜索法发现候选 键,然后再从候选键中筛选出实体类。
第八章 概要设计 在软件规格确定以后,即可设计软件。
软件设计一般按照概要设 计,详细设计两步进行,首先需要完成的是概要设计。
本章将要介绍 的即是概要设计,其如同设计蓝图,用于确定系统构架、软件结构, 以提供实现软件必须有的框架。
系统构架,是对已确定的需求的技术 实现构架、作好规划,运用成套、完整的工具,在规划的步骤下去完 成任务。
数据结构是指数据元素之间的逻辑关系。
第九章结构化设计建模 结构化程序以功能为目标。
需求分析中有关软件的功能分析,将 成为程序结构设计的依据。
面向数据流的程序结构映射,即体现出了 由功能分析到功能设计的过渡。
结构化程序以功能模块为构件,其结 构设计即围绕模块进行,涉及模块功能定义、模块接口设计、模块调 用与控制设计。
本章要点程序结构建模语言分别是程序结构图和 HIPO 图。
基于数据流的程序结构映射是以功能为目的的结构化建模方法, 可达到由功能分析到功能设计的有效转换。
第十章 基于 UML 的面向对象程序设计面向对象程序设计需要考虑两两个方面的问题,其一,基于类的 程序静态构造;其二于对象的程序动态过程。
可通过 UML 建立面向对象设计模型。
其中的类图可用来描述程序 的静态逻辑构造,涉及实体类、控制类、边界类、数据类等诸多类体。
协作图、时序图、状态图则可用来描述基于对象的程序动态过程。
最终的安装发布还涉及物理结构,组件图可用来描述程序程序系 统物理结构。
第十六章 非主流工程方法 前面章节介绍了结构化方法、面向对象方法,它们是主流软件工 程方法,成熟并有广泛的软件工程应用。
此外还有许多非主流软件工 程方法,如:敏捷工程方法净室工程方法;形式化规格说明,它们不 如主流工程方法成熟,而且未获得广泛的软件工程应用,但它们却有 特定的软件工程应用价值,并因这些工程价值而受到人们关注。
敏捷 工程方法是一种从 1990 年代开始逐渐引起广泛关注的一些新型软件 开发方法,是一种应对快速变化的需求的一种软件开发能力。
敏捷开 发是一种以人为核心、迭代、循序渐进的开发方法。
净室工程方法是 一种新的计算机软件开发技术,它是一种在软件开发过程中强调在软 件中建立正确性的需要的方法,来代替传统的分析、设计、编码、测 试和调试周期,净室方法建立一种不同的观点。
Z 语言是一种获得了 最广泛使用的形式化规格说明语言,以集合运算与谓词逻辑演算为数 学语言,并以模式图形符号组织形式化说明。
四、学习感悟 时间飞逝,不知不觉间《软件工程》的学习完了。
在这将近半学 期的学习中,虽然我不能说我将《软件工程》学习的有多么的好,但 是通过学习,我还是受益良多。
在以前,我一直对软件存在一些偏见或则是误解,认为软件就是 程序,软件的开发就是编写程序,只要编完了程序,一切也就 ok 了, 而且我还片面的认为只要我掌握了时下最新的语言和工具,那么我就 能写程序了。
一个人,只要会编程,就能写软件,就是程序员;一个公司,只要招聘一些程序员,就能开发好的软件产品。
只要有几个有 经验的程序员,再找些兼职的大学生,就能组成一个软件公司。
但是通过了《软件工程》这门课的学习,使我认识到了我以前的 错误。
软件其实不仅仅是程序,软件开发其实也不仅仅是编写程序, 软件是思想在硬件上的载体和体现,处理的是逻辑和信息。
唯有对软 件和软件的开发过程,有充分的认识,才能更好的开发出,过程受控、 质量受控的软件产品。
而且在以前,我一直以为软件的开发其实是一 件很轻松快乐的事情,只要一天坐在电脑旁敲敲键盘,那么一切就可 以了,但是现在我才发现,我以前的很多的思想是多么的肤浅可笑。