软件设计概述

一.软件设计

        软件设计是一个将人类思维物化为计算机思维的过程,通过这个过程计算机获得一定程度的独立加工甚至思维的能力,从而将人类思维推向更高层次。

二.软件危机

        产生的原因主要有三个:

(1)软件开发者不熟悉用户问题的领域,或没有理解用户需求,软件产品与要求不一致。

(2)软件是一种逻辑产品而非物理产品,软件的开发过程本质上是人的思考过程。

(3)人的智力在面对越来越复杂的问题时,处理问题的效率会越来越低。

三.软件工程       

        大型软件开发也应该借鉴建筑、机械等行业的发展过程,由“手工方式”向“工程化”方向发展。

3.1 软件工程的定义

        软件是程序、方法、规则、相关文档以及在计算机上运行所必需的数据的集合。而软件工程是开发、运行、维护软件的系统方法。

3.2 软件生命期

        软件生命期指从开始研制到废弃不用的整个期间,可划分为五个阶段:需求分析、设计、编程、测试和运行维护。

3.3 软件的质量标准

        主要有五个标准:

(1)正确性     

        软件的正确性指的是软件系统在正常条件下能够正确工作,完成规定功能。这是软件的首要指标。

(2)健壮性   

        软件的健壮性指的是在意外情况下(如输入数据不合理或某些硬件故障),软件系统仍能适当地工作,并对意外情况进行适当处理,而不致于导致错误结果甚至系统的瘫痪或死机。       

(3)可维护性

        软件的维护包括发现并改正软件的错误,以及由于软件运行环境发生变化或软件功能扩充而对软件进行的改动。

(4)可用性    

        软件可用性是程序在给定时间点根据要求运行的概率。

(5)可重用性      

        指软件可以在多种场合使用的程度。

四.程序设计的方法

  4.1 传统的结构化程序设计

        传统的程序设计方法可以归结为“程序=算法+数据结构”,将程序定义为处理数据的一系列过程。
(1)这种设计方法的着眼点是:面向过程的,特点是数据与程序分离,即数据与数据处理分离。 
(2)结构化程序设计的基本思想是:采用自顶向下、逐步细化的设计方法和单入单出的控制结构。

 4.2 面向对象的程序设计

        面向过程程序设计缺点的根源在于数据与数据处理分离。

         面向对象程序设计模拟自然界认识和处理事物的方法,将数据和对数据的操作方法放在一起,形成一个相对独立的整体——对象(object),同类实体还可抽象出共性,形成类(class )。一个类中的数据通常只能通过本类提供的方法进行处理,这些方法成为该类与外部的接口。对象之间通过消息(message)进行通讯。

4.2.1 基本概念

 4.2.1.1 类

        类是一个抽象的概念,用来描述某一类实体所共有的、本质的属性和类行为。

  4.2.1.2 对象

        对象是类的一个具体实现,也称为实例。

4.2.1.3 消息

        把对象之间产生相互作用所传递的信息称做消息。

4.2.2 面向对象的软件开发方法

        面向对象软件开发的根本合理性在于它符合客观世界的组成方式和大脑的思维方式。

        在大型程序开发过程中,编码只是其中很小一部分,应当采用工程化的方法,并将面向对象的思想贯穿于软件开发全过程,这就是面向对象的软件工程。

        面相对象的软件工程同样遵循分层抽象、逐步细化的原则。软件开发过程包括以下五个阶段:

1.面向对象的分析(OOA)

        分析阶段的主要任务是按照面向对象的概念和方法,从问题中识别出有意义的对象,以及对象的属性、行为和对象间的通信,进而抽象出类结构,最终将它们描述出来,形成一个需求模型。

2.面向对象的设计(OOD)

        设计阶段从需求模型出发,分别进行类的设计和应用程序的设计。

3.面向对象的编程(OOP)

        编程阶段实现由设计表示到面向对象程序设计语言描述的转换。

4.面向对象的测试(OOT)

        测试的任务在于发现并改正程序中的错误。

5.面向对象的维护(OOSM)

4.2.3  “面向对象”程序设计的特点

4.2.3.1 封装性

        对象是一个封装体,在其中封装了该对象的属性和操作。通过限制对属性和操作的访问权限,可以将属性“隐藏”在对象内部,对外提供一定的接口,在对象之外只能通过接口对对象进行操作。

        C++通过建立数据类型——类来支持封装和数据隐藏。封装性增加了对象的独立性,从而保证了数据的可靠性。一个定义完好的类可以作为独立模块使用。

4.2.3.2 继承与派生

        当定义了一个类后,又需定义一个新类,这个新类与原来的类相比,只是增加或修改了部分属性和操作,这时可以用原来的类派生出新类,新类中只需描述自己所特有的属性和操作。

        新类称为子类或派生类,原来的类称为基类。派生可以一直进行下去,形成一个派生树。

4.2.3.3 多态性

        多态性指,同一个消息被不同对象接收时,产生不同结果,即实现同一接口,不同方法。

五.算法的设计与分析

        通俗地说,算法就是解决问题的步骤。

        解决的问题的种类与复杂程度各不相同决定了算法的多样性,但从其思想方法上可以将其归为以下几种:直接法、枚举法、递推法、递归法、回溯法等等。

