软件工程 总结

软件工程 总结
软件工程 总结

软件工程复习提纲

第1章软件工程介绍 (2)

软件是什么 (2)

第2章过程综述 (2)

软件工程定义 (2)

层次化 (3)

通用过程框架 (3)

第3章过程模型 (4)

各种过程模型 (4)

第4章敏捷视角下的过程 (6)

敏捷宣言 (6)

第5章系统工程 (7)

第6章需求工程 (8)

质量功能部署(QFD) (8)

分析模型的元素 (11)

第7章构建分析模型 (11)

第8章设计工程 (11)

第9章进行体系结构设计 (12)

体系结构风格的分类 (12)

第10章构件级设计建模 (13)

第11章完成用户界面设计 (13)

黄金规则 (13)

第12章软件测试策略 (14)

软件测试需要计划和执行一系列的测试步骤 (14)

第13章测试技术 (15)

两个不同的测试用例设计技术 (15)

第14章产品度量 (15)

第1章软件工程介绍

软件是什么

软件是形成配置的一组术语或对象,包括:

程序(计算机程序): 指令的集合,通过执行这些指令可以满足预期的特征、功能和性能需求

数据结构:它使得程序可以充分利用信息

文档:描述程序操作和使用的文档(图文资料)

1.举例说明“意外效应法则”(law of unintended consequences)在计算机软件

方面的应用。

某些新科技的发明创造会给其他一些看似无关的技术领域、商业企业、公众甚至整个社会文化带来深远而出人意料的影响和作用。

如:

2.用自己的语言描述保证通晓规律(The Law of Conservation of Familiarity)、

质量衰减规律(The Law of Declining Quality )以及组织稳定性守恒规律(The Law of Conservation of Organizational Stability )。

保证通晓性规律(1980): 随着E类型系统的演化,所有相关人员(如开发人员、销售人员和用户)都必须清楚地了解演化的内容和过程,以便达到满意的演化效果。

质量衰减规律(1996): 如果没有严格的维护和适应性调整使之适应运行环境的变化,E类型系统的质量有衰减的趋势。

组织稳定性守恒规律(1980): 一个不断演化的E类型系统,其组织在全球范围内的平均有效活动率在产品的生命周期中是保持不变的。

3.在交付最终用户之前,或者第1个版本投入使用之后,许多应用程序都会有频繁的

变更。为防止变更引起软件失效,请提出一些有效的解决措施。

首先从心态上承认变化是必然的,我们可以通过在软件发布之前进行alpha , beta 测试,利用迭代模式,在吸取测试过程中的经验之后,立刻改进软件。

同时保持和用户的良好沟通,在提交用户时进行适当培训,让用户按照开发思路进行试用,可以见减少因使用方法不当引起的变化。

第2章过程综述

软件工程定义

软件工程是:

(1)将系统化、规范的、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件。

(2)在(1)中所述的方法的研究。

层次化

通用过程框架

1.沟通(Communication)

2.策划(Planning)

3.建模(Modeling)

a)需求分析(Analysis of requirements)

b)设计(Design)

4.构建(Construction)

a)代码生成(Code generation)

b)测试(Testing)

5.部署(Deployment)

重点:

1.Baetjer说过“软件过程为用户和设计者之间、用户和开发工具之间以及设计者和开

发工具之间提供交互的途径[技术]。”设计下面问题“⑴设计者应该问用户的;⑵用户应该问设计者的;⑶用户对将要构建的软件的自问;⑷设计者对于软件产

品和建造该产品采取的软件过程的自问。(如何获取需求)

2.为沟通活动设计一个任务集

1.识别主要客户和其他共利益者

2.与客户会谈环境无关的话题

3.写一页项目范围

4.评审范围说明

5.讨论项目大致的阶段

6.商定各个部门的代表,并使他们相互认识

7.为计划活动做准备

3.用自己的话描述过程框架。当我们谈到框架活动适用于所有的项目时,是否意味着

对于不同规模和复杂度的项目,可应用相同的工作任务?请解释。

过程框架定义了若干小的框架活动,为完整的软件开发过程建立的基础,这些框架活动可以广泛用于所有的软件开发项目,无论这些项目的复杂性和规模如何,此外,还包括一些适用于各个软件过程的普适性活动。

虽然过程框架是普适性的,但是对于不同规模和复杂度的项目不能应用相同的工作任务。

首先在软件开发的不同阶段,工作任务不同。其次不同的软件项目有不同的需求,有特殊的背景,找不到一种通用的工作任务。

4.图2-1中,基于“质量关注点”指明了软件工程三个层次。这意味着在整个开发组

织内采用质量管理活动,如“全面质量管理”。仔细研究,并列出全面质量管理活

动中关键原则的大纲。

第3章过程模型

各种过程模型

惯例软件过程模型

力图给软件开发带来秩序和结构。尽管每一传统过程模型都建议了一种不同的过程流,但均实现了同样的一组通用框架活动:沟通、计划、建模、构建和部署。

瀑布模型

建议线性流程的框架活动,与软件世界里当代软件开发实际(持续的变更、演化的系统、紧迫的开发时间)不符;但瀑布模型确实适用于需求定义清楚且稳定的软件开发;

增量软件过程模型

通过一系列的增量发布产生软件。

RAD模型

快速应用程序开发,是为大型且必须在严格的时间内提交的项目而设计的;

演化过程模型

认识到大多数软件工程项目的迭代特性,其设计的目的是为了适应变更演化模型(如原型模型、螺旋模型),其快速产生增量的工作产品(或是软件的工作版本),这些模型可以应用于所有的软件工程活动——从概念开发到长期的软件维护。

基于构建的模型

强调构件复用及组装。

形式化方法模型

提倡采用数学的方法进行软件开发和验证。

面向方面的模型

目的是解决跨整个软件体系结构的横切关注点;

统一过程模型

是一种“用例驱动、以体系结构为核心、迭代及增量”的软件过程框架,由UML方法和工具支持。统一过程是一种增量模型,定义了五个阶段:

起始阶段:包括用户沟通和计划活动两个方面,强调定义和细化用例,并将其作为主要模型;细化阶段:包括用户沟通和建模活动,重点是创建分析和设计模型,强调类的定义和体系结构的表示;

构建阶段:细化设计模型,并将设计模型转化为软件构建实现;

转化阶段:将软件从开发人员传递给最终用户,并由用户完成Beta测试和验收测试;

生产阶段:持续地监控软件的运行,并提供技术支持。

重点:

1.开发质量“足够好”的软件,其优点和缺点是什么?当我们追求开发速度胜过产品

质量的时候,会产生什么后果?

我们总在质量和开发速度之间做取舍,开发质量“足够好”的软件,明显强调质量,优点是使软件符合或超出客户的预期,在性能上,交互上力图做到尽善尽美。缺点是忽视了开发成本,很容易造成开发时间延期,影响软件工程后几个阶段的工作,对全局造成不利影响。

2.当沿着螺旋过程流发展的时候,你对正在开发或者维护的软件的看法是什么?

在螺旋模式下,开发过程是迭代式的,采用循环的方式逐步加深系统定义和实现的深度,同时降低风险。

当软件交付使用后,螺旋模式没有停止,它将永远保持可操作性,每一圈完成后都会计算成本,可以更好的维护软件。

3.可以合用几种过程模型吗?如果可以,举例说明。

可以。

几种过程模型,都是相互兼容可以相互扩展的,如螺旋模型结合了原型的迭代性质和瀑模型的系统性和可控性的特点。

