1软件开发

*1.1 问题分析各需求规格说明

使用计算机解决问题需要同时使用硬件和软件。一个计算系统的硬件由实际的物理组件构成,如中央处理器(CPU)、存储器以及组成系统的输入/输出设备等。软件指为了解决问题用来控制硬件操作的程序。
软件开发通常包含以下几个阶段:
1).问题分析和需求规格说明:对问题进行分析,然后制定一个问题的需求规格说明。
2)设计:设计出一个解决问题的计划
3)编码:使用某种编程语言来实现上一步的计划,产生一个程序,同时,对某些问题来说,还可能产生一个或多个库
4)测试、执行和调试:测试程序,发现和去除错误(bugs)
5)维护:如果有必要,为了跟上时代的发展和满足用户的要求,程序将被升级和修改

1.2设计

当给定问题的需求规格说明以后,就必须设计计划来开发解决这个问题的程序或者由模块、库和程序构成的系统。设计阶段是整个软件开发过程中最具挑战性的阶段。
计算机可没有天生的解决问题的能力哈哈哈
不同的设计方法被提出,下面将阐述一种被称为以对象为中心(Objecte-Centered Design,OCD)的设计方法,因为这种方法的发展引入了面向对象程序设计(Objected-Oriented Programming,OOP),并且它们是保持一致的,而面向对象程序设计已经成为程序设计和系统开发的工作模式。
以对象为中心的设计包含下面几个步骤:
1)确定问题需求规格说明中的对象以及它们的类型
2)确定解决问题所需要的操作
3)将操作安排为一系列的步骤,称为一个算法,当算法被应用到对象时,就可以解决问题

1.2.1对象

一旦制定了描述程序或者系统是做什么的需求规格说明,就已经做好了开始下一个步骤的准备,这就是确定问题中的对象。确定对象的一种方法是仔细研究对整个问题的描述,从而确定出所有的名词。问题将要定义的对象可以从这个名词列表中选择出来。如

| 描述 |类型 |名字

还可以列出对象的一些其它属性,如 它是一个变量还是一个常量,以及它是用户定义的还是编程语言中预定义的。

每个对象的最重要的属性就是它的类型,这决定了对象可以具有什么样的值,可以对他进行什么样的操作,以及这些操作将产生什么结果等。学习程序设计语言中所提供的简单数据类型,这些简单数据类型用于那些是单独的实体的对象。eg:在C++中,对于123这样的单独的整数使用int(或者它的变形,例如unsigned、short int、long int);对于3.1415926这样单独的实数值使用double(float、long double);对于“A”这样的单个字符使用char;对于true或false这样单独的逻辑值使用bool;对于单独的枚举值使用enum;以及对于单独的内存地址使用一个指针来存储。
不过,有些对象是一系列的值,而通常称为结构化数据类型或者数据结构的数据类型,将被用来存储这些成系列的值。如数组(在C++中数组是基于0的;也就是说,第一个索引是0
绝大多数程序设计语言还提供结构,也被称为记录或者简单结构。它们和数组的区别主要在于所包含的对象不必全是一种类型的,因而在存储非同类的数据元素系列时将是非常有用的。

1.2.2操作

如果数据不能被处理,那么将是毫无用处的,因此必须确定需要哪些操作来处理数据以解决问题。

1.2.3 算法

一旦确定了问题中的对象和操作,就将他们组织成一个步骤序列,称为一个算法,来解决问题。
算法 + 数据结构 = 程序
在计算机科学中,算法是指可以被计算机执行的一个过程,并且这个要求在组成这些过程的指令上加强了一些额外的限制:
1)它们必须是确定的并且无二义性的,这样就很清楚的知道每个指令要求完成什么操作
2)它们必须简单到足以被计算机所实现
3)它们必须满足有限性属性;也就是说,算法必须在有限步操作之后停止(对于程序来说,却不总是这样要求的。例如,一个操作系统是一个被认为不会终止执行的程序)
如果算法具有良好的结构,那么表示它们是使用顺序、选择、循环三种基本的控制结构设计的。

1.3 编码

良好的编程习惯是基本且必要的,
其中一个原则是:程序和子程序必须具有良好的结构,以下方针在这方面很有用
1 对于一个复杂的问题要采用模块化 的解决方法。不要编写一个很庞大的子程序或者程序,而是为问题的每个部分编写相当短小和自包含的单独的子程序
2 在开发每个代码段的时候使用基本的控制结构。任何程序单元都可以仅仅使用顺序、选择和循环3种结构来编写。这些结构应该被组合起来形成嵌套的代码块,这些代码块由顶部进入,并且通常只有一个出口
3在子程序中使用局部变量。仅仅在一个子程序中使用的变量应该在这个子程序中声明
4 使用形参来向子程序传递信息以及从子程序得到信息。避免使用全局变量在子程序之间共享信息,因为这将摧毁子程序的独立性。在子程序某一个点往往很难判断一个全局变量的值,因为它可能被任何一个程序单元修改
***5***保护实参不被子程序修改,将相应的形参声明为传值形参或者常量引用形参,而不要使用引用形参。否则,这个子程序有可能无法预期的修改其他一些程序单元中的一个实参的值
***6***确认一个程序或者子程序所具有的任何前置条件和后置条件,并检验它们。
第二个原则是所有的源代码都应该有相应的文档
第三个原则是源代码美观,分以下几个方针:
1 将程序的每个语句放在单独的一行上
2以能够加强程序易读性的方式使用大小写字母,eg.变量标识符使用小写字母,同时将第一个单词之后的每个单词的首字母大写,totalHours;常量标识符使用大写字母,同时将每个单词使用下划线分隔,TAX_RATE;类型和函数标识符使用小写字母,但是将每个单词的首字母大写,DisplayInfo()
3{ 每对单独放两行,对齐,内部语句缩进
}
4使用空格分割一个表达式中的操作符和操作数
5在函数的开始声明常量,而在靠近变量第一次使用的地方声明它
6给一个程序的所有输出加标签

参考文献《C++数据结构导引》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值