软件工程.docx

上传人:b****5 文档编号:8216704 上传时间:2023-01-29 格式:DOCX 页数:24 大小:172.89KB
下载 相关 举报
软件工程.docx_第1页
第1页 / 共24页
软件工程.docx_第2页
第2页 / 共24页
软件工程.docx_第3页
第3页 / 共24页
软件工程.docx_第4页
第4页 / 共24页
软件工程.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

软件工程.docx

《软件工程.docx》由会员分享,可在线阅读,更多相关《软件工程.docx(24页珍藏版)》请在冰豆网上搜索。

软件工程.docx

软件工程

第一章

1.以往40年内最重要的技术:

集成电路、因特网、计算机;

未来10年最重要的技术:

因特网、集成电路、无线技术、智能技术等。

2.计算机软件装备的特点:

⑴非常复杂

①逻辑复杂——远远高于硬件的逻辑复杂度

②开发复杂——成本难以估算;进度难以控制;人员素质要求;质量得不到保证。

⑵成本高

 

(3)风险大

(4)维护困难

㈠维护形式多样化:

①改正性:

修改故障;②完善性:

增加功能;③适应性:

移植

㈡维护成本越来越高——55%到70%

㈢维护带来的问题

3.软件是最迫切的需求

因为

(1)对软件的需求:

超出了我们现有的开发能力;

(2)现有的软件:

是脆弱的、不可靠的,且很难进行设计、测试、维护和升级。

所以,软件已成为当前社会的核心产品与核心问题,应绝对优先。

4.运用工程化思想进行软件开发

(1)需求分析

(2)软件设计(3)程序设计(4)软件维护

第二章

1.计算机软件:

与计算机系统操作有关的程序以及任何与之相关的文档的集合

软件定义:

一个软件必须由一个完整的配置组成。

软件是程序、数据及相关文档的完整集合。

2.程序:

由程序设计语言所描述的、能为计算机所识别、理解和处理的语句序列。

(1)程序设计语言具有良好、严格语法和语义

(2)目前程序设计语言主要有以下几种类型

面向机器:

如汇编语言、机器语言等

面向过程:

如Fortran,Pascal,C等等

面向对象:

如Java等等

面向问题:

如结构化查询语言SQL等等

3.文档:

记录软件开发活动和阶段性成果、理解软件所必需的阐述性资料

编写文档目的:

(1)促进对软件的开发,管理和维护

(2)便于各种人员(用户,开发人员)的交流

4.软件特点:

⏹不会老化

⏹逻辑产品(智力,无形)

⏹维护困难和复杂(完善,纠错,…...)

⏹生产只需复制

⏹软件开发性质如成本、进度等难以估计

⏹软件的开发更加依赖于开发人员的业务素质、智力、人员的合作、组织和管理

5.软件定义:

一个软件必须由一个完整的配置组成。

软件是程序、数据及相关文档的完整集合。

5*.软件危机:

软件开发的高成本与低质量的矛盾称为软件危机。

软件在开发和维护过程中遇到的一系列问题

–困扰学术界和工业界

–用户对软件开发缺乏信心

–软件开发的高投入和高风险

6.软件危机的表现:

(1)成本高

(2)计算机软件和硬件费用比(3)软件质量得不到保证(4)由于软件质量问题导致失败的软件项目非常多(5)进度难以控制(6)维护非常困难

7.产生软件危机的根源

⏹逻辑产品,不同于物理产品

⏹复杂性高

⏹规模大

⏹影响软件生产率和质量的因素比较复杂

⏹缺乏有效、系统原理、原则、方法和工具的指导和辅助

8.解决危机的技术途径

(1)提出有效的方法和工具支持软件开发

(2)应用牵引技术的发展

⏹瀑布模型

⏹结构化软件开发方法

⏹OO软件开发方法

(3)技术推动应用的深化

(4)应用的扩大和深入

9.软件工程:

是运用工程的、数学的、计算机等科学概念、方法和原理来指导软件开发和管理和维护的一门学科。

10.软件工程构成三要素

(1)过程

