第一章 软件工程基础

1.1软件工程概述

1.1.1软件及软件工程概念

1.软件:软件(Software)是计算机及手机等终端设备运行的指令、数据和资料与服务的集合,包含指令程序、数据、相关文档和完善的售后服务的完整集合。可以表示为:软件=程序+数据+文档+服务。

2.特点:智能性、抽象性、人工方式、泛域性、智能复制性、非损及更新性。

3.软件工程:

1)概念:中国国家标准GB/T 11457—1995《软件工程术语》定义为“软件工程是软件开发、运行、维护和引退的系统方法,目的就是为软件全生存周期活动提供工程化的方法,从而提高软件的质量、降低成本和缩短开发周期等”。

2)特点:系统性、工程化、综合性、学科交叉性等特点。

3)常用方法:面向功能、数据、对象、问题、方面方法,基于构件的开发方法、可视化方法。

4)基本原理:

(1)开发小组的人员在研发团队构成中,应优化结合且少而精;

(2)利用分阶段的生存周期计划严格管理;

(3)坚持进行阶段评审;

(4)实行严格的产品控制;

(5)采用现代程序设计技术;

(6)可清楚地审查软件工程结果;

(7)承认不断改进软件工程实践的必要性。

1.1.2软件工程的发展

1.软件危机

1)概念

指20世纪60年代在计算机软件的研发、运行、维护和管理过程中,出现一系列严重问题的现象。

2)软件危机主要特征

(1) 软件运行经常出现功能、性能不满意或出现故障等现象。

(2) 软件产品的质量、可靠性和安全等方面时常达不到标准。软件产品质量难以保证,甚至在开发过程中就被迫中断。

(3) 软件开发管理差,对成本和进度难估计准确。

(4) 系统时常出现无法维护、升级或更新现象。

(5) 开发效率低,无法满足应用迅速发展与提高实际需要。

(6) 研发成本难控制,在总成本中所占的比例不断大幅上升。

(7) 软件开发没有一整 套规范文档资料和售后服务。

3)软件危机产生原因

软件开发规模、复杂度和需求量不断增加及变化;软件需求分析与设计不完善;开发过程无统一的标准和准则、规范方法;研发人员与用户或研发人员之间互相的交流沟通不够;软件测试调试不规范不细致;忽视软件运行过程中的正常维护和管理等影响因素。

2.软件工程发展过程

第一代:传统软件工程;第二代:对象工程;第三代:过程工程;第四代:构建工程。

1.2软件生存周期及任务

1.概念:指从开始研发软件到软件停止使用的整个过程。是指软件产品从用户提出开发需求开始,经过开发、使用和维护,直到最后淘汰的整个周期。

2.划分原则

1)各阶段任务相对独立。

2)同一阶段的工作任务性质尽量相同。

3.阶段组成及任务

1)开发策划:明确要解决的问题是什么;

2)需求分析:确定“必须做什么”及其他指标要求;

3)总体设计:主要设计软件系统的总体结构;

4)详细设计:对模块功能、性能、可靠性、接口、界面、网络和数据库等进行具体设计的技术描述,并转化为过程描述;

5)编写程序:将模块的控制结构转换成程序代码;

6)测试:对软件进行检测、调试、修改和完善等;

7)运行维护:对交付并投入使用的软件进行维护,并记录保存文档。

1.3常用软件开发模型

1.常用模型:瀑布型模型、快速原型模型、增量模型、螺旋模型、喷泉模型、基于面向对象的模型。

2.软件开发模型的选定:

1)面向过程方法:使用瀑布模型、增量模型、螺旋模型进行开发;

2)面向对象方法:快速模型、增量模型、喷泉模型和统一过程进行开发;

3)面向数据方法:瀑布模型、增量模型进行开发。

第二章 可行性分析及研发策划

2.1软件问题调研及定义

1.调研原则:自顶向下/自底向上逐步展开;坚持实事求是;工程化的工作方式;重点与全面结合的方法;主动沟通与友好交流。

2.软件问题定义:软件问题是指在初步调研的基础上,逐步搞清拟研发软件开发的具体问题,并以书面形式对所有问题作出确定性描述的过程。不同的软件具有不同的问题定义内容。

2.2可行性分析概述

1.概念:可行性分析也称可行性研究,是对拟研发软件项目(或称为申报的“拟研发立项问题”)分析论证可行性和必要性的过程。

2.任务:主要任务为决定软件项目“做还是不做(是否可行)”、及完成对可行项目的“初步方案”。

3.内容:技术可行性分析、经济可行性分析、社会可行性分析、开发方案可行性分析和运行可行性分析等

4.实施过程:明确系统规模和目标;认真研究现行系统;确定系统逻辑模型;制定并推荐技术方案;编写可行性分析报告;审查论证。

2.3项目立项、合同和任务书概述

软件项目特别是重大项目对IT企业关系到存亡与发展,其立项至关重要,也是对软件开发项目的重大决策,应按照科学和民主决策的程序进行。软件开发任务的下达,需要至少满足下列条件之一:软件企业已签订了“项目合同”;“立项申报表(建议书)”已通过项目评审和审批;经过审批的指令性软件研发项目计划或合作性项目。

