软件开发与算法在计算机中的应用

软件开发基础知识

1、软件开发策略:

瀑布模型:通过顺序执行前面的每个阶段来构成的,当每完成一步后,开发过程就转移到下一步骤。

原型模型:根据需要不断重复地评估并修改这个模型,直到得到一个可以接受的版本,从这个版本可以开发出完整的系统或产品。

螺旋模型:综合了瀑布模型和原型模型的特点,主要用于大型的复杂系统。

敏捷模型:根据需要进行适应和修改。一种得到极大关注的敏捷方法是极限模型(extreme programming,XP)。开发人员结成对子进行代码的编写和测试,随着项目的开发将代码集成到设计结构中,团队的成员之间经常进行面对面的交流。

2、软件设计方法:

自顶向下设计:将原始问题划分成更简单的子问题,每个子问题可以被单独考虑。

面向对象设计(Object-Oriented Design,OOD):通过确认一系列的对象来实现模块化,每个这种对象都是由数据和在数据上的操作构成的,可以建模实际对象,并交相互从而解决问题。

它们的主要思想都是模块化。自顶向下设计主要关注解决问题必须执行的任务以及执行这些任务的算法,而OOD主要关注问题中的“实际对象”。

小规模设计:小规模的设计可以使用类似于对大规模问题所描述的方法来设计解决方案。

3、类、实例、对象、数据成员、函数成员等的区别:

对象:每个对象都具有两个部分,即存储数据的数据成员和在数据上操作的函数成员;我们称对象封装了它的数据和这些数据上的操作。

类:同一类型的对象的集合。

实例:每个特定的对象被称为这个类的一个实例。

4、面向对象编程的特性:

封装性:对象可以封装数据和在数据上的操作;

继承性:一个类(子类或派生类)可以重用另一个类(基类或父类)的所有属性和操作;

多态性:一个对象可以在不同时间表现出不同形式的行为。

5、算法+数据结构=程序:

数据类型问题中每个数据元素的最重要的属性就是它的类型,类型决定了它的取值和操作以及最终结果。不过,有些对象是一系列的值,而绝大多数编程语言提供结构化数据类型(即数据结构)来存储这些成系列的值,例如,数组。绝大多数编程语言确实都提供一种机制用于创建能够存储不同类型元素的结构,例如,C++中的结构和类、Java中的类、Fortran中的结构以及Pascal中的记录。而在C++中,主要学习如何设计和创建这些类型(被称为抽象数据类型ADT)以及如何使用C++中提供的数据类型来实现它们。

在设计过程中,除了对象的数据成员,还必须考虑在这些数据上的操作,必须开发一种操作序列,称为一个算法,来产生这个结果。

算法:可以被计算机执行的一个过程(无二义性、简单性、算法最终必须终止),算法通常采用伪代码来编写。

对于良构的算法,常采用下面3种基本控制语句,即顺序、选择、循环。只使用这三种控制结构的算法被称为结构化算法(可读性、可理解性)。

6、编程的三大法则:

程序和子程序必须具有良好的结构;

所有源代码应该有对应的文档;

源代码应该是美观的。

7、通用建模语言(Unified Modeling Language,UML):

UML是一种在面向对象设计中使用的可视化建模语言。

原则:类的名字位于最顶层的部分,数据成员位于第二部分,函数成员位于第三部分。

算法在计算机中的作用

1、什么是算法?

算法(algorithm)就是任何良定义的过程,该过程取某个值或值的集合作为输入并产生某个值或值的集合作为输出。这样算法就是把输入转换成输出的计算步骤的一个序列。

2、算法问题所共有的两个特征:

(1)、存在很多候选解,但绝大多数候选解都没有解决手头的问题。寻找一个真正的解或一个最好的解可能是很大的挑战。

(2)、存在实际应用。

3、什么是数据结构?

数据结构是一种存储和组织数据的方式,旨在便于访问和修改。没有一种单一的数据结构对所有用途均有效,所以重要的是知道几种数据结构的优势和局限。

4、数据结构的类型及其它们各自的优势与局限????

答:未完待续。。。。

时间: 2024-10-08 11:47:21

软件开发与算法在计算机中的应用的相关文章

让你提前认识软件开发(28):数据库存储过程中的重要表信息的保存及相关建议