(2)方法(3)要素之间相互关联和支持

11.软件工程目标:

正确性、可靠性、可维护性、可重用性、可追踪性、可移植性、可互操作性、有效性。

12.软件工程原则:

抽象、模块化、信息隐藏、局部化、一致性、完全性、可验证性、实践经验的总结

13.软件工程方法指的是完成软件工程项目的技术手段,包括支持项目计划和估算、系统和软件需求分析、软件设计、编码、测试和维护的各种方法和技术;

软件工具是指用来辅助软件开发、维护和管理的软件,包括项目管理工具、配置管理工具、分析和设计工具、程序设计工具、测试工具、维护工具及集成化的计算机辅助软件工程(CASE)环境等;

软件过程是指软件生存周期中的一系列相关活动,包括软件开发活动所需完成的一系列任务和完成这些任务的工作步骤。

14.为什么要学习软件工程

学习软件工程的目的就是学会运用软件工程的概念、原理、技术和方法,以指导计算机软件的开发与维护,经济、高效地开发出满足用户需求的软件产品,并对应用软件进行有效的管理和维护。

15.软件开发和维护过程中遇到一系列严重的问题

对软件开发成本和进度估计不准确。

对软件开发成本和进度估计不准确。

软件产品质量靠不住。

软件可维护性差。

软件可维护性差。

软件没有适当的文档材料

传统的软件开发速度远远跟不上应用速度。

16.产生软件危机的原因

与软件本身的特点有关:

缺乏“可见性”、规模庞大

和软件开发与维护的方法不正确有关:

忽视软件需求分析的重要性;

 

第三章

1.软件生命周期:

软件从提出开发开始到最终灭亡所经历的时期

2.可行性研究

⏹任务

–了解用户要求和现实环境,从技术、经济、市场等方面研究并论证开发该软件系统的可行性

⏹技术途径

–调查和了解用户要求和现实环境

–攒写调查报告

–可行性论证和分析(技术、经济等)

–如可行,制定初步项目开发计划(人员,进度)

3.需求分析

⏹任务

–确定用户对待开发软件系统的需求包括:

⏹功能

⏹性能

⏹运行环境约束

⏹重要性

–软件开发依据,软件验收的标准

⏹困难性

–难以说清,动态变化,歧义,复杂

⏹技术途径和工具

–需求分析人员需与用户不断、反复地交流和商讨,使用户需求逐步准确化、一致化、完全化

–抽象、问题分解、快速原型、多视点等技术

⏹阶段性产品

–软件需求规格说明书SRS(功能,性能和运行环境约束)

4.概要设计

⏹任务

–根据SRS建立目标软件系统总体结构、设计全局数据库和数据结构,规定设计约束,制定集成测试计划等等。

⏹技术途径和工具

–根据软件需求规格说明书,自顶向下,逐步求精,抽象,模块化,局部化,信息隐藏…...

⏹阶段性产品

–概要设计规格说明书

–数据库或数据结构设计说明书

–集成测试计划。

5.详细设计

⏹任务

–细化概要设计所生成的各个模块,并详细描述程序模块的内部细节(算法,数据结构等),形成可编程的程序模块,制订单元测试计划

⏹技术途径

–根据SRS和概要设计结果进行,单入口单出口,PDL

⏹阶段新产品

–详细设计规格说明书

–单元测试计划

6.实现

⏹任务

–根据详细设计规格说明书编写源程序,并对程序进行调试和单元测试,验证程序与详细设计文档一致性

⏹技术途径和工具

–以详细设计规格说明书为依据、基于某种程序设计语言进行编码

⏹阶段新产品

–源程序代码

7.集成测试

⏹任务

–根据概要设计规格说明书,将经过单元测试的模块逐步进行集成和测试

⏹技术途径和工具

–以概要设计规格说明书和集成测试计划为依据,进行集成模块并进行测试

–IDE,专有工具等

⏹阶段性产品

–生成满足概要设计要求、可运行的系统源程序和系统集成测试报告

8.确认测试

⏹任务

–根据软件需求规格说明书,测试软件系统是否满足用户的需求

