简单计算器的需求分析
数据结构课程设计-计算器

数据结构课程设计-计算器数据结构课程设计计算器在计算机科学的学习中,数据结构是一门重要的基础课程。
通过这门课程的学习,我们能够深入理解和掌握如何有效地组织和管理数据,以提高程序的运行效率和性能。
本次课程设计的任务是开发一个简单的计算器程序,通过运用所学的数据结构知识,实现基本的算术运算功能。
一、需求分析首先,我们需要明确计算器程序的功能需求。
这个计算器应该能够支持常见的四则运算,即加法、减法、乘法和除法。
用户可以通过输入表达式,例如“2 +3”、“5 2”、“3 4”、“8 /2”等,程序能够正确计算并输出结果。
此外,为了提高用户体验,计算器还应该能够处理错误输入,例如输入的表达式不符合语法规则或者除数为 0 等情况,并给出相应的错误提示信息。
二、数据结构选择为了实现上述功能,我们需要选择合适的数据结构来存储和处理输入的表达式。
在这个计算器程序中,我们可以使用栈这种数据结构。
栈是一种后进先出(Last In First Out,LIFO)的数据结构,非常适合处理表达式的计算。
我们可以创建两个栈,一个用于存储操作数,另一个用于存储操作符。
当用户输入一个表达式时,我们按照从左到右的顺序逐个字符进行处理。
如果是数字,则将其转换为整数并压入操作数栈;如果是操作符,则将其压入操作符栈。
在计算过程中,我们从操作符栈中取出操作符,从操作数栈中取出相应数量的操作数进行计算,将计算结果压回操作数栈。
三、算法设计1、表达式解析算法从左到右扫描表达式。
如果遇到数字,将其作为一个整数提取出来,并压入操作数栈。
如果遇到操作符(+、、、/),则将其压入操作符栈。
如果遇到左括号“(”,则将其压入操作符栈。
如果遇到右括号“)”,则从操作符栈中弹出操作符,从操作数栈中弹出操作数,进行计算,直到遇到左括号为止。
2、计算算法当操作符栈不为空时,从操作符栈中弹出一个操作符。
根据操作符的类型,从操作数栈中弹出相应数量的操作数。
进行计算,并将结果压回操作数栈。
简单的计算器实验报告

HUNAN UNIVERSITY程序设计训练——简单的计算器报告学生姓名田博鑫学生学号***********专业班级工业工程(1)班指导老师吴蓉晖2012年6月16日至2012年7月10日1.程序设计目的和要求目的:此次程序设计的目的主要是为了我们能更好的理解和熟悉C语言这门计算机课程,自己有对计算机程序设计的的初步认识。
要求:运用相关知识,查阅相关资料,编写一个简单的计算器,能够实现简单的基本的加减乘除运算,在计算器工作时利用键盘或鼠标进行相应操作。
程序基本功能要求实现完整,并有简单的验证。
在计算器运行中,输入数据时如果输入错误的情况,能够通过键盘上的退格键进行删除,并且重新输入正确的数据。
在数据输入完成,如果需要放弃本次计算操作,可以利用程序中设置好的按键进行调整。
2.程序设计的任务和内容这个简单的计算器要求能够进行简单的四则运算,要求运用所学的知识和查阅相关的资料来完成这个简单的计算器的设计,要求这个简单的计算器尽量在windows界面下进行,计算器界面不做要求。
该简单的计算器包含有基本的四则运算、正弦函数、余弦函数、正切函数、余切函数、平方、开方,以及平均值、标准差、方差的运算。
3.程序设计说明该简单的计算器能进行基本的四则运算和乘方,开方,以及三角函数的运算。
操作需要逐步根据提示来完成所要进行的运算。
比如要进行81的开方运算的话首先在屏幕上可以看到开放运算的命令是5,所以先要输入5,然后再输入要开方的数据81可以在屏幕上看到运行的结果。
4.详细设计说明包含流程图5.程序的调试及结果调试与运行(没有错误)主界面加法运算减法运算乘法运算平方运算平均值,方差,标准差6.程序设计心得与体会本次程序设计我的是设计一个简单的计算器,我以为是很简单的,但是做起来就不是那么容易了,首先参考网上的有不怎么看懂,自己想自己做但却没有思路,就拿那个c++6.0的程序软件来说吧,刚开始的时候还不知道怎么用,只好花时间到网上去现学现卖。
c简单计算器课程设计报告

