软件概要设计做什么,怎么做

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

作者:赵磊

博客:http://elf8848.iteye.com

 

软件概要设计做什么,怎么做


一、软件设计一般流程:
1、先前的软件需求分析阶段,已经搞清楚了 “要解决什么问题”,并输出了《软件需要说明书》。这时一切都是理想。
2、现在进入概要设计阶段,重点说清楚“总体实现方案”,确定软件系统的总体布局,各个子模块的功能和模块间的关系,与外部系统的关系。有一些研究与论证性的内容。并输出《软件概要设计说明书》。这时一切都是概念。
3、最后进入详细设计阶段,重点说清楚“每个模块怎么做”,是“程序”的蓝图,确定每个模块采用的算法、数据结构、接口的实现、属性、参数。并输出《软件详细设计说明书》。这时一切都是实现。


二、《概要设计说明书》的一般结构:
   1、总述:需求或目标(讲一下事情的起源)、环境、局限;
           ----主要交代背景与大环境。(非重点)
   2、总体设计:从全局的角度说一下 总体结构、功能、处理流程、有哪些模块、模块间的关系;
           ----使读者有“全局”观,为下一步深入各个模块做好准备。
   3、外部接口:总体说明外部用户、软、硬件接口(可用资源);(这个接口不是java的interface) 。
           ----使读者了解可以利用的外部资源。
   4、模块设计:每个模块“做什么”、简要说明“怎么做”(输入、输出、处理逻辑、与其它模块或系统的接口),处在什么逻辑位置、物理位置; (重点)
   5、数据结构:逻辑结构、物理结构(存储在数据表中,还是缓存中); 
   6、容灾设计:出错信息、出错处理; (可选)
   7、监控设计:运行模块组合、控制、时间;(可选)
   8、用户界面设计:(可选)
   9、安全设计:(可选)
   10、其它设计:(可选)
   11、制定规范(附录): 设计原则,代码规范、接口规约、命名规则。--是小组协同开发的基础

三、模块设计是重点,多说几句:

   可以写以下内容:
   1、模块描述:说明哪些模块实现了哪些功能;
   2、模块层次结构:可以使用某个视角的软件框架图来表达;
   3、模块间的关系:模块间依赖关系的描述,通信机制描述;
   4、模块的核心接口:说明模块传递的信息、信息的结构;
   5、处理方式设计:说一些满足功能和性能的算法;


四、怎么使用概要设计:
   1、用来评价总体设计的可行性。
   2、用来检查设计的模块是否完整,保证每一个功能都有对应的模块来实现。
   3、用来评估开发工作量、指导开发计划(在不写详细设计的情况下)。


五、最后提醒:
   1、概要设计阶段过于重视业务流程是个误区.
   2、概要设计阶段过于重视细节实现是个误区.

 

转载请注明出自:http://elf8848.iteye.com/

转载于:https://my.oschina.net/pangzhuzhu/blog/317936

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/290668.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

FFT算法的完整DSP实现(转)

源:FFT算法的完整DSP实现 傅里叶变换或者FFT的理论参考: [1] http://www.dspguide.com/ch12/2.htm The Scientist and Engineers Guide to Digital Signal Processing, By Steven W. Smith, Ph.D. [2] http://blog.csdn.net/v_JULY_v/article/details/…

LeetCode之Merge Two Sorted Lists

