数字媒体艺术 计算机科学与技术 软考报名 信息处理技术员 行业资讯 考试大纲 直播动态 网络安全 网络管理 通信技术 OpenHarmony 计算机与网络 企业信息化 软件工程 Linux 嵌入式Linux开发基础(ARMAtom) 离散数学 操作系统 C++程序设计 Java 语言程序设计 智能感知与无人系统 机器学习算法与人工智能 Python 软考资讯
第2章 系统开发基础
知识点:
1)软件工程知识:软件需求分析与定义、软件设计、测试与维护、软件复用、软件质量保证及质量评价、软件配置管理、软件开发环境、软件过程管理。
2)软件构件技术知识:构件及其在信息系统项目中的重要性、常用构件标准(COM/DCOM/COM+、CORBA和EJB)。
3)软件体系结构:软件体系结构定义、典型体系结构、软件体系结构设计方法、软件体系结构分析与评估、软件中间件。
4)面向对象系统分析与设计:面向对象的基本概念、统一建模语言UML、可视化建模、面向对象系统分析、面向对象系统设计。
5)软件工具:建模工具、软件开发工具、软件测试工具、项目管理工具。
2.1 软件开发方法
软件开发方法是以软件开发方法为研究对象的学科。从不同角度可以把软件方法学做如下分类:
从开发风范上看,分为自顶向下、自底向上开发方法;
从性质上看,分为形式化、非形式化方法;
从适用范围上看,分为整体性、局部性方法。
1)净室方法
净室软件工程方法是一种形式化方法,它可以生产高质量的软件。
净室方法是一种严格的软件工程方法,它是一种强调正确性的数学验证和软件可靠性的认证的软件过程模型,其目标和结果有非常低的出错率,这是使用非形式化方法难于或不可能达到的。
主要使用三种盒类型:黑盒、状态盒、清晰盒。
净室软件工程并不强调单元测试或集成测试,而是通过定义一组使用场景、确定对每个场景的使用概率及定义符合概率的随机测试来进行软件测试(这种活动称为正确性验证)。
2)结构化方法
结构化方法属于自顶向下的开发方法,强调开发方法的结构合理性及所开发软件的结构合理性。包括:
结构化分析(Structured Analysis,SA)
结构化设计(Structured Design,SD)
结构化程序设计(Structured Programming,SP)等方法。
3)面向对象方法
主要包括:
Coad/Yourdon方法
OMT(Object Model Technology,对象建模技术)方法 统一成为UML(United Model Language,统一建模语言)
OOSE(Object-Oriented Software Engineering,面向对象的软件工程)方法Booch方法
4)原型法
原型法适合于用户需求不明确的场合。它是先根据已知的和分析的需求,建立一个原始模型,这是一个可以修改的模型。在软件开发的各个阶段都把有关信息相互反馈,直至模型的修改,使模型渐趋完善。在这个过程中,用户的参与和决策加强了,缩短了开发周期,降低了开发风险,最终的结果是更适合用户的要求。原型法成败的关键及效率的高低,在于模型的建立及建模的速度。
5)逆向工程
软件再工程(Reengineering)是对现有软件系统的重新开发过程,包括:逆向工程(Reverse Engineering,反向工程)、新需求的考虑(软件重构)和正向工程三个步骤。
2.2 软件开发模型
要掌握软件生命周期的概念、各种开发模型的特点和应用场合。
1)瀑布模型
瀑布模型也称为生命周期法,适用于需求明确或很少变更的项目,它把软件开发的过程分为软件计划、需求分析、软件设计、程序编码、软件测试、运行维护6个阶段。
2)其他经典模型
包括:演化模型、螺旋模型、喷泉模型、智能模型、增量模型、迭代模型、构件组装模型。
3)V模型
以测试为中心的开发模型。
4)快速应用开发
快速应用开发(Rapid Application Development,RAD)模型是一个增量型的软件开发过程模型,强调极短的开发周期。RAD模型是瀑布模型的一个高速变种,通过大量使用可复用构件,采用基于构件的建造方法赢得快速开发。
5)敏捷方法
敏捷方法的发展过程中出现了不同的流派,如:极限编程(Extreme Programming,XP)、自适应软件开发、水晶方法、特性驱动开发等。
从开发者的角度,主要关注点:短平快会议(Stand Up)、小版本发布(Frequent Release)、较少的文档(Minimal Documentation)、合作为重(Collaborative Focus)、客户直接参与(Customer Engagement)、自动化测试(Automated Testing)、适应性计划调整(Adaptive Planning)和结对编程(Pair Programming)。
从管理者的角度,主要关注点:测试驱动开发(Test-Driven Development)、持续集成(Continuous Integration)和重构(Refactoring)。
6)统一过程
统一过程(Unified Process,UP)是一个通用过程框架,在为软件系统建模时,UP使用的是UML。UP的三个特点:用例驱动、以基本架构为中心、迭代和增量。
UP中的软件过程在时间上被分解为4个顺序的阶段:初始阶段、细化阶段、构建阶段和交付阶段。
2.3 需求工程
需求工程是包括创建和维护系统需求文档所必须的一切活动的过程,可分为需求开发和需求管理两大工作。
需求开发包括: 需求获取、需求分析、编写规格说明书(需求定义)、需求验证。
需求管理包括:定义需求基线、处理需求变更及需求跟踪等方面的工作。
1)需求开发概述
需求开发的工作可以分成:问题识别、分析与综合、编制需求分析的文档、需求分析与评审。
需求的分类:软件需求包括功能需求、非功能需求、设计约束3个方面。
需求的另一分类:业务需求、用户需求、系统需求。
2)需求获取
需求获取技术:用户访谈、用户调查、现场观摩、阅读历史文档、联合讨论会。
需求获取、需求分析、需求定义、需求验证4个需求过程阶段不是瀑布式的发展,而应该是迭代式的演化过程。
3)需求分析
需求分析方法种类:结构化分析方法、面向对象分析方法、面向问题域的分析方法(Problem Domain Oriented Analysis,PDOA)。PDOA方法现在还在研究阶段,并未广泛应用。
数据流程图(DFD)和数据字典共同构成系统的逻辑模型。
4)需求定义
需求定义的过程就是形成需求规格说明书的过程,有两种需求定义方法:严格需求定义方法和原型方法。
5)需求管理
2.4 软件设计
从工程管理角度,软件设计可分为概要设计和详细设计两个阶段。概要设计也称为高层设计,即将软件需求转化为数据结构和软件的系统结构。详细设计为低层设计,即对结构图进行细化,得到详细的数据结构与算法。
1)软件设计活动
软件设计包括4个独立又相互联系的活动,即数据设计、体系结构设计、接口设计(界面设计)和过程设计。这4个活动完成以后就得到了全面的软件设计模型。
2)结构化设计
结构化设计是一种面向数据流的设计方法,是以结构化分析阶段所产生的成果为基础,进一步自顶向下、逐步求精和模块化的过程。
2.5 软件测试
软件测试的目的是在软件投入生产性运行之前,尽可能多地发现软件产品中的错误和缺陷。软件测试只是软件质量保证的手段之一。
1)测试的类型
分为动态测试和静态测试两大类。
动态测试:
通过运行程序发现错误。 黑盒测试法
白盒测试法
灰盒测试法
静态测试:
不运行程序,采用人工检测和计算机辅助静态分析的手段进行测试。 桌前检查(Desk Checking)
代码审查
代码走查
2)测试的阶段
可以分为:单元测试、集成测试、确认测试(包括内部确认测试、Alpha测试、Beta测试、验收测试)和系统测试等。
3)性能测试
性能测试是通过自动化的测试工具模拟多种正常、峰值及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行,统一称为负载压力测试。
通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。
压力测试是通过确定一个系统的瓶颈或不能接受的性能点,来获得系统能提供的最大服务级别的测试。
4)验收测试
验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。
5)第三方测试
第三方测试是指独立于软件开发方和用户方的测试,也称为“独立测试”。
2.6 软件维护
软件维护占整个软件生命周期的60%~80%,维护的类型主要有3种:改正性维护、适应性维护、完善性维护。
还有一类叫预防性维护,可以定义为“把今天的方法学用于昨天的系统以满足明天的需要”。
2.7 软件质量管理
软件质量是指软件特性的综合,即软件满足规定或潜在用户需求的能力。软件质量保证是指为保证软件系统或软件产品充分满足要求的质量而进行的有计划、有组织的活动,这些活动贯穿与软件生产的各个阶段即整个生命周期。
软件质量特性度量有两类:预测型和验收型。
常用的国际通用软件质量模型ISO/IEC9126和Mc Call模型。ISO/IEC9126软件质量模型已被我国的国家标准《GB/T 16260——2002 信息技术 软件产品评价 质量特性及其使用指南》。
2.8 软件过程改进
软件过程能力成熟度模型(Capability Maturity Model,CMM)和能力成熟度模型集成(Capability Maturity Model Integration,CMMI)
1)CMM
分为:初始级、可重复级、已定义级、已管理级、优化级。
2)CMMI
与CMM相比CMMI涉及面不限于软件,专业领域覆盖软件工程、系统工程、集成产品开发和系统采购。
CMMI可以看作把各种CMM集成到一个系列的模型中,CMMI的基础源模型包括软件CMM、系统工程CMM、集成化产品和过程开发CMM等。
每一种CMMI模型都有两种表示法,即阶段式和连续式。
2.9 面向对象方法
主要考查面向对象的基本概念、数据隐藏、UML和构件。
1)基本概念
面向对象方法包括面向对象的分析、面向对象的设计、面向对象的程序设计。
对象:对象是指一组属性及这组属性上的专用操作的封装体。一个对象通常可由三部分组成:对象名、属性和操作(方法)。
类:类是一组具有相同属性和相同操作的对象的集合。每个类一般都有实例,没有实例的类是抽象类。
继承:继承是指某个类的层次关联中不同的类共享属性和操作的一种机制。对于两个类A和B,如果A类是B类的子类,则B类是A类的泛化。继承是面向对象方法区别与其他方法的一个核心思想。
封装:面向对象系统中的封装单位是对象,对象之间只能通过接口进行信息交流。
消息:消息是对象间通信的手段、一个对象通过向另一个对象发送消息来请求其服务。
多态性:多态性是指同一个操作作用于不同的对象时可以有不同的解释,并产生不同的执行结果。
2)统一建模语言
统一建模语言(UML)是一种定义良好、易于表达、功能强大且普遍适用的建模语言。它的作用域不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。
UML的结构:UML的结构包括基本构造块、支配这些构造块如何放在一起的规则(体系架构)和一些运用于整个UML的机制。
UML有三种基本的构造块,分别是事物(thing)、关系(relationship)和图(diagram)。
公共机制是指达到特定目标的公共UML方法,主要包括规格说明(详细说明)、修饰、公共分类(通用划分)和扩展机制四种。
规则,UML用于描述事物的语义规则分别为事物、关系和图命名。5个系统视图:逻辑视图、进程视图、实现视图、部署视图、用例视图。
2.10 构件与软件复用
构件(component,组件)是一个功能相对独立的具有可重用价值的软件单元。在面向对象方法中,一个构件由一组对象构成,包含了一些协作的类的集合,它们共同工作来提供一种系统功能。
1)软件复用
可重用性是指系统和(或)其组成部分在其他系统中重复使用的程度。
系统的软件重用由可重用的资产(构件)的开发、管理、支持和重用4个过程。
2)构件技术
构件是软件系统可替换的、物理的组成部分,它封装了实现体(实现某个职能),并提供了一组接口的实现方法。
为了将不同软件生产商在不同软硬件平台上开发的构件组装成一个应用系统,必须解决异构平台的各构件间的互操作问题,目前已出现了一些支持互操作的构件标准,3个主要流派为:
OMG的CORBA(Common Object Request Broker Architecture,公共对象请求代理);
Microsoft 的COM(Component Object Model,构件对象模型)和DCOM(Distributed Component Object Model,分布式构件对象模型);
Sun的EJB(Enterprise JavaBean,企业JavaBean)。
2.11 软件体系结构
软件体系结构(Software architecture,软件架构)为软件系统提供了一个结构、行为和属性的高级抽象,有构成系统的元素的描述、这些元素的相互作用、指导元素集成的模式以及这些模式的约束组成。
软件体系结构试图在软件需求与软件设计之间架起一座桥梁,着重解决软件系统的结构和需求向实现平坦地过渡的问题。
1)软件体系结构建模
软件体系结构建模的首要问题是如何表示软件体系结构,即如何对软件体系结构建模。根据建模的侧重点不同,可以将软件体系结构的模型分为5种,分别是结构模型、框架模型、动态模型、过程模型、功能模型。其中最常用的是结构模型和动态模型。
2)软件体系结构风格
典型的软件体系结构风格有:分层结构、客户/服务器
3)设计模式
MVC(Model-View-Controller,模型-视图=控制器)框架包括3个抽象类:View抽象类、Controller抽象类、 Model抽象类。
© 2019-2021 All rights reserved. 北京转创国际管理咨询有限公司 京ICP备19055770号-1
Beijing TransVenture International Management Consulting Co., Ltd.
地址:佛山市金融高新区京华广场
北京市大兴区新源大街25号院恒大未来城7号楼1102室
深圳市福田区华能大厦
深圳市南山区高新科技园南区R2-B栋4楼12室
梅州市丰顺县留隍镇新兴路881号
汕头市金平区华坞村七巷三楼
长沙市芙蓉区韶山北路139号文化大厦
欢迎来到本网站,请问有什么可以帮您?
稍后再说 现在咨询