c 简单计算器 课程设计报告一、课程目标知识目标:1. 让学生掌握简单计算器的基本功能,包括加、减、乘、除等四则运算。
2. 使学生理解计算器操作规则,如先算乘除后算加减、括号的作用等。
3. 帮助学生掌握计算器上的其他功能键,如清除、取反、百分比等。
技能目标:1. 培养学生运用计算器进行四则运算的能力,提高计算速度和准确性。
2. 培养学生运用计算器解决实际问题的能力,如购物找零、计算面积等。
3. 培养学生通过观察、思考、提问等方式,发现计算器使用过程中的问题,并尝试解决。
情感态度价值观目标:1. 培养学生对待计算器等电子设备的正确态度,爱护设备,遵守使用规范。
2. 培养学生在合作学习中互相帮助、共同进步的精神,增强团队意识。
3. 通过计算器教学,激发学生对数学学科的兴趣,提高学生的自信心和自主学习能力。
本课程针对年级学生的特点,注重培养学生的学习兴趣和实践能力。
课程性质为实践操作类,强调学生在动手实践中掌握知识。
在教学过程中,教师需关注学生的学习需求,及时调整教学策略,确保学生能够达到课程目标。
课程目标分解为具体学习成果,以便于后续教学设计和评估。
在教学结束后,学生应能独立使用计算器完成四则运算,解决实际问题,并在学习过程中培养良好的情感态度和价值观。
二、教学内容1. 计算器基本结构认知:让学生了解计算器各部分名称及其功能,如数字键、运算符号键、等于键、清除键等。
2. 四则运算操作方法:教学加、减、乘、除四则运算的计算器操作方法,以及运算顺序和括号的使用。
- 加法和减法运算- 乘法和除法运算- 混合运算及括号应用3. 计算器其他功能键使用:介绍取反、百分比、开方等特殊功能键的操作方法。
4. 实践应用:设计实际应用场景,让学生运用计算器解决购物找零、计算面积、计算速度等问题。
- 购物找零问题- 长度、面积、体积计算- 速度、时间、路程计算教学内容参考教材相关章节,结合课程目标进行整合。
教学大纲安排如下:第一课时:计算器基本结构认知、四则运算操作方法(加法和减法运算)第二课时:四则运算操作方法(乘法和除法运算)第三课时:四则运算操作方法(混合运算及括号应用)第四课时:计算器其他功能键使用第五课时:实践应用(购物找零问题)第六课时:实践应用(长度、面积、体积计算)第七课时:实践应用(速度、时间、路程计算)教学内容注重科学性和系统性,确保学生能够循序渐进地掌握计算器的使用方法,并在实际应用中巩固所学知识。
简单计算器的需求分析

简单计算器的需求分析一确定系统的要求1系统功能要求在程序设计过程中,该程序是要实现简单的加减乘除运算等功能。
还要实现数据的输入,输出,计算,显示及程序退出等功能。
2系统性能要求用户提交查询时,得到返回结果的延时不得超过5秒提交数据录入是,得到结果的延时不得超过5秒。
系统的性能包括内容较多,在本系统中主要约定了作业的响应时间要求。
作业可以定义为“一个交易是当一个单一角色跨越系统边界触发一个事件并执行一定数量的处理和数据库访问,它将影响架构中的所有服务器层”。
作业响应时间指完成目标系统中的交互或批量处理所需的响应时间。
3系统运行要求(1)用户界面系统的用户界面应作到可靠性、简单性、易学习和使用。
(2)硬件接口在输入方面,对于键盘、鼠标的输入,可用C++的标准输入/输出,对输入进行处理。
在输出方面,打印机的连接及使用,也可用C++的标准输入/输出对其进行处理。
在网络传输部分,在网络硬件部分,为了实现高速传输,将使用高速ATM。
二分析系统的数据要求任何一个软件系统本质上都是系统信息处理系统,系统必须处理的信息和系统应该产生的信息在很大程度上决定系统的面貌,对软件的设计有深远的影响。
计算器上数字0—9为一个控件数组,加、减、乘、除为一个控件数组,其余为单一的控件。
给对话框添加菜单。
制定高级按钮控件,该按钮具有不规则的形状,可以根据用户鼠标的位置和单击状态的不同,显示不同的颜色。
制定高级编辑控件,该编辑控件可以指定文本文字的字体和颜色。
输入的原始数据、运算中间数据和结果都显示在窗口顶部的同一个标签中。
概要设计与详细设计的区别概要设计就是设计软件的结构,包括组成模块,模块的层次结构,模块的调用关系,每个模块的功能等等。
同时,还要设计该项目的应用系统的总体数据结构和数据库结构,即应用系统要存储什么数据,这些数据是什么样的结构,它们之间有什么关系。
详细设计阶段就是为每个模块完成的功能进行具体的描述,要把功能描述转变为精确的、结构化的过程描述。
C语言程序设计-简单的计算器

