软件工程复习总结

软件工程复习总结
软件工程复习总结

学科内容:

可行性研究:经济可行性、技术可行性、社会可行性。

软件工程的三要素:工具、过程、方法。

软件过程部分:

软件的生命周期:

?指软件孕育、诞生、成长、成熟、衰亡的过程

软件生命周期包括:定义、开发、维护。

定义包括:问题定义、可行性研究、需求分析。

开发包括:设计、编码、测试。

维护包括:运行维护。

?

?什么是软件过程模型?

?又称:软件开发模型/软件生命周期模型

?指软件生命周期内过程、活动和任务的结构框架

?

?过程模型是一个模型(需要进行具体定义和剪裁方可使用)

?过程模型是对不同过程的一种组织方式。

瀑布模型的优缺点:

优点

?可强迫开发人员采用规范的方法

?严格地规定了每个阶段必须提交的文档

?要求每个阶段的所有产品都必须经过质量保证小组的仔细验证

缺点

?无法解决软件需求不明确或不准确的问题;可能导致最终开发的产品不能真正满足用户需要

?瀑布模型比较适合开发需求明确的软件(极少的情况)

?不适应需求经常变化的软件开发

?开发早期存在的问题往往要到交付使用时才发现,维护代价大

瀑布模型的特点:

阶段间具有顺序性和依赖性、推迟实现的观点(目的是什么?)、质量保证的观点(怎样实现的?)、只适用于极小型的项目!(为什么?)

瀑布模型的精髓和内涵:

精髓:针对每一步骤的要求严格的验证

内涵:保证质量

*********什么是瀑布式思维,怎样避免?

增量模型说明:

把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能

使用增量模型时,第一个阶段的增量构件往往实现软件的基本需求,提供最核心的功能;后面的增量构架逐渐添加系统的功能

增量和迭代开发的理解和实际应用:

增量模型的精髓和内涵:

精髓

?从最主要的需求开始进行增量开发,不断获得用户的使用反馈,上一次增量作为下一次增量的基础,从而使需求逐渐完善

内涵

?通过多次增量,不断获得用户的反馈,并使需求逐步精化

迭代的概念,增量?????????

*****************瀑布式有什么缺点;迭代、增量有什么优缺点,怎么实现

需求(requirements)就是确定系统该做些什么以及该符合什么条件。

软件需求包括:功能需求、性能需求、用户或人的因素、环境需求、界面需求、文档需求、数据需求、资源使用需求、安全保密要求、可靠性需求、软件成本消耗与开发进度需求、其他非功能性要求

需求分析的目标:明确性、完整性、一致性、可测试性

需求一致性的含义:一致性

?业务需求与用户需求的一致性

?用户需求与功能需求的一致性

RUP以及敏捷过程都采用迭代和进化式的需求分析

需求工程的任务:

1需求获取2需求分析、协商与建模3需求规约与验证4需求管理

如何进行增量和迭代式的开发?????(即增量和迭代的实际应用)

常用的需求分析(启发)技术:常用的分析和建模方法有面向数据流方法、面向数据结构方法和面向对象的方法。

?实地观察

?访谈

?开会

?问卷调查

?原型制作

?研究文档

?研究竞争对手

几种常用的过程模型及其特点:(了解一下)

快速原型模型:

什么是“原型”

?原型是快速实现和运行的早期版本,反映最终系统部分重要特性

?常见的原型实例:人机界面;系统主要功能

?优点:通常能反映用户真实需求、软件产品的开发基本上是线性顺序进行的

快速原型模型的精髓和内涵:

精髓:通过在早期建立原型系统,获得用户的反馈,并由反馈进一步精化用户需求

内涵:通过用户反馈精化需求

螺旋模型:

缺点:一个周期的执行时间太长、要有方法和自动化工具支持,否则无法实施、进行风险分析的费用可能较大

螺旋模型的精髓和内涵:精髓:风险驱动内涵:规避风险

可行性研究的目的(作用?):

1用最小的代价在尽可能短的时间内确定问题是否能够解决。2不是解决问题,而是确定问题是否值得去解决。 3说明该软件开发项目的实现在技术上、经济上和社会条件上的可行性;评述为合理地达到开发目标可能选择的各种方案。

可行性研究的内容:技术可行性、经济可行性、法律可行性、操作可行性

可行性研究的步骤:1项目目标和规模2研究目前的系统3形成高层逻辑模型4问题的重新定义。

敏捷和统一过程知识点:

?1,RUP的阶段划分

?1初始阶段2细化阶段(精化阶段)3构造阶段(构建阶段)4交付阶段(产品化阶段)

?

?2,RUP中迭代的理解 (RUP迭代阶段图):

?RUP:Rational Unified Process 四个阶段:

?1初始阶段2细化阶段(精化阶段)3构造阶段(构建阶段)4交付阶段(产品化阶段)

?工作流程(九个):业务建模、需求、分析设计、实施、测试、部署、配置和变更管理、项目管理、环境。

?RUP的六个最佳商业实践:

? 1 迭代式开发(develop software iteratively)

?给定的时间内,开发一个大型的复杂的软件系统,定义问题并构建解决方案是不可能一蹴而就的。

?允许每次迭代中的需求变化;

?每个迭代完成一个版本的程序。

? 2 管理需求(manage requirements)

?需求是变化的;

?RUP实现对需求的动态管理。

? 3 使用基于构件的体系结构(use component-based architectures)

?构件就是已存在的模块或子系统(重用);

