软件开发基础知识
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、数据结构的类型及其它们各自的优势与局限????
答:未完待续。。。。