软件工程学习结构

软件工程基础

信息系统开发生命周期

软件工程基本原理

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

软件工程的基本要素

方法、工具、过程

软件生存周期

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

软件过程模型

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

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

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:每个独立条件都要执行一次真假

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

路径覆盖:所有可行路径

系统维护

系统转换

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

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

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

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

数据转换与迁移

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

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

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

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

系统可维护性

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

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

系统维护

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

软件维护类型:

正确性维护

适应性维护

完善性维护

预防性维护

系统架构师之软件工程相关推荐

  1. 系统架构师具备的能力和构架师自我培养过程

    2019独角兽企业重金招聘Python工程师标准>>> 系统架构师具备的能力 一般来讲,系统架构师应该拥有以下几方面的能力: 1:具备 8 年以上软件行业工作经验: 2:具备 4 年 ...

  2. Java学习的30个目标以及系统架构师推荐的书

    第一阶段  你需要学习JAVA语言的基础知识以及它的核心类库 (collections,serialization,streams,networking, multithreading,reflect ...

  3. 系统架构师5 ***********那就给个合格分了。111

    https://download.csdn.net/download/sun_lq/11109495 https://download.csdn.net/download/u011669055/107 ...

  4. 系统架构师成长之路(一)

    背景:系统架构师是近几年来在国内外迅速成长并发展良好的一个职业,它对系统开发和信息化建设的重要性及给IT业所带来的影响是不言而喻的.在我国,虽然系统架构师的职业在工作内容.工作职责以及工作边界等方面还 ...

  5. 2010年系统架构师考试题详解

    原文地址为: 2010年系统架构师考试题详解 考试科目一:综合知识 采用微内核结构的操作系统提高了系统的灵活性和可扩展性,(1) (1)A.并增强了系统的可靠性和可移植性,可运行于分布式系统中 B.并 ...

  6. 2015年系统架构师考试题详解

    原文地址为: 2015年系统架构师考试题详解 考试科目一:综合知识 某航空公司机票销售系统有n个售票点,该系统为每个售票点创建一个进程Pi(i=1,2,-,n)管理机票销售.假设Tj(j=1,2,-, ...

  7. 软件工程结构化建模的方法和工具_系统架构师之——软件开发方法

    不管你是开发人员,还是互联网行业人员,基本上经常看到各种各样的软件相关的图,如什么架构图什么设计图什么模式图甘特图等.很多时候总是傻傻分不清.对此,我们很有必要对系统开发基础知识有认知.对于一名程序员 ...

  8. 【软考系统架构设计师】2011年下系统架构师综合知识历年真题

    [软考系统架构设计师]2011年下系统架构师综合知识历年真题 2011年下系统架构师综合知识历年真题 [软考系统架构设计师]2011年下系统架构师综合知识历年真题 [2011下架构真题第01题:绿色] ...

  9. 【备忘】JavaEE系统架构师学习路线图

    转载自:http://www.javaxxz.com/thread-286706-1-1.html 第1阶段(Java程序员) - Java语言基础     - 101 JavaSE:[101]JAV ...

最新文章

  1. C++实现大数的四则运算
  2. 导出txt文件宏_利用solidwords二次开发导出三维曲面方阵点坐标方法
  3. Java集合篇:Hashtable原理详解(JDK1.8)
  4. 比特平面分层_平面设计中的分层
  5. Java正则表达式的使用和详解(上)
  6. 关于安装deepin+window10双系统有时没有声音的问题
  7. not supported between instances of 'SafeText' and 'int' 问题出现以及解决
  8. json函数 presto_Hive sql和Presto sql的一些对比
  9. AutoCAD2012从入门到精通中文视频教程 第一课 简介及界面组成 (个人收藏)
  10. 【搬运】不思议的小故事,其实舰娘们也是有灵性的
  11. MySQL-查询本周过生日的人-终极答案
  12. 用matlab解根3乘根2,MATLAB应用.ppt
  13. 小马哥-----高仿红米note3 市场已出现山寨 警惕 高仿红米note3 J7218刷机外观图与开机识别图
  14. switch开关语句
  15. 基于openstack的云桌面开源框架
  16. 微信退款通知显示乱码,xml解析中文乱码
  17. Word中用Endnote插入的引用如何快速定位到参考文献
  18. 音视频入门之如何绘制一张图片
  19. 瑞星个人防火墙2008正式版 官方安装包
  20. VC++对话框的任意扩展

热门文章

  1. 第二届2050大会新生论坛:Conflux研究总监杨光畅谈隐私保护
  2. 大学生总裁吴莹莹:我不是花瓶运营官
  3. 软件测试工程师——写给工作三年以内的你
  4. hp笔记本电脑无线网卡时有时无解决方法!
  5. 大数据学习02:大数据课程概述与大数据背景知识
  6. 腾讯应用宝(道具直购模式)支付经验总结
  7. 中国电信联合诺基亚、英特尔展示5G创新应用,加速5G商用落地
  8. Keil C51V901安装
  9. ug4.0找不到服务器怎么办,ug 4.0 许可证服务器尚未启动 或者ugll许可文件被设置为错误的端口什么意思...
  10. 90后生存现状:月薪6千还焦虑