?降低复杂度,提高效率,提高软件质量。

? 4 可视化软件建模(visually model software)

?建模就是建立模型,模型是对客观事物的抽象;

?可视化模型更容易理解;

?可采用UML建立可视化的模型。

? 5 验证软件质量(verify model quality)

?软件质量决定软件的成败;

?RUP对软件质量的评估贯穿于整个开发过程的始终。

? 6 控制软件变更(control changes to software)

?管理软件变更;

?软件修改可控、可跟踪。

?

但现实总是残酷的,需求总是会变化。变化的原因有以下几种:1)业务发生了变化;

2)客户对业务的理解发生了变化;

3)需求分析人员对需求的理解出现了偏差,需要修正。

?3,敏捷思想如何对待需求变化的(拥抱变化):

1现场客户:很多开发团队并不喜欢客户对他们指手画脚,甚至认为他们不停提出的需求变化让他们疲于应对。但现场客户给团队开发带来的益处还是要远远超过他带来的坏处。无论团队中聚集了多么权威的领域专家,但真正了解客户需求的还是客户自己。(即客户就是开发团队的一员,客户加入到开发团队)

2定期迭代:不仅要定期迭代,而且要尽可能地让迭代周期短,并及时交付可以工作的小版本发布。XP的迭代周期通常为一周,而发布一个小版本大约是一个月。

敏捷方法绝对不可闭门造车,因为需求总是可能存在二义性,且需求总是处于不断的变化中。若能定期交付一个可以工作的小版本,一方面可以给与开发团队和客户以信心,另一方面也有助于我们及时获得客户的反馈。

3持续改进:开发过程总是会出现错误,无论是开发方法、技能,还是团队管理与团队合作。持续地改进我们的开发方法、管理方法与开发过程,才能够及时而有效地解决错误,避免重蹈覆辙。一个能够持续改进的团队是一个成长的团队,同时必然会是一个拥抱变化的团队。

?4,敏捷宣言的理解:

1个体和交互胜过过程和工具2可以工作的软件胜过面面俱到的文档3客户合作胜过合同谈判4响应变化胜过遵循计划

迭代思想的具体体现:具体应用实例(一定要掌握)

软件方法部分

业务建模知识点

业务建模对于软件开发的作用:描述现实,帮助发现软件需求。

建模的目的:(帮助大家进行沟通和理解)

业务建模和系统建模的区别:针对的对象不同:前者针对业务现状,后者针对系统

1,业务建模的目的?

业务建模的目的(from RUP)

?理解将要实施的系统的组织结构和动态特性

?理解当前在目标组织中的问题,并明确改进的潜力

?确保客户、最终用户和开发人员对目标组织有统一的理解

?获取用于支持目标组织的系统需求

2,什么情况需要进行业务建模。

不熟悉业务机构(当团队成员对业务现状不了解时)

机构最近进行了一些业务过程重组

机构准备进行业务过程重组

建立机构主要部分使用的软件

机构中大型复杂工作流的文档不足

3,业务建模的手段:领域模型、业务对象图、业务用例图、活动图

第一种方式:领域建模(本质就是类图)领域建模是业务对象图的一个特例。反映的是现实世界的一个概念,而非软件系统的概念

第二种方式:后面两个(比较麻烦)

4,领域模型的理解:

领域模型基本元素就是概念类,反映出现实世界的一种概念,是类图的一种简化的表示方式?基本概念:

领域模型(domain model)是对领域内的概念类或现实世界中对象的可视化表示。

领域模型也称为概念模型、领域对象模型和分析对象模型。

在UP中领域模型指的是对现实世界概念类的表示,而非软件对象的表示。

什么是概念类?????

?通俗的讲,概念类是思想、事物或对象。

?正式的讲,概念类可以从其符号、内涵和外延来考虑。

–符号:表示概念类的词语或图形

–内涵:概念类的定义

–外延:概念类所适用的一组示例

5,可视化建模的主要作用(沟通和理解)

Why Model?

1Modeling achieves four aims:

?Helps you to visualize(可视化)a system as you want it to be.

?Permits you to specify (描述)the structure or behavior of a system.

?Gives you a template that guides you in constructing(构造)a system.

?Documents (文档)the decisions you have made.

2、You build models of complex systems because you cannot comprehend such a system in its entirety

3、You build models to better understand the system you are developing

用例(系统)建模知识点

1,用例、参与者、用例图概念的理解

几个概念的含义

参与者:在系统之外,透过系统边界与系统进行有意义交互的任何事物

参与者要点:

系统外

?参与者代表在系统边界之外的真实事物,并不是系统的成分

系统边界

?参与者透过系统边界直接与系统交互,参与者的确定代表系统边界的确定 有意义的交互

?系统需要关注其交互过程,即系统职责

任何事物

?人、外系统、外部因素、时间

用例:用例实例是系统执行的一系列动作,这些动作将生成特定参与者可观测的结果值

一个用例定义一组用例实例(场景)

2,针对实际问题进行用例建模,手绘用例图

先识别参与者,再识别参与者对应的用例就画出来了

反映的是外部参与者与内部系统的一个交互

画业务建模、系统建模图(组成部分、细节)

以某种图(用例图、活动图、顺序图、用例规约)描述用例。

必考内容,看以什么形式考(用例图+描述应该为一体)。

3,理解用例建模中用例规约的最重要和最本质的工作

用例建模中最重要的东西不是画用例,而是写用例规约

