软件工程入门

为什么需要学习软件工程?

  软件工程提供了系统化开发管理软件的方法,学习软件工程可以帮助我们掌握开发软件所需的技能,理解软件开发的流程和原则,提高团队合作和项目管理的能力。

第一章 软件与软件工程的概念

1.1软件的概念、特性和分类

1.1.1软件的概念和特性

1.软件的概念

软件是计算机系统中与硬件相互依存的另一部分,包括程序、数据以及相关文档的完整集合。

错误理解:软件就是程序,软件开发就是编写程序

程序:按照事先设计的功能和性能要求执行的指令序列

数据:使程序能够正确处理信息的数据结构

文档:与程序开发、维护、使用有关的图文材料

软件具有产品和产品生产载体的双重作用

2.软件的十大特性

(1)形态特性:无形的不可见的逻辑实体

(2)智能特性:软件凝结了大量脑力劳动,可以帮我们解决复杂计算,分析,决策等问题

(3)开发特性:还需要人工开发,未能实现自动化生成软件

(4)质量特性:软件都是具有缺陷的,需要不断修正,提前准备应对策略。

(5)生产特性:软件一旦开发,复制提供给用户就很简单,因此主要成本在于开发设计

(6)管理特性:智力劳动管理。包括,培训,指导,激励,监督,协调等等

(7)环境特性:对计算机系统环境有不可摆脱的依赖性

(8)维护特性:软件投入使用后需要不断维护

(9)废弃特性:因为外部需求改变,软件不再适用且实施维护不划算,就会退役。软件并不是“用坏”才废弃的

(10)应用特性:应用广泛

1.1.2软件的分类

按照软件的作用分类有以下几种类型:

(1)系统软件:系统软件与计算机硬件紧密结合,例如操作系统,数据库管理系统等

(2)支撑软件:支撑软件又称工具软件,是协助用户开发软件的软件

(3)应用软件:如微信等

(4)可复用软件:如可复用的类库,数据结构,设计模式等

1.2软件工程

1.2.1软件工程

  按照工程化的原则和方法组织软件开发是有效的,是摆脱软件危机的一条主要出路。

  软件工程是指导软件开发和维护的工程性学科,它以计算机科学理论和其他相关的学科理论为指导,采用工程化概念、原理、技术和方法进行软件的开发和维护,把经过时间考验且证明是正确的管理技术和当前能够得到的最好技术方法结合起来,以较少的代价得到高质量软件并维护它

1.3软件工程的目标

1.软件工程的目标:

以较短的周期,较低的成本生产高质量的软件产品。

2.软件质量特性及其子特性

1.4软件生存期

1.软件生成期

  软件也有一个孕育、诞生、成长、成熟、衰亡的过程。软件生存周期由软件定义、软件开发和运行维护三个时期组成。

  •   软件定义期:“做什么?”。确定工程的总目标和可行性;导出实现工程目标应使用的策略及系统必需完成的功能;估计完成工程所需的资源成本;指定工程进度表。通常分为三阶段:问题定义、可行性研究和需求分析
  •   软件开发时期:“如何做?”,通常包括概要设计,详细设计,编码和测试四个阶段。
  •   运行维护时期:通常包括四类维护活动,改正性维护,适应性维护,完善性维护,预防性维护

2.各阶段任务具体要求:

软件定义时期:

问题定义:“要解决什么问题?”。提交内容为关于问题性质、工程目标和工程规模的书面报告。

可行性研究:需要提交可行性研究报告,可从技术、经济、社会因素等方面研究方案可行性

需求分析和定义:对用户提出的要求进行分析把并且给出详细的定义;准确的回答“系统必修要做什么?”,对系统提出完整、准确、清晰、具体的要求;编写软件需求说明书及初步系统用户手册。提交管理机构评审。

软件开发时期:

概要分析:概括回答“怎么实现目标系统”。设计程序体系结构,确定程序由哪些模块组成及模块间的关系。提交概要设计说明书。

详细分析:“怎么具体实现系统”,详细设计每个模块,确定实现模块功能所需要的算法和数据结构。提交软件的详细设计说明书。

程序编码和单元测试:写出易理解和维护的程序模块。提交源程序,详细的程序说明和单元测试报告。

集成测试和系统测试:通过各种相应的调试,是软件达到预定要求。提交测试计、详细的测试方案和实际测试结果。

运行维护时期:

改正性维护:也就是诊断和改正在使用过程中发现的软件错误

适应性维护:修改软件使其适应环境的变化

完善性维护:根据用户要求扩充改进软件

预防性维护:修改软件为将来维护做准备。

3.开发过程的典型文档

  • 软件需求规格说明书:描述开发软件要做什么?
  • 项目计划书:描述要完成的任务、顺序、需要的时间和工作量
  • 软件测试计划:如何测试软件,确保软件应该实现规定的功能,达到预期的性能
  • 软件设计说明书:描述软件的结构,概要设计和详细设计
  • 用户手册:描述如何使用软件

1.5软件工程方法概述

1.软件工程方法定义

软件工程包含技术和管理两方面内容,是技术和管理紧密结合的工程学科。把软件开发生命周期全过程使用的一套技术集合称为方法学也称为“范型”。

软件工程学包含:方法、工具、过程。

  • 方法:为建软件提供技术上解决方案。目前用得最多的是传统结构化的方法合面向对象的方法。
  • 工具:为方法的运用提供自动或半自动的软件支撑环境(如CASE)
  • 过程:获得高质量软件需要完成的一系列任务框架,他规定了完成各项任务的工作步骤

1.5.1传统方法

传统方法:把软件的生命周期分为若干个阶段,严格按顺序逐步完成各阶段任务,且每阶段结束都需要接受评审。

优点:相对独立,复杂性不高,便于分工合作。

缺点:适应需求的灵活度不够。

1.5.2面向对象方法

面向对象方法:将数据和数据操作紧密结合的方法。面向对象的出发点和原则是尽可能模拟人类习惯,使开发软件的开发过程和方法接近人类认识问题解决问题的方法和过程。

优点:面向对象的概念和表示方法上一致,保证了各项开发活动之间平滑过渡。对于大型、复杂交互性强的系统会更加有优势。

1.5.3面向服务方法

  面向服务方法:通过组合各种服务构建软件系统。(例如:短信验证、云存储等)

  特点:

  •   企业内外部服务提供者都可以提供服务。
  •   服务绑定可以延迟到这些服务被部署或者执行时,可以灵活变化服务提供者和服务。
  • 计算密集型处理可以迁移到外部的服务。

1.5.4面向数据方法

1.5.5形式化方法

形式化方法:基于形式化数学变换的软件开发方法,可以将系统规格说明转化为可执行的程序。

1.6软件工具概述

1.6.1软件工具概念

  软件工具指能支持软件生存期某阶段需要使用的软件。(集成开发环境是多工具的集成)

1.6.2软件工具的分类

  1. 支持软件开发过程的工具(如编译器,测试工具等)
  2. 支持软件维护过程的工具(如版本控制工具,文档分析工具等)
  3. 支持软件管理过程和支持过程的工具(如项目管理工具等)

1.7软件工程知识体系和知识域

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值