1、题目 Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.合并2个有序链表2、代码实现 /*** Definition for singly-linked list.* public class ListNode {* int val;* …

开源社区的激励模型

| 作者:庄表伟| 编辑:刘雪洁| 设计:宋传琪| 责编:王玥敏缘起开源社区里的激励模型,其实是一个经久不衰的老话题。4年多以前,我还写过一篇《区块链技术是否会终结开源时代?》,也是在讨…

电子商务应用课程知识整理 第四章-搜索引擎

文章目录一、搜索引擎定义分类1.全文搜索引擎2.目录索引3.元搜索引擎4.垂直搜索引擎工作原理1.抓取网页2.处理网页3.提供检索服务核心算法组成部分发展趋势二、网络蜘蛛三、中文分词基于词典的分词方法基于统计的分词方法基于理解的分词方法分词难点1.歧义识别2.新词识别四、链…

《Network Warrior中文版(第2版)——思科网络工程师必备手册》一3.3 自动协商故障...

本节书摘来自异步社区《Network Warrior中文版(第2版)——思科网络工程师必备手册》一书中的第3章,第3.3节,作者【美】Gary A. Donahue,更多章节内容可以访问云栖社区“异步社区”公众号查看 3.3 自动协商故障 Network…

Linux 命令(三)--用户管理

2019独角兽企业重金招聘Python工程师标准>>> 查看用户: cat /etc/passwd --------------------- 添加用户: useradd 选项 用户名 -d 目录 指定用户主目录,如果不存在使用-m 创建 -g 指定用户所属的用户组 -G 用户组 ,用户组指定用户所属的附加组 -e <有效期> …

1.单机部署hadoop测试环境

之前看了很多理论上的知识&#xff0c;感觉云里雾里的&#xff0c;所以赶紧着手搭建个单机版的hadoop跑一跑&#xff0c;开启自学大数据技术的第一步~~ 1.在开源的世界里&#xff0c;我就是个土豪&#xff0c;要啥有啥&#xff0c;所以首先你得有个jdk&#xff0c;有钱所以用最…

LeetCode之Merge Sorted Array

1、问题 Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note: You may assume that nums1 has enough space (size that is greater or equal to m n) to hold additional elements from nums2. The number of elements ini…

.NET6之MiniAPI(二十一):限流

限流&#xff0c;可以网络的基础设施进行配置实现&#xff0c;也可以在网关的地方进行限流&#xff0c;但服务本身的限流也不可或缺&#xff0c;因为当多副本时&#xff0c;一个副本故障&#xff0c;流量对于其他副本来说会提高&#xff0c;如果超过其承受请求量的范围&#xf…

《互联网+流通——F2R助力传统产业创新与转型》一一第1章 “互联网+”的新时代...

第1章 “互联网&#xff0b;”的新时代 回顾过去20多年&#xff0c;互联网在中国不断发展壮大&#xff0c;从根本上重构了中国人的生活方式。伴随“互联网”在2015年正式被写入国家战略&#xff0c;“互联网”将助推国民经济三驾马车的再造新生&#xff0c;以创新驱动中国经济的…

Oracle数据库体系结构

文章目录Oracle系统体系结构由三个部分组成&#xff1a;**实例、物理结构和逻辑结构**实例和物理结构&#xff08;数据库&#xff09;组成了Oracle服务器。一、实例1.1 内存结构1.1.1 系统全局区&#xff08;SGA&#xff09;1.1.1.1 共享池&#xff08;共享储存区&#xff09;1…

Distributed transactions with multiple databases, Spring Boot, Spring Data JPA and Atomikos

2019独角兽企业重金招聘Python工程师标准>>> A couple of weeks ago I was evaluating the possibility to use Spring Boot, Spring Data JPA and Atomikos for distributed transactions involving multiple databases. After looking at the Spring blog articl…

js如何查看元素类型

<script type"text/javascript"> //定义变量temp var temp Object.prototype.toString.apply("abcdef"); alert(temp); //执行结果------>[Object String] //定义变量temp var temp Object.prototype.toString.apply(123456); alert(te…

Android之用adb命令快速获取手机IP方法总结

方法1 adb shell netcfg 方法2 adb shell netstat 找到local address 方法3 手机root 安装busyboxadb shell ifconfig

Avalonia跨平台入门第十四篇之ListBox折叠列表

在前面分享的几篇中咱已经玩耍了Popup、ListBox多选、Grid动态分、RadioButton模板、控件的拖放效果、控件的置顶和置底、控件的锁定、自定义Window样式、动画效果、Expander控件;今天趁着空闲时间接着去摸索基于ListBox的折叠列表的效果,最终实现的效果如下图:先来看看布局吧:…

《HTML5触摸界面设计与开发》——1.4 神秘谷,是什么让触摸界面反应灵敏?...

本节书摘来自异步社区《HTML5触摸界面设计与开发》一书中的第1章&#xff0c;第1.4节,作者&#xff1a; 【美】Stephen Woods 更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.4 神秘谷&#xff0c;是什么让触摸界面反应灵敏&#xff1f; 我有个两岁半的儿子。他从一…

Android之获取移动网络ip

1、获取移动网络ip 2、代码 public String getLocalIpAddress() { try { for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { NetworkInterface intf = en.nextElement(); for (Enumeration<InetAddres…

GCD

使用GCD 什么是GCD Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法。该方法在Mac OS X 10.6雪豹中首次推出&#xff0c;并随后被引入到了iOS4.0中。GCD是一个替代诸如NSThread, NSOperationQueue, NSInvocationOperation等技术的很高效和强大的技术。 GCD和…

软件测试技术——系统测试

文章目录一、功能测试二、回归测试定义测试时机三、性能测试定义目标性能测试类型压力负载测试1.并发性能测试&#xff08;重点&#xff09;2. 疲劳强度测试3. 大数据量测试压力测试&负载测试四、其他非功能测试1. 安全性测试功能性测试&安全性测试2. 可靠性3. 容错性测…

nagios-3.4.3搭建

nagios转载于:https://blog.51cto.com/yujianglei/1557718