用例规约具体描述用例,是最核心的东西,才可以进行下一步的设计,因为真正参考的还是用例规约

用例规约:更进一步的精度

?用例文档的核心,而用例图作为用例文档的总图

?进一步的精度:有层次的文档

?文档中每一句话都有其价值

用例图是骨架,而用例规约则是其内在的肉

用例分析知识点

1,分析类和设计类的区别

用例分析的产物(参与类类图和用例实现(即顺序图))

简单的三层架构BCE

什么是分析类?

分析类代表了“系统中必须具备职责和行为的事物”的早期概念模型

分析类处理主要的功能需求,模型化问题域对象

根据备选构架定义三类分析类

边界类:系统及其执行者的边界

控制类:系统的控制逻辑

实体类:系统实用的信息

边界类直接可以通过用例得出,不需要任何思考,起个名字直接画出来就行了,控制类也不用想

但是实体类需要通过用例分析出来有哪些实体。

边界类表示系统与执行者之间的边界

?代表系统与环境的交互

?是接口和外部事物的中间体

?构造型<>

三类边界类

?用户界面类

?系统接口类

?设备接口类

每对执行者/用例定义一个边界类

控制类表示系统的控制逻辑

?系统行为的协调器

?构造型<>

查找控制类

?在系统开发早期,为一个用例定义一个控制类,负责该用例的控制逻辑

实体代表了待开发系统的核心概念

实体类提供了另一个理解系统的观点

?显示了系统的逻辑数据结构

?传统的面向对象方法就是从这个角度进行分析和设计

使用构造型<>

可以从以下中找到实体类

?词汇表(需求)、业务领域模型(业务建模)、用例事件流(需求)、关键抽象概念(构架分析) 什么是设计类??????

2,用例分析的流程的理解

用例分析流程(步骤):

1.完善用例规约

2.实现每一个用例

? 2.1从用例行为中查找类

? 2.2将用例行为分配给类

? 2.3构造该用例的参与类类图

3.对每一个得到的分析类

? 3.1说明职责

? 3.2说明属性和关联

? 3.3限定分析机制

3,*********系统用例的实现:手绘顺序图***********

软件分析设计考察点

1,类图、类之间的关系,类图的画法(必考)

继承、实现、依赖等等,关系的表示,公有、私有、保

护成员的表示

类间关系:

依赖关系

use-a:自行车和打气筒、充电电池和充电器

关联关系

has-a:主人和自行车(固定的对应关系)

聚合关系

组合关系

泛化关系:is-a:继承,基类派生类

实现关系接口,接口类

2,数据库建模(ER图、表结构图)

步骤:需求分析

概念结构设计(最重要的)

逻辑结构设计(最重要的)

物理结构设计(不作为重点,开发中经常涉及不到的内容)

具体的部署和实施

概念结构设计-----ER图

ER图中的E和BCE中的E的相同点和区别:

相同点:通常两者是一致的

区别:ER图中的E是需要持久化到数据库中的实体,而BCE中的E通常指所有的实体:包括需要持久化和不需要持久化的实体

形成独立于及其特点,独立于各个DBMS产品的概念模式(E-R图)

ER(Entity Relation)图也成ER模型

逻辑结构设计-----表结构(图之间的关系,多为外间关系)

逻辑设计阶段:首先将E-R图转换成具体的数据库产品支持的数据模型,如关系模型,形成数据库逻辑模式;然后根据用户处理的要求、安全性的考虑,在基本表的基础上在简历表要的视图,形成数据的外模式。

(表和字段设计技巧------逻辑设计)

数据库建模以及表的联合查询是重点,外连接不考,内连接考。

三个表的From变成inner join的形式(两者是相同的)

3,数据库SQL的使用(内连接、联合查询)

create table std (id integer,name varchar(20));

create table course (id integer,name varchar(40));

create table std_course (std_id integer,course_id integer);

insert into course values(1,'数据库原理');

insert into course values(2,'数据结构');

insert into course values(3,'软件工程');

insert into course values(4,'C++编程');

select * from course;

insert into std values(1,'小王');

insert into std values(2,'小李');

insert into std values(3,'小张');

insert into std values(4,'小赵');

select * from std;

insert into std_course values(1,1);

insert into std_course values(1,2);

insert into std_course values(1,3);

insert into std_course values(1,4);

insert into std_course values(2,1);

insert into std_course values(2,2);

insert into std_course values(2,3);

insert into std_course values(3,1);

insert into std_course values(3,2);

insert into std_course values(4,4);

课程任务:

1,完成mysql的安装(也可使用其它数据库)

2,按照上面的sql语句完成实验环境的建立。

3,请使用一条SQL查询选修各门课程的课程名称和对应的学生人数(分别使用联合查询方式和inner join方式实现)

select https://www.360docs.net/doc/ad3017910.html, as '课程名称',

count(sc.std_id) as '选修人数'

from course c,std_course sc

where c.id=sc.course_id

group by sc.course_id;

select https://www.360docs.net/doc/ad3017910.html, as '课程名称',

count(sc.std_id) as '选修人数'

from course c

join std_course sc on c.id=sc.course_id

group by sc.course_id;

select https://www.360docs.net/doc/ad3017910.html, as '课程名称',

https://www.360docs.net/doc/ad3017910.html,t as '选修人数'

from course c

join

(

select count(*) as cnt,course_id

from std_course

group by course_id

) a on a.course_id=c.id;

4,深入练习,请完成下面查询:

