赞
踩
1、软件
软件是有计算机程序和程序设计的概念发展演化而来,是程序和程序设计发展到一定规模后并且再逐步商品化的过程中形成的。
2、计算机程序的工程性和使用价值
3、计算机程序
(1)计算机程序简称程序,是为了解决某个特定问题而用程序设计语言描述的适合计算机处理的语句序列。
(2)软件是能够完成预定功能和性能的可执行的程序和使程序正常执行所需要的数据,加上描述软件开发过程及其管理、程序的操作和使用的有关文档,即“软件=程序+数据+文档”。
4、举例
教学管理系统。
1、按功能划分
2、按各种方式划分
3、按服务对象范围划分
4、其他分类
5、软件开发
随着软件变得越来越大、越来越复杂,软件开发的关注点也发生了变化,相对于小规模的程序设计,提出了大规模的程序设计,即软件开发。
1、计算机程序的两种形式
2、程序设计
以某种程序设计语言为工具,编写源程序,然后由编译系统完成可执行代码的转换。
3、程序设计活动
程序设计活动包括分析、设计、编码、测试、排错等。
4、程序=算法+数据结构
数据结构指程序处理或应用的数据之间的逻辑关系。算法是指解决特定问题的步骤和方法。程序设计的核心是选择和设计适合特定问题的数据结构和算法,用编程语言编制为程序。
5、软件工程
随着计算机技术的发展,软件规模变得越来越大,软件已经不可能仅仅依靠个人才能去编写与开发了,而是需要团队。程序设计活动走向软件工程,软件工程把经时间考验而证明正确的管理技术和当前能够得到的最好技术方法结合起来,以系统性的、规范化的、可定量的过程化方法去开发和维护。
从用户角度可分为三个阶段:
1、提出需求
根据用户需求,提出要解决的问题和需要的软件。
2、获取软件
对获取软件的最佳途径做出决策并选择最佳的供应商。软件的获取有三种主要途径:
3、使用软件
一旦获得软件之后,用户操作软件使之为其服务。
一般分为:定义软件、开发软件和维护软件。
1、需求定义
2、软件设计
如何实现需求的决策和方案,是将系统功能分配到不同组成元素的过程,包括一组活动:
经典的软件工程将软件设计分为:
3、软件实现
完成可运行程序及数据的软件开发过程。
4、软件维护
对已完成开发并发布、交付使用的软件产品进行完善、纠正错误、改进性能和其他属性,或使软件使用改变了的环境。软件维护分为四种类型:
1、瀑布式开发过程
也叫软件生存期模型。它按照软件生命周期,把开发分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护这6个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。
2、核心思想
按工序将问题化简,将功能的实现与设计分开,便于分工协作,即采用结构化的分析与设计方法将逻辑实现与物理实现分开。
3、特性
强调文档的作用,并要求每个阶段都要仔细验证。
4、存在的问题
1、增量开发
增量开发特指待开发的软件不是一次就能完成,而是把软件分成一系列增量,完成一部分就交付一部分。对每个增量的使用和评估都作为下一个增量发布的新特性和功能。这个过程在每个增量发布后不断重复,直到产生了最终的完善产品。
2、基本思想
让开发者能够从早期的开发、系统的增量、交付的版本中学到经验。从系统的开发和使用中学习一切可能学到的东西。过程中的关键是从系统需求的简单子集实现开始,通过迭代增强和进化后续版本,直到系统被实现。每次迭代中,对设计进行修改,并增加新的功能要求。
3、特性
引进了包的概念,无需等到所有需求明确,只要某个需求明确了,就可以进行开发。
4、优点
5、存在的风险
1、PSP
2、个体软件过程
1、价值观和基本原则
(1)4个核心价值观
(2)12条原则
2、基本技术
3、敏捷技术
1、3个角色
2、3个工件
3、5个活动
4、5个价值
通过程序设计(Programming)、编码(Coding)得到程序、语句(段),书写(Write)文档或程序,设计(Design)包括软件及其构件、类、函数、算法、数据结构等的软件工件,也通过开发(develope)得到软件或程序。伴随着程序成为软件、作为产品或系统,程序员或软件开发者使用可复用技术、集成技术等把一个软件的不同组成部分按照一定的结构、通过一系列步骤组装(Assemble)成可运行的软件。建造(Build)与程序的编译有关,它可以把一个或一组源程序文件翻译成可执行的指令序列;也可以把构成一个软件的所有源程序文件、配置文件、数据文件及它们需要的库文件等,按照一定的顺序编译并连接成一个可运行文件。Meyer:面向对象软件构造是一种软件开发方法,是运用面向对象技术开发具有结构的软件系统,其结构组成是类;类可以立即实现,也可以延迟实现(从而具有动态性)。因而,软件具有房屋建造的特点,是使用了预制的、可复用的建造部件,按照(设计的)结构和流程而完成的产品。
1、按计算模型划分
2、按执行模式划分
高级语言的程序不能直接上计算机运行,需要转换成低级语言的指令后才能运行。
1、软件运行环境
软件运行环境,广义上说,是一个软件运行所要求的各种条件,包括软件环境和硬件环境。许多应用软件不仅仅要求特定的硬件条件,还对软件提出明确的支撑条件。操作系统将计算机的硬件细节屏蔽,将计算机抽象成虚拟资源。通常把计算机硬件和操作系统称为平台。
2、虚拟机
3、支撑环境
1、最佳实践
2、原则
一个已经接受或专业化的指导行动的最高准则或标准。人们总结、使用了软件开发的基本原则、面向对象原则等。原则必须通过某种途径体现出来,才具有指导作用。
3、机制
指的是有机体的构造、功能及其相互关系、工作原理,如可视化编程的事件响应机制、类型的多态机制。
4、技术
是科学原理的应用,是具有技能特点的特殊的步骤或途径。软件开发技术是运用了计算机科学、数学、系统科学、管理科学的基本原理,进行软件开发的方式方法。
5、方法
是获得一个客体(对象)的步骤或过程。作为一个系统的步骤、技术活动被特定的专业或艺术采纳,是技能或技术的全部。研究方法及其知识的活动称为方法学,如面向对象方法学
6、工具
工具指的是执行操作的器具,引申为为达到、完成或促进某一事物的手段。我们使用更加广泛的含义,软件工具指的是从编辑器、编译器、自动化测试框架到IDE的实用程序。
软件开发不像计算机、手机的制造等可以使用机器设备进行大规模的自动化生产。软件开发主要是人的智力活动,而且很多时候是一群人的开发活动。
1、模块化
(1)模块化
(2)软件模块
(3)模块的三大特征
(4)模块化的好处
2、结构化
1、数据结构
2、计算机算法
3、两者关系
1、算式与习题的基本数据结构
(1)设计1:
包含两个运算数,一个运算符及结果的数据结构
- typdef struct equation{
- unsigned short int left_operand, right_operand;
- char operator;
- unsigned short int value;
- }
需要注意:
1)命名:见名知意
2)一个结构类型是否包含非独立变量,应该考虑下列因素:
(2)设计2
用一个数组[operand,operand2,operator]表示算式Equation。
2、比较
3、算法分析与其它数据结构
1、习题与算式的分离
把习题和算式明确地从代码中抽出,并分别用合适的数据结构表示,有助于各自的设计与实现,也能实现不同的算式和习题的任意组合。
2、算式产生与其约束条件的分离
分别定义运算数生成函数与约束条件检测函数,对满足一定条件的运算数才生成算式。这样,约束条件的任意变换都不影响算式生产函数,也支持用户灵活设置约束条件。
3、加减法算式的分离
便于生产混合运算。
1、Meyer提出了5条标准来评价一种设计方法是否定义了有效的模块系统能力:
2、模块的独立程度可以由两个定性标准来度量:
内聚性越高,相对地,它与其它模块之间的耦合度就会降低,模块越独立。内具有7种,由弱到强排列如下:
开发中尽量追求松耦合,耦合度从低到高可分为7级:
测试设计包括测试用例的设计,此外还包括是否实施所有层次的测试,是否采用测试工具或自动化测试框架、哪些测试采用哪些工具,如何组织人员等等。
程序的运行结果可以分成以下三类:
测试数据全部通过,说明待测试程序在一定程度上满足需求或功能要求。测试结果的判定可能会存在误判和漏判。
待测程序使用测试用例的3种方式:
软件Bug的准确术语是缺陷(Defect),就是软件产品中所存在的问题,最终表现为用户所需要的功能没用完全实现,不能满足或不能全部满足用户的需求。从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误、毛病等各种问题;从产品外部看,软件缺陷是系统所需要实现的某种功能的失效或违背。
软件缺陷源自人的过失活动产生的不正确结果,导致在软件产品、模块中出现了缺陷或故障。
所谓错误就是导致不正确结果的全部。它展示了某个故障的不正确的内部状态。可以理解Bug是程序中引起错误的具体位置,因此,debug就是找出并更改程序中的错误。
ISO定义的6个独立的质量特性:
1、覆盖测试
(1)覆盖测试
测试所包含的软件的特征、元素、成分等方面的程度或范围。
(2)原则
2、基于等价类划分的测试
等价类划分的两种不同情况:
划分原则:
3、基于边界值分析的测试
基本策略
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。