软件工程基础知识

基本介绍

播报

编辑

软件工程一直以来都缺乏一个统一的定义,很多学者、组织机构都分别给出了自己的定义:

BarryBoehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。

IEEE:在软件工程术语汇编中的定义:软件工程是:1.将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;2.在1中所述方法的研究

FritzBauer:在NATO会议上给出的定义:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。

《计算机科学技术百科全书》:软件工程是应用计算机科学、数学、逻辑学及管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本和改进算法。其中,计算机科学、数学用于构建模型与算法,工程科学用于制定规范、设计范型(paradigm)、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。

比较认可的一种定义认为:软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。

内涵:

一、软件工程过程是指为获得软件产品,在软件工具的支持下由软件工程师完成的一系列软件工程活动,包括以下四个方面:

1、P(Plan)——软件规格说明。规定软件的功能及其运行时的限制。

2、D(DO)——软件开发。开发出满足规格说明的软件。

3、C(Check)——软件确认。确认开发的软件能够满足用户的需求。

4、A(Action)——软件演进。软件在运行过程中不断改进以满足客户新的需求。

二、从软件开发的观点看,它就是使用适当的资源(包括人员,软硬件资源,时间等),为开发软件进行的一组开发活动,在活动结束时输入(即用户的需求)转化为输出(最终符合用户需求的软件产品)。三个阶段:定义阶段:可行性研究初步项目计划、需求分析; 开发阶段:概要设计、详细设计、实现、测试;运行和维护阶段:运行、维护、废弃原则:1、抽象;2、信息隐蔽;3、模块化;4、局部化;5、确定性;6,一致性;7、完备性;8、可验证性

软件工程是一门涉及设计、开发、测试和维护软件系统的学科。作为一名软件工程师,在这个过程中积累了许多心得体会,以下是一些关键点分享:

一、概述

1、软件的概念及特征

软件的概念:

软件是计算机系统中与硬件相对应的另一部分,是一系列程序、数据及其相关文档的集合。程序、数据和文档称为软件工程的三要素。

其中,程序是按照特定顺序组织的计算机数据和指令的集合。数据是使程序能正常执行的数据结构。文档是程序与开发、维护与使用有关的资料。

软件的特点:

(1)复杂性。软件主要是依靠人脑构造出来,多种认为因素使得软件难以统一化。软件的复杂性使得软件产品难以理解、难以生产、更难以对生产过程进行管理。

(2)一致性。软件必须和运行它的硬件保持一致,这是由软件对硬件的依赖所决定的。

(3)退化性。软件与硬件相比不存在磨损和老化问题,但软件会因为缺陷和过时而产生退化,因此,软件在其生命周期中需要进行多次的维护,直至被淘汰。

(4)易变性。软件在生产过程中,甚至在投入使用后,也是可以再次改变的。软件必须能够经历变化并容易改变,这也是软件产品的特有属性。

(5)移植性。软件的运行受计算机系统的制约,不同的计算机系统可能会导致软件无法正常运行,即软件的移植性。

(6)高成本。软件的开发是一个复杂的过程,需要耗费大量的开发成本和管理成本。

2、软件危机的原因与表现

软件危机的概念

我们称软件开发和维护过程中所遇到的严重问题为软件危机。软件危机主要是两个方面的问题,一是如何开发软件以满足对软件日益增长的客户需求;二是如何维护数量不断膨胀的现有软件。

软件危机的原因:

计算机硬件技术的不断进步,要求软件能与之相适应。然而,软件技术的进步一直未能满足形势发展提出的要求,致使问题积累起来,形成日益尖锐的矛盾,最终导致了软件危机。

(1)忽视软件开发前期的需求分析。

(2)开发过程缺乏统一的、规范化的方法论的指导。

(3)文档资料不齐全或不准确。

(4)忽视与用户之间、开发组成员之间的交流。

(5)忽视测试的重要性。

(6)不重视维护或由于上述原因造成维护工作困难。

(7)从事软件开发的专业人员对这个产业认识不充分,缺乏经验。

(8)没有完善的质量保证体系。

软件危机的表现

(1)开发出来的软件产品不能满足用户的需求,即产品的功能或特征与需求不符。

(2)相比越来越廉价的硬件,软件代价过高。

(3)软件质量难以得到保证,且难以发挥硬件潜能。

(4)难以准确估计软件开发、维护的费用及开发周期。

(5)难以控制开发风险,开发速度赶不上市场变化。

(6)软件产品修改维护困难,集成遗留系统更困难。

(7)软件文档不完备,并且存在文档内容与软件产品不服的情况。

3、软件工程的概念及组成

软件工程的概念

将系统化的、严格约束的、可量化的方法应用与软件的开发、运行和维护,即工程化应用与软件。

软件工程是以借鉴传统工程的原则、方法以提高质量,降低成本为目的,指导计算机软件开发和维护的工程学科。

软件工程的组成

软件工程学分为软件开发方法和软件工程管理两个方面,重点是对软件开发方法和工程性技术的研究。

小结