请使用一条SQL实现学生列表的查询,要求显示如下三列:学生名称、所选修课程名称、所选修课程的选修人数

select

https://www.360docs.net/doc/ad3017910.html, as '学生姓名',

https://www.360docs.net/doc/ad3017910.html, as '课程名称',

https://www.360docs.net/doc/ad3017910.html,t as '选修人数'

from std s

join std_course sc on s.id=sc.std_id

join course c on c.id=sc.course_id

left join (

select count(*) as cnt,course_id

from std_course

group by course_id ) a

on a.course_id = sc.course_id;

select

https://www.360docs.net/doc/ad3017910.html, as '学生姓名',

https://www.360docs.net/doc/ad3017910.html, as '课程名称',

https://www.360docs.net/doc/ad3017910.html,t as '选修人数'

from std s,std_course sc,course c,

(

select count(*) as cnt,course_id

from std_course

group by course_id ) a

where s.id=sc.std_id

and c.id=sc.course_id

and a.course_id = sc.course_id;

5,left join之探索

新增一门新的课程:

insert into course values(5,'Oracle DBA');

该课程现在没有任何学生选修,好看下面的两个语句的执行结果区别:

select distinct https://www.360docs.net/doc/ad3017910.html, as '课程名称',sc.course_id

from course c

join std_course sc on c.id=sc.course_id;

select distinct https://www.360docs.net/doc/ad3017910.html, as '课程名称',sc.course_id

from course c

left join std_course sc on c.id=sc.course_id; --这一行是否存在不影响查询结果的条数

内连接时,是仅取出满足where条件以及关连关系的记录。

外连接时,是先取出满足where条件的course表中的记录,然后再针对每一条结果去匹配std_course表中的记录。

4,数据库建模的流程

数据库设计的步骤:

1.需求分析

2.概念结构设计

3.逻辑结构设计

4.物理结构设计

5.数据库实施

6.数据库

运行和维护。

基于职责的类架构和分层架构强调基于职责

职责需要知道:

5,基于职责的分层架构设计

?分层的思路是将系统按功能职责进行划分,将同一类职责的功能抽象为一层。

?信息系统中常用的三层结构:

–1, 表示层--用户界面

–2, 业务逻辑层--业务处理流程

–3, 数据层--持久化存储

模型视图控制器构架MVC

模型,即相关的数据,它是对象的内在属性

视图是模型的外在表现形式,一个模型可以对应一个或者多个视图,视图还具有与外界交互的功能

控制器是模型与视图的联系纽带,控制器提取通过视图传输进来的外部信息转化成相应事件,然后由对应的控制器对模型进行更新;相应的,模型的更新与修改将通过控制器通知视图,保持视图与模型的一致性

MVC构架示意图B-C-E

以构造型<>表示系统不同层次

以B-C-E三层结构划分系统的三类功能

?边界层(Boundary)负责系统与执行者之间的交互

?控制层(Control)处理系统的控制逻辑

?实体层(Entity)管理系统使用的信息

层之间建立依赖关系

类设计模式中的职责:需要知道集中职责模式以及分别解决什么问题

6,基于职责的类设计模式

定义:设计类图

我们已经讨论过,同一种UML图可以用于多种情况。在业务建模及用例分析中类图可以用于将领域概念可视化。

在设计建模中的类图被称为设计类图(Design Class Diagram,DCD)

面向对象设计的5个职责模式

创建者(Creator)

信息专家(Information Expert)

低耦合(Low Coupling)

控制器(Controller)

高内聚(High Cohesion)

7,常见的分层架构,UML中如何表示

典型的三层还有多层

三层架构在UML中通过包图来表示

?分层的思路是将系统按功能职责进行划分,将同一类职责的功能抽象为一层。

?信息系统中常用的三层结构:

–1, 表示层--用户界面

–2, 业务逻辑层--业务处理流程

–3, 数据层--持久化存储

UML中用包图表示分层架构

8,层次图、结构图、流程图、数据流图的基本概念(了解就行)

层次图:1.描述软件的层次结构2.层次图中,一个方框代表一个模块,方框间的连线表示调用关系。结构图:1.一个方框表示,一个模块,框内著名模块的名字或主要功能2.一个模块指向另一个模块的

箭头或直线表示前一模块对后一模块的调用3.调用直线边的带注释的小箭头,表示调用是从一个模块传给另一个模块的数据,也指出了传送方向,箭头尾部是空心圆表示传递数据,箭头尾部是实心圆表示传递控制信息。

流程图:1.程序流程图独立于任何一种程序设计语言,比较直观、清晰、易于学习掌握2.为使用流程图描述结构化程序,必须限制流程图只能使用五种基本控制结构。:顺序型、选择型、先判断型循环、后判断型循环、多种情况选择。

数据流图???????

9,内聚、耦合的关系,常用的设计方法

高内聚和低耦合还是基于职责的设计思想

高内聚并不是类功能越多越好,而是类功能越单一越好高内聚和低耦合是统一的过程

针对内聚和耦合的设计方法比如:面向接口编程、分层的思想

耦合性:偶和形式对软件系统结构中,各模块间相互联系紧密成的一种度量。

内聚性:只一个模块内部各个元素彼此结合的紧密程度的度量,若一个模块内元素(语句之间、程序之间)联系的越紧密,则它的内聚性就越高。

模块间偶和强度

低耦合:无直接耦合、数据耦合、特征耦合。

中耦合:控制耦合。

较强耦合:公共环境耦合。