⏹途径

–由用户参与,以软件需求规格说明书为依据进行确认测试

–专有工具

⏹阶段性产品

–可供用户使用的软件产品(文档,源程序)

9.软件维护

⏹任务

–对使用后的软件进行维护例如:

⏹修正使用过程中发现的错误-纠错性维护

⏹增加新的功能-完善性维护

⏹从一个环境搬迁到另一个环境-适应性维护

⏹途径

–以文档和源程序为基础按用户要求进行

⏹阶段性产品

⏹版本更新的软件产品

10.软件开发模型:

是软件开发全过程、软件开发活动以及它们之间关系的的结构框架

–软件项目的管理提供里程碑和进度表

–为软件开发提供原则和方法

11.软件开发模型种类

⏹以软件需求可完全确定为前提的瀑布模型

⏹在软件开发初期只能提供基本需求所采用的渐进式开发模型如原型模型、螺旋模型

⏹以形式化开发方法为基础的变换模型

12.瀑布模型

⏹主要思想

–软件开发过程与软件生命周期是一致的

–相邻二阶段之间存在因果关系

–需对阶段性产品进行评审

⏹瀑布模型在软件工程中占有重要的地位

⏹不足

–缺乏灵活性

–到最后阶段才能得到可运行的软件版本

 

13.优点

–有助于获取用户需求,加强对需求的理解

–尽早发现软件中的错误

–支持需求的动态变化

–适合于需求动态变化,事先难以确定系统

⏹不足

–不能支持风险分析

14螺旋模型

⏹基本思想

–螺旋模型是瀑布模型、原型模型的有机结合,同时增加了风险分析

⏹优点

–有助于获取用户需求,加强对需求的理解

–尽早发现软件中的错误

–支持需求的动态变化

–支持风险分析,可降低或者消除软件开发风险

–适合于需求动态变化,事先难以确定并且开发风险较大的系统

 

15.CASE工具和环境

⏹计算机辅助软件工程(CASE)

–在软件工程活动中,软件开发人员按照软件工程的方法和原则,借助于计算机及其软件工具的帮助来开发、维护和管理软件产品的过程

⏹CASE工具

–支持CASE的工具(编译器,编辑器–推土机、锄头)

⏹集成CASE环境

–将CASE工具、信息按统一标准和接口组装起来,使工具间、人员间、各个过程间能方便交互的环境。

–如VisualC++将编辑、编译、调试、界面设计、安装程序生成等等集成在一起。

CASE工具和环境的类别

⏹目前已有大量的CASE工具

–项目管理工具:

估算项目成本和工作量,制定项目规划等等;

–分析和设计工具:

用于系统建模;

–程序设计工具:

编译器,调试器等;

–测试工具:

测试用例生成,程序动态跟踪工具

思考题

⏹你认为软件开发有什么特点?

面临主要问题是什么?

⏹软件开发模型和软件生命周期有何区别?

⏹软件开发模型在软件开发过程中起到什么作用?

没有它行吗?

⏹CASE工具和环境在软件开发过程中起到什么作用?

没有它行吗?

面向对象的基本概念

1.面向对象的软件开发方法学

✓OO的思想体系

✓OO的方法:

ØOOA(面向对象的需求分析方法)

ØOOD(面向对象的软件设计方法)

ØOOT(面向对象的软件测试方法)

✓OO的开发过程

✓OO的开发工具

2.面向对象方法与结构化方法的区别

OO方法:

✓对现实世界中的实体或者概念对象分进行建模

✓对象各负其责

✓对象通过消息进行协同,完成复杂的任务

结构化方法:

✓研究功能分解的方法

✓通过复杂的功能组合实现系统功能

3.面向对象方法的优越性

1.直观、自然、简单

2.支持递增式开发

3.支持软件重用

4.软件结构更科学,更能够适应未来变化

4.软件工程的目标:

在给定成本、进度的前提下,开发出具有:

正确性、可靠性、有效性、可理解性、可修改性、可维护性、可移植性、可重用性和可追踪性的软件产品