软件是计算机系统中与硬件相对应的另一部分,是一系列程序、数据及其相关文档的集合。软件具有复杂性、一致性、退化性、易变性、移植性和高成本等特征。软件工程是由于软件危机的出现而被提出的,其主旨是以工程化的思想进行软件的开发与维护,目的是高效率地生产出高质量的软件。

软件工程化思想的核心是,把软件看作一个需要通过需求分析、设计、实现、测试、管理和维护的工程产品。软件工程的基本原理包括推迟实现、逐步求精、分解与抽象、信息隐蔽、质量保证等原理。

目前使用得较为广泛的软件工程开发方法学,分别是结构化开发方法和面向对象开发方法。结构化开发方法学采用数据与行为分开的原则,包括结构化分析、结构化设计、结构化编程、

1. 需求分析

  • 深入理解需求:与利益相关者频繁沟通,确保对需求的准确理解,这样可以避免后期的返工。
  • 文档化需求:通过需求文档、用户故事和用例等形式详细记录需求,以便于团队成员参考和追踪。

2. 设计与架构

  • 模块化设计:将系统分解为独立的模块,各个模块之间的耦合度尽量降低,这有助于提高系统的可维护性和可扩展性。
  • 设计模式:善用设计模式(如单例模式、工厂模式、观察者模式等),可以提高代码的复用性和可读性。

3. 编码实践

  • 编码规范:遵循统一的编码规范,保持代码风格一致,这有助于团队协作和代码审查。
  • 单元测试:编写充分的单元测试,确保每个功能模块都能独立工作,并在修改代码时快速发现问题。
  • 持续集成:使用持续集成工具(如Jenkins、GitLab CI)自动化构建和测试,提高开发效率和代码质量。

4. 代码审查

  • 定期代码审查:通过代码审查发现潜在问题,分享最佳实践,从而提高团队整体的代码质量。
  • 接受反馈:乐于接受他人的建议和反馈,不断改进自己的编码习惯和技巧。

5. 版本控制

  • 使用版本控制系统:如Git,跟踪代码变更,管理不同版本,便于协同开发和回滚。
  • 分支管理:合理使用分支策略(如Git Flow),保证稳定版本和开发版本的分离,减少冲突。

6. 文档和注释

  • 及时更新文档:保持项目文档和代码注释的同步更新,确保信息准确和易于理解。
  • 自描述代码:写出清晰明了的代码,并配以必要的注释,减少他人阅读代码的难度。

7. 项目管理

  • 敏捷开发:采用敏捷开发方法(如Scrum、Kanban),通过迭代和增量交付,提高响应变化的能力。
  • 时间管理:合理分配任务和时间,制定明确的里程碑和目标,确保项目按时完成。

8. 用户反馈

  • 重视用户反馈:通过用户反馈不断改进和优化产品,确保产品满足用户需求和预期。
  • 快速迭代:根据用户反馈进行快速迭代,及时修复问题和添加新功能。

9. 技术学习

  • 持续学习:软件工程技术日新月异,保持学习新技术、新工具和新方法的热情,提升自身技能。
  • 分享知识:参加技术交流会、写博客或举办内部分享会,与同行交流经验,共同进步。

10. 团队合作

  • 有效沟通:与团队成员保持良好的沟通,及时解决问题,确保项目顺利推进。
  • 互相支持:尊重和支持团队成员的工作,共同应对挑战,分享成功。

软件工程基础知识

软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。软件工程的基本原理包括:12

  1. 严格按照软件生命周期计划进行管理。
  2. 坚持进行阶段评审。
  3. 实行严格的产品控制。
  4. 采用先进的程序设计技术。
  5. 结果应能清楚的审查。
  6. 开发小组成员应少而精。
  7. 承认不断改进软件工程实践的必要性。

软件工程的主要目标如下:

  1. 实现预期的软件功能,达到较好的软件性能,满足用户的需求。
  2. 增强软件过程的可见性和可控性,保证软件的质量。
  3. 提高软件的可维护性,降低维护费用。
  4. 提高软件开发生产率,及时交付使用。
  5. 合理预算开发成本,付出较低的开发费用。

软件工程的基本概念包括:

  • 软件生命周期是指由软件定义、软件开发和软件维护等时期组成的全过程,反映软件生存期内各种工作得组织以及各个时期如何衔接。
  • 常见的软件开发模型有瀑布模型、演化模型、螺旋模型和喷泉模型等。
  • 软件维护的类型包括改正性维护、适应性维护、完善性维护和预防性维护。
  • 决定软件可维护性的主要因素包括可理解性、可测试性、可修改性、可移植性和可重用性。
  • 面向对象设计的准则和启发式规则,如模块化、信息隐蔽、抽象等。

软件工程方法学包括方法、工具和过程三个要素,目前使用最广泛的软件工程方法学是传统方法学和面向对象方法学。

软件工程是一项复杂且需要不断学习和实践的工作,只有在实际项目中不断总结和反思,才能逐渐积累经验,提升自己的专业水平。

在本次项目中  我在团队中担当的是后端代码的编写

项目:吐槽墙项目

负责:搜素功能页面的实现 个人中心页面的前端代码实现  个人中心页面设置页面的实现

在实现代码的工程中 我使用了uniclooud云数据库 云开发 等技术

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值