强耦合:内容耦合。

模块独立性由强到弱。

高内聚:功能内聚、顺序内聚。

中内聚:通信内聚、过程内聚。

低内聚:时间内聚、逻辑内聚、偶然内聚。

模块独立性由强到弱。

软件管理部分

风险管理方式:风险列表

1,风险管理意识:十大风险清单

管理的范围:四个P!

?People

?Product

?Process

?Project

总之:试卷反映了基本知识点和工程思想的理解

软件工程知识点总结

软件工程知识点总结-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)工程文化:包括工程价值、工程思想和工程行为三个方面的内容。

软件工程复习资料

软件概念:与计算机系统操作有关的程序、数据以及相关文档的完整集合 软件特点:逻辑实体、智力产品,制造即拷贝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)便于测试和维护,减少修改影响向外传播的范围模块化、信息隐藏,局部化是什么关系局部化与信息隐藏是一对密切相关的概念。局部化就是指将一些使用上密切相关的元素尽可能放在一起。对一个模块来说,局部化是期望模块所使用的数据尽可能是在模块内部定义的。因此,局部化意味着减少模块之间的联系,有助于实现模块之间的信息隐藏。在软件测试和维护期间经常需要修改一些模块的内容。信息隐藏和局部化降低了模块之间的联系,使得在修改一个模块时对其他模块的影响降到最低。“隐藏”的意思是,有效的模块化通过定义一组相互独立的模块来

软件工程重点整理

软件工程重点 (吐血整理——林新发) 红色的是重点中的重点 前面数字是课本页码 第一章概论 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.必须划分描述数据、功能和行为的模型,从而可以分层次地揭示细节

软件工程知识点总结

软件工程(简要知识点) 一、. 软件过程五个模型对比(瀑布模型、快速原型、增量、螺旋、喷泉模型) 二、可行性研究: 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、白盒测试技术(逻辑覆盖、基本路经测试)

软件工程导论复习知识点

一、软件: 软件定义: 软件=程序+文档+数据 软件特点: 1、具有抽象性 2、没有明显的制造过程 3、软件的维护比硬件的维护要复杂得多 4、对计算机系统有着不同程度的依赖性 5、尚未完全摆脱手工艺的开发方式 6、软件本身是复杂的 7、软件成本相当昂贵 8、相当多的软件工作涉及到社会因素软件的发展: 程序设计、程序系统、软件工程 软件危机: 软件危机指的是软件开发和维护过程中遇到的一系列严重问题。 软件危机的问题: 如何开发软件,怎样满足对软件的日益增长的需求;如何维护数量不断膨胀的已有软件。 软件危机表现: 1.开发成本难以控制,进度不可预计; 2.软件系统的质量和可靠性很差,难以满意; 3.软件文档相当缺乏,软件系统不可维护; 4.软件开发生产率很低,软件产品供不应求。 5.软件产品成本十分昂贵。

软件危机产生原因: 1、软件本身的特点 2、对软件开发与维护存在许多错误认识和做法 3、软件开发与维护的方法不正确 解决软件危机途径: 1、将软件开发看成是一种组织严密、管理严格、各类人员协同配合共同完成的工程项目。 2、研究和推广成功的软件开发技术和方法。 3、开发和使用好的软件工具。 软件生命周期: 软件所经历的定义、开发、使用和维护直到废弃所经历的时期。 程序设计环境: 源程序编辑,编译或解释,链接,调试和运行工具的集合 软件工程环境: 软件定义,设计和实现,测试和维护等各个阶段所使用的软件工具的集合 二、软件工程: 软件工程定义: 研究如何应用一些科学理论和工程上的技术来指导软件的开发,用较少的投资获得高质量的软件的一门学科。 软件工程性质: 涉及计算机科学、工程科学、管理科学、数学等领域,着重于如何建造一个软件系统。用工程科学中的观点来进行费用估算、制定进度、制定计划和方案。用管

软件工程知识点汇总

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

大连理工大学城市学院软件工程导论期末考试复习重点

软件工程导论重点 第一章重点: 软件的概念:软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。 软件危机概念:软件危机暴发于上个世纪六十年代末。 主要表现为:软件的发展速度远远滞后于硬件的发展速度,不能满足社会日益增长的软件需求。软件开发周期长、成本高、质量差、维护困难。 软件工程概念: 概括地说,软件工程是指导计算机软件开发和维护的工程学科。 采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。 软件工程的目标: 软件工程的目标是运用先进的软件开发技术和管理方法来提高软件的质量和生产率,也就是要以较短的周期、较低的成本生产出高质量的软件产品,并最终实现软件的工业化生产。 基本目标: 付出较低的开发成本 达到要求的软件功能 取得较好的软件性能 开发的软件易于移植 需要较低的维护费用 能按时完成开发工作,及时交付使用 软件生存期概念和包含内容: 软件也有一个孕育、诞生、成长、成熟和衰亡的生存过程,我们称这个过程为软件生命周期或软件生存期。 软件生存期分为三个时期 软件定义 软件开发 运行维护