- - . 《程序设计基础(C)》课程设计报告简易计算器设计学生姓名:学号:班级:指导老师:日期:309工作室设计目录一、设计目标2二、总体设计4三、详细设计6四、调试与测试12五、分析及结论13六、参考文献14【附录】16一、设计目标设计一个C语言程序(简单计算器设计)具体要求:在功能上功能尽量模拟windows操作系统中的计算器,系统界面不做强制要求。
主要功能:进行+、-、*、/、三角函数、对数、幂等各项数学运算,能够进行进制间的相互转换与计算。
二、总体设计1、程序设计组成框图2、设计思路简单计算器的设计的程序中主要调用的函数有:数学函数的定义和I/O函数;设计思路和理念在于一切追求简便易操作原理,通过个人的构思和设计以及调试运行设计出这一款简单的计算器。
3、程序设计流程图三、详细设计1、功能函数①函数的功能:两数的+、-、*、/计算、求平均函数的入口:从main()的if(flag==1)开关结构中进入,即flag的值为1时进入该函数,从而进行该功能函数的计算。
函数调用关系:被主函数调用,由if()开关结构中进入。
函数的出口:函数的出口为printf("是否继续运算?(Y/N) :"),此时输入“Y”,继续前面的结构。
2、功能函数②函数的功能: x的y次方的计算、两数的求余、以x为底y的对数函数的入口:从main()的if(flag==2)开关结构中进入,即flag的值为2时进入该函数,从而进行该功能函数的计算。
函数调用关系:被主函数调用,由if()开关结构中进入。
函数的出口:函数的出口为printf("是否继续运算?(Y/N) :"),此时输入“Y”,继续前面的结构。
3、功能函数③函数的功能: 单个数值sin、cos、tan的计算,以e为底的指数、求绝对值函数的入口:从main()的if(flag==3)开关结构中进入,即flag的值为3时进入该函数,从而进行该功能函数的计算。
简单计算器课程设计报告

简单计算器课程设计报告目录1.基本功能描述 (1)2.设计思路 (1)2.1相关说明 (1)2.2各块流程图 (2)3.软件设计 (7)3.1 设计步骤 (7)3.2 界面设计 (9)3.2.1添加图标 (9)2.2.2添加控件 (10)3.2.3添加菜单 (12)3.3 关键功能的实现 (14)4.结论与心得体会 (16)5.参考文献 (18)6.思考题 (18)7.附录 (20)7.1调试报告 (20)7.2测试结果 (21)7.3关键源代码 (23)简单计算器1.基本功能描述该简单计算器主要实现了双目运算和单目运算功能。
双目运算符包含基本的四则运算及乘幂功能,单目运算符主要包含正余弦,阶乘,对数,开方,倒数等运算,同时也包含角度制的转换、科学型与标准型的转换、输出设计者信息、清除、退格、退出功能。
简单计算器可对输入的任意操作数,包括小数和整数及正数和负数进行上述各种运算并能实现连续运算,并且能在出现错误时给出相应提示。
同时也可以操作与运算按钮相对应的菜单项。
2.设计思路2.1相关说明1)相关的变量标志位:m_num:与编辑框相关联的变量num1:作为临时变量储存当时按下的按钮值num2:作为临时变量储存编辑框的值m_hudu:角度制的标志位,为0时为弧度m_jiao:角度转换的临时变量point:bool值,小数点有无标志位,当值为ture时为有小数点dianhou:小数点后位数记录位danshuang:单双目运算符标志位zhengfu:bool值,作为正负数标志位,当为ture时为正数2)主要功能设计简述:该简单计算器的重难点主要在一个编辑框要实现输入和输出的显示,小数的实现,正负数的交替输入,退格时数的实现,单双目运算符的不同如何实现等方面。
其中单目运算符sin、cos、tan等要考虑角度转换,之后的运算和其他单目运算符没有差别,基于以上的考虑,想到必须对相关的操作进行相应的标志位,具体的如上列举。
计算器需求概要分析