在具体项目实施中,对于某一部分可以合用几种过程模型,比如形式语言与自动机演示软件在算法开发过程,就需要使用形式化方法模型,用严格的数学符号定义形式语言和

自动机。

还有一些桌面应用程序的前台UI部分,可以单独使用RAD模型,比如用delphi语言开发桌面窗体就是一种RAD实现。而其他部分可以使用其他如瀑布式模型等方法。

第4章敏捷视角下的过程

敏捷宣言

●个体和交互胜过过程和工具(Individuals and interactions over processes and

tools )

●可工作软件胜过宽泛的文档(Working software over comprehensive

documentation)

●客户合作胜过合同谈判(Customer collaboration over contract negotiation)

●响应变化胜过遵循计划(Responding to change over following a plan )

重点:

1.是否每一个敏捷过程都可以用第2章所提及的通用框架性活动来描述?建一张表,

将通用活动和每个敏捷过程所定义的活动对应起来。

2.用自己的语言描述(用于软件项目的)敏捷性?

普遍存在的变化是敏捷的基本动力,敏捷需要有效的响应变化,它鼓励在共利益者之间进行更便利的沟通和协作,强调可运行软件的快速交付。

敏捷允许项目团队调整并合理安排任务,理解易变性并制定计划。精简并维持最基本的工作产品,强调增量交付,快速提供可运行软件。

3.许多敏捷过程模型推荐面对面交流,实际上,现在软件开发团队成员及其客户在地

理上是分散的。你是否认为这意味着这种地理上的分散应当避免?能否想出一个办

法克服这个问题。

我认为这种地理上的分散是现实,是无法避免的。我认为可以分为客户和开发人员的分散,开发人员内部分散两种情况。

对于第一种:产品经理需要同客户建立一条良好的通信信道,如通过email,即时聊天工具进行定期沟通。

对于第二种:开发人员需定期组织交流,通过web group 消除地理上的分散。

4.为什么需求变化这么大,人们终究无法确定他们想要什么吗?

我认为是这样的。

其实需求是客户对他们心目中软件的一种描述,因为软件还没有实现,这种描述便是不确定的,模糊的。同时当今世界处于高速变化之中,人们的需求会随着环境的改变而改变。

所以敏捷开发承认变化,认为普遍存在的变化是敏捷的基本动力。

第5章系统工程

在写下每行代码之前

●理解所要解决的问题(详见沟通与建模)

●理解基本的设计原则和概念

●选择一种能够满足软件构建以及运行环境要求的编程语言

●选择一种能提供工具以简化工作的编程环境

●构件级编码完成后进行单元测试

系统工程层次图

重点:

1.对你熟悉的系统、产品或服务,建立它们的层次系统。层次应该向下扩展到简单系

统要素(硬件、软件等),至少得到层次树的一个分支。

即时聊天系统

2.系统工程师由3种来源:系统开发人员、用户或一些外部组织。讨论一下每种来源

的利与弊。描述一个理想的系统工程师。

3.研究文献并写出一篇简短文章描述建模和模拟工具是如何工作的。或者是收集两个

或更多的商用建模或模拟工具的文献,并且比较它们的相似处与不同处。

第6章需求工程

质量功能部署(QFD)

是一种将客户要求转化成软件技术需求的技术。QFD“目的是最大限度地让客户从软件工程过程中感到满意”,并强调“什么是对客户有价值的”。确认三类需求:

●正常需求:反映了在和客户开会时确定的针对某产品或系统的目标。如果实现了这些需

求,将满足客户(例如:所要求的图形显示类型、特定的系统功能以及已定义的性能级别)。

●期望需求:隐含在产品或系统中,并且可能是非常基础的以至于客户没有显式地说明,

但缺少这些将导致客户明显不满(例如:易交互性、可操作性、可靠性、易安装等)。

●令人兴奋的需求:反映了客户期望之外的特点,但如果实现了这些特点,将会使客户非

常满意。

重点:

1.为如下活动之一开发一个完整的用例:

?在ATM提款;

?在餐厅使用信用卡付费;

?使用一个在线经纪人账户购买股票;

?使用在线书店搜索书(某个指定主题);

ATM用例图

改密码“ATM取款”用例规约

2.为什么大量的软件开发人员没有足够重视需求工程?以前有没有什么情况让你可以

跳过需求工程?

首先软件开发人员认为客户已经把需求说清楚了,但是大多数情况初步的需求都是模糊的。

其次工程的进度要求很紧迫,软件开发人员迫切希望投入到代码编写阶段。

最后和客户沟通比较困难,使得大多数软件开发人员不重视需求工程。

又一次,项目时间很短,要求一个月完成,我们只是大体上对需求有一个认识,就跳过需求工程开始动手编码,结果当然失败了。

3.简短地讨论一个分析模型的每个元素,指出每个元素对模型的贡献,每个元素为什

么是唯一的以及每个元素所表示的概要信息。

分析模型的元素

基于场景的元素(用例图):使用基于场景的方法可以从用户的视角描述系统。例如基本的用例和基于模板的用例。通常的分析模型的第一步,作为创建其他模型的输入。

基于类的元素(类图):每个使用场景都暗示着当一个参与者与系统交互时所操做的一组对象,这些对象被分成类——具有相似属性和共同行为的事务集合。

行为元素(状态图):状态指明了在某个特殊事件后采取什么动作。

面向信息流的模式:描述信息的转换。

第7章构建分析模型

重点:

1.简单用几句话尝试说明结构化分析和面向对象分析的主要差别?

结构化分析考虑数据和处理,其中数据作为独立的实体转换,数据对象建模定义了对象的属性和关系,操作对象的处理建模应当表明数据对象在系统内流动时处理如何转换数据。

面向对象分析关注于定义类和影响客户需求的类之间的协作方式。

2.有没有可能在分析模型创建后立即开始编码?解释你的答案,然后说服反方。

第8章设计工程

重点:

1.如果软件设计不是程序(它确定不是),那么它是什么?

是一套坚固、适用和赏心悦目的模型或设计表示。它包括数据、类设计,体系结构设计、接口设计、构件设计。

2.当你“编写”程序时你设计软件吗?软件设计和编码有什么不同吗?

设计。

软件设计是逐步细化一个可以工作的模型,而编码是在生成一个可执行的程序。软件设计主要关注是否实现了用户需求,必须从实现的角度说明数据域、功能域和行为域,是编码工作的指导。

3.用你自己的话说明软件体系结构。

系统结构是程序构件(模块)的结构或组织,这些构件交互的形式以及这些构件所以数据的结构。构件可以被推广,用于代表主要的系统元素及其交互。

第9章进行体系结构设计

体系结构风格的分类

以数据为中心的体系结构

数据流体系结构:

当输入数据经过一系列的计算和操作构件的变换形成输出数据时,可以应用这种体系结构。

信息流被描述为单个数据项,被称为事务,他可以沿多条路径中的一条触发其他数据流。

调用和返回体系结构

面向对象体系结构

层次体系结构

重点:

1.使用数据流程图和处理叙述,描述一个具有明显数据流特征和一个具有明显事务流

特性的计算机系统。

数据流特征:opengl管线

事务流特性:银行转账

以房子或建筑的体系结构作比喻,与软件体系结构进行对比。传统的建筑体系结构学科和软件体系结构有何相似之处?有何不同之处?

第10章构件级设计建模

