软件定义:
1、能够完成预定功能和性能的可执行的指令(计算机程序)
2、使程序能够适当地操作信息的数据结构
3、描述程序的操作和使用的文档
综合来说:软件是计算机系统中与硬件相互依存的另一部分,包括程序、数据及其说明文档(描述信息)
软件的特征:
1、软件是被开发或设计的,不是被制作
2、软件不会磨损
3、正在向基于构建的组装前进,但大多数仍是定制的
软件的分类:
1、系统软件
2、应用软件
3、工程和科学计算软件
4、嵌入式软件
5、产品线软件
6、web应用
7、人工智能软件
软件面临的新挑战:
1、开放计算。2、 络资源、3、开源软件
软件工程的定义:
1、软件工程是建立和使用一套合理的工程原则,以便经济地获得可靠的可以在实际机器上高效运行的软件。
2、软件工程是将系统的、规范的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件。
什么是模型:模型是现实的简化。
软件工程包括:
1、过程:定义了一个过程框架,包含若干个框架活动:沟通、策划、建模、构建、部署
2、方法:如何做、基本原则
3、工具:CASE计算机辅助软件工程
~~~~~~~~~~~~~~ 以下是第一部分 软件过程 ·~~~~~~~~~~~~~
软件过程:也称软件生存周期过程,是活动的集合,而活动是任务的集合,任务把输入加工成输出
活动的执行可以是:线性(顺序)的,迭代(重复)的,演化的,并行的
软件生存周期模型,开发模型,过程模型:三个说法一样意思,规定了软件开发、运作和维护等所需的过程、活动和任务
瀑布模型,经典生命周期:严格线性的
适用情况:所需功能、性能需求能一次性理解和描述,不再变动
优势:
1、结构简单,广为人知
2、配套开发方法和支撑工具
2、配套有成熟的管理模式
缺点:
1、实际项目很少遵守顺序;
2、客户很难清楚描述所有的需求;难以适应需求变化
3、可交付版本在最后才出现,风险高;
4、容易阻塞
5、系统太大时,难以一次做完
增量过程模型:线性和并行
用快速设计的方式(例如:只有界面),跟客户交流;循环迭代地修正、明确需求,开发者也有大体感受;低成本;第一个系统(原型)是要被抛弃的,为了软件质量
适用情况:需求模糊,用于讨论,试水
问题(缺陷):
1、客户要求将原型上线,软件质量和后续维护性得不到保证
2、原型舍弃了一些软件质量,例如低效的算法等 可能会遗留系统
螺旋模型:结合了原型的迭代性和瀑布模型的系统性和可控性,风险驱动,
特点:1、循环逐步加深;2、里程碑
缺点:
1、很难说服客户演进方法是可控的;
2、依靠风险评估专家
协同开发模型,协同工程:过程 络,状态转换。更适合不同的工程团队共同开发的系统工程项目
现在总结演化模型的总体缺点:
1、开发周期数目不定,不利于传统的项目管理和估算技术的应用
2、演化的速度难以把握
3、灵活性和可延展性 VS 软件质量 的平衡
专用过程模型
1、基于构件
2、形式化方法
3、面向方面
4、模型驱动
基于构件
1、构件是软件复用的重要手段,由构件规约和实现两部分组成
2、基于构件开发模型本质上是演化模型,有螺旋模型的特点
形式化方法模型(净室软件工程):严格的数学符 保证正确性
优势:依靠数学分析的方法,避免歧义性、不完整、不一致;高度关注安全性,不容有失的软件(飞行器和医疗)
劣势:非主流
1、耗时、成本高
2、极少数程序员具有相关学习背景,因此需要大量培训
3、对于技术水平不高的客户很难沟通
面向方面的软件开发:
方面,表示构建功能及非功能的横切属性,例如:数据存取/查询和索引(持久性方面)
演化模型适合定义和构建方面,协同开发的并行特点用于“方面”和“构建”的并行开发,要注意二者的异步通信
统一过程模型(Unified Process,RUP):用力驱动,以架构够核心,迭代并且增量
统一过程模型的四个阶段对应本书的五个活动
九个核心工作流

每一个迭代都是一个小的瀑布模型
个人软件过程(PSP:personal software process):强调对产品及其质量的个人测量。
五个框架活动:策划、高层设计、高层设计评审、开发、后验。
PSP强调今早发现错误。是严格有序的,效果显著的。
劣势:对能力的挑战,培训时间长,价格高,人员不习惯
团队软件过程(TSP: Team Software Process):自我组织进行高质量的软件开发
框架活动:项目启动、高层设计、实现、集成、测试、后验。
个人和团队软件都强调了:测量、策划和自我管理
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!