《计算器》需求分析与概要设计说书目录1.引言 (2)1.1编写目的 (2)1.2项目背景 (2)1.3定义 (2)1.4参考资料 (2)2.任务概述 (2)2.1系统总体目标 (2)2.2运行环境需求 (3)3.数据需求与概要设计 (3)3.1数据描述 (3)3.2数据字典 (3)3.3数据内外部存储 (4)3.4数据流说明 (4)4.功能需求与概要设计 (5)4.1功能划分 (5)4.2功能描述 (5)5.性能需求 (6)5.1数据精确度 (6)5.2时间特性 (6)5.3适应性 (6)6.运行需求 (7)6.1用户界面 (7)6.2硬件接口 (7)6.3软件接口 (7)6.4故障处理需求 (7)7.其它需求 (8)1.引言1.1编写目的编写计算器软件,该软件实现一些常见的计算功能,拥有简单美观的界面。
类似windows 中计算器的功能。
1.2项目背景a.委托单位:北京交通大学计算机与信息技术学院程序设计课b.使用C++语言编写代码应用MFC处理窗口界面1.3定义n,m double型参数Result 要输出结果Num 临时储存的结果Flag 区分运算符的标志Flag1 小数点的标志1.4参考资料a.专题训练习题集b.专题训练课件c.MFC指导书籍2.任务概述2.1系统总体目标一.本项目的目的在于开发一个易于操作的拥有友好且简洁界面的计算器软件。
二.该软件面向需要进行一些简单计算的所有用户。
三.具有功能:1. 加,减,乘,除法2. 求si n,求cos,求tan3. 求log4. 求平方,立方,n次方5 求倒数6 求阶乘7 求余数8 求逻辑“与”“或”“非”“与非”“或非”9 后退,清除四.解决一些简单的计算问题本程序实现一些简单的计算功能,用户在简洁的界面输入要计算的数字,通过按钮选择想要实现的功能。
本程序可以实现类似windows中计算器的功能,界面做的比较简洁。
用户可以计算四则运算,三角函数,n次方运算,log运算,逻辑“与”“或”“非”等…... 当输入的数据错误时,程序提供了退格键和清除键。
计算器需求分析