构件:系统中某一定型化的、可配置的和可替换的部件,该部件封装并暴露了一些列接口。内聚性:内聚性cohesion 意味着构件或者类只封装那些相互关联密切,以及与构件或类自身有密切关系的属性和操作。

耦合性:类之间彼此联系程度的一种定性度量

第11章完成用户界面设计

黄金规则

置用户于控制之下;

以不强迫用户进入不必要的或不希望的动作的方式来定义交互模式。

提供灵活度的交互。

允许用户交互被中断和撤销。

当技能级别增长时可以使交互流线化并允许定制交互。

使用户与内部技术细节隔离开来。

设计允许用户与出现在屏幕上的对象直接交互。

减少用户的记忆负担;

减少对短期记忆的要求。

建立有意义的缺省。

定义直观的快捷方式。

界面的视觉布局应该基于真实世界的象征。

以不断进展的方式揭示信息。

保持界面一致性。

允许用户将当前任务放入有意义的环境中。

在应用系统家族内保持一致性。

如果过去的交互模型已经建立起了用户期望,除非有不得已的理由,否则不要改变它。

重点:

1.试给出两个附加的“降低用户记忆负担”、“保持界面一致性”的设计原则。

2.假设你被邀请开发一个基于WEB的家庭银行系统。请给出用户模型、设计模型、

心理模型和实现模型。

第12章软件测试策略

软件测试需要计划和执行一系列的测试步骤

单元测试

集成测试

确认测试

系统测试

重点:

1.用自己的话描述验证与确认的不同。两者都要使用测试用例设计方法和测试策略

吗?

验证是确保软件正确的实现某一特定功能的一些列活动;

确认是指确保开发的软件可追溯到用户需求的另外一系列活动。

都需要。

2.谁应该完成确认测试——是软件开发人员还是软件使用者,说明你的理由。

最终用户应该完成确认测试,合理的预期在软件需求规格说明中定义,用户是alpha 和beta 测试的测试人员

3.项目的进度安排是如何影响集成测试的?

集成测试将已经完成好的构件放在一起进行测试,项目进度的不同,对于构件就有不同的完成时间,集成测试必须要等最后一个构件完成了才能开始。

第13章测试技术

两个不同的测试用例设计技术

白盒测试

白盒测试侧重于程序控制结构,设计测试用例以保证测试期间程序中所有的语句至少被执行一次,且所有的逻辑条件被检查。

基本路径测试是一种白盒测试技术,利用程序图(或图矩阵)生成保证覆盖率的线性无关的测试机。

条件和数据流测试进一步检查程序逻辑

循环测试补充其他的白盒测试技术,检查不同复杂度的循环。

黑盒测试

黑盒测试用来确认功能需求,而不考虑程序的内部结构。

黑盒测试技术侧重于软件的信息域,通过划分程序的输入域和输出域来设计测试用例以提供完全的测试覆盖。

等价划分将输入域划分为有可能检查软件特定功能的数据类。

边界值分析则检查程序处理边界数据的能力。

重点:

1.穷举测试(即便对非常小的程序)是否能够保证程序100%正确?

穷举测试是不可能的,穷举测试想覆盖所有的逻辑路径,生成测试用例逐个的测试程序逻辑,但是随着程序中分支的增多,路径的数量呈指数上升,在有限时间内无法完成穷举测试。

第14章产品度量

软件度量为产品内部属性的质量评估提供了一种定量的方法,从而可以试软件工程师在产品开发出来之前进行质量评估。

重点:

1.McCall的质量因素是在20世纪70年代提出的。自它们提出以来,几乎计算的每

个方面改动都很大,而且McCall的因素仍然适用于现代软件。你能根据这个事实

得出什么结论吗?

书:软件质量的因素不会随时代的变化而变化。

(我认为唯一不变的是变化本身,软件质量的因素其实很容易根据客户的需求而改变,McCall 有效的原因是它的分类十分合理,又易于扩展,涵盖了软件最基本的要求,如正确性,可靠性等,又有对高级属性的度量,如复用性)

软件工程知识点总结

软件工程知识点总结-CAL-FENGHAI-(2020YEAR-YICAI)_JINGBIAN

一、软件工程概述 1.软件特点 软件:计算机程序、方法、规则、相关的文档资料,以及计算机程序运行时所需要的数据。 软件是计算机系统中的逻辑成分,具有无形性。其主要内容包括:程序、配置文件、系统 文档、用户文档等。 2.软件分类 (1)按功能划分:系统软件、支撑软件、应用软件。 (2)按工作方式划分:实时处理软件、分时处理软件、交互式软件、批处理软件。 (3)按规模划分:微型软件、小型软件、中型软件、大型软件。 (4)按服务对象划分:通用软件、定制软件。 3.软件发展阶段 (1)程序设计时代(20世纪50年代)。 (2)程序系统时代(20世纪60年代)。 (3)软件工程时代(20世纪70年代起)。 4.软件危机 (1)危机现象:软件开发成本与进度估计不准确,软件产品与用户要求不一致,软件产品质量可靠性差,软件文档不完整不一致,软件产品可维护性差,软件生产率低。 (2)危机原因:软件的不可见性,系统规模庞大,生产工程化程度低,对用户需求关心不 够,对维护不够重视,开发工具自动化程度低。 5.软件工程 软件工程:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必须的相关文件资料。 软件工程是一门关于软件开发与维护的工程学科,它涉及软件生产的各个方面,能够为经济、高效地开发高质量的软件产品提供最有效的支持。 (1)工程方法:结构化方法、JSD方法、面向对象方法。 (2)软件工具:具有自动化特征的软件开发集成支撑环境。 (3)工程过程:在软件工具支持下的一系列工程活动,基本活动是软件定义、软件开发、 软件验证、软件维护。 (4)工程管理:项目规划,项目资源调配,软件产品控制。 (5)工程原则:分阶段生命周期计划,阶段评审制度,严格的产品控制,采用先进的技术, 成果能清楚地审查,开发队伍精练,不断改进工程实践。 (6)工程目标:开发成本较低,软件功能能满足用户需求,软件性能较好,软件可靠性高, 软件易于使用、维护与移植,能按时完成开发任务并及时交付使用。 (7)工程文化:包括工程价值、工程思想和工程行为三个方面的内容。

软件工程设计报告

燕山大学 专业综合训练设计报告 教学信息管理系统 学院信息科学与工程学院 年级专业*级计算机科学*班 学生姓名冷* * 指导教师 提交日期2013/1/10

摘要 本次综合训练管理信息系统设计在Windows 7平台上,以VisualStudio2010作为界面开发工具,SQL Server 2008作为数据库工具,应用以C#为编程语言的https://www.360docs.net/doc/dc18398536.html,技术进行系统设计,分析设计了C/S模式的“教学信息管理系统”。系统数据库在服务器端运行,管理员可以通过客户端访问装在服务器端的应用程序,并操作后台数据库。 本报告中首先说明了该系统的特点与业务需求,之后详细说明了系统的业务流程和系统开发流程,重点介绍了系统各模块的功能及相关功能的具体实现。本系统采用网页—服务器—数据库三层架构模式,用户的查询操作和管理操作均在页面上完成,更新信息和请求信息从页面传到服务器上,再在服务器上对数据库进行操作,更新数据或查找数据。 本系统主要包含5个功能模块:用户登录模块,查看所有信息模块,管理教师信息模块,管理课程信息模块,精确查询模块。主要通过Web对信息进行管理和查询。该系统功能完善、用户界面友好、运行稳定,可进行简单的教学信息管理,实现要求的功能。 关键词教学信息管理系统;C/S开发模式;教学信息管理系统; VisualStudio2010;SQL Server 2008;C#;https://www.360docs.net/doc/dc18398536.html,

