继续肝吧,本章还是概念性的东西多,大家多看两边理解记忆就好了,本章主要讲信息系统开发方法,软件产品线,软件复用,逆向工程。
结构是指系统内各个组成要素之间的相互联系、相互作用的框架。
结构化方法也称为生命周期法,是一种传统的信息系统开发方法,由结构化分析(Structured Analysis,SA)、结构化设计(Structured Design,SD)和结构化程序设计(Structured Programming,SP)三部分有机组合而成,其精髓是自顶向下、逐步求精和模块化设计。
结构化方法的主要特点
(1)开发目标清晰化。结构化方法的系统开发遵循“用户第一”的原则。
(2)开发工作阶段化。每个阶段工作完成后,要根据阶段工作目标和要求进行审查,这使各阶段工作有条不紊地进行,便于项目管理与控制。
(3)开发文档规范化。结构化方法每个阶段工作完成后,要按照要求完成相应的文档,以保证各个工作阶段的衔接与系统维护工作的遍历。
(4)设计方法结构化。在系统分析与设计时,从整体和全局考虑,自顶向下地分解;在系统实现时,根据设计的要求,先编写各个具体的功能模块,然后自底向上逐步实现整个系统。
注意:结构化,就是面向过程,面向数据流。
结构化方法的不足和局限
(1)开发周期长:按顺序经历各个阶段,直到实施阶段结束后,用户才能使用系统。
(2)难以适应需求变化:不适用于需求不明确或经常变更的项目。
(3)很少考虑数据结构:结构化方法是一种面向过程,面向数据流的开发方法,很少考虑数据结构。
结构化方法常用工具
结构化方法一般利用图形表达用户需求,常用工具有数据流图、数据字典、结构化语言、判定表以及判定树等。
面向对象(Object-Oriented,OO)方法认为,客观世界是由各种对象组成的,任何事物都是对象,每一个对象都有自己的运动规律和内部状态,都属于某个对象类,是该对象类的一个元素。复杂的对象可由相对简单的各种对象以某种方式而构成,不同对象的组合及相互作用就构成了系统。
面向对象方法的特点
(1)使用OO方法构造的系统具有更好的复用性,其关键在于建立一个全面、合理、统一的模型(用例模型和分析模型)。
(2)OO方法也划分阶段,但其中的系统分析、系统设计和系统实现三个阶段之间已经没有“缝隙”。也就是说,这三个阶段的界限变得不明确,某工作既可以在前一个阶段完成,也可以在后一个阶段完成;前一个阶段工作做得不够细,在后一个阶段可以补充。
(3)面向对象方法可以普遍适用于各类信息系统的开发。
面向对象方法的不足之处
必须依靠一定的面向对象技术支持,在大型项目的开发上具有一定的局限性,不能涉足系统分析以前的开发环节。
当前,一些大型信息系统的开发,通常是将结构化方法和OO方法结合起来。首先,使用结构化方法进行自顶向下的整体划分;然后,自底向上地采用OO方法进行开发。因此,结构化方法和OO方法仍是两种在系统开发领域中相互依存的、不可替代的方法。
原型化方法也称为快速原型法,或者简称为原型法。它是一种根据用户初步需求,利用系统开发工具,快速地建立一个系统模型展示给用户,在此基础上与用户交流,最终实现用户需求的信息系统快速开发的方法。
按是否实现功能分类:分为水平原型(行为原型,功能的导航)、垂直原型(结构原型,实现了部分功能)。
按最终结果分类:分为抛弃式原型、演化式原型。
原型法的特点
原型法可以使系统开发的周期缩短、成本和风险降低、速度加快,获得较高的综合开发效益。
原型法是以用户为中心来开发系统的,用户参与的程度大大提高,开发的系统符合用户的需求,因而增加了用户的满意度,提高了系统开发的成功率。
由于用户参与了系统开发的全过程,对系统的功能和结构容易理解和接受,有利于系统的移交,有利于系统的运行与维护。
原型法的不足之处
开发的环境要求高,管理水平要求高。
由以上的分析可以看出,原型法的优点主要在于能更有效地确认用户需求。从直观上来看,原型法适用于那些需求不明确的系统开发。事实上,对于分析层面难度大、技术层面难度不大的系统,适合于原型法开发。
从严格意义上来说,目前的原型法不是一种独立的系统开发方法,而只是一种开发思想,它只支持在系统开发早期阶段快速生成系统的原型,没有规定在原型构建过程中必须使用哪种方法。因此,它不是完整意义上的方法论体系。这就注定了原型法必须与其他信息系统开发方法结合使用。
注意:原型试试一种开发思想,只是在系统分析阶段。
敏捷开发是一种以人为核心、迭代、循序渐进的开发方法,相对于传统软件开发方法的“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重软件开发中人的作用。
敏捷软件开发宣言:
1.个体和交互胜过过程和工具
2.可以工作的软件胜过面面俱到的文档
3.客户合作胜过合同谈判
4.响应变化胜过遵循计划
结对编程:一个程序员开发,另一个程序在一旁观察审查代码,能够有效的提高代码质量,在开发同时对代码进行初步审查,共同对代码负责。
自适应开发:强调开发方法的适应性(Adaptive).不象其他方法那样有很多具体的实践做法,它更侧重为软件的重要性提供最根本的基础,并从更高的组织和管理层次来阐述开发方法为什么要具备适应性。
水晶方法:每一个不同的项目需要一套不同的策略、约定和方法论。
特性驱动开发:是一套针对中小型软件开发项目的开发模式。是一个模型驱动的快速迭代开发过程,它强调的是简化、实用、易于被开发团队接受,适用于需求经常变动的项目。
极限编程XP:核心是沟通、简明、反馈和勇气。因为知道计划永远赶不上变化,XP无需开发人员在软件开始初期做出很多的文档。XP提倡测试先行,为了将以后出现bug的几率降到最低。
并列争球法SCRUM:是一种迭代的增量化过程,把每段时间(30天)一次的迭代称为一个“冲刺”,并按需求的优先级别来实现产品,多个自组织和自治的小组并行地递增实现产品。
提供了在开发组织中分派任务和责任的纪律化方法。它的目标是在可预见的日程和预算前提下,确保满足最终用户需求的高质量产品。
3个显著特点:用例驱动、以架构为中心、迭代和增量。
4个流程:初始阶段、细化阶段、构建阶段和交付阶段。每个阶段结束时都要安排一次技术评审,以确定这个阶段的目标是否已经达到。
适用:一个通用过程框架,可以用于种类广泛的软件系统、不同的应用领域、不同的组织类型、不同性能水平和不同的项目规模。
考题来喽:
1.以下关于结构化开发方法的叙述中,不正确的是()。
A.总的指导思想是自顶向下,逐层分解
B.基本原则是功能的分解与抽象
C.与面向对象开发方法相比,更适合于大规模、特别复杂的项目
D.特别适合于数据处理领域的项目
2.在敏捷过程的开发方法中,()使用了迭代的方法,其中,把每段时间(30天)一次的迭代称为一个“冲刺”,并按需求的优先级别来实现产品,多个自组织和自治的小组并行地递增实现产品。
A.极限编程XP B.水晶法 C.并列争球法 D.自适应软件开发
解析:C C
软件产品线是一个产品集合,这些产品共享一个公共的、可管理的特征集,这个特征集能满足特定领域的特定需求。软产品线是一个十分适合专业的开发组织的软件开发方法,能有效地提高软件生产率和质量,缩短开发时间,降低总开发成本。
核心资源:包括所有产品所共用的软件架构,通用的构件、文档等。
产品集合:产品线中的各种产品。
产品线的建立方式
软件产品线建立方式基本特征
3.软件复用
软件复用是将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费。软件复用是提高软件生产力和质量的一种重要技术。早期的软件复用主要是代码级复用,被复用的知识专指程序,后来扩大到包括领域知识、开发经验、设计决定、体系结构、需求、设计、代码和文档等一切有关方面。
逆向工程:软件的逆向工程是分析程序,力图在比源代码更高抽象层次上建立程序的表示过程,逆向工程是设计的恢复过程。逆向工程的四个级别:
实现级:包括序的抽象语法树、符号表、过程的设计表示。
结构级:包括反映程序分量之间相互依赖关系的信息,例如调用图、结构图、程序和数据结构。
功能级:包括反映程序段功能及程序段之间关系的信息,例如数据和控制流模型。
领域级:包括反映程序分量或程序诸实体与应用领域概念之间对应关系的信息,例如E-R模型。
其中,领域级抽象级别最高,完备性最低,实现级抽象级别最低,完备性最高。
与逆向工程相关的概念有重构、设计恢复、再工程和正向工程。
(1)重构是指在同一抽象级别上转换系统描述形式。
(2)设计恢复是指借助工具从已有程序中抽象出有关数据设计、总体结构设计和过程设计等方面的信息。
(3)再工程是指在逆向工程所获得信息的基础上,修改或重构已有的系统,产生系统的一个新版本。再工程是对现有系统的重新开发过程,包括逆向工程、新需求的考虑过程和正向工程三个步骤。它不仅能从已存在的程序中重新获得设计信息,而且还能使用这些信息来重构现有系统,以改进它的综合质量。在利用再工程重构现有系统的同时,一般会增加新的需求,包括增加新的功能和改善系统的性能。
(4)正向工程是指不仅从现有系统中恢复设计信息,而且使用该信息去改变或重构现有系统,以改善其整体质量。
考题来喽:
1.应用系统构建中可以采用多种不同的技术,()可以将软件某种形式的描述转换为更高级的抽象表现形式,而利用这些获取的信息,()能够对现有系统进行修改或重构,从而产生系统的一个新版本。
A.逆向工程((Reverse Engineering) B.系统改进(System Improvement)
C.设计恢复(DesignRecovery) D.再工程(Re-engineering)
A.逆向工程((Reverse Engineering) B.系统改进(System Improvement)
C.设计恢复(Design Recovery) D.再工程(Re-engineering)
2.在软件系统工具中,版本控制工具属于(),软件评价工具属于()。
A.软件发工具B.软件维护工具C.编码与排错工具D.软件管理和软件支持工具
A.逆向工程工具B.开发信息库工具C.编码与排错工具D.软件管理和软件支持工具
答案:A D B D
解析:第二题补充下知识点,软件系统工具通常可以按软件过程活动将软件工具分为软件开发工具、软件维护工具、软件管理和软件支持工具。
软件开发工具:需求分析工具、设计工具、编码与排错工具。
软件维护工具:版本控制工具、文档分析工具、开发信息库工具、逆向工程工具、再工程工具。
软件管理和软件支持工具:项目管理工具、配置管理工具、软件评价工具、软件开发工具的评价和选择。
感谢大伙点赞 关注的支持,是我持续学习更新的动力,关注公众号:Coding-9527,跟大伙一起学习,成长,进步!