第2部分 数据库SQL语言 数据库存储过程中的重要表信息的保存及相关建议 1. 存储过程中的重要表信息的保存 在很多存储过程中,会涉及到对表数据的更新.插入或删除等,为了防止修改之后的表数据出现问题,同时方便追踪问题,一般会为一些重要的表建立一个对应的debug表.这个debug表中的字段要包括原表的所有字段,同时要增加操作时间.操作码和操作描述等字段信息. 例如,在某项目中,包括了如下一个重要的表tb_XXX: create table tb_XXX (      AAA           

让你提前认识软件开发(22):shell脚本中的文件操作

第1部分 重新认识C语言 shell脚本中的文件操作 [文章摘要] 编写shell脚本时,经常会涉及到对文件的操作,比如从文件中读取一行数据.向文件追加一行数据等.完成文件读写操作的方法有很多,了解各种命令下文件操作的执行情况,有助于开发人员在不同使用场景下选择合适的命令. 本文以实际的shell脚本为例,介绍了对文件进行操作的不同方法,为相关开发工作提供了参考. [关键词] shell  文件操作  读写  效率 一.概述 在某些软件项目的需求文档中,要求程序一次性读或写的数据规模较大,可达1

让你提前认识软件开发(21):C程序中的定时器

第1部分 重新认识C语言 C程序中的定时器 [文章摘要] 在实际的C程序中,一个模块执行多个操作是很常见的事情.如果多个操作同时进行,会出现程序效率低下.计算机CPU占用率过高等情况,这时就需要对所有操作的执行顺序作一个合理的安排,这就涉及到定时器的使用. 本文对C程序中的定时器的类型.设置和清除方法等作了详细的介绍,为相关开发工作的开展提供了参考. [关键词] C程序  定时器  操作  开发 一.定时器的定义及分类 我们所熟悉的定时器是一个多任务定时提醒的软件,安装于电脑或手机上.举个例子,

让你提前认识软件开发(30):数据库脚本中的空行与空格

第2部分 数据库SQL语言 数据库脚本中的空行与空格 在数据库脚本中,空行与空格起着"锦上添花"的作用.恰当地使用它们,可以提高代码的规范性及可阅读性,进而提升数据库的编程效率. 1. 空行 空行起着分隔脚本段落的作用,适当的空行可以使脚本的布局更加的清晰.空行的作用有以下几个:         (1) 用于分隔两个数据表的创建脚本 示例: create table tb_example1 (         [表内容实现代码] ) go -- 空行 create table tb_e

让你提前认识软件开发(31):数据库脚本中的begin与end

第2部分 数据库SQL语言 数据库脚本中的begin与end 在数据库脚本中,begin与end是一对奇怪的单词.缺少它们,某些代码看起来会让人一头雾水:添加它们,代码的结构瞬间就清晰了. 确实,begin与end作为代码语句的开始和结束标志,可以让脚本程序的逻辑明确,易于阅读. begin与end主要用在以下地方: 1. if.else.else if.while等语句中 if.else.else if.while等语句要自占一行,执行语句不得紧跟其后,不论执行语句有多少都要加语句块标志beg

第一章 算法在计算机中的应用

第一章: 讲了算法(algorithm)的基本概念,以及算法的作用.(这些可以看书) 用个人的话来讲,你可以把算法当做一个解决问题的方法,就像数学里的各种公式一样,你也可以把他们认为是一种算法.算法无处不在,而且算法必须存在,否则我们的生活都将变得缓慢,迟钝. 举个例子:我们平时出去游玩时,要事先查好路线,这时就可以用百度地图搜索从A地到B地的路线,地图上会给出最快的乘车路线,这些路线是怎么给出来的,就是用了最短路的算法,关于最短路的算法有很多,比如Dijkstra, Bellman, Floy

敏捷软件开发与传统软件开发的对比

敏捷软件开发与传统软件开发的对比 最早了解敏捷开发是通过大二的一次博雅课堂,一位在百度工作的北航学长跟我们分享了他近年来从事敏捷开发的经历.印象最深的一句话是一个延迟3个月交付100%功能的软件和一个按时交付75%核心功能的软件,敏捷软件开发者更愿意选择后者.本学期的软件工程基础课又向我们讲授了传统软件开发,经过课上和课后的学习,对于敏捷软件开发和传统软件开发有了浅显的认识和理解.由于课上学习的重点是传统软件开发,所以课下对敏捷软件开发进行了更多的涉猎,本文以敏捷软件开发为主体,来分析其与传统软

软件开发生涯

我的软件开发生涯 (10年开发经验总结和爆栈人生) 简介 网名灵感之源,智能实验室创始人,从事软件开发超过10年,写过千万下载量软件,热衷开源,写过多个爆栈项目(系统开发技术栈..Net技术栈.数据库技术栈.前端开发技术栈).现定居于澳大利亚悉尼,研发经理,从事系统架构开发. 爆栈人生 现在流行说全栈.每种开发都有其相关的技术.您是否觉得难以罗列某种开发所包括对技术(技术栈)呢? 您是否想过: 我做的这个职业,究竟包含哪些技术呢? 我所掌握的技术这个子集,在整个技术大系这个超集里面占的比例是多少

进行软件开发的基础知识

        软件开发:需要做什么? 如何做? 用什么去完成?        一.过程:控制和管理软件开发活动 软件过程用来控制和管理软件团队的开发活动和进度,对于个人来说,也需要使用一定的过程方法来规范化自己的开发流程. 一个值得尝试的方案是:迭代+瀑布模型+测试驱动开发. 这种方案首先将系统分成多个迭代故事,然后,针对每个迭代故事使用瀑布模型并融入测试驱动开发理念. 具体做法: S1:将系统开发分解为多个故事的迭代,每个故事中包含若干个模块. S2:针对每个故事中的模块,使用 “需求分析-