2019-12-22 11:13:15 guolongpu 阅读数 183
  • [微信公众号_独立知识点]internet访问解决方案

    “微信公众平台深度开发Java版 v2.0”系列课程共有6季,使用JAVA语言,系统讲解微信公众平台订阅号、服务号官方列出的全部功能接口,包括:自定义菜单、个性化菜单(按需定制菜单)、群发消息、客服消息(有限次消息推送)、模板消息接(无限次消息推送)、微信网页开发(微信WEB开发、微信游戏)、微信JSSDK开发、用户管理、获取用户基本信息、网页授权获取用户基本信息(通过WEB得到用户信息)、二维码(临时二维码、永久二维码)、事件推送、接收普通消息、被动回复用户消息,等知识点。 以及,针对微信公众号开发的服务端架构设计方案。课程以微信公众号开发视角,讲解JAVA开发微信公众号所需的框架、第三方工具。 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决“没有服务器”、“没有固定IP”等开发者遇到的窘境。 课程采用独立知识点讲解,一个知识点,一组课程,真正做到“简单、高效、”以短的时间、实现的学习。更多课程信息请访问CSDN。网址:http://edu.csdn.net/lecturer/631 “微信公众平台企业号开发Java版”陆续上线。 详情 qq2326321088

    8715 人正在学习 去看看 翟东平

 

首先,公示下,抢票神器大全。曾经收集,一直在用的是ByPass分流抢票。

http://www.12306.org.cn/

电脑客户端(独立软件)

 

12306bypass-分流抢票软件(免费)

http://www.12306bypass.com

心蓝12306订票助手(收费)

http://www.bhdata.com/program.asp?action=view&id=39

木鱼抢票.NET版(免费)

http://www.fishlee.net/soft/12306/

360抢票浏览器-360抢票王(免费)

http://12306.360.cn

人生日历抢票软件

http://rili.160.com/

百度卫士抢票版

http://anquan.baidu.com/qp/landingpage

铁路通12306购票助手

http://www.tielutong.net:8055/

猎豹抢票浏览器

http://www.liebao.cn/

 

现在,抢票的两大神器。

①ByPass

基于.NET平台的C#开发。https://www.bypass.cn/

 

 

②GitHub中,开源12306项目

最火的Python智能抢票项目,传送门: https://github.com/testerSunshine/12306

 

 

网速也是一个主要原因。我在实验室的网速比较快,抢票就更快。

 

 

总之,用ByPass分流抢票软件,抢票+候补的方式,网速要快点,慢的可以去网吧,应该是能抢到的。

如果,按上面的方式,还是失败了。那就挂机抢,也还是用,抢票+候补的方式。肯定是能抢到票的。

有候补,如果是中等,机会很大。

2017-12-23 19:52:04 qq_34803572 阅读数 3212
  • [微信公众号_独立知识点]internet访问解决方案

    “微信公众平台深度开发Java版 v2.0”系列课程共有6季,使用JAVA语言,系统讲解微信公众平台订阅号、服务号官方列出的全部功能接口,包括:自定义菜单、个性化菜单(按需定制菜单)、群发消息、客服消息(有限次消息推送)、模板消息接(无限次消息推送)、微信网页开发(微信WEB开发、微信游戏)、微信JSSDK开发、用户管理、获取用户基本信息、网页授权获取用户基本信息(通过WEB得到用户信息)、二维码(临时二维码、永久二维码)、事件推送、接收普通消息、被动回复用户消息,等知识点。 以及,针对微信公众号开发的服务端架构设计方案。课程以微信公众号开发视角,讲解JAVA开发微信公众号所需的框架、第三方工具。 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决“没有服务器”、“没有固定IP”等开发者遇到的窘境。 课程采用独立知识点讲解,一个知识点,一组课程,真正做到“简单、高效、”以短的时间、实现的学习。更多课程信息请访问CSDN。网址:http://edu.csdn.net/lecturer/631 “微信公众平台企业号开发Java版”陆续上线。 详情 qq2326321088

    8715 人正在学习 去看看 翟东平