软件工程的方法: 软件工程包含技术和管理两方面的内容,是技术和管理紧密结合所形成的工程学科。 通常将软件开发全过程中使用的一整套技术方法的集合称为方法学(methedology),也称为范型(paradigm)。 目前使用最广泛的软件工程方法学:传统方法学(结构化方法学),面向对象方法学。 软件工程三要素: 三要素:方法、工具和过程。 第二章重点: 生存期模型有哪些: ?瀑布模型 ?快速原型模型 ?增量模型 ?螺旋模型 ?喷泉模型 ?统一过程 ?基于构件的开发模型 ?敏捷过程 前四种面向过程后四种面向对象 给一个模型,判断出是哪一模型的 第三章重点: 结构化分析方法的概念: 传统的分析建模方法称为结构化分析(structured analysis,SA)方法。 三大建模:(未完待续!!!) 功能建模: 功能建模的思想就是用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。功能模型

软件工程基础知识点总结

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

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

软件工程知识点总结

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

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

软件工程导论(第6版)知识点总结、复习课_图文.

复习课 --------酷爱YC 第一章 1、什么是软件危机,什么是软件工程 软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。它包括两方面:(1如何开发软件,以满足对软件日益增长的需求;(2如何维护数量不断膨胀的已有软件。 软件工程:采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件,并有效地维护它。 2、完整的软件配置由哪些内容组成 软件配置主要包括程序,文档和数据等成分。 3、软件生命周期分为哪3个时期和8个阶段,每个阶段的任务(工作分别是什么,重要性如何

概括地说,软件生命周期由软件定义、软件开发和运行维护3个时期组成 1、软件定义(系统分析。 软件定义时期的任务是:确定软件开发工程必须完成的总目标;确定工程的可行性;导出实现工程目标应该采用的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。这个时期的工作通常又称为系统分析,由系统分析员负责完成。软件定义时期通常进一步划分成3个阶段,即问题定义、可行性研究和需求分析。 (1 问题定义,确定系统要解决的问题是什么。成果:关于问题性质、工程目标和工程规模的报告。 (2 可行性研究,确定问题是否有可用的、能行得通的解(包括:技术、经济、操作、社会等方面的可行性。这个阶段的任务不是具体解决问题,而是研究问题的范围,探索这个问题是否值得去解,是否有可行的解决办法。成果:可行性研究报告。 (3 需求分析,确定软件系统的必须实现的功能、必须达到的性能、必须满足的运行环境要求。系统分析员在需求分析阶段必须和用户密切配合,充分交流信息,以得出经过用户确认的系统逻辑模型。通常用数据流图、数据字典和简要的算法表示系统的逻辑模型。在需求分析阶段确定的系统逻辑模型是以后设计和实现目标系统的基础,因此必须准确完整地体现用户的要求。成果:软件需求规格说明书(SRS,内容包括:系统的逻辑模型;系统(子系统的名称、功能描述、接口、基本数据结构、性能、设计需求、开发标准、验收原则等。 2、软件开发。 开发时期具体设计和实现在前一个时期定义的软件,它通常由下述4个阶段组成:总体设计,详细设计,编码和单元测试,综合测试。其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。 (1 总体设计(概要设计,回答“怎样实现目标系统”。

软件工程复习知识点

软件工程复习知识点 1. 软件危机的概念,内容,原因及消除的途径; 软件危机的概念: 软件危机是指在计算机软件的开发和维护过程中遇到的一系列严重问题。 概括地说,软件危机包含两方面问题:如何开发软件,以满足对软件日益增长的需求; 如何维护数量不断膨胀的已有软件。 软件危机产生的原因: 软件本身的复杂性、难衡量的特点;2.软件开发与维护的方法不正确。 消除软件危机的途径: (1)对计算机软件应当有一个正确的认识;(2)应当有组织、有计划、通过严格的管理手段进行软件的开发;

(3)及时总结软件开发的成功技术和方法并加以推广; (4)开发和使用更好的软件工具; 总之,为了解决软件危机,既要有技术措施,又要有必要的组织管理措施。 2. 软件工程的定义,基本原理; 定义:软件工程是指导计算机软件开发和维护的一门工程学科

基本原理:软件工程的7条基本原理: (1)用分阶段的生命周期计划严格管理 (2)坚持进行阶段评审 (3)实行严格的产品控制 (4)采用现代程序设计技术 (5)结果应能清楚地审查 (6)开发小组的人员应该少而精 (7)承认不断改进软件工程实践的必要性 3. 软件工程方法学的基本概念、内容; 基本概念:把在软件生命周期全过程中使用的一整套开发和管理技术方法的集合成为软件工程方法学,也称为范型。软件工程方法学包含3个要素:方法、工具和过程。 内容:目前使用得最广泛地软件工程方法学,分别是传统方法学和面向对象方法学。传统方法学也称为生命周期方法学或结构化范型。 4. 软件生命周期的具体内容,每一个阶段的任务是什么?结合具体的工程例子 来理解做软件项目主要分那几个个阶段。 ①问题定义:确定要求解决的问题是什么 ②可行性研究:决定该问题是否存在一个可行

软件工程导论最全复习总结

1、软件危机是指在计算机开发过程中的开发和维护过程中所遇到的一系列的 严重问题。 2、软件是程序、数据及相关文档的完整集合,程序是能够完成预定功能和性能的可执行的 程序序列;数据是是使程序能够适当的处理信息的数据结构;文档是开发、使用和维护程序所需要的图文资料。 3、软件工程学包含3个要素:方法、工具、过程。 4、目前使用最广泛的软件工程方法学是传统方法学和面向对象方法学。 5、软件工程方法学的软件过程基本上可以用瀑布模型来描述。 6、瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型。 7、Rup把软件生命周期划为:初始、精化、构建、移交阶段。 8、可行性研究的三方面:技术可行性、经济可行性、操作可行性。 9、数据流图(DFD是一种图形化技术,他描绘信息流和数据从输入移动到输出的过程中 所经受的变化。 10、数据字典是关于数据信息的集合,也就是对数据流程图中所包含的所有元素的定义 的集合。 11、数据流图和数据字典共同构成系统的逻辑模型,没有数据字典,数据如就不严格, 没有流程图,数据字典也难以发挥作用。

12、需求分析阶段结束之前,系统分析员应该写出软件需求规格说明书,以书面形式准 确的描述软件需求。 13、9、结构化分析方法就是面向数据流自顶向下逐步求精进行需求分析的方法。 14、ER图中包含了实体、关系和属性,矩形代表实体,菱形表示关系,椭圆或圆角矩 形表示属性,用直线把实体和其属性连接。 15、验证软件需求的正确性:一致性、完整性、现实性、有效性。 总体设计又称 16、总体设计的基本目的是回答“概括地说,系统应该如何实现?”, 为 概要设或初步设计。 17、模块的独立程度可以有两个定性标量度量:内聚和耦合。 18、软件测试的目标:(1测试是为了发现程序中的错误而执行程序的过程;(2好的 测试方案是极可能发现迄今为止尚未发现的错误的测试方案;(3成功的测试是发现可至今为止尚未发现的错误的测试。 19、软件测试步骤:模块测试、子系统测试、系统测试、验收测试、平行运 行。 20、软件可靠性是程序在给定的时间点,按照规格说明书的规定,成功的运行的概率。

山东大学-软件工程复习重点整理

第一章 1.1软件工程(SE)的定义、向、作用: SE:在将有关软件开发与应用的概念科学体系化的基础上,研究如有计划、有效率、经济的开发和利用能在就算机上正确运行的软件的理论和技术的工程法学,一些开发和维护软件的法、过程、原则。是一个系统工程,既有对技术问题的分析与综合,也有对开发过程和参与者的管理。 SE的向:面向对象模式,结构化模式,基于过程的模式等 SE的作用:付出较低的开发成本,达到要求的软件功能,取得较好的软件性能,开发的软件易于移植,需要较低的维护费用,能按时完成开发工作,及时交付使用。 1.2开发模式:软件开发的全部过程,活动和任务的结构框架,它能直观的表达的表达软件开发全过程,明确要完成的主要活动,任务和开发策略。 1.3说明错误、故障和失效的含义及联系(并举例): 错误:是在软件生产过程中人为产生的错误(需求说明中的错误,代码中的错误) 故障:是在功能实现过程中产生的问题;是错误导致的结果,是在软件中一个错误的表现(一个错误可能产生多个缺陷,静态存在的) 失效:是相对于系统指定行为的偏离,系统违背了它应有的行为(动态存在的) 联系:当一个开发者编写程序时,会在代码中出现错误。当这个程序被编译或集成到一个系统中时,系统就存在故障。当你运行这个系统时,可能会导致失效,即人们产生错误,故障是错误的结果(部观角:从开发者的角度看待问题),当故障执行时出现失效(外部视角:从用户角度看到的问题)。并不是所有的错误会导致故障,并非每个缺陷都对应相应的失败。1.4软件质量应从哪几个面衡量,论述之: (1产品的质量)(2过程的质量)(3商业环境背景下的质量) (1)产品的质量:用户从失败的数目和类型等外部特征进行评价,如果软件具有足够的功能并且易于学习和使用,用户就断定软件是高质量的;开发者从缺陷的数目和类型等部特征来作为产品质量的依据。 (2)过程的质量:有很多过程都会影响到最终的产品质量,只要有活动出了差错,产品的质量就会受到影响;开发和维护过程的质量与产品的质量是同等重要的。 (3)商业环境背景下的软件质量:将技术价值和商业价值统一起来。 1.5软件系统的系统组成(系统的要素有哪些):对象(实体)+ 活动+ 关系+ 系统边界活动:活动是发生在系统中的某些事情,通常描述为由某个触发器引发的事件,活动通过改变属性把一个事物变成另一个事物。 对象:活动中涉及的元素称为对象。 关系:是指活动与对象之间的关系。 系统边界:即系统包含的功能与系统不包含的功能之间的界限。 1.6现代软件工程大致包含几个阶段及各个阶段的文档: (1)需求分析:主要包括问题定义、可行性分析、需求分析《需求规格说明书》

软件工程导论复习重点总结很全(第六版)(精)

第1章软件工程学概述 1.1 软件危机 1.1.1 软件危机的介绍 软件危机(软件萧条、软件困扰:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 软件危机包含下述两方面的问题: 如何开发软件,满足对软件日益增长的需求; 如何维护数量不断膨胀的已有软件。 软件危机的典型表现: (1对软件开发成本和进度的估计常常很不准确; (2用户对“已完成的”软件系统不满意的现象经常发生; (3软件产品的质量往往靠不住; (4软件常常是不可维护的; (5软件通常没有适当的文档资料; (6软件成本在计算机系统总成本中所占的比例逐年上升; (7软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。 1.1.2 产生软件危机的原因 (1与软件本身的特点有关 (2与软件开发与维护的方法不正确有关

1.1.3 消除软件危机的途径 对计算机软件有正确的认识。 认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。应该推广使用在实践中总结出来的开发软件的成功技术和方法,并继续研究探索。 应该开发和使用更好的软件工具。 总之,为了解决软件危机,既要有技术措施(方法和工具,又要有必要的组织管理措施。 1.2 1.2.1 软件工程的介绍 软件工程:是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。(期中考 软件工程的本质特性: 软件工程关注于大型程序的构造 软件工程的中心课题是控制复杂性 软件经常变化 开发软件的效率非常重要 和谐地合作是开发软件的关键 软件必须有效地支持它的用户

软件工程导论知识点概要

1.1软件危机 软件危机的表现 软件危机是指在计算机软件的开发、使用和维护过程中遇到的一系列严重问题。 1)成本难以估计、成本高。 2)软件开发进度估计不准确,项目延期比比皆是。 3)软件质量得不到保证(功能和性能)。 4)用户对“已完成的”软件系统不满意的现象经常发生。 5)维护非常困难(多样性、复杂性、副作用)。 6)软件通常没有适当的文档。 7)软件产品供不应求,跟不上计算机普及速度。 产生软件危机的原因 (1)及软件本身的特点有关(逻辑复杂,成本高,风险大,难于维护)。 (2)及软件开发及维护的方法不正确有关: 软件≠程序(软件是程序、数据及相关文档的完整集合)急于求成=拔苗助长(软件从定义、开发、使用和维护、废弃要经历一个漫长的生命周期) 各自为阵无方法学(应要组织良好、管理严密、各类人员协作共同完成的工程项目) 1.2软件工程定义 软件工程是应用计算机科学、数学、心理学及管理科学等原理开发软件的工程。它借鉴传统工程的原则、方法,以提高质量、降低成本和提高效率为目的。 软件工程包括技术和管理两方面的内容,是技术及管理紧密结合所形成的工程学科。 软件工程的特性: 1. 软件工程关注于大型程序的构造 (传统的程序设计技术和工具是支持小型程序设计的)

2. 软件工程的中心课题是控制复杂性(问题分解) 3. 软件经常变化(考虑将来要发生的变化) 4. 开发软件的效率非常重要(寻求更好、更有效的工具) 5. 和谐地合作是开发软件的关键(运用标准和规程) 6. 软件必须有效地支持它的用户(软件要服务于用户) 7. 在软件工程领域中通常是由具有一种文化背景的人替具有另一种文化背景的人创造产品 软件工程的7条基本原理 1.用分阶段的生命周期计划严格管理 2.坚持进行阶段评审 3.实行严格的产品控制 4.采用现代程序设计技术 5.结果应能清楚地审查 6.开发小组的人员应该少而精 7.承认不断改进软件工程实践的必要性 软件工程方法学 通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学(methodology),也称为范型(paradigm)。 目前使用得最广泛的软件工程方法学,分别是传统方法学和面向对象方法学。 软件工程方法学包含3个要素:方法、工具和过程。 1.3软件生命周期 每阶段的基本任务: 1. 问题定义 2. 可行性研究 3. 需求分析 4. 总体设计 5. 详细设计 6. 编码和单元测试 7. 综合测试 8. 软件维护

软件工程复习资料完整版

、选择题: 、用例图中,用来表示用例的符号为() 、协作图中包含的元素包括() 、在类图中,哪种关系表达整体与部分的关系() 。 ?泛化 ?实现 ?依赖 ?聚合 F 列各种图形符号中,用来表示组成关系的符号为 ()。 、()工具在软件的详细设计中不能使用。 、从严格意义上讲,下列个选项中属于顺序图的元素是() 。 ?对象 ?参与者 ?消息 ?激活 、下列图形中,()属于的动态视图。 ?协作图 ?状态图 ?活动图 ?顺序图 、数据字典是软件需求分析阶段的最重要的工具之一,其最基本的功能是() ?数据库设计 ?数据通信 ?数据关系描述 ?数据定义 、详细设计与概要设计衔接的图形工具是 ()。 ?图 ?程序图 ?图 ?图 、中,大多数建模者把节点分为() A ?设备 ?构件 ?处理器 ?显示器 、()是一种特殊形式的状态机,用于对计算流程和工作流程建模。 ?时间图 ?流程图 ?活动图 ?状态图 、()描述从状态到状态的控制流程,常用来对系统的动态特征进行建模。 ?状态图 ?序列图 ?协作图 ?活动图 下列特点属于描述用例的特点的是() 。 相对独立:不需要与其他用例交互,即功能是完备的 用例的执行结果是可观测有意义的 ?用例由参与者发起(不能自启动,或者由其他用例启动) ? 一个用例是一个单元(需求单元、分析单元、设计单元、开发单元、测试单元、部署单元 ) 、在图书管理系统中,读者与书籍之间的“借阅”关系的多重性是() 、我希望能够支持跨行业务; 我插入卡片输入密码后可以让我选择是取钱还是存钱; 为了方 便,可以设置一些默认的存取金额按钮; 我可以修改密码,可以挂失; 我希望可以缴纳电话 费、水费、电费等;为安全起见,应该有警示小心骗子的提示条,有摄像头;如果输入三次 密码错误,卡片应当可以自动吞没;下列那些是有效的用例() {Constrain} 对象 ?链 激活 ?消息 “软件危机”是指()。 计算机病毒的出现 ? ?流程图 利用计算机进行经济犯罪活动 软件开发和维护中出现的一系列问题 人们过分迷恋计算机系统 、快速原型是利用原型辅助软件开发的一种新思想, 它是在研究()的方法和技术中产生的。 需求阶段 设计阶段 测试阶段 ?软件开发的各个阶段 Use Case

相关文档
最新文档