2.4系统流程图概念、符号及画法

1.概念:系统流程图是可行性分析阶段对软件相关的物理系统处理顺序的描述表述方式。

2.符号(如下图所示):

3.画法:至上而下、分层进行,同层从左到右边顺序画出。

2.5软件开发计划及开发方案概述

1.概念:软件开发计划也称软件项目计划(Software Project Planning)是指在正式进行软件开发之前,制定的具体指导软件开发的实施计划,是指导软件开发工作的纲领。

2.内容:项目概述。实施计划。人员组织及分工。交付产品。其他内容。

3.制定:项目开发计划的制定科学应着重考虑项目规模、类型、特定、复杂度、熟悉程度等。

4.软件开发方案:软件可行性分析完成后,系统分析员要依据技术、工作量、时间、进度、人员组织、费用、软硬件开发及运行环境等因素选择最佳方案进行计划并撰写软件开发方案书。

第三章 软件需求分析

3.1软件需求分析综述

1.概念:IEEE的软件工作标准术语表(1990)将需求定义为:

1)用户解决问题或达到目标所需的条件或能力。

2)系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或能力。

3)一种反映上面或所描述的条件或能力的文档说明。

2.需求分析的基本原则:

1)功能分解,逐层细化。

2)表达理解问题的数据域和功能域。

3)建立模型(业务模型、功能模型、性能模型、接口模型等)。

3.任务:

1)确定目标系统的具体要求;

2)建立目标系统的逻辑模型;

3)编写需求文档;

4)验证确认需求。

4.过程:需求获取、综合与描述、需求验证和编写文档。

5.方法:面向功能分析、面向对象分析、面向数据分析。

3.2结构化分析方法

1.指导思想:结构化方法总的指导思想是“自顶向下、逐步求精(如图3-2所示)”,其基本原则是抽象与分解。

2.组成:结构化开发方法由结构化分析方法(SA法)、结构化设计方法(SD法)及结构化程序设计方法(SP法)构成。

3.步骤:

1)构建原系统物理模型;

2)抽象原系统逻辑模型;

3)建立新系统逻辑模型;

4)进一步补充和优化。

4.工具:实体-联系图(E-R图)、数据流图(DFD)、数据字典(DD)、状态转换图(STD)。

3.3软件需求分析文档概述

在需求分析阶段内,由系统分析人员对新研发的软件系统进行需求分析,确定对该软件的各项功能、性能需求和设计约束,确定对文档编制的要求,作为本阶段工作的结果,需要编写出软件需求分析文档。软件需求分析文档包括:系统(子系统)需求规格说明(SSS) (对整个系统或子系统需求分析的说明性文档)、软件需求规格说明(SRS)、接口需求规格说明(IRS)、数据需求说明(DRD),软件需求相关说明书的评审记录表、需求变更管理表等。

第四章 软件设计

4.1软件设计

4.1.1总体设计

1.总原则及过程是:由宏观到微观、逐步求精的原则,定性定量分析相结合、分解与协调相结合和模型化方法,并要兼顾系统的通用性、关联性、整体性和层次性。根据系统的总体结构、功能、任务和目标的要求分解系统,使各子系统之间互相协调配合,实现系统的整体优化。

2.基本原则:模块化、抽象、内聚和耦合、子系统及模块划分、信息隐蔽等。

3.方法:结构化设计方法、面向数据结构的设计方法、原型法。

4.1.2详细设计

1.原则:

1)详细设计是为后续具体编程实现做准备;2)处理过程应简明易懂;3)选择恰当的描述工具表述模块算法。

2.工具:程序流程图、结构流程图、问题分析图(PAD)。

4.2几类常见设计

1.数据库设计;2.网络系统设计;3.用户界面设计;4.软件设计文档。

第五章 面向对象开发方法

5.1面向对象概述

1.面向对象(OO) 定义:

面向对象= 对象 + 类 + 继承 + 消息通信,具有这4个概念的软件开发方法称为OOM。

2.面向对象方法(OOM)组成:

面向对象分析(OOA)、面向对象设计(OOD)、面向对象编程(OOP)、面向对象测试(OOT)和面向对象维护等。

3.OOM特点:

1)符合人类分析解决问题的习惯思维方式;2)各阶段所使用的技术方法具有高度连续性;3)开发阶段有机集成有利系统稳定;4)重用性好。

4.开发过程:

1)分析阶段;2)高层设计;3)开发类;4)建立实例;5)组装测试;6)维护。

5.开发方法:

1)需求模型;2)分析模型;3)设计模型;4)实现模型;5) 测试模型。

5.2面向对象分析

1.原则:

建立信息域模型;描述功能;表达行为;划分功能、数据、行为模型,揭示更多的细节;以早期模型描述问题实质,以后期模型给出实现细节。

2.OOA中建造的模型:

对象模型、动态模型和功能模型3种。对象模型常由五个层次组成:类与对象层、属性层、服务层、结构层和主题层,其层次对应着OOA过程中建立对象模型的五项主要活动:发现对象、定义 类、定义属性、定义服务、划分结构。