5.软件工程的原则:

抽象\、信息隐藏(局部化)、模块化(高内聚,低耦合)、一致性、完全性、可验证性

6.关于软件的运行特征:

正确性、可靠性、有效性、完整性、可用性

7.关于软件承受修改的能力:

可理解性、可维护性、灵活性

8.关于软件对新环境的适应能力:

可移植性、可重用性、可互操作性、\

9.软件质量控制方法:

(1)系统化的开发方法与工具

(2)良好的软件结构:

(高内聚,低耦合;信息隐藏;局部化)(3)标准化,文档化

10.程序设计规则:

♦统一的、有意义的变量命名与函数命名方法

♦统一的编码风格与格式

♦统变量与函数的作用域尽量小

♦一的、准确的、完整的程序注解

♦尽量采用简单的算法

♦模块之间的接口尽量简单、自然

11.软件开发规则:

♦开发未始,规则先行

♦勿因小失大

♦软件质量是首要目标

♦软件结构至关重要

♦文档和程序同样重要

12.OO:

What&Why

What:

对象、属性、操作、类、消息、继承、聚集

Why:

(1)顺应人类思维习惯,让软件开发人员在解空间中直接模拟问题空间中的对象及其行为

(2)改善软件结构(模块化与封装),提高软件灵活性

(3)支持软件重用

(4)支持增量式开发,支持大型软件开发

13.对象

对象=名字+属性集+方法集+消息集

对象的外部接口=公有属性集+方法集+消息集

对象的外部接口=公有属性集+方法集+消息集

对象接收消息后执行某些方法

面向对象=对象+类+继承+消息+多

面向对象是提高软件开发的效率和质量的有效手段

14.类

类是某些对象共同特征的表示

类是创建对象的模板,对象是类的实例

类描述对象的属性名及类型、对象方法的实现途径

类的所有实例(对象)具有相同的属性名称及类型、相同的方法、相同的消息响应方式

15.消息与方

消息传递是对象与外部世界关联的唯一途径

对象接收消息后执行某些方法,以便:

(1)获取对象状

(2)改变对象状(3)完成某项计算或控制功

为实现的方便与效率计,通常将消息合并至方法

15.继

单重继承:

子类仅从一个父类继承属性和方法

子类可以覆盖父类的部分属性和方法

多重继承:

子类可从多个父类继承属性和方法

继承机制的意义

避免冗余,简化类或对象之间的接口

支持软件重用

16.态

重载

相同的函数名称,属于不同的类或由不同的参数类型,而导致不同的功能或行为

重设

子类覆盖父类的方法

17.多态

相同的消息由同一(父)类的不同对象接收时,导致不同的行为

编译时多态:

由编译器决定函数名与函数体的联编

运行时多态:

在运行时刻动态决定函数名与函数体的联编

18.OO技术的现状、未来

现状:

(1)OOP,OOD和OOA成为最重要的软件开发方法

(2)OOP,OOD和OOA成为最重要的软件开发方法

未来:

(1)OO的形式化与自动化

(2)OO的形式化与自动化(3)软件开发人员必须从ThinkProcedurely转变为ThinkObject-Orientedly

19.任务和原则

任务:

对应用问题及其环境进行理解和分析,

对问题涉及的信息、功能及系统行为建模,

确保用户需求的准确化、一致化和完全化,

最终形成需求规格说明书

通常将需求分析过程分为三个阶段:

问题分析、需求描述、需求评审

20.原则

(1)在问题分析阶段:

将对问题的理解与软件开发经验相结合,

剔除不合理需求,发现有价值的潜在需求对用户需求进行建模

(2)在需求描述阶段:

完整性、一致性和准确性

(3)在需求评审阶段:

用户、分析人员和设计人员共同评审

Delphi7集成开发环境

主窗口,对象浏览器,对象树状列表,窗体设计器,代码编辑器

♦代码编辑器:

在默认情况下,代码编辑器隐藏在窗体设计器之下,在代码编辑器和窗体设计器之间进行切换可以按F12键。

