软工秘籍1

带图更精彩

第一章软件工程概论

一、软件

软件:程序、数据及其相关文档

特点:抽象性、无明显制造过程、无老化、对硬件依赖性。

分类:系统软件、支持软件、应用软件

软件设计过程中,随着时间的推移,软件比硬件投入逐渐增大。

发展阶段:设计-系统-工程

过程:软件规格说明、软件开发、软件确认、软件改进

特性:易理解性、可见性、可支持性、可接受性、可靠性、健壮性、可维护性、速度等。

步骤:

1.制定计划:总目标、功能性能可靠性接口要求、可行性研究

2.需求分析和定义:需求定义图表表示、软件需求说明书。

3.软件设计:概要设计,划分模块;详细设计,确定模块内结构及接口。

4.程序编写

5.软件测试:单元测试、组装测试。

6.运行维护:改正性维护、适应性维护、完善性维护。

 

 

二、软件开发模型

第一次实验探索开发,再进行进一步的开发。

渐增模型,基于原型。

螺旋模型:制定计划,风险分析,实施工程,客户评估。四个象限轮转,每转一圈产生一个原型。

喷泉模型:可迭代

三、软件生存周期

系统开发生命期:计划阶段,分析阶段,设计阶段,实现阶段,支持阶段。

四、软件工程

软件工程定义:软件工程是开发、运行、维护和修复软件的系统方法。

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

软件工程项目基本目标:低成本,达到要求,较好性能,易于移植,维护费用低,按时交付。

软件工程七条原理:

1. 分阶段的生存周期计划严格管理。

2. 坚持进行阶段评审。

3. 实行严格的产品控制。

4. 采用现代程序设计技术。

5. 结果应能清楚地审查。

6. 合理安排软件开发小组的人(少而精)。

7. 承认不断改进软件工程的必要性。

软件工程基本原则:

1. 分解

2. 独立性

3. 一致性

4. 确定性

第二章 软件计划

 可行性研究报告

一、问题定义

问题背景,开发系统现状,开发的条件与理由,总体要求。

定义步骤

系统分析员到问题现场

1)听取用户要求

2)调查开发背景

3)查看用户报告

4)加工整理

5)与用户讨论

6)改正错误

7)撰写双方满意的问题定义报告文档

8)确定双方是否可进行深入系统可行性研究方向意向

二、可行性研究

五个方向:

1. 经济可行性

2. 技术可行性

3. 操作可行性

4. 法律可行性

5. 时间可行性

具体内容:问题初步认识,市场调查,分析准备,环境分析。

可行性研究步骤:

 

 

三、软件计划内容

软件范围,环境资源(重点:人力资源)

四、软件价格估计

 

 

 

2. 代码行价格估算技术

①源代码行②劳动量③软件生产率④LOC计算方法

3. 任务分解方法

分解若干独立任务,分别估计各个开发任务成本,最后累加。

4. 自动估计成本方法

减轻劳动,但要大量经验做基础,良好数据库系统支持。

五、成本/收益分析

 

 

 

六、项目开发计划

 

 

 

6.专题计划要点

测试计划、质量保证计划、配置管理计划、人员培训计划、系统安装计划等。

 

 

 

第三章 软件需求分析

一、任务

1深入描述软件性能

2确定约束和接口

3定义软件的其他有效性

需求分析阶段的任务

确定对系统的综合需求

分析系统的数据需求

导出系统的逻辑模型

修正系统开发计划

开发原型系统

 

二、过程

问题识别:建立分析所需要的通信途径,保证对问题的顺利分析

软件的需求包括:

 

 

常用分析方法:

 

 

 

 

 

三、原则

1.确定问题与功能

2.对问题进行分解和细化

四、面向数据流分析方法

结构化分析方法

面向数据流进行需求分析的方法

原型化方法

探索性,实验型,进化型。

原型使用策略:废弃策略,追加策略。

 

 

 

 

动态分析方法:状态迁移图、时序图、Petri网

 

 

第四章 面向过程的软件设计方法

一、软件设计的目标和任务

数据设计、系统结构设计、过程设计

软件设计任务:概要设计、详要设计

软件设计过程:

 

 

 

二、软件设计基础

 

软件结构:模块结构和数据结构

程序结构:树状结构、网状结构

模块化:把比较大的软件划分为简单的模块结构。划分的时候要抽象。

抽象化:软件系统设计中有不同的抽象层次。

数据抽象:在不同层次上描述数据对象的细节。

 

三、模块独立性

模块三个基本属性:功能、逻辑、状态。

