软件工程
软件生命周期
问题定义
要求系统分析员与用户进行交流,弄清“用户需要计算机解决什么问题”然后提出关于“系统目标与范围的说明”,提交用户审查和确认
可行性研究
一方面在于把待开发的系统的目标以明确的语言描述出来
另一方面从经济、技术、法律等多方面进行可行性分析。
需求分析
确定软件系统的功能需求和非功能需求;
分析软件系统的数据要求:
导出系统的逻辑模型;
修正项目开发计划;
如有必要,可以开发一个原型系统。
开发阶段
1,设计
2,实现:根据选定的程序设计语言完成源程序的编码。
3,测试
UML(Unified Modeling Language,统一建模语言)
构件图
用来以图形化的方式描述系统的物理结构,它可以用来显示程序代码如何分解成模块
部署图
描述系统中硬件和软件的物理架构,它描述构成系统架构的软件构件、处理器和设备
用例图
以图形化的方式描述系统与外部系统及用户的交互。对系统的使用方式进行分类。
协作图
强调收发消息的对象之间的结构组织
序列图
描述了在一个用例或操作的执行过程中以时间顺序组织的对象之间的交互活动,关注系统的动态视图
对象图
展现了一组对象以及它们之间的关系,描述了在类图中所建立的事物的实例的静态快照
类图
展现了一组对象、接口、协作和它们之间的关系,给出系统的静态视图,对系统的静态设计视图建模(对系统的词汇建模、对简单协作建模、对逻辑数据库模式建模)
状态图
用于类、接口、协作的行为建模,强调对象行为的事件顺序,关注系统的动态视图
活动图
是一种特殊的状态图,展现了在系统内从一个活动到另一个活动的流程。活动图专注于系统的动态视图,它对于系统的功能建模特别重要,并强调对象间的控制流程。
顺序图
强调的是对象间发送消息的顺序。
类之间的相互联系
在类与类之间的5种关系中,从弱到强依次为:依赖,关联,聚合,组合和继承
软件开发模型
瀑布模型
给出了软件生存周期中制定开发计划、需求分析、软件设计、编码、测试和维护等阶段以及各阶段的固定顺序,上一阶段完成后才能进入到下一阶段,整个过程如同瀑布流水。该模型为软件的开发和维护提供了一种有效的管理模式,但在大量的实践中暴露出其缺点,其中最为突出的是缺乏灵活性,特别是无法解决软件需求不明确或不准确的问题。这些问题有可能造成开发出的软件并不是用户真正需要的,并且这一点只有在开发过程完成后才能发现。所以瀑布模型适用于需求明确,且很少发生较大变化的项目。
演化模型
允许在获取了一组基本需求后,通过快速分析构造出软件的一个初始可运行版本(称作原型),然后根据用户在适用原型的过程中提出的意见对原型进行改进,从而获得原型的新版本。这一过程重复进行,直到得到令用户满意的软件。该模型主要用于对软件需求缺乏准确认识的情况。
螺旋模型
将瀑布模型和演化模型进行结合,在保持二者优点的同时,增加了风险分析,从而弥补了二者的不足。该模型沿着螺线旋转,并通过笛卡尔坐标的四个象限分别表示四个方面的活动:制定计划、风险分析、实施工程和客户评估。螺旋模型为项目管理人员及时调整管理决策提供了方便,进而可降低开发风险。
喷泉模型
以面向对象的软件开发方法为基础,以用户需求为动力,以对象来驱动的模型。该模型主要用于描述面向对象的开发过程,体现了面向对象开发过程的迭代和无间隙特性。迭代指模型中的活动通常需要重复多次,相关功能在每次迭代中被加入新的系统。无间隙是指在各开发活动(如分析、设计、编码)之间没有明显边界。