代码请参看本人文库下的文件

目录 摘要 (1) 第1章绪论 (3) 1.1 课题背景 (3) 1.2 课题意义 (3) 1.3 选题依据 (3) 第2章需求分析 (4) 2.1 问题定义 (4) 2.2 可行性分析 (4) 2.3 需求分析 (5) 2.4 建立模型 (7) 第3章总体设计和详细设计 (12) 3.1 基本设计理念和处理流程 (12) 3.2 数据库设计 (14) 3.3 用户界面设计 (16) 3.4 数据库配置 (21) 结论 (26) 参考文献 (27)

软件工程复习资料

软件概念:与计算机系统操作有关的程序、数据以及相关文档的完整集合 软件特点:逻辑实体、智力产品,制造即拷贝2无磨损和老化,不遵循“浴盆曲 线”,但存在退化问题3尚未摆脱手工方式,软件移植的需要,复杂(问题复杂性/ 程序结构复杂性),软件开发的性质如成本、进度、质量等难以估计控制,维护困难,可复用性软件分类:按功能:系统软件/支撑软件/应用软件2按工作方式:实时处理/分时/交互/批处理3按服务对象:项目 / 产品(定制 / 通用)4按失效影响:关键/ 非关键5规模:微型、小型、中型、大型、甚大型、极大型 软件危机的表现:软件开发成本和进度失控,维护代价高2用户不满意3软件 质量不可靠4软件不可维护 5无文档资料6 计算机系统中软件成本比重加大7软件开发生产率提高不能满足要求软件危机的原因软件的规模和复杂性2人类智力的局限性3协同工作的困难性4缺乏方法学和工具5用户描述不精确、二义、遗漏,双方理解有偏差缓解软件危机的途径组织管理、协同配合的工程2软件工程的理论模型、技术方法3软件工具 软件工程的三要素1过程:管理部分2方法:技术手段3工具:自动或半自 动地支持软件的开发和管理三要素的关系:相互关联与支持 软件生命周期:可行性研究-需求分析-概要设计-详细设计-实现-集成测试-确认 测试-使用与维护-退役 软件开发和测试活动之间的关系软件 开发和软件测试都是软件生命周期中的重要组成部分,软件测试是保证软件开发产物 质量的重要手段。测试是贯穿于整个开发流程了,而不是在编码完成才开始。 瀑布模型是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工 作,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。最终得到软件产品优点是使用时间最长、应用面比较广泛的开发模型2是其他一些开发模型的基础3当前一阶段完成后,只需要去关注后续阶段缺点不能适应用户需求的变化2到最后阶段才能得到可运行的软件版本适用场合:对于规模较小,软件需求较为稳定的项目,采用模型能够显著提高软件开发的质量和效率 演化模型(原型模型)演化模型是一种全局的软件(或产品) 生存周期模型。属于 迭代开发方法。该模型可以表示为:第一次迭代(需求->设计->实现->测试->集成)->反馈->第二次迭代(需求->设计->实现->测试->集成)->反馈->……优点:1支持需求的动态变化2有助于获取用户需求,便于用户对需求的理解3尽早发现软件中的错误缺点1需要为系统的每个新版本交付文档,不划算2新需求的不断增加,使系统结构退化,变更成本上升3不支持风险分析 螺旋模型1将瀑布模型与原型模型进行有机结合2增加风险分析步骤优点1支持 需求的动态变化2有助于获取用户需求,便于用户对需求的理解3尽早发现软件中的错误4支持风险分析,可降低或者尽早消除软件开发风险5适合于需求动态变化、开发风险较大的系统缺点建设周期长适用场合在需求不明确的情况下,适合用螺旋模型进行开发,便于风险控制和需求变更。特别适合于大型复杂的系统 喷泉模型:软件复用与生命周期中多项开发活动集成,主要支持面向对象的开发 方法优点1软件系统可维护性较好2各阶段相互重叠,表明了面向对象开发方法各阶段间的交叉和无缝过渡3整个模型是一个迭代的过程,包括一个阶段内部的迭代和跨阶段的迭代4模型具有增量开发特性,即能做到“分析一点、设计一点、实现一点,测试一点”,使相关功能随之加入到演化的系统中5模型由对象驱动,对象是各阶段活动的主体,也是项目管理的基本内容6该模型很自然地支持软部件的重用缺点由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项目的管理。此外这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。 OO 为什么好oo 解决问题的思路是从现实世界中的客观对象入手,运用人类的 自然思维方式来构造软件系统,而传统的结构化方法从功能入手和信息工程化方法从信息入手。在面向对象方法中,把一切都看成是对象。OO 方法用类和对象作为系统的基本构成单位。对象对应问题域中的事物,其属性与操作刻画了事物的静态特征和动态特征,它们之间的继承关系、聚合关系、消息和关联如实地表达了问题域中事物之间实际存在的各种关系面向对象方法的特点(1)从现实世界中客观存在的事物出发来建立软件系统,强调直接以问题域中的事物为中心来思考问题、认识问题,把它们抽象地表示为系统中的对象,作为系统的基本构成单位。这可以使系统直接映射问题域,保持问题域中事物及其相互关系的本来面貌(对象) (2)用对象的属性表示事物的状态特征;用对象的操作表示事物的动态特征(属性与操作)(3)对象的属性与操作结合为一体,成为一个独立的、不可分的实体,对外屏蔽其内部细节(封装)(4)对事物进行分类。把具有相同属性和相同操作的对象归为一类,类是这些对象的抽象描述,每个对象是它的类的一个实例(分类)(5)复杂的对象可以用简单的对象作为其构成部分(聚集:一个(较复杂的)对象由其他若干(较简单的)对象作为其构成部分,称较复杂的对象为聚集,称较简单的对象为成分,称这种关系为聚集)(6)通过在不同程度上运用抽象的原则,可以得到较一般的类和较特殊的类。特殊类继承一般类的属性与操作,从而简化系统的构造过程及其文档,有利于复用(继承:特殊类拥有其一般类的全部属性与操作,称作特殊类对一般类的继承)(7) 类具有封闭性,把内部的属性和服务隐藏起来,只有公共的服务对外是可见的(类的封闭性)(8) 对象之间通过消息进行通讯,以实现对象之间的动态联系(消息)(9) 通过关联表达类之间的静态关系(关联) 自顶向下,逐步求精:从顶层开始逐层向下分解,直至系统的所有模块都小 到易于掌握为止 抽象从事物中舍弃个别的非本质的特征,而抽取共同的、本质特征的做法叫抽象。 过程抽象:将完成一个特定功能的动作序列抽象为一个函数名和参数表(模块)例: 比较字符串: int Compare (CString, CString)。数据抽象:将诸多数据对象的定义(描述)抽象为一个数据类型名,以后可通过该数据类型名来定义多个具有相同性质的数据对象例:Eg: 1, 2, 3,—>Integer ;软件工程书;人工智能书—>书类 封装把对象的属性和操作结合成一个独立的系统单位,并尽可能隐蔽对象的内部 细节。只是向外部提供接口,降低了对象间的耦合度使对象能够集中完整地描述并对应一个具体事物。意义:体现了独立性,使对象外部不能随意存取对象的内部数据,使其所含的信息对那些不需要这些信息的模块不可访问。对象的内部的修改对外部的影响很小,减少了修改引起的“波动效应”。公开静态的、不变的操作,而把动态的、易变的信息隐藏起来。 模块化将一个软件划分为一组具有相对独立功能的部件,每个部件称为一个模 块;当把所有的模块组装在一起时,便可获得满足用户需求的软件系统。为什么要进行模块化:模块化体现了“分而治之”的问题分析和解决方法。模块化的目的①进行功能分解,把复杂的大的功能划分成简单的小的子功能,尽量降低每个模块的成本。②尽量使每个模块间的接口不能太多,太多会使接口成本增加。兼顾二者可取得最佳的划分状态,确保软件总成本最低模块设计原则1信息隐藏2高内聚度(强)3低耦合度(松)什么是信息隐藏(1)模块应该设计得使其所含的信息(过程和数据)对那些不需要这些信息的模块不可访问(2)模块之间仅仅交换那些为完成系统功能所必须交换的信息信息隐藏的优点(1)支持模块的并行开发(设计和编码)(2)模块的独立性更好(3)便于系统功能的扩充(4)便于测试和维护,减少修改影响向外传播的范围模块化、信息隐藏,局部化是什么关系局部化与信息隐藏是一对密切相关的概念。局部化就是指将一些使用上密切相关的元素尽可能放在一起。对一个模块来说,局部化是期望模块所使用的数据尽可能是在模块内部定义的。因此,局部化意味着减少模块之间的联系,有助于实现模块之间的信息隐藏。在软件测试和维护期间经常需要修改一些模块的内容。信息隐藏和局部化降低了模块之间的联系,使得在修改一个模块时对其他模块的影响降到最低。“隐藏”的意思是,有效的模块化通过定义一组相互独立的模块来