♦ 代码编辑器用来写Delphi应用程序的源代码。

它具有带颜色的语法高亮,将光标放在某个字符上,按下F1键,可以获得与该字符相关的语法帮助。

♦当程序中含有多个窗口时,会有多个单元出现在代码编辑器中。

单击单元页标签,可以实现多个单元之间的切换。

一个简单的程序

Delphi应用程序的一般步骤:

♦设计程序的用户界面

选择组件→放置组件→排列组件→设置组件的属性

♦添加代码

♦编译运行程序

♦保存文件

Delphi程序的基本结构:

项目文件窗体文件单元文件

 

轻护视维

用现代工程的概念、原理、技术和方法进行软件开发、管理和维护。

组织管理措施

软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。

技术措施(方法和工具)

在软件开发的每个阶段都有许多繁琐重复的工作需要做,在适当的软件工具辅助下,开发人员可以把这类工作做得既快又好。

软件工程支撑环境

把各个阶段使用的软件工具有机地集合成一个整体,支持软件开发的全过程,则称为软件工程支撑环境。

软件工程

软件工程是指导计算机软件开发和维护的一门工程学科。

软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。

它借鉴传统工程的原则、方法,以提高质量,降低成本为目的。

软件工程的性质

软件工程是涉及计算机科学、工程科学、管理科学、数学等领域的一门综合性的交叉学科。

计算机科学中的研究成果均可用于软件工程,但计算机科学着重于原理和理论,而软件工程着重于如何建造一个软件系统。

软件工程要用工程科学中的观点来进行费用估算、制定进度、制定计划和方案;

要用管理科学中的方法和原理进行软件生产的管理;

要用数学的方法建立软件开发中的各种模型和各种算法,如可靠性模型,用户需求的形式化模型等。

软件工程的基本原理(p7)

1.用分阶段的生命周期计划严格管理

坚持进行阶段评审

实行严格的产品控制

采用现代程序设计技术

结果应用清楚地审查

开发小组的人员应少而精

承认不断改进软件工程实践的必要性

§1.3软件生命周期

软件生命周期

是指一个软件项目被提出并着手实施开始,到该软件报废或停止使用为止。

经历三个时期:

.软件定义

.软件开发

.运行维护(也称为软件维护)

软件生命周期各阶段的基本任务

软件生命周期由软件定义、软件开发和运行维护(也称为软件维护)3个时期组成,每个时期又进一步划分成若干个阶段。

1.问题定义

2.可行性研究

3.需求分析

4.总体设计

5.详细设计

6.编码和单元测试

7.综合测试

8.运行与维护

1.问题定义

回答:

“要解决的问题是什么?

通过调研,写出关于问题性质、工程目标和工程规模的书面报告,并得到客户的确认。

2.可行性研究

回答:

“对于上一个阶段所确定的问题有行得通的解决办法吗?

研究并论证软件系统的可行性,对方案进行选择并形成可行性分析报告。

3.需求分析

这个阶段的任务主要是确定目标系统必须具备哪些功能。

.建立逻辑模型必须准确完整地体现用户的要求。

数据模型(实体-联系图)

功能模型(数据流图)

行为模型(状态转换图)

.书写规格说明书用正式文档准确地记录对目标系统的需求。

4.总体设计(概要设计)

回答“概括地说,应该怎样实现目标系统?

.建立软件系统的总体结构

.定义功能模块的接口

.设计全局数据库或数据结构

.规定设计约束

.编制概要设计文档

5.详细设计(模块设计)

把解法具体化,回答“应该怎样具体地实现这个系统呢?

.模块详细设计模块的详细功能、算法、数据结构、

模块间的接口等设计,

拟定模块测试方案。

.编制模块的详细规格说明汇总模块详细设计的结果,

形成模块详细规格说明书。

6.编码和单元测试

写出正确的容易理解、容易维护的程序模块。

.编码

根据模块详细规格说明书,把详细设计的结果翻译成用选定的语言书写的程序。

.单元测试

对模块程序进行测试,验证模块功能及接口与详细设计文档的一致性,并形成单元测试报告。

