概述
软件的定义,特点和分类
软件的定义
软件不是程序,而是程序,数据以及开发,使用和维护所需要的所有文档的整体集合。
软件的定义是:计算机程序,方法,规则,相关的文档资料以及在计算机上运行程序时所必须的数据。
软件不是程序,程序是软件的一部分。程序是为了解决某个特定问题而用程序设计语言描述的适合计算机处理的语句序列。没有相关文档,只有程序是不能称为软件产品的。
软件的特点
3.软件产品在使用过程中,不存在磨损,消耗,老化等问题。但软件在运行时,为了适应软件硬件,环境以及需求的变化而进行修改完善时,会引入一些新的错误,从而使软件退化,在修改的成本变得让人们难以接受时,软件就被抛弃,生存期停止
4.软件产品的开发主要是脑力劳动,还未完全拜托手工开发的方式
5.软件产品的成本相当昂贵
7.软件是复杂的
软件的分类
1.服务类软件
2.维护类软件
软件危机的定义和表现形式
软件危机
软件危机是指在计算机软件的开发和维护中遇到的一系列严重问题。
软件危机主要包含了两方面的问题:
表现形式
5.软件成本在计算机系统总成本中所占的比例逐年上升
软件危机的产生原因及解决途径
产生软件危机的原因
1.软件是计算机系统中的逻辑部件。软件产品往往规模庞大,结构复杂
6.开发工具落后
软件工程
概念
软件工程的研究内容和基本原理
内容
软件工程的基本原理
软件过程和软件的生存周期
软件过程
软件生存周期
软件生存周期是借用工程中产品生存周期的概念得来的,是指某一软件项目从被提出并着手实现开始,直到该软件报废或停止使用为止经历的实践。
主要原则
各阶段的任务彼此间尽可能相对独立,同一阶段各项任务的性质尽可能相同,从而降低每个阶段的复杂性,简化不同阶段之间的联系,有利于软件开发过程的组织管理。
计划时期
1.问题定义
开发时期
1.需求分析
2.概要设计
4.编码
5.测试
1.软件工程是指导计算机如那件开发和维护的一门学科
2.首先应该对计算机软件有一个正确的认识,彻底清除“软件就是程序”的错误观念,要使用好的开发技术和方法,并不断探索更好的技术和方法,要有良好的组织,各类人员要相互配合,共同完成任务,充分认识软件开发不是某种个体劳动的神秘技巧,应该开发和使用好的软件工具,从而提高软件生产率。
软件开发模型
瀑布模型
优点
能清晰直观地表达软件开发全过程,明确规定要完成的主要活动和任务,用来作为软件项目工作的基础。
存在的问题
只有当分析员能够做出准确的需求分析时,才能得到预期的正确结果。
缺乏灵活性,无法解决软件需求不明确或不准确的问题。
快速原型模型
首先快速建立一个能反映用户主要需求的原型系统,让用户能在计算机上试用它,通过实践让用户了解目标系统的概貌,以便判断哪些功能是符合需要的,哪些方面需要改进。用户会提出许多改进建议,开发人员按照用户的意见快速地修改原型系统。这样反复这样反复改进,最终建立完全符合用户需求的新系统。
优点
通过实践让用户了解了未来目标系统的概貌,以便判断哪些功能是最符合需要的,哪些方面需要改进,最终建立完全符合用户需求的新系统。
存在的问题
在实际中开发原型系统的语言效率有时会很低,所选用的开发技术和工具不一定符合主流的发展,快速建立起来的系统结构加上连续的修改可能会导致产品质量低下。
增量模型
也称为渐增模型,是瀑布模型的顺序特征和快速原型法的迭代特征相结合的产物。
优点
有较大的灵活性。能够在较短时间内向用户提交一些有用的工作产品。开发出一部分,向用户展示一部分,可让用户及早看到部分软件,及早发现问题。
整个系统是由一个个构建集成在一起的,当需求变更时只变更部分部件,而不必影响整个系统。
存在的问题
这种方法表明不同的构建将并行构建,有可能加快工程,但是这这种方法会冒所有组件集成不到一起的风险,因此需要密切地监控整个开发工程,否则将事与愿违。
螺旋模型
是一种迭代模型,把开发分成几个螺旋周期,每迭代一次,螺旋线就前进一周
存在的问题
该模型需要有相当丰富的风险评估经验和这方面的专门技术,这使得该模型的应用受到了一定限制。
喷泉模型
是一种比较典型的面向对象软件开发模型,以用户需求为动力,以对象作为驱动的模型,适合面向对象的开发方法。
可行性研究
可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否值得去解决。
可行性研究实际上就是一次大大简化了的系统分析和系统设计过程。
在软件开发早期阶段为什么要进行可行性研究?可行性研究的任务是什么?
2.主要任务是,首先进行概要的分析研究,初步确定项目的规模和目标,确定项目的约束和限制,分析几种可能解法的利弊,从而判定原型系统的目标和规模是否现实,系统完成后带来的效益是否大到值得投资开发这个系统的程度。
成本——效益分析
系统成本包括开发成本和运行维护成本
系统效益包括有形的经济效益和无形的社会效益
有形的效益分析
货币的时间价值
纯收入
软件需求分析
需求分析的任务
需求分析的任务还不是确定系统怎样完成它的工作,而仅仅是确定系统必须完成哪些任务,也就是对目标系统提出完整,准确,清晰而且具体的需求。
首先,把用户提出来的问题和要求归纳整理,分析和综合,弄清用户想要做什么,应该做什么,把这些作为要求和条件予以明确,这一步称为“用户意图分析”。
在完全弄清用户对系统的确切需求的基础上,用“软件需求规格说明书“在此基础上建立分析模型,从逻辑上完整,严密地描述出要开发的系统,并保证能满足上述要求和条件。这一步称为”规范化“。
具体任务
2.分析系统的数据需求
3.建立软件的逻辑模型
4.编写软件需求规格说明书
5.需求分析评审
需求分析的步骤
1.需求获取:调查研究
2.需求提炼:分析建模
4.需求验证
需求获取的常用方法
1.客户访谈
2.建立联合分析小组
3.问题分析和确认
软件总体设计
软件体系结构设计准则
良好的体系结构应是普通适用的
软件模块设计准则
软件设计的概念和原理
模块和模块化
抽象
信息隐蔽和局部化
模块独立性及其量度
耦合
内聚
偶然内聚
逻辑内聚
时间内聚
软件详细设计
具体的就是为软件结构图中每一个模块确定采用的算法和块内数据结构
结构化程序设计
结构化程序设计采用自顶向下,逐步求精的设计方法和单入口单出口的控制结构
详细设计工具
程序流程图
盒图
问题分析图
过程设计语言(PDL)
人机界面设计
人机界面设计问题
人机界面设计原则
1.让用户驾驭软件,而不是软件驾驭用户
2.尽可能减少用户的记忆负担
软件编码
程序设计语言的选择
2.用户的需求
4.软件开发人员的知识
5.软件的可移植性要求
第四代语言有哪些主要特征,为什么受到广大用户欢迎?
4GL的概念最早提出是在20世纪70年代末。
主要特征是:友好的用户界面,非过程性,程序员只需要告诉计算机”做什么“,而不必描述”怎么做“
由于易学易用受到广大用户欢迎。
面向对象方法学
面向对象是一种新的思维方法,它不是把程序看作是工作在数据上的一系列过程或函数的集合,而是把程序看作是相互协作而又彼此独立的对象的集合。
面向对象方法学的优点和不足
主要优点
2.软件稳定性好
3.可重用性好
4.较易开发大型软件产品
5.可维护性好,易于测试
不足
2.占用时间比较多,程序效率比较低,比如多态等特性会降低性能
4.面向对象的4大特征在一定程度上避免了不合理的操作,但也增大了测试的难度
典型的面向对象开发方法
Booch方法
Booch最先描述了面向对象软件开发方法的基础问题,指出面向对象开发是一种根本不同于传统的功能分解方法。
Booch方法把系统的开发工作分为了”微观过程“和”宏观过程“两个部分。
Coad/Yourdon方法
又两个过程
1.面向过程分析(OOA)
2.面向对象设计(OOD)
OMT/Rumbaugh方法
代表系统静态结构的对象模型,反映系统时间顺序操作的动态模型和对象内部状态关系的功能模型。
OOSE方法/Jacobson方法
Wirfs-Brock方法
面向对象的分析
四种形式模型
用类和对象表示的对象模型,由用例和场景表示的用例模型,由状态图机和交互图表示的动态行为模型,由构件图和部署图表示的物理实现模型。
用例模型
用例模型往往是从用户需求的角度来描述系统,指明系统应该“做什么”,直接反映用户对目标系统的需求,描述数据在系统中的变换过程及系统的功能。
对象模型
面向对象方法强调围绕对象而不是围绕功能来构造系统。对象模型是面向对象方法最基础,最核心,也是最重要的模型。
动态模型
一旦建立起对象模型之后,就需要考察对象的动态行为。
物理模型
4个模型之间的关系
在面向对象方法学中,面向对象建模技术所建立的4中模型,分别从4个不同侧面描述所要开发的系统,这4种模型相互补充,相互配合,使人们对系统的认识更加全面:由对象模型中用类,对象,接口等定义做事情的实体,这些实体是软件的基本组成单元。用例模型指明系统应该“做什么”,用例模型从用户的角度描述系统功能,动态模型规定在什么时候做什么事情,当问题涉及交互作用和时序时,动态模型尤为重要。物理实现模型通过构件图和部署图描述系统实现和分析涉及中的对应关系。
关系:
1.针对每个类建立的动态模型,描述类实例的生存周期或运行周期
2.用例图中的参与者可能是对象模型中的对象
原文地址:https://blog.csdn.net/m0_73644864/article/details/134815541
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_49206.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!