天津理工大学-软件工程总结(红字是考点)分析解析

填空10个,选择10个,名词解释5个,简答题2个,画图题2个 第一章 一、FAQs about software engineering软件工程中常见的问题 1、software:Computer programs and associated documentation 软件是计算机程序和所有使程序正确运行所需要的相关文档和配置信息 Software products软件产品分为:Generic通用、Bespoke (custom)定制 2、Software engineering is an engineering discipline that is concerned with all aspects of software production.软件工程是一门工程学科,涉及软件生产的各个方面 Software engineers should adopt a systematic and organised approach 软件工程人员运用的是系统的、有组织的工作方法。 3、difference between software engineering and computer science:系统工程和计算机科学的区别:Software engineering is an engineering discipline that is concerned with all aspects of software production.计算机科学侧重于理论和基础,而软件工程侧重于软件开发和交付的实际活动。 4、the difference between software engineering and system engineering: 软件工程和系统工程的区别:System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering. Software engineering is part of this process系统工程侧重基于计算机系统开发的所有方面,包括硬件、软件和处理工程。软件工程只是它的一部分。 5、software process :A set of activities whose goal is the development or evolution of software. 软件工程是以软件开发和进化为目的的一系列活动 Generic activities in all software processes:软件过程的基本活动 a)Specification 软件描述 b)Development 软件开发 c)Validation软件有效性验证 d)Evolution 软件进化 6、software process model:软件过程模型 A simplified representation of a software process, presented from a specific perspective. 从特定角度提出的软件过程的简化表示形式 Examples of process perspectives are ?Workflow perspective 工作流模型 ?Data-flow perspective 数据流或活动模型 ?Role/action perspective角色/动作模型 Generic process models 通用过程模型 ?Waterfall瀑布型开发方法 ?Iterative development迭代式开发方法 ?Component-based software engineering(CBSE)基于组件的软件工程 7、the costs of software engineering软件工程的成本 Roughly 60% of costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs. 软件开发成本约占60%,测试成本占40%。 对于定制软件而言,进化成本常常高于开发成本。 8、software engineering methods软件工程方法: Structured approaches to software development which include system models, notations, rules, design advice and process guidance.软件开发的结构化研究方法,包括:系统模型、标记

软件工程重点整理

软件工程重点 (吐血整理——林新发) 红色的是重点中的重点 前面数字是课本页码 第一章概论 1 什么是计算机软件 计算机软件指计算机系统中的程序及其文档 3软件的特点 (1)软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确地估算 (2)软件是被开发的或被设计的,它没有明显的制造过程,一旦开发成功,只需复制即可,但其维护的工作量大 (3)软件的使用没有硬件那样的机械磨损和老化问题 4软件的分类 (1)系统软件(如操作系统、编译程序等)、 (2)支持软件(如数据库管理系统、网络软件、软件开发环境等)、 (3)应用软件(如实时软件、嵌入式软件、科学和工程计算软件、事务处理软件、人工智能软件等) 6软件工程定义 软件工程是应用计算机科学、数学及管理科学等原理,以工程化的原则和方法制作软件的工程 7生存周期 软件有一个孕育、诞生、成长、成熟、衰亡的生存过程。这个过程即为计算机软件的生存周期 软件生存周期大体可分为如下几个活动:计算机系统工程、需求分析、设计、编码、测试、运行和维护 12能力成熟度模型CMM(了解一下) 初始级、可重复级、已定义级、已管理级、优化级 18瀑布模型(重) 系统工程、需求分析与规约、设计与规约、编码与单元测试、集成测试系统测试、运行与维护 第二章系统工程 41系统工程的任务 (1)识别用户的要求,确定待开发软件的总体要求和范围,

(2)系统建模和模拟 (3)进行成本估算,做出进度安排 (4)进行可行性分析,即从经济、技术、法律等方面分析待开发的软件是否有可行的解决方案,并在若干个可行的解决方案中作出选择。 (5)生成系统规格说明书 42可行性分析 (1)经济可行性(成本、效益、货币的时间价值、投资回收期、纯收入) (2)技术可行性(风险分析、资源分析、技术分析) (3)法律可行性 第三章需求工程 48软件需求 指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。 包括:功能需求、性能需求、用户或人的需求、环境需求、界面需求、文档需求、数据需求、资源使用需求、安全保密要求、可靠性需求、软件成本消耗与开发进度需求、其他非功能需求 50需求获取方法与策略(重) 建立顺畅的通信途径、访谈与调查、观察用户操作流程、组成联合小组、用况 51 图3.2 53 创建用况模型的主要步骤 (1)确定谁会直接使用该系统,即参与者(Actor) (2)选取其中一个参与者 (3)定义该参与者希望系统做什么,参与者希望系统作的每件事将成为一个用况 (4)对每件事来说,何时参与者会使用系统,通常会发生什么,这就是用况的基本过程 (5)描述该用况的基本过程 54需求分析原则(重) 1.必须能够表示和理解问题的信息域 2.必须能够定义软件将完成的功能 3.必须能够表示软件的行为(作为外部事件的结果) 4.必须划分描述数据、功能和行为的模型,从而可以分层次地揭示细节

软件工程课程设计报告人事管理系统

软件工程课程设计报告人事管理系统

软件工程课程设计 题目人事管理系统 系计算机系 专业班级软件工程(动画方向)(2)班 学生姓名贾秋洪 学号 2358069 指导教师姜青山 年 6 月 18 日 1.课程题目 人事管理系统设计 2.概述 2.1本课题的来源 A公司是一家以寿险营销为目的的寿险公司,公司员工众多业务流量大,为了方便管理,我制作了一个人事管理系统。主要经