7.综合测试

通过各种类型的测试(及相应的调试)使软件达到预定的要求。

.集成测试

根据设计的软件结构,把经过单元测试检验的模块按某种选定的策略装配起来,在装配过程中对程序进行必要的测试。

.验收测试

按照规格说明书的规定,由用户对目标系统进行验收。

.现场测试或平行运行

平行运行就是同时运行新开发出来的系统和将被它取代的旧系统,以便比较新旧两个系统的处理结果。

用正式的文档资料把测试计划、详细测试方案以及实际测试结果保存下来,作为软件配置的一个组成部分。

8.软件维护

维护阶段的关键任务是,通过各种必要的维护活动使系统持久地满足用户的需要。

.改正性维护诊断和改正在使用过程中发现的软件错误;

.适应性维护修改软件以适应环境的变化;

.完善性维护根据用户的要求改进或扩充软件使它更完善;

.预防性维护修改软件为将来的维护活动预先做准备。

每一项维护活动都应该经过提出维护要求(或报告问题),分析维护要求,提出维护方案,审批维护方案,确定维护计划,修改软件设计,修改程序,测试程序,复查验收等一系列步骤。

在每一个阶段结束之前都必须进行正式严格的技术审查和管理复审,从技术和管理两方面对这个阶段的开发成果进行检查,通过之后这个阶段才算结束;如果没通过检查,则必须进行必要的返工,而且返工后还要再经过审查。

§1.4软件过程

是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。

通常使用生命周期模型概括地描述软件过程。

生命周期模型规定了软件过程包含的各个阶段,以及完成这些阶段的顺序。

典型的生命周期模型如下所述。

传统软件工程方法学的软件过程,基本上可以用瀑布模型来描述。

图1.2所示为传统的瀑布模型。

需求分析验证规格说明验证设计验证编码测试综合测试维护

瀑布模型是由文档驱动的

快速原型模型如图1.4所示(图中实线箭头表示开发过程,虚线箭头表示维护过程),

快速原型模型是不带反馈环的,软件产品的开发基本上是线性顺序进行的。

快速原型模型的第一步是快速建立一个能反映用户主要需求的原型系统,让用户在计算机上试用它,通过实践来了解目标系统的概貌。

通常,用户试用原型系统之后会提出许多修改意见,开发人员按照用户的意见快速地修改原型系统,然后再次请用户试用……一旦用户认为这个原型系统确实能做他们所需要的工作,开发人员便可据此书写规格说明文档,根据这份文档开发出的软件可以满足用户的真实需求。

原型的用途是获知用户的真正需求,一旦需求确定了,原型将被抛弃。

增量模型也称为渐增模型,如图1.5所示。

使用增量模型开发软件时,把软件产品作为一系列增量构件来设计、编码、集成和测试。

每个构件由若干个相互协作的模块构成,并且能够完成相对独立的功能。

其中第一个增量构件往往实现软件的基本需求,提供最核心的功能。

用增量模型开发出的软件具有较好的可扩充性

 

网站开发技术

WEB客户端开发技术HTML技术JavaScript技术CSS技术XML技术WAP与WML技术

WEB服务端开发技术ASP技术PHP技术JSP技术

网站设计与管理的基本过程

1、网站的规划和分析

建站目的与目标、可行性分析、资源规划

2、网站运行环境的建立

域名注册、建站方式的选择、Web服务器的构建

3、网站的设计与制作

网站总体设计、网站内容与结构设计、网站可视化设计、网页的制作

4、网站管理系统的建立

5、网站的测试、推广与维护

网站的测试、网站的营销推广、网站的日常更新与维护

网站总体设计

网站CI形象设计

网站的内容设计

网站的总体结构

网站的目录结构与链接设计

网站的整体风格和创意设计

网站CI形象设计

CI:

企业形象。

CI设计主要指网站的标志、色彩、字体、标语等。

1、网站标志、名称设计

网站有代表性的人、事、物

专业性网站的代表性物品

英文名称作标志

网站名称要合法、合理、合情

2、网站的内容设

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1