模块独立性

 

模块化设计是指将软件分解为多个独立模块,不同的模块具有不同的功能和职责。每个模块可以独立的进行开发、测试,最后组装成完整的软件。

 

模块独立性是指软件系统中每个模块只涉及软件要求的子功能,而与软件系统中其他模块的接口是简单的。例如如果一个模块只具有单一功能且与其他模块没有太多的联系,那么称此模块具有模块独立性。

具有高内聚低耦合的模块,才是模块独立性比较强的模块

 

耦合

• 耦合性是程序结构中各个模块之间相互关联的度量

• 它取决于各个模块之间接口的复杂程度、调用模块的方式以及那些信息通过接口

低                            耦合性                                      高

非直接耦合

数据耦合

标记耦合

控制耦合

外部耦合

公共耦合

内容耦合

高                          功能独立性                                   低

 

非直接耦合(Nondirect Coupling)

两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。

• 非直接耦合的耦合性最低,模块独立性最强。

 

数据耦合 (Data Coupling)

一个模块访问另一个模块时,彼此之间是通过简单数据参数 (不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的

 

标记耦合 (Stamp Coupling)

一组模块通过参数表传递记录信息,就是标记耦合

• 这个记录是某一数据结构的子结构,而不是简单变量

 

控制耦合 (Control Coupling)

如果一个模块通过传送开关、标志、名字等控制参数,明显地控制选择另一模块的功能,就是控制耦合

 

外部耦合(External Coupling)

一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,

则称之为外部耦合

 

公共耦合(Common Coupling)

若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合

 

内容耦合 (Content Coupling)

如果发生下列情形,模块之间就是内容耦合:

– 一个模块直接访问另一个模块的内部数据

– 一个模块不通过正常入口转到另一模块内部

– 两个模块有一部分程序代码重迭(只可能出现在汇编语言中)

– 一个模块有多个入口


 

内聚

• 模块内聚性越强,功能独立性越好,对于形成的模块结构有比较好的作用。

• 要求模块结构达到高内聚,低耦合。

高                         内聚性                                      低

功能内聚

信息内聚

通信内聚

过程内聚

时间内聚

逻辑内聚

巧合内聚

高                          功能独立性                                   低

 

 

功能内聚 (Functional Cohesion)

• 一个模块中各个部分都是完成某一具体功能必不可少的组成部分,或者说该模块中所有部分都是为了完成

一项具体功能而协同工作,紧密联系,不可分割的,则称该模块为功能内聚模块

• 功能内聚模块的内聚最高,功能独立性最强

 

信息内聚 (Informational Cohesion)

• 完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点

 

通信内聚(Communication Cohesion)

• 如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为通信内聚模块

• 通常,通信内聚模块是通过数据流图来定义的

 

过程内聚(Procedural Cohesion)

• 使用流程图做为工具设计程序时,如果流程图太大,可以把流程图中的某一部分划出组成模块,就得到过

程内聚模块

– 例如,把流程图中的循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。

 

时间内聚(Classical Cohesion)

• 时间内聚又称为经典内聚

• 大多为多功能模块,但模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行

– 例如,初始化模块和终止模块就是时间内聚模块。

 

逻辑内聚(Logical Cohesion)

• 这种模块把几种相关的功能组合在一起,每次被调用时,由传送给模块的判定参数来确定该模块应执行哪

一种功能。

 

 

巧合内聚(Coincidental Cohesion)

• 当几个模块内正好有一段代码是相同的,将它们抽取出来形成单独的模块,即巧合内聚模块。这种模块没

有独立功能,各部分之间没有联系,或联系很松散。

 

面向对象设计原则

 

里氏替换原则(LSP: TheLiskov Substitution Principle)

是指凡是父类可以出现的地方,子类都可以出现


开闭原则(OCP: TheOpen-Close Principle)

是指一个软件实体应该对扩展开发,对修改关闭,即在不修改源代码的基础上扩展一个系统的行为


单一职责原则(SRP: TheSingle Responsibility Principle)

是指在软件系统中,一个类应该尽量只有一个引起它发生变化的原因


依赖倒转原则(DIP: TheDependency Inversion Principle)

•是指抽象不应该依赖于具体,而是具体依赖于抽象


接口隔离原则(ISP: TheInterface Segregation Principle)

是应该提供小而专的接口,而不是大而全的接口


组合/聚合原则(FCOI: Favor Composition OverInheritance)

是指优先使用组合/聚合进行复用,而不是继承


迪米特原则(LoD: Law ofDemeter)

是指一个软件实体应当尽可能少的与其他实体发生相互作用





2018-06-10 16:32:51 MrBaymax 阅读数 273
  • [微信公众号_独立知识点]internet访问解决方案

    “微信公众平台深度开发Java版 v2.0”系列课程共有6季,使用JAVA语言,系统讲解微信公众平台订阅号、服务号官方列出的全部功能接口,包括:自定义菜单、个性化菜单(按需定制菜单)、群发消息、客服消息(有限次消息推送)、模板消息接(无限次消息推送)、微信网页开发(微信WEB开发、微信游戏)、微信JSSDK开发、用户管理、获取用户基本信息、网页授权获取用户基本信息(通过WEB得到用户信息)、二维码(临时二维码、永久二维码)、事件推送、接收普通消息、被动回复用户消息,等知识点。 以及,针对微信公众号开发的服务端架构设计方案。课程以微信公众号开发视角,讲解JAVA开发微信公众号所需的框架、第三方工具。 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决“没有服务器”、“没有固定IP”等开发者遇到的窘境。 课程采用独立知识点讲解,一个知识点,一组课程,真正做到“简单、高效、”以短的时间、实现的学习。更多课程信息请访问CSDN。网址:http://edu.csdn.net/lecturer/631 “微信公众平台企业号开发Java版”陆续上线。 详情 qq2326321088

    8715 人正在学习 去看看 翟东平

背景

在说模块独立性之前,先简单了解下模块的三个基本属性:

  1. 功能:描述该模块实现什么功能
  2. 逻辑:描述模块内部怎么做
  3. 状态:该模块使用时的环境和条件

模块独立性

含义

模块独立性是指软件系统中每个模块只涉及软件要求的具体的子功能。

度量

采用两个准则度量模块独立性 ——「模块间耦合」和「模块内聚」。

模块间耦合

耦合性性按「非直接耦合→数据耦合→标记耦合→控制耦合→外部耦合→公共耦合→内容耦合」顺序依次升高。

模块独立性按「非直接耦合→数据耦合→标记耦合→控制耦合→外部耦合→公共耦合→内容耦合」顺序依次降低。

  • 非直接耦合

    如果两个模块间没有直接关系,这就是非直接耦合。

  • 数据耦合

    如果一个模块访问另一个模块时,彼此之间是通过简单数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的,称这种耦合为数据耦合。

  • 标记耦合

    如果一组模块通过参数表传递记录信息,就是标记耦合。

  • 控制耦合

    如果一个模块通过传递开关、标志、名字等控制信息,明显的控制选择另一模块的功能,就是控制耦合。

    这里写图片描述

  • 外部耦合

    如果一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合 。

  • 公共耦合

    若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。

  • 内容耦合

    这里写图片描述

模块内聚

内聚性按「功能内聚→信息内聚→通信内聚→过程内聚→时间内聚→逻辑内聚→巧合内聚」顺序依次降低;

模块独立性按「功能内聚→信息内聚→通信内聚→过程内聚→时间内聚→逻辑内聚→巧合内聚」顺序依次降低。

  • 功能内聚

    一个模块中各个部分都是完成某一具体功能必不可少的组成部分,是不可分割的。

  • 信息内聚

    这种模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。

  • 通信内聚

    如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为通信内聚模块。

  • 过程内聚

    使用流程图做为工具设计程序时,把流程图中的某一部分划出组成模块,就得到过程内聚模块。

  • 时间内聚

    时间内聚模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。

  • 逻辑内聚

    这种模块把集中相关的功能组合在一起。

    这里写图片描述

  • 巧合内聚

    巧合内聚模块各部分之间没有联系,或即使有联系,这种联系也很松散。
    这里写图片描述

写在最后

个人的学习笔记,有的内容或许有遗漏或者错误,还望斧正。

2014-11-02 18:38:50 u013045552 阅读数 3370
  • [微信公众号_独立知识点]internet访问解决方案

    “微信公众平台深度开发Java版 v2.0”系列课程共有6季,使用JAVA语言,系统讲解微信公众平台订阅号、服务号官方列出的全部功能接口,包括:自定义菜单、个性化菜单(按需定制菜单)、群发消息、客服消息(有限次消息推送)、模板消息接(无限次消息推送)、微信网页开发(微信WEB开发、微信游戏)、微信JSSDK开发、用户管理、获取用户基本信息、网页授权获取用户基本信息(通过WEB得到用户信息)、二维码(临时二维码、永久二维码)、事件推送、接收普通消息、被动回复用户消息,等知识点。 以及,针对微信公众号开发的服务端架构设计方案。课程以微信公众号开发视角,讲解JAVA开发微信公众号所需的框架、第三方工具。 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决“没有服务器”、“没有固定IP”等开发者遇到的窘境。 课程采用独立知识点讲解,一个知识点,一组课程,真正做到“简单、高效、”以短的时间、实现的学习。更多课程信息请访问CSDN。网址:http://edu.csdn.net/lecturer/631 “微信公众平台企业号开发Java版”陆续上线。 详情 qq2326321088

    8715 人正在学习 去看看 翟东平

软件的需求分析阶段知道系统要“做什么”,而软件设计阶段我们明白的是“怎么做”。

软件的设计分为:总体设计/\详细设计

设计基本原理:


总体设计的任务和过程

总体设计分为:面向数据,面向功能,面向对象的分析


设计原则:独立性,规模,深,宽,入,出。作用域。接口。单入单出。预测(黑盒子)

总体设计图形工具

1.层次图:描述层次结构。

2.HIPO图:在层次图的基础上,把图中除了顶层的方框外都加上编号****基本形式:输入,处理,输出。

3.结构图(SC):表达程序结构图形的表示方法,反映程序模块间的层次关系和联系。

成分:模块,模块间调用关系,通信,辅助控制符号。

结构图的四中类型:传入,传出,变换,协调

结构图VS数据流图

数据流图反映的是程序中数据流的情况

结构图反映的是程序中控制流的情况

结构图VS程序流程图

Battle1

结构图着重反映模块间的隶属关系,即调用关系和层次关系。

程序流程图表达程序执行的顺序及执行顺序依赖的条件。

Battle2

结构图着眼于软件系统的总体结构,不涉及内部细节,只考虑模块作用,以及上下级模块关系

程序流程图表达执行程序的具体算法

面向数据流的设计方法

目标:给出设计软件结构的一个系统化途径。

作用:信息流映射成软件结构。

映射的方法由信息流的类型决定

    信息流的类型分为两类

 1.变换流:信息-->系统-->外换内-->加工-->内换外-->离开。

    变换型系统结构图:输入,变换中心,输出。

 2.事务流:信息-->输入-->处理-->输入类型选动作-->执行

    根据信息流类型,进行不同的分析。

       变换分析:把具有变换流特点的数据流图按预先确定的模式映射成软件结构

       事务分析:设计步骤跟变换分析类似,不同之处是数据流图到软件结构的映射方式不同。事务流映射的软件结构包括一个接收分支和一个发送分支。

2018-12-11 20:17:04 frj0260 阅读数 175
  • [微信公众号_独立知识点]internet访问解决方案

    “微信公众平台深度开发Java版 v2.0”系列课程共有6季,使用JAVA语言,系统讲解微信公众平台订阅号、服务号官方列出的全部功能接口,包括:自定义菜单、个性化菜单(按需定制菜单)、群发消息、客服消息(有限次消息推送)、模板消息接(无限次消息推送)、微信网页开发(微信WEB开发、微信游戏)、微信JSSDK开发、用户管理、获取用户基本信息、网页授权获取用户基本信息(通过WEB得到用户信息)、二维码(临时二维码、永久二维码)、事件推送、接收普通消息、被动回复用户消息,等知识点。 以及,针对微信公众号开发的服务端架构设计方案。课程以微信公众号开发视角,讲解JAVA开发微信公众号所需的框架、第三方工具。 购买套餐还赠送经典微信开发课程——[微信公众号_独立知识点]环境搭建。该课程针对各种复杂的网络环境,讲解如何构建开发环境,已解决“没有服务器”、“没有固定IP”等开发者遇到的窘境。 课程采用独立知识点讲解,一个知识点,一组课程,真正做到“简单、高效、”以短的时间、实现的学习。更多课程信息请访问CSDN。网址:http://edu.csdn.net/lecturer/631 “微信公众平台企业号开发Java版”陆续上线。 详情 qq2326321088

    8715 人正在学习 去看看 翟东平

【前言】
软件设计的目标和任务
软件设计基础
模块独立性
结构化设计方法
数据设计和文件设计、过程设计
【内容】
1.软件设计的目标和任务
根据用信息域表示的软件需求,以及功能和性能需求,进行
数据设计:数据结构定义
系统结构设计:软件的系统各主要成分之间的关系
过程设计:结构成分转换为软件过程性描述。
2.软件设计任务分类
(1)从工程管理的角度来看,软件设计分两步完成:
概要设计:总体设计,将软件的需求转换为数据结构和软件的系统结构
详细设计:过程设计,过程细化,得到软件的详细的数据结构和算法。
(2)从管理观点的角度来看,软件设计分两步完成:概要设计、详细设计
(3)从技术观点的角度来看,软件设计分三步完成:数据设计、系统结构设计、过程设计
3.软件设计过程
制定规范
软件系统结构的总体设计
处理方式设计
数据结构设计
可靠性设计
编写概要设计阶段的文档
概要设计评审
4.软件设计基础
(1)自顶向下,逐步细化
将软件的体系结构按自顶向下方式,对各个层次的过程细节和数据细节逐层细化。
(2)软件结构
软件结构包括两部分:程序的模块结构和数据的结构
(3)程序结构
在这里插入图片描述
(4)结构图(S-C图)
结构图反映程序中模块之间的层次调用关系和联系。
a.模块
在这里插入图片描述
b.模块的调用关系和接口
在这里插入图片描述
c.模块之间的信息传递
d.表示模块A有条件地调用另一个模块B。

在这里插入图片描述
菱形:A有条件调用B,弧形:A循环调用C和D。
(5)模块化
能够把一个大而复杂的软件系统划分成易于理解的比较单纯的模块结构。
(6)抽象化
a.模块抽象
软件系统进行模块设计时,可有不同的抽象层次。
抽象层次1:用问题所处环境的术语来描述这个软件;
抽象层次2:任务需求的描述;
抽象层次3:程序过程的表示。以2-D(二维)绘图生成任务为例。
b.数据抽象
在不同层次上描述数据对象的细节,定义与该数据对象相关的操作。
(7)信息隐蔽
是指划分模块或定义层次时,若模块内的数据发生变化,要尽量不影响到其他模块或是少影响。
5.模块独立性
划分模块的独立性
是指软件系统中每个模块只涉及软件要求的具体的子功能。
模块一般具有如下三个基本属性:
功能:描述该模块实现什么功能
逻辑:描述模块内部怎么做
状态:该模块使用时的环境和条件
模块独立性一般采用两个准则度量模块独立性。
即模块间耦合和模块内聚.
(1)模块间耦合
在这里插入图片描述
a.非直接耦合(Nondirect Coupling)
如果两个模块之间没有直接关系,这就是非直接耦合。
b.数据耦合(Data Coupling)
如果一个模块访问另一个模块时,彼此之间是通过简单数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的,则称这种耦合为数据耦合。
c.标记耦合(Stamp Coupling)
如果一组模块通过参数表传递记录信息,就是标记耦合。
d.控制耦合(Control Coupling)
如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。
e.外部耦合(External Coupling)
一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。
f.公共耦合(Common Coupling)
若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。
其中公共耦合有两种情况:松散公共耦合和紧密公共耦合。
在这里插入图片描述
g.内容耦合(Content Coupling)
在这里插入图片描述
(2)模块内聚
在这里插入图片描述
a.功能内聚(Functional Cohesion)
一个模块中各个部分都是完成某一具体功能必不可少的组成部分,是不可分割的。
b.信息内聚(Informational Cohesion)
这种模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。
c.通信内聚(Communication Cohesion)
如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为通信内聚模块。
在这里插入图片描述
d.过程内聚(Procedural Cohesion)
使用流程图作为工具设计程序时,把流程图的某一部分划出组成模块,就得到过程内聚模块。
e.时间内聚(Classical Cohesion)
时间内聚模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。
f.逻辑内聚(Logical Cohesion)
这种模块把几种相关的功能组合在一起。
g.巧合内聚(Coincidental Cohesion)
巧合内聚模块内各部分之间没有联系,或者即使有联系,这种联系也很松散。
6.结构化设计方法
首先研究、分析和审查数据流图。
然后根据数据流图决定问题的类型。数据处理问题典型的类型有两种:变换型和事务型。
针对两种不同的类型进行分析处理。
变换型系统结构图:
变换型数据处理问题的工作过程大致分为三步,即取得数据,变换数据和给出数据。
在这里插入图片描述
在这里插入图片描述
事务型系统结构图:
它接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。
在这里插入图片描述
7.分析
即变换分析和事务分析
(1)变换分析方法由以下四步组成:
重画数据流图;
区分有效(逻辑)输入、有效(逻辑)输出和中心变换部分;
进行一级分解,设计上层,模块;
进行二级分解,设计输入、输出和中心变换部分的中、下层模块。
注意:
(1)在选择模块设计的次序时,必须对一个模块的全部直接下属模块都设计完成。
(2)在设计下层模块时,应考虑模块的耦合和内聚问题。
(3)使用“黑箱”技:在设计当前模块时,先把这个模块的所有下层模块定义成“黑箱”。
(4)在模块划分时,一个模块的直接下属模块一般在5个左右。
(5)如果出现了以下情况,就停止模块的功能分解:
a.当模块不能再细分为明显的子任务时;
b.当分解成用户提供的模块或程序库的子程序时;
c.当模块的界面是输入/输出设备传送的信息时;
d.当模块不宜再分解的过小时。
(2)事务分析:
与变换分析一样,事务分析也是从分析数据流图开始,自顶向下,逐步分解,建立系统到结构图。
在这里插入图片描述
8.事务分析过程
(1)识别事务源;
(2)规定适当的事务型结构;
(3)识别各种事务和它们定义的操作;
(4)注意利用公用模块;
(5)对每一事务,或对联系密切的一组事务,建立一个事务处理模块;
(6)对事务处理模块规定它们全部的下层操作模块;
(7)对操作模块规定它们的全部细节模块。
9.软件模块结构的改进
(1)模块功能的完善化
一个完整的模块应当有以下几部分:
a.执行规定的功能的部分;
b.出错处理的部分;
c.给它的调用者返回一个结束状态标志。
(2)消除重复功能,改善软件结构:
a.完全相似
b.局部相似
(3)模块的作用范围应在控制范围之内
a.模块的控制范围包括它本身及其所有鄂从属模块;
b.模块的作用范围是指模块内一个判定表的作用范围,凡是受这个判定影响的所有模块都属于这个判定的作用范围。
(4)尽可能减少高扇出结构,随着深度增大扇入
(5)避免或减少使用病态联接:
应限制使用如下三种病态联接:
a.直接病态联接;
b.公共数据域病态联接;
c.通信模块联接。
(6)模块的大小要适中
通常规定其语句行数在50-100左右,保持在一页纸之内,最多不超过500行。
(6)设计功能可预测的模块,但要避免过分受限制的模块。
(7)软件包应满足设计约束和可移植性。

10.数据设计及文件设计
(1)数据设计的原则
1)用于软件的系统化方法也适用于数据
2)确定所有的数据结构和在每种数据结构上施加的操作
3)应当建立一个数据词典并用它来定义数据和软件的设计
4)低层数据设计的决策应推迟到设计过程的后期进行
5)数据结构的表示只限于那些必须直接使用该数据结构内数据的模块才能知道。
6)应当建立一个存放有效数据结构及相关操作的库。
7)软件设计和程序设计语言应当支持抽象数据类型的定义和实现。
以上原则适用于软件工程的定义阶段和开发阶段。
2.文件设计
文件设计的过程,主要分两个阶段。第一阶段是文件的逻辑设计,主要在概要设计阶段实施。第二阶段是物理设计,用于总体设计实施。
文件处理注意:
(1)整理必须的数据元素;
(2)分析数据间的关系;
(3)确定文件的逻辑设计;
(4)理解文件的特性;
(5)确定文件的组织方式:顺序文件、直接存取文件、索引顺序文件、分区文件、虚拟存储文件、倒排文件;
(6)确定文件的存储介质;
(7)确定文件的记录格式;
(8)估算存取时间和存储容量。
11.过程设计(详细设计)
从软件开发的工程化观点来看,在使用程序设计语言编制程序以前,需要对所采用算法的逻辑关系进行分析,设计出全部必要的过程细节,并给予清晰的表达。
在过程设计阶段,要决定各个模块的实现算法,并精确地表达这些算法,表达过程规格说明的工具叫做详细设计工具,它可以分为以下三类:
图形工具、表格工具、语言工具
12.程序流程图
也称为程序框图,程序流程图使用五种基本控制结构是:
在这里插入图片描述
N-S图
也叫做盒图。五种基本控制结构由五种图形构件表示:
在这里插入图片描述
问题分析图(PAD)
在这里插入图片描述
判定表
用于表示程序的静态逻辑。在判定表中的条件部分给出所有的两分支判断的列表,动作部分给出相应的处理。
要求将程序流程图中的多分支判断都改成两分支判断:
在这里插入图片描述
PDL
PDL是一种用于描述功能模块的算法设计和加工细节的语言。称为设计程序用语言。它是一种伪码。
PDL具有严格的关键字外语法,用于定义控制结构和数据结构,同时它的表示实际操作和条件的内语法又是灵活自由的,可使用自然语言的词汇。
13.概要设计说明书
1.引言
1.1编写目的
1.2项目背景
1.3定义
1.4参考资料
2.任务描述
2.1目标
2.2运行环境
2.3需求概述
2.4条件与限制
3.总体设计
3.1处理流程
3.2总体结构和模块外部设计
3.3功能分配
4.接口设计
4.1外部接口
4.2内部接口
5.数据结构设计
5.1逻辑结构设计
5.2物理结构设计
5.3数据结构与程序的关系
6.运行设计
6.1运行模块的组合
6.2运行控制
6.3运行时间
7.出错处理设计
7.1出错输出信息
7.2出错处理对策
8.安全保密设计
9.维护设计
14.详细设计说明书
1.引言
1.1编写目的
1.2项目背景
1.3定义
1.4参考资料
2.总体设计
2.1需求概述
2.2软件结构
3.程序描述
3.1功能
3.2性能
3.3输入项目
3.4输出项目
3.5算法
3.6程序逻辑
3.7接口
3.8存储分配
3.9限制条件
3.10测试要点

软件设计原则

阅读数 245

没有更多推荐了,返回首页