1、软件是一种逻辑产品,是逻辑的程序实现。
软件工程就是采用工程的概念、原理、技术和方法来开发与维护软件。
软件特点:
1)是一种逻辑实体,不是具体的物理实体。
2)没有明显的制造过程。
3)随着时间推移,需要对软件进行维护以适应运行和业务要求。
4)受到计算机系统限制,对计算机系统有着不同程度依赖性。
5)尚未完全摆脱手工艺开发方式。
6)软件本身是复杂的。
7)成本昂贵。
8)软件工作设计到社会因素。
软件工程原则:
抽象、信息隐藏、模块化、局部化、一致性、完整性、可验证性。
2、软件危机现象:
1)软件开发费用和进度失控
2)软件可靠性差
3)生成出来的软件难以维护
软件危机是指软件生存方式无法满足迅速增长的计算机软件需要,不能有效地开发大型、复杂的软件,从而导致软件开发与维护过程中出现的一系列严重问题的现象。
3、软件开发模型:瀑布模型、原型模型、螺旋模型、增量模型
(1)、瀑布模型
特点:
1) 阶段间具有顺序性和依赖性;
2)推迟实现的观点;(编码前设置需求分析与设计的各个阶段,分析与设计的根本任务规定在这两个阶段主要考虑目标系统的逻辑模型,不涉及软件的物理实现)
缺点:
1)依赖早期进行的唯一的一次需求调查;
2)单一流程,开发中的教训不能反馈应用于本产品的过程;
3)风险往往迟滞后期的开发阶段才显露;
瀑布模型适用于需求清晰明了且时间要求宽松的软件开发项目或者规模小,需求简单,功能单一的项目。
(2)原型模型:快速建立起来的可以在计算机上运行的程序,所完成的功能往往是最终产品能完成的功能的一个子集。
软件系统的原型:
抛弃型(原型开发后,已获取更为清晰需要信息,原型不保留而废弃)
渐进型(原型作为软件最终产品一部分,进一步在此基础开发,增加需求,实现后再交付使用)
原型模型特点:
1) 用户需求不完全或不确定
2) 针对总体轮廓先建立一个用户需求原型,再进行评价和反馈
3) 对原型进行扩充、改进和求精
4) 完成最终产品
缺点:
1)未考虑软件整体质量和长期的可维护性
2) 不合适的操作算法,不合适的开发工具、不合适的操作系统
3) 达不到质量要求产品可能被抛弃,采用新的模型重新设计
(3)螺旋模型将瀑布模型与原型模型结合起来,并加入了两种模型均忽略了风险分析。特点风险驱动,主要用于大规模软件项目,需求不明朗,风险比较高的项目。
(4)增量模型融合了瀑布模型的基本成分和原型的迭代特征。采用随着日程时间的进展而交错的线性序列。
特点:第一阶段增量往往是核心产品。每一阶段增量均为可发布的一个版本,早期的增量是最终产品的“可拆卸”版本、
4、 软件测试是为了发现软件中的错误,软件测试的过程也是程序运行的过程。
软件测试的两种方法:
1) (黑盒测试)已知产品应该具有功能,通过测试检查每个功能是否都可以正常的使用;
黑盒测试,根据软件产品的功能设计规格,对软件进行测试,以证实每个实现了的功能是否符合要求。黑盒测试意味着测试要在软件的接口处进行。
注意:用黑盒测试发现程序中的错误,必须在所有可能的输入条件和输出条件中确定测试数据,来检查程序是否都能产生正确的输出。
2) (白盒测试)已知产品内部的工作过程,通过测试检验产品内部逻辑流程是否按照产品的规格说明书的规定进行;
5、设计白盒测试用例,主要有基本路径测试和逻辑覆盖两种技术、
(1)基本路径测试基本原则是设计出的测试用例要保证在测试中,程序的每一个可执行语句至少要执行一次。
(2)逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例技术。可分为语句覆盖、判定覆盖(分支覆盖)、判定-条件覆盖、条件组合覆盖、路径覆盖。
设计黑盒测试用例,主要有:
(1)等价类划分:从全部可供输入数据中,选择一个子集进行测试选择适当子集,尽可能多发些错误的方法。
(2)边界值分析:首先确定边界情况。
(3)错误推测法:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。
5、 UML (unified modeling language)是进行软件建模的一种语言。
UML是一种标准的图形化建模语言,是面向对象分析与设计的一种标准表示。
UML包括UML语义和UML表示法。
UML语义:描述基于UML的精确元模型定义。
UML表示法:定义UML符号的表示法。
UML的图分为3类:
模型管理图:包图;
结构型的图:类图、对象图、组成结构图、构件图、部署图;
行为型图:用例图、活动图、交互图(顺序图、通信图、交互综述图和定时图)、状态机图、协议状态机图;
UML静态图是描述了系统静态结构的图。
UML动态图主要是指描述了系统行为的图。
6、设计模式是一系列在实践中总结出来的可复用的面向对象的软件设计方法。《Design Pattern》提炼出23个具有代表性的模式。设计模式本身并不是一种具体“技术”,设计模式的宗旨是尽量提高程序的使用率,让程序尽可能的可重用。
设计模式4要素:模式名称、问题、解决方案、效果。
注意:设计模式本身强调的是复用,但这些复用是有特定的上下文的。在使用设计模式时需要权衡模式所带来的影响,不应为了模式而模式、
设计模式分类:
创建型:抽象了类的实例化过程。用于帮助一个系统独立于如何创建、组合、和表示的那些对象。工厂模式(FACTORY)、生成器模式(BUILDER)、工厂方法模式(FACTORY METHOD)、原型模式(PROTOTYPE)、单件模式(SINGLETON)
行为型:解决的是类实体间的通讯关系,以面向对象方式描述一个控制流程。职责链模式(CHAIN OF RESPONSIBLEITY)、命令模式(COMMAND)、解释器模式(INTERPRETER)、迭代器模式(ITERATOR)、中介者模式(MEDIATOR)、备忘录模式(MEMENTO)、观察者模式(OBSERVER)、状态模式(STATE)、策略模式(STRATEGY)、模板方法模式(TEMPLATE METHOD)、访问者模式(VISITOR)
结构型:涉及到如何组合类和对象以获得更大的结构。结构型类模式采用继承机制来组合接口或事项。适配器模式(ADAPTER)、桥接模式(BRIDGE)、合成模式(COMPOSITE)、装饰者模式(DECORATOR)、外观模式(FACADE)、享元模式(FLYWEIGHT)、代理模式(PROXY)