软件:程序+数据+文档
程序:在运行中能提供所希望的功能和性能的指令集。
数据:使程序能够正确运行的数据。
文档:描述程序研制过程和方法使用的文档。
软件的特点: 软件是逻辑产品,硬件是物理产品
- 软件开发更依赖于开发人员的业务素质、智力、人员的组织、合作和管理。
- 软件开发、设计几乎都是从头开始,成本和进度很难估计。
- 软件存在潜伏错误,硬件错误一般都能排除。
- 软件开发成功后,只需对原版进行复制。
- 软件在使用过程中维护复杂。
软件危机:在计算机软件开发和维护过程中所遇到的一系列严重问题。
具体表现:
- 开发成本和进度估计不准。
- 用户对“已完成的”软件系统不满意。
- 软件质量往往靠不住。
- 软件常常是不可维护的。
- 软件通常没有适当的文档资料。
- 软件成本逐年上升。
- 软件开发生产率滞后于硬件硬件和计算机应用普及。
软件工程:用工程、科学和数学的原则与方法开发、维护计算机软件的有关技术及管理方法。
软件工程构成三要素:过程、方法、工具
目的:在给定成本、进度的前提下,开发满足用户需求的并具有以下特性的软件产品。
- 可修改性 2.有效性 3.可靠性 4.可理解性 5.可维护性 6.可重用性 7.可移植性 8. 可追踪性 9.可适应性 10.可互操作性
原则:1.抽象 2.信息隐藏 3.模块化 4.局部化 5.一致性 6.完全性 7.可验证性
基本原理:
- 用分阶段的生存周期计划严格管理。
- 实行严格的产品控制。
- 采用现代程序设计技术。
- 结果应能清楚地审查。
- 开发小组的人员应少而精。
- 承认不断改进软件工程实践的必要性。
软件生存周期:软件从定义开始,经过开发、使用和维护,直到最终退役的全过程。
各阶段划分:软件定义: 可行性研究(经济、技术、操作、法律等)
需求分析(功能、性能、运行环境、前景等)
软件开发: 概要设计
详细设计
实现
集成测试
确认测试
软件使用与维护:
使用与维护(纠错、适应、改善、预防)
退役
需求分析主要方法:面向数据流的分析方法(其中典型是结构化方法,又称SA方法)
软件开发模型的几种类型:
- 以软件需求完全确认为基础的瀑布模型;
- 在开发初期仅给出基本需求的渐进式模型,如原型模型、螺旋模型、喷泉模型;
- 以形式化开发方法为基础的变换模型、基于四代技术的模型;
- 基于知识的智能模型。
三大模型主要问题:
瀑布模型:线性过程太理想化
原型模型:用户需求往往不完全和不准确
螺旋模型:迭代效率不高,增加成本并推迟提交时间
软件开发方法:
- 结构化方法(采用“抽象”和“分解”两个基本手段)
适用于开发大型的数据处理系统,特别是管理信息系统
缺点:可维护性、稳定性、可修改性和可重用性比较差;
由于不是使用构造性的术语进行思考,所以软件需求与软件实现之间存在巨大差异
2. 面向对象建模方法(采用“封装”、“分类”和“继承”三个基本原则)
以客观世界中实体为基础,将客观实体的属性与操作封装成对象,对象之间通过传递消息互相联系,以模拟现实中不同的事物彼此之间的联系。
优点:符合人们的思维习惯
软件过程模型具有高度的连续性
软件的可维护性和可重用性好
系统流程图(描绘物理系统的工具)
数据流图(描绘数据在系统中流动的逻辑过程)
数据字典(对数据流图中包含的所有元素的定义的集合)
成本/效益分析
- 代码行技术
- 任务分解技术
- 自动估计成本技术
软件需求的三个层次
业务需求
用户需求
功能与非功能需求(约束与限制)
软件需求的三种类型
功能需求
非功能需求
设计约束
优秀需求的标准(一个好的需求规格说明应该具有的特征)
- 完整性
- 正确性
- 可行性
- 必要性
- 划分优先级
- 无二义性
- 可验证性
需求工程:(需求开发、需求管理)
指应用工程化的方法、技术和规格来开发和管理软件的需求。
目的:获取高质量的软件需求。
问题分析的五步法
- 在问题定义上达成共识;
- 理解根本原因,也就是分析问题背后的问题;(定性分析的鱼骨图、定量分析的帕累托图,两种实用的工具)
- 确定相关人员和用户;
- 定义解决方案的界限;(上下文关系图,即数据流图中的顶层图)
- 确定加在解决方案上的约束。(对技术开发的约束、项目实施的约束)
建模的目的:
- 帮助我们按照实际情况或按我们需要的样式对系统进行可视化;
- 提供一种详细说明系统的结构或行为的方法;
- 给出一个指导系统构造的模板;
- 对我们所做出的决策进行文档化;
要点:
- 设计要考虑到计划之外的变化;
- 设计要文档化;
- 用可视化的模型表达架构,有助于理解变化所代表的含义;
原则:
- 不同的模型的精度级不同;
- 单个模型是不充分的,最好用一组几乎独立的模型;
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!