系统架构师之软件工程

软件工程学习结构

软件工程基础

信息系统开发生命周期

 软件工程基本原理

用分段的生命周期计划严格管理,坚持进行阶段评审,实现严格的产品控制,采用现代程序设计技术,结果应能清楚的审查,开发小组的人员应该少而精,承认不断改进软件工程实践的必要性

软件工程的基本要素

方法、工具、过程

软件生存周期

可行性分析与项目开发计划、需求分析、概要设计(选择系统解决方案、规划子系统)、详细设计(设计子系统的内部具体实现)、编码、测试、维护。

软件过程模型

瀑布模型: 一般将软件开发分为:可行性分析(计划)、需求分析、软件设计、编码(含单元测试)、测试、运行维护等几个阶段;

螺旋模型:开发过程具有周期性重复的螺旋线状;包含四个阶段:制定计划、风险分析、实施工程和客户评估。强调了风险分析,适用于庞大而复杂、高风险的系统;

V模型:从整体看就是一个V形结构,由左右两边组成;左边的下画线分别代表了需求分析、概要设计、详细设计、编码,右边的上画线代表了单元测试、集成测试、系统测试、验收测试。

原型化模型:第一步就是创建一个快速原型,用于需求不清晰的项目。

增量模型:首先开发核心模块功能,而后与客户确认,之后增量开发。优先级最高的服务最先交付。

喷泉模型:是一种以用户需求为动力,以对象作为驱动的模型。适合于面向对象的开发方法。

基于构建的开发模型CBSD:利用预先包装的构件来构造应用系统,特点是增强了复用性。

形式化方法模型:建立在严格数学基础上的一种软件开发方法。

信息系统开发方法

结构化方法:

也称为生命周期方法,是一种传统的信息系统开发方法。由结构化分析(SA),结构化设计(SD)和结构化程序设计(SP)组成。其精髓是自顶向下、逐步求精和模块化设计。

面向对象:

认为客观世界由各种对象组成,任何事物都是对象,每个对象都有自己的运动规律和内部状态,都属于某个对象类。不同对象的组合及相互作用构成了系统。

原型化方法:

也称为快速原型法,或者简称为原型法,根据用户的初步需求,快速建立一个系统模型展示给用户,在此基础上与用户交流,最终实现用户需求。

统一过程(UP/RUP)

提供了在开发组织中分派任务和责任的纪律化方法。它的目标是在可预见的日程和 预算情况下,确保满足用户最终需求的高质量产品。

三个特点:用例驱动、以架构为核心、迭代和增量

四个流程:初始阶段、细化阶段、构建阶段、交付阶段。每个阶段结束时都要安排一次技术评审,以确定这个阶段的目标是否达到。

敏捷开发

一种以人为核心、迭代、循序渐进的开发方法,强调程序员团队与业务专家之间的紧密协作,面对面沟通(认为比书面的文档更有效),频繁交付新的软件版本,紧凑而自我组织型的团队,能够很的适应需求变化的代码编写和团队组织方法,更注重软件开发中人的作用。

结对编程:一个程序员开发,另一个程序员在一旁观察审查代码。

自适应开发:强调开发方法的适应性,不想其它方法那样有很多具体的实践做法,它更侧重为软件的重要性提供最根本的基础,并从更高的管理层次阐述开发方法为什么要具备适应性。

水晶方法:每个不同的项目都需要一套不同的策略、约定和方法论。

特性驱动开发:针对中小型软件开发项目的开发模式,是一个模型驱动的快速迭代开发过程,强调简化、实用、易于被开发团队接受,适用于需求经常变动的项目。

极限编程XP:核心是沟通、简明、反馈和勇气。无需开发人员在软件开发初期做出很多文档,提倡测试先行。

并列争球法SCRUM:一种迭代的增量话过程,把每段时间(30天)一次的迭代称为一个 “冲刺” ,并按照需求的优先级别实现产品,多个自组织和自治的小组并行递增实现产品。

需求工程

软件需求:指用户对系统在功能、行为、性能、设计约束方面的期待。是指用户解决问题或达到目标所需的条件和能力,是系统或系统部件要满足合同、标准、规范或其他正式规定文档所需具有的条件或能力,以及反映这些条件或能力的文档说明。

分为需求开发和需求管理两大类:

 需求分类

业务需求

反映企业或客户对系统的高层次的目标要求,通常来自项目投资人、客户、市场营销部门或产品策划部门,通过业务需求可以确定项目视图和范围

用户需求

描述的是用户的具体目标,或用户要求系统必须能完成的任务,即描述了用户使用系统能做什么。通常采用用户访谈或问卷调查等方式,对用户使用的场景进行整理,从而确定用户需求。

系统需求

从系统的角度说明软件的需求,包括功能需求、非功能需求和设计约束等。

  1. 功能需求:开发人员必须在系统中实现的软件功能,以满足业务需求。
  2. 非功能需求:指系统必须具备的属性或品质,可细分为软件质量属性(可维护性、可靠性等)和其他非功能性需求。
  3. 设计约束:通常是对系统的一些约束说明,如必须使用国产数据库,必须使用Java语言开发等

常见的需求获取方法

1、用户访谈

2、问卷调查

3、采样

4、情节串联板:一系列图片,通过这些图片讲故事。

5、联合需求计划(JRP):通过联合各个用户代表,通过有组织的会议讨论需求。

6、需求记录技术:任务卡片、场景说明、用户故事等

需求分析

需求分析的任务