计算器需求分析1引言1.1编写目的计算机的发展突飞猛进,人们使用计算机的目的各不相同,但是我们很容易发现,关于计算的问题生活中随处可见,于是计算器也是计算机中必备的软件。
我们可以使用计算器进行复杂的算术运算,也可以用来不同数值之间的转化。
况且数学中我们也经常用到弧度、梯度、角度等的运算,于是计算器应运而生。
1.2背景说明:a.待开发的软件系统的名称;计算器b.本项目的提出者是广大的计算机用户,开发者为微软公司。
用户为计算使用者,本软件可以在装有操作系统的任何计算机上使用。
对于计算机网络没有要求。
C.该软件系统同其他系统或其他机构没有直接的来往关系。
1.3定义列出本文件中用到的专门术语的定义和外文首字母组词的原词组。
/%C1%DC%B8%E7%B5%E7%D7%D3/blog/item/0b7c0ed17e bed50c3bf3cf2c.htmlMC :Memory Clear 清除存储器中的数值MR :Memory Read 存储器读出MS :Memory Save 存入存储器M+ :Memory Plus 将数值与存储器中的数值相加CE是清除全部数字,但不影响以前的计算,比如,你先算了85后想乘以13但是你输成33了,你可以点CE然后重新输入C健是重新开始计算,和ESC键是一样的功能Mod求模(即整数相除求余数),And按位与,Or按位或,Xor按位异或,Lsh左移,Not按位取反,Int取整数部分Pi是圆周率Exp代表以e为幂指数函数例如:Exp10就是e的10次方;ln是以e为底的对数函数例如:ln10就是以e为底10的对数;n!但表一个数的阶乘例如:5!就是5*4*3*2*1;sta显示“统计框”对话框并激活“Ave”、“Sum”、“s”和“Dat”。
x^3代表x的3次方;x^y代表x的y次方Ave 计算“统计框”对话框中显示数值的平均值。
若要计算平均方值,请使用“Inv”+“Ave”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
简单计算器的需求分析一确定系统的要求1系统功能要求在程序设计过程中,该程序是要实现简单的加减乘除运算等功能。
还要实现数据的输入,输出,计算,显示及程序退出等功能。
2系统性能要求用户提交查询时,得到返回结果的延时不得超过5秒提交数据录入是,得到结果的延时不得超过5秒。
系统的性能包括内容较多,在本系统中主要约定了作业的响应时间要求。
作业可以定义为“一个交易是当一个单一角色跨越系统边界触发一个事件并执行一定数量的处理和数据库访问,它将影响架构中的所有服务器层”。
作业响应时间指完成目标系统中的交互或批量处理所需的响应时间。
3系统运行要求(1)用户界面系统的用户界面应作到可靠性、简单性、易学习和使用。
(2)硬件接口在输入方面,对于键盘、鼠标的输入,可用C++的标准输入/输出,对输入进行处理。
在输出方面,打印机的连接及使用,也可用C++的标准输入/输出对其进行处理。
在网络传输部分,在网络硬件部分,为了实现高速传输,将使用高速A TM。
二分析系统的数据要求任何一个软件系统本质上都是系统信息处理系统,系统必须处理的信息和系统应该产生的信息在很大程度上决定系统的面貌,对软件的设计有深远的影响。
计算器上数字0—9为一个控件数组,加、减、乘、除为一个控件数组,其余为单一的控件。
给对话框添加菜单。
制定高级按钮控件,该按钮具有不规则的形状,可以根据用户鼠标的位置和单击状态的不同,显示不同的颜色。
制定高级编辑控件,该编辑控件可以指定文本文字的字体和颜色。
输入的原始数据、运算中间数据和结果都显示在窗口顶部的同一个标签中。
概要设计与详细设计的区别概要设计就是设计软件的结构,包括组成模块,模块的层次结构,模块的调用关系,每个模块的功能等等。
同时,还要设计该项目的应用系统的总体数据结构和数据库结构,即应用系统要存储什么数据,这些数据是什么样的结构,它们之间有什么关系。
详细设计阶段就是为每个模块完成的功能进行具体的描述,要把功能描述转变为精确的、结构化的过程描述。
概要设计阶段通常得到软件结构图详细设计阶段常用的描述方式有:流程图、N-S图、PAD图、伪代码等概要设计和详细设计在软件设计中,大家经常问到的一个问题是:概要设计应该怎样一个概要法,详细设计应该怎样一个详细法?这个问题在公司内部经常有人问。
现在陈述一下。
我们公司的研发流程是瀑布型的,这个模型中的分析、设计阶段是基于经典的结构化方法。
结构化设计方法的基本思路是:按照问题域,将软件逐级细化,分解为不必再分解的的模块,每个模块完成一定的功能,为一个或多个父模块服务(即接受调用),也接受一个或多个子模块的服务(即调用子模块)。
模块的概念,和编程语言中的子程序或函数是对应的。
这样一来,设计可以明显地划分成两个阶段:概要(结构)设计阶段:把软件按照一定的原则分解为模块层次,赋予每个模块一定的任务,并确定模块间调用关系和接口。
详细设计阶段:依据概要设计阶段的分解,设计每个模块内的算法、流程等。
概要设计阶段:在这个阶段,设计者会大致考虑并照顾模块的内部实现,但不过多纠缠于此。
主要集中于划分模块、分配任务、定义调用关系。
模块间的接口与传参在这个阶段要定得十分细致明确,应编写严谨的数据字典,避免后续设计产生不解或误解。
概要设计一般不是一次就能做到位,而是反复地进行结构调整。
典型的调整是合并功能重复的模块,或者进一步分解出可以复用的模块。
在概要设计阶段,应最大限度地提取可以重用的模块,建立合理的结构体系,节省后续环节的工作量。
概要设计文档最重要的部分是分层数据流图、结构图、数据字典以及相应的文字说明等。
以概要设计文档为依据,各个模块的详细设计就可以并行展开了。
详细设计阶段:在这个阶段,各个模块可以分给不同的人去并行设计。
在详细设计阶段,设计者的工作对象是一个模块,根据概要设计赋予的局部任务和对外接口,设计并表达出模块的算法、流程、状态转换等内容。
这里要注意,如果发现有结构调整(如分解出子模块等)的必要,必须返回到概要设计阶段,将调整反应到概要设计文档中,而不能就地解决,不打招呼。
详细设计文档最重要的部分是模块的流程图、状态图、局部变量及相应的文字说明等。
一个模块一篇详细设计文档。
概要设计文档相当于机械设计中的装配图,而详细设计文档相当于机械设计中的零件图。
文档的编排、装订方式也可以参考机械图纸的方法。
我们公司对模块的认识和传统定义有所不同,认为是较大的软件功能单元才可以称作模块。
这种认识使大家对概要设计和详细设计的分工产生了混乱的理解,降低了文档的可用性,应该予以纠正。
概要设计中较顶层的部分便是所谓的方案。
方案文档的作用是在宏观的角度上保持设计的合理性。
有的项目采用面向对象的分析、设计方法。
可能在概要设计、详细设计的分工上疑问更多。
其实,面向对象的分析、设计方法并没有强调结构化方法那样的阶段性,因此一般不引入概要、详细设计的概念。
如果按照公司的文档体系,非要有这种分工的话,可以将包的划分、类及对象间的关系、类的对外属性、方法及协作设计看做概要设计;类属性、方法的内部实现看做详细设计。
1.需求分析--产生软件功能规格说明书,需要确定用户对软件的需求,要作到明确、无歧义。
不涉及具体实现方法。
用户能看得明白,开发人员也可据此进行下面的工作(概要设计)。
2.概要设计--产生软件概要设计说明书,说明系统模块划分、选择的技术路线等,整体说明软件的实现思路。
并且需要指出关键技术难点等。
3.详细设计--产生软件详细设计说明书,对概要设计的进一步细化,一般由各部分的担当人员依据概要设计分别完成,然后在集成,是具体的实现细节。
理论上要求可以照此编码。
概要设计和详细设计的区别与联系软件设计采用自顶向下、逐次功能展开的设计方法,首先完成总体设计,然后完成各有机组成部分的设计。
根据工作性质和内容的不同,软件设计分为概要设计和详细设计。
概要设计实现软件的总体设计、模块划分、用户界面设计、数据库设计等等;详细设计则根据概要设计所做的模块划分,实现各模块的算法设计,实现用户界面设计、数据结构设计的细化,等等。
概要设计是详细设计的基础,必须在详细设计之前完成,概要设计经复查确认后才可以开始详细设计。
概要设计,必须完成概要设计文档,包括系统的总体设计文档、以及各个模块的概要设计文档。
每个模块的设计文档都应该独立成册。
详细设计必须遵循概要设计来进行。
详细设计方案的更改,不得影响到概要设计方案;如果需要更改概要设计,必须经过项目经理的同意。
详细设计,应该完成详细设计文档,主要是模块的详细设计方案说明。
和概要设计一样,每个模块的详细设计文档都应该独立成册。
概要设计里面的数据库设计应该重点在描述数据关系上,说明数据的来龙去脉,在这里应该结合我们的一下结果数据,说明这些结果数据的源点,我们这样设计的目的和原因。
详细设计里的数据库设计就应该是一份完善的数据结构文档,就是一个包括类型、命名、精度、字段说明、表说明等内容的数据字典。
概要设计里的功能应该是重点在功能描述,对需求的解释和整合,整体划分功能模块,并对各功能模块进行详细的图文描述,应该让读者大致了解系统作完后大体的结构和操作模式。
详细设计则是重点在描述系统的实现方式,各模块详细说明实现功能所需的类及具体的方法函数,包括涉及到的sql语句等。
概要设计,详细设计之间的关系是什么?Q:我的看法:概要设计只说明系统有多少个模块,各模块之间的接口和个模块本身的功能详细设计说明某个具体模块如何实现,粒度应该比程序略高一些但是问题来了,各个模块之间是有层次关系的,也有先后逻辑关系。
这就说明,在概要设计中,还必须考虑模块的实现细节,否则,你怎么知道这个模块下面要划分子模块?你怎么知道各子模块的调用顺序?这就说明,概要设计和详细设计是重叠进行的,而软件工程书上说的确是顺序进行的,不知道是不是我的理解有问题。
举个例子,例如排序程序,如果设计2个模块:一个主模块用于排序子模块用于交换2个变量,主模块调用子模块,但是子模块是怎么设计出来的呢?肯定是你先想到了用冒泡等排序方式的时候需要交换数据,这已经考虑了主模块足够多的细节,似乎属于"详细设计"了,但是目前进行的是概要设计,这就产生了我所说的重叠的情况。
A:看看上面的帖子,有意思的居多。
上面也有朋友说到用建筑的例子来比喻。
软件的概要设计,主要是建立软件系统的整体架构,也就是我们在盖房子时候,需要先将房子的整个架子构建起来。
软件的详细设计,主要是将软件系统的各个部分的具体设计方法、逻辑、功能采用文字方式进行表述。
这样在实现过程中,Coding人员原则上严格按此进行代码实现即可。
这样的一个最为简单的例证:我们可以将代码交付第三方来做。
验证与跟踪采取设计来。
我看上面还有一个朋友说:快速做代码。
这个本身没有值得批评之处。
但只要想一下,你写的代码没有任何设计思想、文档留下的情况,一旦你离开,如何维护?重新设计吗?还是花费几倍人力去研究你写的几千/万,甚至几十万行代码?如果是这样的,你没错,关键是你们老板太对了,钱算什么。
另外的一个问题是:中国人如此聪明,但中国为什么没有出现巨型软件产品呢?个人英雄主义依然很严重,老板的短视利益行为大行其道。
软件工程——系列文档(项目管理、需求分析、概要设计、详细设计、测试、维护、用户手册等)按照传统软件工程的过程需求分析、概要设计、详细设计的区别如下:1.需求分析--产生软件功能规格说明书需要确定用户对软件的需求要作到明确、无歧义。
不涉及具体实现方法。
用户能看得明白,开发人员也可据此进行下面的工作(概要设计)2.概要设计--产生软件概要设计说明书,说明系统模块划分、选择的技术路线等,整体说明软件的实现思路。
并且需要指出关键技术难点等。
3.详细设计--产生软件详细设计说明书,对概要设计的进一步细化,一般由各部分的担当人员依据概要设计分别完成,然后在集成,是具体的实现细节。
理论上要求可以照此编码。
一般说来,需求分析属于软件定义方面;而概要设计、详细设计属于软件开发的阶段。
概要设计就是设计软件的结构,包括组成模块,模块的层次结构,模块的调用关系,每个模块的功能等等。
同时,还要设计该项目的应用系统的总体数据结构和数据库结构,即应用系统要存储什么数据,这些数据是什么样的结构,它们之间有什么关系。
详细设计阶段就是为每个模块完成的功能进行具体的描述,要把功能描述转变为精确的、结构化的过程描述。
概要设计阶段通常得到软件结构图详细设计阶段常用的描述方式有:流程图、N-S图、PAD图、伪代码等。