软件危机
- 软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
- 原因:技术原因(软件规模,复杂度),管理原因(缺乏理论指导过分依靠个人,对用户需求没有完整准确的认识)
- 如何克服软件危机 :软件工程
消除软件危机的途径
- 对计算机软件正确认识。
- 推广使用开发软件成功的技术和方法,研究探索更好更有效的技术和方法,消除错误概念和做法。
- 开发和使用更好的软件工具。
- 对于时间、人员、资源等需要引入更加合理的管理措施。
- 软件工程正是从技术和管理两方面研究如何更好地开发和维护计算机软件的一门新兴学科。
-
无章法(个人英雄主义)==>工程项目管理模式(团队合作开发)
软件工程体系结构
- 主要目标:高效开发高质量软件,降低开发成本
统一建模语言(UML)
- 统一建模语言顾名思义它是一种语言,或者说是一种工具,而不是一种方法。
- 统一建模语言将软件开发中的语言表示与过程进行了分离,具有重要的功能:可视化(Visualization)、规格说明(Specification)、构造(Constructing)和文档化(Documenting)。
- Kruchten的4+1视图:
- 逻辑视图
- 进程视图
- 开发视图
- 物理视图
- 用例视图
- UML构成:
- 用例图:用于表示系统与使用者(或其他外部系统)之间的交互,也有助于将需求映射到系统。
- 活动图:用于表示系统中顺序和平行的活动。
- 类图:用于表示类、类型、接口及其间的关系。
- 对象图:用于表示类图中定义的类的对象实例,其配置对系统很重要。
- 顺序图:用于表示重要的对象之间互动顺序。
- 通信图:用于表示对象交互的方法和需要支持交互的连接。
- 时序图:用于表示重点对象之间的交互时间安排。
- 交互概况图:用于将顺序图、通信图和时序图收集到一起,以捕捉系统中发生的重要交互情况。
- 组成结构图:用于表示类或组件的内部,可以在特定的上下文中描述类间的关系。
- 组件图:用于表示系统内的重要组件和彼此间交互所用的接口。
- 包图:用于表示类与组件群组的分级组织。
- 状态机图:用于表示整个生命周期中对象的状态和可以改变状态的事件。
- 部署图:用于表示系统最终怎样被部署到真实的世界中。
软件工程开发方法
- 软件工程三个要素:方法、工具和过程。
- 方法是完成软件开发各项任务的技术,回答**“如何做”**;
- 工具是为方法的运用提供自动或半自动软件支撑环境,回答**“用什么做”**;
- 过程是为获得高质量的软件要完成的一系列任务的框架,规定完成各项任务步骤,回答**“如何控制、协调、保证质量”**。
1.传统方法
- 传统开发方法又称为结构化方法,是一种静态的思想。
- 生命周期模型
- 软件过程划分为若干个阶段
- 每个阶段有各自的任务
- 阶段之间有某种顺序性
2.面向对象方法
- 对象作为融合数据及在数据之上的操作行为的统一的软件构件。
- 把所有对象都划分成类(Class)。每个类都定义了一组数据和一组操作。
- 按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。在类等级中,下层派生类自动拥有上层基类中定义的数据和操作,称为继承。
- 对象彼此间仅能通过发送消息互相联系-封装性。
- 特点:
- 面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式。
- 用面向对象方法学开发软件的过程,是一个主动地多次反复迭代的演化过程。
- 概念和表示方法上的一致性,阶段间平滑(无缝)过渡。
- 特殊到一般的归纳思维过程;一般到特殊的演绎思维过程。(继承的思想)
- 最终产品中的对象与现实世界中的实体相对应,降低了复杂性,提高了可理解性,简化了软件的开发和维护工作。
- 对象是相对独立的实体,容易在软件产品中重复使用,促进了软件重用。
- 面用对象方法特有的继承性,也进一步提高了面向对象软件的可重用性。