划分模块准则:耦合、内聚。

1.模块间的耦合性

 

数据耦合:传输的简单数据

标记耦合:参数表传递记录信息,就是标记耦合。

控制耦合:模块间传递的控制变量。

外部耦合:与外部设备相连

公共耦合:松散公共耦合和紧密公共耦合

内容耦合:进入另一模块内部或模块代码重迭

尽量使用数据耦合,少用控制耦合,限制公共耦合,完全不用内容耦合

2.模块内聚

 

功能内聚10分:按功能划分,不可分割的模块

信息内聚9分:完成多个功能,各个功能在同一数据结构上操作,每一项功能有一个唯一的入口点。

通信内聚7分:模块内功能用相同数据

过程内聚5分:模块按一定顺序

时间内聚3分:模块任务必须在统一时间段内执行。

逻辑内聚1分:把几种相关功能组合在一起

巧合内聚0分:模块内部之间没有联系

 

四、结构化设计方法

1.研究、分析、审查数据流图

2.数据流图决定问题类型:变换型、事务型。

系统结构图的模块:传入模块、传出模块、变换模块、协调模块。

变换型系统结构图:取得数据->变换数据->给出数据。

变换分析方法:重画数据流图;区分有效输入、有效输出和中心变换部分;一级分解;二级分解。

选择模块设计的次序:一个模块全部直接下属模块都设计完成,考虑下层模块的耦合和内聚,黑箱,一个模块的直接下属模块5个左右。

事务型系统结构图:可处理多条事务

事务分析过程

1.识别事务源,

2.规定适当事务型结构,

3.识别各种事务和他们定义的操作

 

软件模块结构改进:

模块功能的完善:执行规定的功能的部分,出错处理的部分,给它的调用者返回一个结束标志。

消除重复功能,改善软件结构:完全相似,局部相似。

模块的作用范围应在控制范围之内:控制范围包括所有从属模块

尽可能减少高扇出结构,随着深度增大扇入。

避免或减少使用病态联接:直接病态联接,公共数据域病态联接,通信模块联接。

模块大小适中:语句行数50~100,保持在一页之内,罪过不超过500行

设计功能可预测的模块,但要避免过分受限制的模块,软件包应满足设计约束和可移植性

设计的后处理

 

五、数据设计和文件设计

数据设计的原则:

 

 

 

 

 

文件设计:

两个阶段:文件设计,物理设计

 

索引顺序文件:

分区文件:

虚拟存储文件:

倒排文件:

6.确定文件的存储介质

7.确定文件的记录格式

8.估算存取时间和存储容量

 

六、过程设计(详细设计)

详细设计工具:图形工具,表格工具,语言工具

程序流程图基本控制结构:顺序,选择,循环。

DO-while 先判断后循环

DO-until 先循环后判断

N-S图

 

问题分析图(PAD)

 

判定表

 

 

 

第五章 程序编码

一、程序设计语言

1.分类

汇编语言和高级语言

 

语言内在特征分类:系统实现语言,静态高级语言,块结构高级语言,动态高级语言。

2.语言的选择

按应用领域

系统用户的要求决定

可以使用的编译程序

程序员的经验知识

软件可移植要求

工程规模大,可编一个专用语言

算法与计算复杂性、软件的可靠性

数据结构的复杂性,软件的可维护性

效率

语言的发展前景

 

 

 

 

 

 

二、结构化程序设计

两方面:使用集中基本控制结构,由粗到细,一步步展开

原则

基本控制结构,控制结构只允许有一个入口和一个出口,复杂结构用基本控制结构组合嵌套。

自顶向下,逐步求精。

三、程序设计风格

1.源程序文档化

标识符的命名,安排注释,程序的视觉组织。

2.数据说明

次序规范化,变量有序化,注释复杂数据结构

3.语句结构

力求简单,直接。

1一行内只写一条语句,

2程序编写首先考虑清晰性,

3程序要直截了当说明程序用意;

4清晰地一,效率第二;

5保证正确,提高速度;

6.避免使用临时变量而使可读性下降。

7.让编译程序简单优化

8.尽可能使用库函数

9.避免不必要的转移。

10.尽量只采用三种基本控制结构编写程序

11.避免使用空的ELSE语句和IF...THEN IF语句

12.避免采用过于复杂的条件测试

13.尽量减少使用“否定”条件的条件语句。

 

 

 

 

四、程序复杂性度量

代码行度量法

McCabe度量法,环路复杂性度量,复杂度小于10

V(G)=m-n+p 弧长-结点数+强联通分量个数

Halstead软件科学

 

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值