5.3面向对象设计

1.原则:抽象、信息隐蔽、高内聚、低耦合、可重用。

2.任务:系统设计、对象设计、设计优化。

3.OOD过程:

1) 对象描述;2) 设计类中的服务;3) 设计类中的关联;4) 实现链属性;5) 优化设计。

《软件工程与实践》内容概括小结(1-5章)相关推荐

  1. 《软件工程与实践》 |(九)软件工程新技术及体系 知识梳理

    系列索引: <软件工程与实践>第三版 软件工程课程知识梳理 目录 系列索引: <软件工程与实践>第三版 软件工程课程知识梳理 本章重难点: 9.1 软件工程新技术 9.1.1 ...

  2. 设计模式之工厂方法模式、抽象工厂模式的概念和实现及使用“反射技术+读取配置文件”的方法对工厂模式进行改进(软件工程综合实践课程第三周个人作业)

    文章目录 一.实验目的 二.知识总结 1.工厂方法模式简介 2.抽象工厂模式简介 3.工厂模式小结 4.利用"反射技术+读取配置文件"的方法改进程序 三.实验内容 1. 工厂模式实 ...

  3. 数据模型最佳实践_数据科学家应了解软件工程最佳实践

    数据模型最佳实践 意见 (Opinion) 介绍 (Introduction) I have been eagerly researching, speaking to friends and tes ...

  4. 计算机应用综合实践课程报告,南通大学继续教育学院软件工程综合实践课程报告书——生产信息化工作管理系统...

    内容简介: 南通大学继续教育学院软件工程综合实践课程报告书--生产信息化工作管理系统,共38页,9911字 目录 一 前言(1) 二 需求分析(2) (一)系统需求(2) (二)功能需求(2) 1 生 ...

  5. SWEBOK软件工程知识体系 - 11.软件工程专业实践

    软件工程专业实践(SOFTWARE ENGINEERING PROFESSIONAL PRACTICE) 软件工程专业实践知识领域(KA)涉及软件工程师必须具备的知识.技能和态度,以专业.负责和道德的 ...

  6. 《Java程序设计》课堂实践内容总结

    <Java程序设计>课堂实践内容总结 实践一 要求 修改教材P98 Score2.java, 让执行结果数组填充是自己的学号: 提交在IDEA或命令行中运行结查截图,加上学号水印,没学号的 ...

  7. 《Mall商城的设计与实现》软件工程综合实践 课程设计

    <Mall商城的设计与实现>软件工程综合实践 课程设计 目录 1.绪论 1.1.课程设计的意义 1.2.本课程设计的主要工作 2.相关技术简介 2.1.前端技术 2.2.MySQL数据库 ...

  8. 软件工程综合实践专题第一次作业

    软件工程综合实践专题第一次作业 题目:NBA数据库程序分析 来源:SQL SERVER数据库课程同学的小组大作业 create table Coach_information( cname char( ...

  9. Kubernetes 工作实践内容总结-收藏版

    Kubernetes 工作实践内容总结-收藏 k8s 命令基础 Kubectl 自动补全 常用使用命令 查看kube-system ns中所有pod 查看所有node 查看node的资源使用情况 Ku ...

最新文章

  1. 大哥你怕是没听过:头上没毛,代码不牢!
  2. IE浏览器中,设置指定程序查看源文件
  3. 正则 去除字符串中的特殊字符
  4. css实现圆形钟表,js+css3圆形指针时钟代码
  5. html多出的空白页怎么删除,word多出一页空白页怎么删除,这4个方法总有一个能解决,真实挂机网赚项目...
  6. VUE 调试神器 vue-devtools
  7. 请求网页时,怎么给我返回了一段 JavaScript 代码
  8. 谷歌终于开放 “.app” 顶级域名注册:需要 HTTPS 加密
  9. 2.中小型企业通用自动化运维架构 -- Ansible 安装
  10. 一步步学习SPD2010--第十二章节--理解可用性和可接入性(5)--测试可用性
  11. 【工具类】Android判断SD卡状态
  12. SCSA之信息安全概述
  13. 直流稳压电源基本概念及使用方法入门
  14. linux强制修改只读文件权限
  15. 使用html和css的一些案列(小米官网)
  16. pygame声音和音效
  17. 如何对图片主题色进行提取
  18. JavaSE探赜索隐之乾坤袋(集合)
  19. 使用LocalDate类计算两个日期的天数间隔
  20. 在双曲空间进行细粒度实体分类

热门文章

  1. 燕麦云何洋开讲|《我的前半生》是燕麦云的宣传片?!
  2. 如何生成目录结构(2种方式)
  3. java jsp中文乱码怎么解决_JSP中文乱码的解决
  4. 使用pgrouting和geotools实现最短路径,服务区分析
  5. 「Excel常用函数」
  6. mysql基础命令返回上一级_MySQL基础 — 常用命令
  7. UEditor练习(JSP版)20190603
  8. 人像精修除雀斑美女,华丽大转身哈哈
  9. 【iOS开发】—— iOS内存管理
  10. 苍蓝誓约wiki 服务器维护,苍蓝誓约wiki