六 C语言与面向对象的C++

        C++与C完全兼容,很多用C编写的库函数和应用程序都可以为C++所用。

        但正是由于与C兼容,使得C++不是纯正的面向对象的语言,它既支持面向对象程序设计,也支持面向过程设计。但我们应当注意用面向对象的思想进行设计,以发挥出C++的优势。

  • 22
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
软件设计说明书 版本:V1.0 文 档 编 号 保 密 等 级 作 者 最后修改日期 审 核 人 最后审批日期 批 准 人 最后批准日期 修订记录 日期 版本 修订说明 修订人 目 录 1 引言 1 1.1 文档控制 1 1.2 目的 1 1.3 范围 1 1.4 定义、首字母缩写词和缩略语 1 1.5 参考资料 1 1.6 概述 1 2 整体说明 1 2.1 业务背景 1 2.2 功能模型 1 2.3 用例模型概述 1 2.3.1 子系统一 1 2.4 假设和依赖关系 1 3 包1:出入库 2 3.1 冲补帐务-样例1 2 3.1.1 系统用例 2 3.1.2 类关系图 2 3.1.3 类图 3 3.1.4 顺序图 4 3.2 冲补入库单-样例2 4 3.2.1 入库单冲账 4 3.2.2 入库单补账 6 引言 文档控制 目的 范围 定义、首字母缩写词和缩略语 参考资料 概述 整体说明 业务背景 [此小节应说明软件的业务背景,包括组织机构、业务流程等。] 功能模型 [此小节应说明用例包的组织,以用例包的形式来表达软件的功能。] 用例模型概述 子系统一 用例图 [此小节应说明此子系统下的用例图。] 主角列表 [此小节以列表的形式说明此子系统相关的主角。] 用例列表 [此小节以列表的形式说明此子系统相关的用例。] 假设和依赖关系 [本节说明所有重要的技术可行性假设、子系统或构件可用性假设,或者可作为此文档所述软件可行性的基础的其他与项目有关的假设。] 包1:出入库 画出包图、核心业务处理流程、状态转换图来说明核心业务的工作方式。 冲补帐务-样例1 系统用例 类关系图 类图 实体类 边界类 控制类 顺序图 分仓保管帐建帐处理流程 备注: 去掉价位一栏; 收获年限改为“年限“,入库年限改为非必输项; 国别改为必输项; 等级改为非必输项; 增加建帐的修改功能:只能修改等级、入库年限、产地。 冲补入库单-样例2 入库单冲账 前台界面 名称:account_grainin_strike.jsp 界面说明: 序号 界面名称 表 字段 字段含义 备注 1 编号 入库单 RC_RKD_RKDBH 入库单编号 顺序号 入库单 RC_RKD_SXH 顺序号 计划安排表 入库单 RC_RKD_RKJHAPBNM 入库计划安排表内码 需要转化为编号 计划明细 入库单 RC_RKD_JHMXNM 计划明细内码 需要转化为编号 入库通知单编号 入库单 RC_RKD_ZGKRKTZDNM 直管库入库通知单内码 需要转化为编号 客户名称 入库单 RC_RKD_KHNM,RC_RKD_KHMC 客户名称 客户内码 合同号 入库单 RC_RKD_HTNM, RC_RKD_HTH 合同号 合同内码 到库时间 入库登记信息 RC_RKDJXX_DKSJ 到库时间 收获年份 入库单 RC_RKD_NX 年限 等级 入库检验信息 RC_RKJYXX_WLDJNM 物料等级内码 后台服务 功能简介 入库账务服务 包名 com.digitalchina.zcl.stock.account 类名 AccountGraininServer 方法 名称 参数 返回值 描述 入库单补账 前台界面 名称:account_grainin_repair.jsp 界面说明: 序号 界面名称 表 字段 字段含义 备注 1 编号 入库单 RC_RKD_RKDBH 入库单编号 顺序号 入库单 RC_RKD_SXH 顺序号 扣杂 入库检验信息 RC_RKJYXX_KZZ 扣杂质(%) 扣水% 入库检验信息 RC_RKJYXX_KSF 扣水份(%) 备注 入库检验信息 RC_RKJYXX_JYYJBZ 检验意见备注 3 选择类型 入库检验信息 RC_RKJJXX_JJLX 检斤类型 0,称重;1,标准包 毛重 入库检验信息 RC_RKJJXX_MZ 毛重 水分扣量 入库检验信息 RC_RKJJXX_SFKL 水分扣量 杂质扣量 入库检验信息 RC_RKJJXX_ZZKL 杂质扣量 其它扣量 入库检验信息 RC_RKJJXX_QTKL 其它扣量 后台服务 功能简介 入库账务服务 包名 com.digitalchina.zcl.stock.account 类名 AccountGraininServer 方法 名称 参数 返回值 描述 补账 repairAccount 被补入库单内码 入库单补账; 根据被补单据产生一笔单据(RC_RKD): 红单标志为蓝单; 补帐标志为1补帐 补帐单据内码为被补单据内码; 补帐日期为当前日期; 审核标志为未审核; 能否记保管帐为1能; 能否记统计帐为1能; 保管帐记帐标志为未记帐; 统计帐记帐标志为未记帐; 删除标志为未删除; 制单时间为当前时间; 其余要素用户录入;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全栈工程师修炼日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值