过员工基本信息录入、修改、查询、删除以及员工考勤等方面来对员工综合考评。以便对员工发放工资进行合理分配。这样能提高领导的人事管理水平还能提高员工的积极性。经过现代计算机技术与企业管理相结合,实现人事管理系统的科学化、信息化、现代化,而且适合一般人群使用。 企业人事管理是相对企业内部员工的管理。集人员、考勤、工资、员工培训、系统功能等于一体的大型管理系统,为公司在人事管理等方面提供极大的方便。本软件是以中小型企业为背景而设计开发的,界面美观、使用方便。本系统主要以人员管理、考勤管理、统计分析管理、工资核算等,是企业人事管理必不可缺的好帮手。 2.2本课题目的、实现功能与预期成果 2.2.1目的 当前市面上流行的人事管理系统不少。可是,对于A公司来说,不需要大型的数据库系统。只需要一个操作方便,功能实用,能满足本中心对数据的管理及需求的系统。我们的目标就是在于开发一个功能实用、操作方便,简单明了的人事管理系统。 2.2.2实现功能 能够录入人事的基本资料,在操作上能够完成诸如添加、修改、删除、按各种条件进行查询、新用户的设置及密码修改等方

面的工作,基本满足人事日常业务的需要。 2.2.3预期成果 所做出的人事管理系统能让A公司管理层在操作简单的前提下并有效的提高对该公司的人事管理,并经过该系统提高员工的能力。尽量使本系统做到是一个科学化、信息化、简单使用的人事管理系统。 3.系统分析 3.1系统调研 正式开发管理信息系统之前进行调研是非常必要的,必要对现行系统进行详细的调查,明确用户需求,保证开发的新系统的功能与用户的要求相吻合,避免耗费大量的人力、物力、财力,新系统的开发却失败的悲剧发生。 3.2可行性分析概述 可行性分析是在A公司的要求和系统调研的基础上进行的,对新系统的开发从社会、技术、经济、管理等方面进行分析,并得出新系统的开发工作可行、不可行、需要修改、追加投资、暂缓开发、分步实施等方案和结论,最后完成可行性分析。 可行性分析一般可定义为:可行性分析是在建设的前期对工程项目的一种考察和鉴定,对拟议中的项目进行全面与综合的技术、经济能力的调查,判断它是否可行。 可行性分析阶段的主要工作包括以下几个方面:

软件工程知识点总结

软件工程(简要知识点) 一、. 软件过程五个模型对比(瀑布模型、快速原型、增量、螺旋、喷泉模型) 二、可行性研究: 1、任务:用最小的代价在尽可能短的时间内确定问题是否能够解决。 2、四个方面:技术、经济、操作可行性、法律 3、数据流图四种成分:1、源点/终点2、处理3、数据存储 4、数据流 三、需求分析: 1、任务:确定系统必须完成哪些工作,对目标系统提出完整、清晰、具体的要求。 2、结构化方法就是面向数据流自顶向下逐步求精进行需求分析的方法。 3、实体联系图:1、数据对象2、属性3、联系(1:1、1:N、M:N) 四、总体设计: 1.任务:回答“概括的说,系统应该如何实现”,用比较抽象概括的方式确定系统如何完成预定的任务,也就是说应该确定系统的物理配置方案,并且进而确定组成系统的每个程序结构。 2.系统设计阶段(确定系统具体实施方案)、结构设计阶段(确定软件结构) 3.模块独立:内聚和耦合 4. 耦合表示一个软件结构内各个模块之间的互连程度,应尽量选用松散耦合的系统

5. 内聚(Cohesion): 一个模块内各元素结合的紧密程度 6.面向数据流的设计方法:变换流和事务流 五、详细设计: 1.任务:确定应该怎样具体的实现所要求的系统,也就是说经过这个阶段的设计工作应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。 2.过程设计的工具(程序流程图、盒图、PAD图、判定表、判定树) 七、测试: 1、单元测试:又称模块测试。每个程序模块完成一个相对独立的子功能,所以可以对该模块进行单独的测试。由于每个模块都有清晰定义的功能,所以通常比较容易设计相应的测试方案,以检验每个模块的正确性。 2、集成测试: 在单元测试完成后,要考虑将模块集成为系统的过程中可能出现的问题,例如,模块之间的通信和协调问题,所以在单元测试结束之后还要进行集成测试。这个步骤着重测试模块间的接口,子功能的组合是否达到了预期要求的功能,全程数据结构是否有问题等。 3、白盒测试技术(逻辑覆盖、基本路经测试)

软件工程课 心得体会

心得体会 通过本学期的学习,独立完成了软件工程方法实践与案例的作业,同时也收获了学习方法和思维方式。由于我是从电气专业调剂到计算机专业,几乎没有基础,所以在刚开始进入学习时感觉非常的困难。但是,李老师每节课都循序渐进的引导教学,让我慢慢理解了软件工程的学习思维,并且坚持学习,逐渐找到了学习软件工程的方法。在整个的学习中,一点一点的学习:上网搜索、问同学和老师、找参考书、查文献,甚至下仓库管理的软件进行使用研究,用了很多方法,也终于对软件工程的整体设计有了深刻概念和理解。 老师给我们分组分配任务,同时又每个人有不同的具体任务,这样既锻炼了我们的合作沟通的能力,同时也强调了独立自主的思考。我们仓库管理小组进行过好几次集体讨论,大家互相讨论,共同学习,也曾出现过意见不统一,通过探讨,共同解决,我觉得这也是学习提升的过程。明确了自己的任务后,就努力去完成,按时完成自己的任务。 在完成作业的同时,学到了很多的数据库知识和软件使用方法。首先接触了visio软件,发现了它画图比较方便,之后老师介绍用rose软件后,发现其功能更加强大。由于rose软件是英文版,所以刚开始用的时候比较吃力,经过搜索使用教程和多次使用练习后,终于可以熟练使用了。 整个设计过程,包括调研设计、需求分析、概要设计、数据库设计、详细设计等。其中,我对UML图印象最为深刻,也是从这个地方开始,我对软件设计有了质的改变,体会和理解了软件设计应该树立的思维方式,对以后的学习和任务有有很大帮助,后期做作业时也没有那么困难了。 在这整个课程学习和完成作业过程中,收获知识,提高能力的同时,我也学到了很多人生习惯,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪。因此在以后的生活和学习的过程中,我一定会把这种习惯带到生活中,不畏,勇往直前! 最后感谢李老师对我们耐心的教育和指导,认真细心的给我们批改作业,给予我们这些没有基础的学生耐心指导,谢谢老师!

软件工程——网上购物系统课程设计报告书

软件工程课程设计报告( 2012 -- 2013 学年第二学期) 课程名称:软件工程课程设计 题目:网上购物系统 院系:控制与计算机工程学院 班级:软件1002班 组号: 组长:艾君伟 组员:肖成、汪豪、崧榕 指导教师: 设计周数:两周 小组成绩: 日期:2013 年 7月 12日

《软件工程》课程设计 任务书 一、目的、要求 通过软件开发的实践训练,进一步掌握软件工程的方法和技术,提高软件开发的实际能力,培养工程设计能力和综合分析、解决问题的能力。 具体如下: 1.学习和实践在分析和设计计算机应用系统所需要的知识,包括面向对象的系统分析与设计,编 码和测试方面的知识; 2.熟悉自动化的软件开发工具Rational Rose,并将其运用于软件开发的全过程; 3.进一步加强和提高软件工程文档的编写能力; 4.培养协作能力和团队精神。 二、主要容 1.运用面向对象技术、UML进行网上购物系统的需求分析与设计; 2.使用Rational Rose作为需求分析与设计的建模工具,进行静态建模和动态建模; 3.利用对象模型自动生成数据模型,自动建立数据库; 4.使用J2EE、HTML、CSS、Javascript语言对购物模块进行界面层的设计并给出实现; 5.撰写课程设计报告。 三、任务分配