1、绘制系统上下文范围DFD)

2、创建用户界面原型

3、分析需求的可行性

4、确定需求的优先级

5、为需求建立模型

6、创建数据字典

7、使用QFD(质量功能部署)

结构化需求分析

特点:自顶向下、逐步分解、面向数据

三大模型:功能模型(数据流图)、行为模型(状态转换图)、数据模型(E-R图)以及数据字典

 面向对象数据分析

需求定义

需求定义(需求规格说明书SRS):是需求开发活动的产物,编制该文档的目的是使项目干系人与开发团队对系统的初始规定有一个共同的理解,使之成为整个开发工作的基础。

需求定义方法

1、严格定义法:也称预先定义法,需求的严格定义建立在以下的基本假设之上:所以的需求都能够被预先定义。开发人员与用户之间能够准确清晰的交流。采用图形或文字可以充分体现最终系统。

2、原型方法:迭代的循环型开发方式,需要注意的问题:并非所有的需求都能在开发前准确的说明,原型可以使项目干系人之间很好的交流。

需求验证

也称需求确认,目的是与用户一起确认需求无误。对需求规格说明书SRS进行评审和测试,包括两个步骤:

  1. 需求评审:正式评审和非正式评审
  2. 需求测试:设计概念测试用例

需求验证通过后,需要用户签字,作为验收标准之一。此时,这个需求规格说明书就是需求基线,不可以再随意更新,如需变更需要走需求变更流程。

系统设计

处理流程设计

流程表示工具

1、程序流程图(PFD):用一些图框表示各种操作,它独立于任何程序设计语言,比较直观、清晰、易于学习掌握。任何复杂的程序流程图都应该由顺序、选择和循环结构组合或嵌套而成。

2、IPO图:流程描述工具,用来描述构建软件系统的每个模块的输入、输出和数据加工。

3、N-S图(盒图):容易表示嵌套和层次关系,并具有强烈的结构化特征,当问题复杂时,N-S图可能很大,不适合复杂程序设计。

4、问题分析图(PAD):一种支持程序化结构设计的图形工具。具有清晰的逻辑结构,标准化的图形等优点,引导设计人员使用结构化程序设计方法,提高程序质量。

业务流程重组BPR 

对企业的业务流程进行根本性的再思考和彻底性的再设计,从而获得可以用诸如成本、质量、服务和速度等方面的业绩来衡量显著的成就。

BPR的设计原则、系统规划和步骤如图:

业务流程管理BPM

以规范化的构造端到端的卓越业务流程为中心,以持续的提高组织业务绩效为目的的系统化方法。

流程管理包含三个层面:规范流程、优化流程和再造流程

BPM与BPR的管理思想最根本的不同在于流程管理并不需要对所有流程进行再造,构造卓越的业务流程并不是流程再造,而是根据现有流程的具体情况,对流程进行规范化设计。

系统设计

主要目的:为系统指定蓝图,再各种技术和实施方法中权衡利弊,精心设计,合理的使用各种资源,最终勾画出新系统的详细设计方法。

系统设计方法:结构化设计方法;面向对象设计方法;

系统设计主要内容:概要设计、详细设计

  • 概要设计:又称系统总体结构设计,是将系统的功能模型分配给软件模块,确定每个模块的功能和调用关系,形成软件的模块结构图,即系统结构图。
  • 详细设计:模块内详细算法设计,模块内数据结构设计,数据库的物理设计,其他设计(代码、输入输出格式、用户界面)编写详细设计说明书、评审。

基本原理

抽象化;自顶向下,逐步求精;信息隐蔽;模块独立(高内聚、低耦合)

设计原则

保持模块的大小适中;尽可能较少调用深度;多扇入、少扇出;单入口、单出口;模块的作用域应该在模块之内;功能应该可预测。

人机界面设计

置于用户控制之下

较少用户记忆负担

保持界面的一致性

测试基础

 软件测试分为动态测试和静态测试

 

系统测试阶段

1、单元测试:依据软件详细设计说明书

2、集成测试:依据软件概要设计文档       

3、系统测试:依据用户需求或开发合同

4、确认测试:内部确认测试、Alpha测试、Beta测试、验收测试

5、回归测试:测试的目的是测试软件变更之后,变更部分的正确性和对变更需求的符合性,以及软件原有的、正确的功能,性能和其他规定的要求的不损害性。

黑盒测试

等价类划分

边界值划分

错误推测

因果图

白盒测试

语句覆盖SC:所有语句都覆盖一次

判定覆盖DC:所有判断语句的真假分支覆盖一次

条件覆盖CC:每个独立条件都要执行一次真假

条件判定组合覆盖:同时满足条件覆盖和判定覆盖

路径覆盖:所有可行路径

系统维护

系统转换

指新系统开发完毕,投入运行,替换现有系统的过程。

直接转换:现有系统被新系统直接取代

并行转换:新系统和老系统并行运行一段时间

分段转换:分期分批逐步转换

数据转换与迁移

将数据从旧数据库迁移到新数据库中。

系统切换前通过工具迁移;

系统切换前采用手工录入;

系统切换后通过新系统生成。

系统可维护性

维护人员理解、改正、改动和改进软件的难易程度。

  • 易分析性
  • 易改变性
  • 稳定性
  • 易测试性
  • 维护性的依从性:软件遵循与维护性相关的标准或约定的能力

系统维护

包括硬件维护、软件维护和数据维护。

软件维护类型:

正确性维护

适应性维护

完善性维护

预防性维护

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值