目录
什么是软件?软件和程序的区别是什么?
软件不是程序,而是程序,数据以及开发,使用和维护所需要的所有文档的整体集合。
程序是为了解决某个特定问题而用程序设计语言描述的适合计算机处理的语句序列。
1.软件是一种逻辑产品,而不是物理实体,具有抽象性
2.软件产品的生产主要是开发研制,没有明显的制造过程
3.软件产品在使用过程中,不存在磨损,消耗,老化等问题。但软件在运行时,为了适应软件硬件,环境以及需求的变化而进行修改完善时,会引入一些新的错误,从而使软件退化,在修改的成本变得让人们难以接受时,软件就被抛弃,生存期停止
4.软件产品的开发主要是脑力劳动,还未完全拜托手工开发的方式
5.软件产品的成本相当昂贵
6.软件对硬件和环境有不同程度的依赖性
7.软件是复杂的
1.服务类软件
2.维护类软件
3.操作管理软件
软件危机是指在计算机软件的开发和维护中遇到的一系列严重问题。
软件危机主要包含了两方面的问题:
一是如何开发软件满足软件日益增长的需求
二是如何维护数量不断增长的已有软件
1.对软件开发成本和研制进度的估计常常很不精确
2.“已完成”的软件不嫩那个满足用户的要求
3.软件产品质量差,可靠性得不到保证
4.软件产品的可维护性得不到保证
5.软件成本在计算机系统总成本中所占的比例逐年上升
6.软件开发的速度远远赶不上计算机应用速度普及深入的趋势
1.软件是计算机系统中的逻辑部件。软件产品往往规模庞大,结构复杂
2.软件开发的管理困难
3.软件开发的费用不断增加,维护费用急剧上升
4.软件开发技术落后
5.生产方式落后
6.开发工具落后
软件工程是指导计算机软件开发和维护的一门工程学科。
软件工厂采用工程的概念,原理,技术来开发和维护软件。
软件工程的研究内容是软件开发技术和软件开发过程管理
1.用分阶段的生存周期计划严格管理
2.坚持进行阶段评审
3.实行严格的产品控制
4.采用现代程序开发技术
5.结果应该清楚地审查
6.开发小组人员应该少而精
7.承认不断改进软件工程实践的必要性
把输入转换为输出的一组彼此相关的资源和活动
软件生存周期是借用工程中产品生存周期的概念得来的,是指某一软件项目从被提出并着手实现开始,直到该软件报废或停止使用为止经历的实践。
软件的生存周期一般分为软件计划,软件开发和软件运行3个时期
1.问题定义
2.可行性研究
1.需求分析
2.概要设计
3.详细设计
4.编码
5.测试
软件开发的瀑布模型也称为生存周期模型或线性顺序模型
只有当分析员能够做出准确的需求分析时,才能得到预期的正确结果。
缺乏灵活性,无法解决软件需求不明确或不准确的问题。
首先快速建立一个能反映用户主要需求的原型系统,让用户能在计算机上试用它,通过实践让用户了解目标系统的概貌,以便判断哪些功能是符合需要的,哪些方面需要改进。用户会提出许多改进建议,开发人员按照用户的意见快速地修改原型系统。这样反复这样反复改进,最终建立完全符合用户需求的新系统。
也称为渐增模型,是瀑布模型的顺序特征和快速原型法的迭代特征相结合的产物。
这种方法表明不同的构建将并行构建,有可能加快工程,但是这这种方法会冒所有组件集成不到一起的风险,因此需要密切地监控整个开发工程,否则将事与愿违。
是一种风险驱动模型
是一种迭代模型,把开发分成几个螺旋周期,每迭代一次,螺旋线就前进一周
是一种比较典型的面向对象软件开发模型,以用户需求为动力,以对象作为驱动的模型,适合面向对象的开发方法。
可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否值得去解决。
不是解决用户提出的问题,而是确定这个问题是否值得去解决。
可行性研究实际上就是一次大大简化了的系统分析和系统设计过程。
从经济,技术,操作和法律4个方面来研究每种解法的可行性。
系统成本包括开发成本和运行维护成本
系统效益包括有形的经济效益和无形的社会效益
货币的时间价值
投资回收期
纯收入
需求分析的任务还不是确定系统怎样完成它的工作,而仅仅是确定系统必须完成哪些任务,也就是对目标系统提出完整,准确,清晰而且具体的需求。
首先,把用户提出来的问题和要求归纳整理,分析和综合,弄清用户想要做什么,应该做什么,把这些作为要求和条件予以明确,这一步称为“用户意图分析”。
在完全弄清用户对系统的确切需求的基础上,用“软件需求规格说明书“在此基础上建立分析模型,从逻辑上完整,严密地描述出要开发的系统,并保证能满足上述要求和条件。这一步称为”规范化“。
1.确定对系统的综合需求(功能,性能,环境,接口)
2.分析系统的数据需求
3.建立软件的逻辑模型
4.编写软件需求规格说明书
5.需求分析评审
1.需求获取:调查研究
2.需求提炼:分析建模
3.需求描述,编写SRS
4.需求验证
1.客户访谈
2.建立联合分析小组
3.问题分析和确认
又称为概要设计或初步设计
软件总体设计的任务是软件体系结构设计和软件模块设计
良好的体系结构应是普通适用的
体系结构在一定时间内保持稳定
良好的体系结构意味着普通,高效和稳定
1.降低模块之间的耦合性,提高模块的内聚性
2.模块结构的深度,宽度,扇入,扇出应适当
3.模块的作用范围范围应该在控制范围内
4.模块的接口设计要简单,以降低复杂程度和冗余度
5.设计功能可预测并能得到验证的模块
6.适当划分模块规模,以保证其独立性
无直接耦合
数据耦合
符号耦合
控制耦合
公共环境耦合
内容耦合
偶然内聚
逻辑内聚
时间内聚
通信内聚
顺序内聚
功能内聚
详细设计的根本目的就是确定应该怎样具体实现所要求的系统
具体的就是为软件结构图中每一个模块确定采用的算法和块内数据结构
结构有顺序,条件和重复三种
结构化程序设计采用自顶向下,逐步求精的设计方法和单入口单出口的控制结构
程序流程图
盒图
问题分析图
过程设计语言(PDL)
在进行人机界面设计时,几乎都遇到4个问题:
系统响应时间,用户帮助设施,出错信息交互,命令交互
1.让用户驾驭软件,而不是软件驾驭用户
2.尽可能减少用户的记忆负担
3.保持界面的一致性
1.待开发软件的应用领域
2.用户的需求
3.软件的运行环境
4.软件开发人员的知识
5.软件的可移植性要求
4GL的概念最早提出是在20世纪70年代末。
主要特征是:友好的用户界面,非过程性,程序员只需要告诉计算机”做什么“,而不必描述”怎么做“
由于易学易用受到广大用户欢迎。
面向对象是一种新的思维方法,它不是把程序看作是工作在数据上的一系列过程或函数的集合,而是把程序看作是相互协作而又彼此独立的对象的集合。
1.与人类习惯的思维方式一致
2.软件稳定性好
3.可重用性好
4.较易开发大型软件产品
5.可维护性好,易于测试
1.相对面向过程而言比较麻烦,需要更多的代码
2.占用时间比较多,程序效率比较低,比如多态等特性会降低性能
3.创建对象实例的过程往往是非常耗时的工作
4.面向对象的4大特征在一定程度上避免了不合理的操作,但也增大了测试的难度
Booch最先描述了面向对象软件开发方法的基础问题,指出面向对象开发是一种根本不同于传统的功能分解方法。
Booch方法把系统的开发工作分为了”微观过程“和”宏观过程“两个部分。
Booch方法的设计部分可分为逻辑设计和物理设计。
是一种逐步进阶的面向对象建模方法
又两个过程
覆盖了分析,设计,实现3个阶段
代表系统静态结构的对象模型,反映系统时间顺序操作的动态模型和对象内部状态关系的功能模型。
一种用例驱动的面向对象开发方法
更多【笔记-软件工程 复习笔记】相关视频教程:www.yxfzedu.com