软件工程基本知识
- 格式:pptx
- 大小:240.25 KB
- 文档页数:3


2017-2018 学年 第一 学期 第四次 作业
专业:计算机科学与技术 班级: 17级3班 学号:1701110140姓名:任亚磊
作业内容:
简述软件、软件工程的基本概念和特点
软件:
软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。其中,程序是按事先设计的功能和性能要求执行的指令序列;数据是使程序能正常操作信息的数据结构;文档是与程序开发,维护和使用有关的图文资料。
软件的特点:
1.软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性
2.软件的生产和硬件不同,在它的开发过程中没有明显的制造过程、没有磨损
3.在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题。
4.软件的开发和运行常受到计算机系统的限制,对计算机系统有着不同的依懒性
5.软件的开发至今尚未完成摆脱手工艺的开发方式,没有实现自动化
6.软件本身是复杂的、实际问题的复杂性、程序逻辑结构的复杂性
7.软件的成本相当昂贵。
8.相当多的软件工作涉及社会因素。
软件的分类:
1.系统软件:操作系统、数据库管理系统、设备驱动程序、通信处理程序
2.应用软件:商业数据处理软件、工程和科学计算软件、系统仿真软件
软件的其他角度分类:
a.按规模划分:微型软件、小型、中型、大型、甚大型、极大型
b.按工作方式划分:实时处理软件、分时软件、交互式软件、批处理软件 c.按软件服务对象的范围划分:项目软件、产品软件
软件生产的发展:
1 程序设计时代:这个阶段生产方式是个体劳动,生产工具是机器语言,汇编语言。(1946-1956年)
2 程序系统时代:这个阶段生产方式是小集团合作生产,生产工具是高级语言,开发方法仍依靠个人技巧,但开始提出结构化方法。(1956-1968年)
3 软件工程时代:这个阶段生产方式是工程化的生产,使用数据库,开发工具,开发环境,网络,分布式面向对象技术来开发软件。(1968年至今)
软件工程知识要点
1、1968年北大西洋公约组织的计算机科学家在联邦德国召开国际会议,讨论软件危机问题,在这次会议上,正式提出并使用了“软件危机”这个名词,一门新兴的工程学科就此诞生了。
2、软件危机是指在计算机让软件的开发和维护过程中所遇到的一系列严重问题。
3、软件危机产生的原因(第4页):一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。软件不同于硬件,他是计算机系统中的逻辑部件而不是物理部件。由于软件缺乏“可见性”,再写出程序代码并在计算机上试运行之前,软件开发过程中的进展情况较难衡量,软件的质量也较难评价,因此,管理和控制软件开发过程相当困难。软件不同于一般程序,他的一个显著特点是规模庞大,而且程序复杂性将随着程序规模的增加而成指数上升。
4、软件工程:采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的做好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
5、软件工程的基本原理:① 用分阶段的生命周期计划严格管理 ② 坚持进行阶段评审③ 实行严格的产品控制 ④ 采用现代程序设计技术 ⑤ 结果应能清楚地审查 ⑥ 开发小组的人员应该少而精 ⑦ 承认不断改进软件工程实践的必要性
6、软件工程方法学包含的三个要素:A 方法 B 工具 C工程
7、目前使用的最广泛的软件工程方法学是传统方法学和面向对象方法学。
8、软件生命周期由软件定义、软件开发和运行维护3个时期组成,分为八个阶段:① 问题定义 ② 可行性研究 ③ 需求分析 ④ 总体设计 ⑤详细设计 ⑥ 编码和单元测试 ⑦ 综合测试 ⑧ 软件维护
9、软件过程是为了获得高质量的软件所需要完成的一系列任务框架,它规定了完成各项任务的工作步骤。
10、通常使用生命周期模型简洁地描述软件工程。生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,因此,也称为过程模型。
软件工程专业需要掌握的知识
软件工程作为计算机领域中的一个重要分支,涉及到多个方面的知识和技能。以下是软件工程专业需要掌握的一些核心知识。
一、编程语言
编程语言是软件工程师必备的基本技能。常见的编程语言包括Java、Python、C++、JavaScript等。除了掌握这些语言的基础语法,软件工程师还应该具备编写高效、可读性强的代码能力,并了解不同语言之间的优缺点和应用场景。
二、数据结构和算法
数据结构和算法是计算机科学中的核心概念,对于软件工程师来说尤为重要。软件工程师需要了解常见的数据结构(如数组、链表、树、图等)和算法(如排序、搜索、动态规划等),并能够在实际开发中应用它们。这有助于提高软件性能,优化软件结构,并解决复杂的问题。
三、操作系统
操作系统是计算机系统中管理硬件和软件资源的核心组件。软件工程师需要了解常见的操作系统(如Windows、Linux等)的基本原理和工作机制,包括进程管理、内存管理、文件系统和设备驱动程序等。此外,还应该了解并发编程的概念和多线程处理方法。
四、数据库
数据库是存储和管理大量数据的关键组件。软件工程师需要了解关系型数据库(如MySQL、Oracle等)和非关系型数据库(如MongoDB、
Redis等)的基本原理和使用方法。此外,还应该了解SQL语言以及数据库设计和优化等方面的知识。
五、网络编程
网络编程是实现分布式系统和互联网应用的关键技术。软件工程师需要了解TCP/IP协议栈、HTTP协议以及常见的网络协议(如FTP、SMTP、POP3等)。此外,还应该了解Web开发的基础知识(如HTML、CSS、JavaScript等),并能够使用常见的网络编程框架和库进行开发。
六、设计模式
设计模式是解决常见问题的最佳实践。软件工程师需要了解常见的面向对象设计模式(如单例模式、工厂模式、观察者模式等)和常用的设计原则(如开闭原则、单一职责原则等),以便在实际开发中提高代码的可重用性和可维护性。
软件评测师-软件⼯程基础知识
⼀、信息系统⽣命周期1.软件⼯程基本原理:⽤分阶段的⽣命周期计划严格管理、坚持进⾏阶段评审、实现严格的产品控制,采⽤现代程序设计技术、结果应能清楚的审查、开发⼩组的⼈员应少⽽精、承认不断改进软件⼯程实践的必要性2.软件⼯程的基本要素:⽅法、⼯具、过程
3.软件⽣产周期:可⾏性分析与项⽬开发计划、需求分析、概要设计(系统解决⽅案,规划⼦系统)、详细设计(设计⼦系统内部具体实现),编码、测试、维护4.信息系统⽣命周期
系统规划阶段:初步调查,对建设新系统的需求做出分析和预测,输出可⾏性研究报告、系统设计任务书
系统分析阶段:对现⾏系统进⾏详细调查,提出新系统的逻辑模型,也称为逻辑设计阶段,整个系统建设的关键阶段,也是信息系统建设与⼀般⼯程项⽬的重要区别所在,输出:系统说明书
系统设计阶段:要回答的问题是怎么做,具体设计实现逻辑模型的技术⽅案,设计新系统的物理模型,称为物理设计阶段,分为总体设计(概要设计)和详细设计,输出:系统设计说明书(概要设计、详细设计说明书)
系统实施阶段:将设计的系统付诸实施的阶段,输出:实施进展报告、系统测试分析报告
系统运⾏和维护阶段:记录系统运⾏的情况,评估系统的⼯作质量和经济效益
⼆、能⼒成熟度模型1.能⼒成熟模型
2.呢李成熟模型集成CMMI:是若⼲过程模型的综合改进,⽀持多个⼯程学科和领域的,它关注组织的成熟度
3.2-5级对应的过程域
三、软件过程模型1.瀑布模型(SDLC):可⾏性分析、需求分析、软件设计、编码、测试、运⾏维护
2.瀑布模型特点:从上⼀项开发活动接受该项活动的⼯作对象作为输⼊;实施该项活动应完成的⼯作内容;⼯作成果作为输出;对该项活动的实施⼯作成果进⾏评审3.螺旋模型是⼀个演化软件过程模型,将原型实现的迭代特征与线性顺序模型中控制的和系统化的⽅⾯结合,软件开发是⼀系列的增量发布
开发过程具有周期性重复的螺旋线状,每个周期分四阶段:制定计划、风险分析、实施⼯程和客户评估,强调了风险分析,特别适⽤于庞⼤⽽复杂得、⾼风险的系统