四、进度计划 序号设计容名称完成时间备注 1 分组及确定题目1个工作日 2 初步的需求分析与设计建模, 确定实 2个工作日 现平台,并搭建环境 3 详细的需求分析与设计建模2个工作日进行中期检查 4 关键模块的实现与测试3个工作日 5 编写课程设计报告1个工作日 6 验收检查及评定成绩1个工作日 五、设计成果要求 1.建立系统分析与设计模型; 2.初步建立系统原型,实现关键的功能; 3.编写课程设计报告。 六、考核方式 1.系统演示及讲解 占50%。 2.设计报告 占50%。 指导教师: 日期:2013年 6 月 28 日

软件工程知识点汇总

软件工程知识点汇总 1 软件工程、软件工程方法学:三要素 1.1 软件工程:○1应用系统化的、规范化的、可度量的方法来开发、运行和维护软件,即将工 程应用到软件;○2对○1的各种方法的研究 1.2 软件工程是一门研究用工程化方法构建和维护有效的实用的和高质量的软件的学科 1.3 软件工程三要素是:方法、工具、过程 软件工程的方法:是指完成软件开发各项任务的技术方法 软件工具:是指为软件工程方法的运用提供自动半自动的软件支撑环境 软件工程过程:是指将软件工程方法和工具综合起来以达到合理、及时地进行计算机软件开发这一目的 2 软件工程的原则包括:模块化原则、信息隐蔽原则、抽象化原则、模块独立原则(内聚、耦合)、 依赖倒转原则、开闭原则等 2.1 模块化原则:指解决一个复杂问题时自顶向下逐层把软件系统划分为若干模块的过程。模 块是程序中相对独立的成分,一个独立的编程单位,应有良好的编程接口,模块的大小要 适中,模块过大会使模块内部的复杂性增加不利于模块的理解和修改,模块过小会导致整 个系统表示过于复杂,不利于控制系统的复杂性。 2.2 信息隐蔽原则:采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单。 2.3 抽象化原则:抽取事物最基本的特性和行为,忽略非本质细节,采用分层次抽象,自顶向 下,逐层细化的办法控制软件开发过程的复杂性。 2.4 模块独立原则:是指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少 且接口简单。要求在一个物理模块内集中逻辑上相互关联的计算机资源,保证模块间由松 散的偶合关系,模块内部有较强的内聚性,这有助于控制系统的复杂性。(即:高内聚低 耦合) 2.5 依赖倒转原则:抽象不应该依赖于细节,细节应该依赖于抽象。 2.6 开闭原则:软件实体应该是可扩展的,但是不可以修改。即对于扩展是开放的,对于更改 是封闭的。 3 软件开发模型:瀑布模型;快速原型;喷泉模型;各种模型的工作原理、阶段、每阶段任务、 特点、示意图; 软件开发模型(也称为软件过程模型):是从软件项目需求定义开始直至软件经使用后废弃为止,跨 越整个生命周期的系统开发、运行和维护所实施的全部过程、活动和任务的结构框架 3.1 瀑布模型(又称线性模型): 3.1.1工作原理:规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。 前一阶段的工作成果是后一阶段工作开始的基础.所以,每个阶段都必须交出合格的文档,必须对前阶段的工作进行评审,前一阶段的工作完成后才可以开始后一阶段的工作 3.1.2 阶段: 计划时期:问题定义、可行性研究 开发时期:需求分析、设计、编码、测试 运行时期:运行和维护 3.1.3 各阶段任务: 1.需求分析和定义 在软件项目进行过程中,需求分析是从软件定义到软件开发的关键步骤,是今后软件,开发的基本依据,同时也是用户对软件产品进行验收的基本依据。需求分析和定义是以用

软件工程基础知识点总结

软件工程基础部分知识点总结 知识点一软件工程的基本概念 1、软件定义:是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。 1)程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列。 2)数据是使程序能够正常操作信息的数据结构。 3)文档是与程序开发、维护和使用有关的图文资料。 国标(GB)计算机软件的定义:与计算机系统的操作相关的计算机程序、规程、规则以及可能有的文件、文档及数据。 2、软件特点: 1)软件是一种逻辑实体,而不是物理实体,具有抽象性,是计算机的无形部分; 2)软件的生产与硬件不同,它没有明显的制作过程; 3)软件在运行、使用期间不存在磨损、老化问题; 4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题; 5)软件复杂性高,成本昂贵; 6)软件开发涉及诸多的社会因素 3、软件的分类: 按照功能可以分为:应用软件、系统软件、支撑软件(或工具软件)

1)应用软件是为解决特定领域的应用而开发的软件。 2)系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。 3)支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具软件。 4、软件危机:是指在软件的开发和维护过程中所遇到的一系列严重问题。软件危机主要体现在以下几个方面: ①软件开发的实际成本和进度估计不准确 ②开发出来的软件常常不能使用户满意 ③软件产品的质量不高,存在漏洞,需要经常打补丁 ④大量已有的软件难以维护 ⑤软件缺少有关的文档资料 ⑥开发和维护成本不断提高,直接威胁计算机应用的扩大 ⑦软件生产技术进步缓慢,跟不上硬件的发展和人们需求增长 5、软件工程:此概念的出现源自软件危机。软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来开发与维护软件的学科。 1)研究软件工程的主要目的就是在规定的时间、规定的开发费用内开发出满足用户需求的高质量的软件系统(高质量是指错误率低、好用、易用、可移植、易维护等)。 2)软件工程的三个要素:方法、工具和过程。 ①方法:完成软件工程项目的技术手段;

软件实践课程学习的心得体会

三一文库(https://www.360docs.net/doc/dc18398536.html,)/总结报告/学习体会软件实践课程学习的心得体会 经过潘老师讲授软件工程实践后,感觉对软件工程这门学科有了深一层的认识。软件工程是一门重视实际操作的科学。对于软件产品,无非是产品定义、设计代码、调试维护几个步骤,看似简单,可是实际操作却复杂困难,它不比其它行业产品可预见可触及,所以学好软件工程能为以后从事软件开发行业打好基础。 在软件实践这门课中,讲到了有效利用现有资源进行软件编程的方法。提到软件开发也可以像练习书法一样,采用临贴的方式,借鉴他人的优秀代码资源。临摹优秀软件是学习软件开发的一个重要方法。正如一首诗中说的:“熟读唐诗三百首,不会写来也会吟”。软件开发也是一个道理。为了真正地掌握软件开发的技巧,“临贴”是个不错的起步方法。 以前总是觉得,既然编写一个程序,就应该完全靠自己,那样写出来才有成就感,才算是自己的程序,可是这门课程教会我原来适当地借鉴别人的东西,也不算抄,相反,还可以提高效率,节省时间。这可真是与以往的观点不一样了。具体如下: “软件编程,拿来主义的作用很大: 1、源代码交换方便。

2、可行的例程序用处大。 3、借鉴现成少走弯路。” 不过借鉴别人的东西可是有说法的,可不是盲目地抄袭,下 面是一些提到的途径: 1、既有系统:借鸡下蛋,买来就用; 2、书本例子:简单修改、直接使用; 3、联机或联网帮助:帮助文档、官方支持; 4、开放软件源代码:linuxapacheeclipse… 5、互联网资源:论坛、搜索引擎、新闻组 借鉴过来后,还要多方面综合考虑,比如说代码的具体作用,完整性,还要考虑每个借鉴过来的东西的好坏。这些都要多方面考虑,可不能因为前面说软件编程可以借鉴别人的,就盲目地抄袭。到时候代码弄一堆凑在一块儿,谁也不知道它们会不会好好工作。弄不好乱了程序计划是小,公司的损失可不是哪个人都能承受得起的。 课程还提到,应该用一个小项目先从头到尾地练完,这样,有个整体性的了解,可以增加不少开发经验。看来,不学习此门课程,还不能深入地解读软件工程的奥义。这门课程为我们深入地了解软件工程这个庞大的前沿学科起到了推动性的作用。以上是我就此门课中提到的众多方法的一小段做的一些浅谈,更多的知识还在于我们自己去学习体会。

软件工程课程设计报告

软件工程课程设计报告样式 山东建筑大学计算机科学与技术学院 课程设计说明书 题目:学校教材订购系统的分析和设计 课程:软件工程 院(部):计算机科学与技术学院 专业:软件测试 班级:软测143 学生姓名:冯岩 学号:20141113088 指导教师:王宜贵 完成日期:

目录 课程设计任务书 (36) 1. 系统概述 (39) 1.1业务流程描述 (39) 1.2 业务流程图..................................................................................... 错误!未定义书签。2.系统需求分析.......................................................................................... 错误!未定义书签。 2.1 系统用例模型.................................................................................. 错误!未定义书签。 2.2 系统类图模型............................................................................ 错误!未定义书签。 2.3 系统顺序图模型........................................................................ 错误!未定义书签。 3. 系统设计.................................................................................................. 错误!未定义书签。 3.1 系统结构设计................................................................................. 错误!未定义书签。 3.2 数据库概念模型设计..................................................................... 错误!未定义书签。 3.3 数据库物理模型设计..................................................................... 错误!未定义书签。 4. 系统详细设计.......................................................................................... 错误!未定义书签。 4.1学校教材订购系统界面设计.......................................................... 错误!未定义书签。 4.2 销售系统处理............................................................................... 错误!未定义书签。 4.3 输入设计....................................................................................... 错误!未定义书签。 4.4 采购系统处理............................................................................... 错误!未定义书签。 4.5 设计............................................................................................... 错误!未定义书签。 4.6 输出设计....................................................................................... 错误!未定义书签。总结 .. (43) 参考文献 (45) 课程设计指导教师评语 (46)

软件工程期末复习知识点整理

复习整理 、绪论 1. 软件的定义 软件是能够完成预定功能和性能的可执行的计算机程序,包括使程序正常执行所需要的数据,以及有关描述程序操作和使用的文档。(软件=程序+文档) 2.软件工程的定义 是指导计算机软件开发和维护的一门工程学科;采用工程化的原理与方法对软件进行计划、开发和维护;把证明正 确的管理技术和最好技术综合运用到软件开发中;研究经济地开发岀高质量的软件方法和技术;研究有效维护软件 的方法和技术。 3.软件危机的概念,及出现的原因 软件开发技术的进步未能满足发展的要求。在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。 产生原因: ⑴软件规模越来越大,结构越来越复杂 ⑵软件开发管理困难而复杂。 ⑶软件开发费用不断增加。 ⑷软件开发技术落后。 ⑸生产方式落后,仍采用手工方式。 ⑹开发工具落后,生产率提高缓慢。 4.三种编程范型的特点 (1)过程式编程范型:把程序理解为一组被动的数据和一组能动的过程所构成;程序=数据结构 +算法;着眼于程序的过程和基本控制结构,粒度最小 (2)面向对象编程范型:数据及其操作被封装在对象中;程序=对象+消息;着眼于程序中的对 象,粒度比较大 (3)基于构件技术的编程范型:构件是通用的、可复用的对象类;程序=构件+架构;眼于适合 整个领域的类对象,粒度最大 二、软件生存周期与软件过程 1、软件生存周期的定义,把生存周期划分为若干阶段的目的是什么,有哪几个主要活动 定义:一个软件从开始立项起,到废弃不用止,统称为软件的生存周期 目的:软件生存周期划分为计划、开发和运行3个时期;把整个生存周期划分为较小的阶段, 给每个阶段赋予确定而有限的任务,就能够化简每一步的工作内容,使因为软件规模而增长而大大增加了软件复杂性变得较易控制和管理。 主要活动:需求分析、软件分析、软件设计、编码、软件测试、运行维护( P19) 2、软件生命周期划分为哪几个阶段 软件生命周期分为三个时期八个阶段: 软件定义:问题定义、可行性研究; 软件开发:需求分析、概要设计、详细设计、编码、测试; 软件运行:软件维护

软件工程-期末总结

软件工程期末总结 课程:xxxxx 姓名:xxxxx 学号:xxxxxx 班级:xxxxxx

目录 1.软件工程学概述 (1) 1.1软件危机 (1) 1.2软件工程 (1) 1.3软件生命周期 (2) 1.4软件过程 (2) 2.可行性研究: (2) 2.1可行性研究的任务 (2) 2.2可行性研究的过程 (3) 2.3数据流图 (3) 3.需求分析 (3) 4.形式化说明技术 (4) 5.模块设计 (4) 1.耦合: (4) 2.内聚 (4) 6.详细设计 (5) 6.1结构程序设计 (5) 6.2人机界面设计 (5) 7.软件测试 (5) 7.1软件测试的目标 (5) 7.2软件侧试准则 (6) 7.3测试方法 (6) 8.软件可靠性 (7) 8.1软件质量 (7)

1.软件工程学概述 1.1软件危机 1.1.1 软件危机的介绍:是指在计算机软件的开发和维护过程中所遇到的一系列严重 问题。具体地说,软件危机主要有以下一些典型表现:1.对软件开发成本和进 度的估计常常很不准确。2.用户对“已完成的”软件系统不满意的现象经常发 生。3.软件产品的质量往往靠不住。4.软件常常是不可维护的。5.软件通常没 有适当的文档资料。6.软件成本在计算机系统总成本中所占的比例逐年上升。 7.软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。 1.1.2产生软件危机的原因:在软件开发和维护的过程中存在这么多严重问题,一方面 与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。软 件不同于硬件,它是计算机系统中的逻辑部件而不是物理部件。 1.1.3消除软件危机的途径:1、认识到软件是程序、数据及相关文档的完整集合。 2. 认识到软件是一种组织良好、管理严密、各类人员协同配合、共同完成的工程 项目;3、推广使用在实践中总结出来的开发软件的成功的技术和方法,探索 更好更有效的技术和方法;4、开发和使用更好的软件工具。。总之,为了解决 软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。软 件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一 门新兴学科。 1.2软件工程 1.2.1软件工程的介绍:软件工程是指导计算机软件开发和维护的一门工程学科。定 义:采用工程的概念、原理和方法来开发与维护软件,把经过时间考验而证明 正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出 高质量的软件并有效地维护它。 1.2.2软件工程的基本原理:1、用分阶段的生命周期计划严格管理2、坚持进行阶段 评审3、实行严格的产品控制4、采用现代程序设计技术5、结果应能清楚地审 查6、开发小组的人员应该少而精7、承认不断改进软件工程实践的必要性 1.2.3 软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集 合称为方法学,也称为范型。软件工程方法学包含3个要素方法、工具和过程。 目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学

相关文档
最新文档