软件工程

软件工程学习笔记(一):软件工程

旧城冷巷雨未停 提交于 2020-01-05 00:04:29
1 计算机软件 1.1 软件 计算机软件是指计算机系统中的程序以及文档,程序是计算任务处理对象和处理规则的描述. 1.2 软件特点 一种逻辑实体. 维护工作量大. 维护软件过程中会引入副作用. 1.3 软件分类 1.3.1 系统软件 最靠近硬件的一层,比如操作系统. 1.3.2 支撑软件 软件开发,维护与运行的软件,比如各种IDE等. 1.3.3 应用软件 应用于特定领域的软件. 2 软件语言 软件语言主要包括需求定义语言,功能性语言,设计性语言,程序设计语言与文档语言. 2.1 需求定义语言 用于书写软件需求定义的语言,包括功能需求与非功能需求.典型的语言有PSL. 2.2 功能性语言 书写软件功能规约的语言,描述软件做什么以及只做什么.典型语言有广谱语言,Z语言. 2.3 设计性语言 书写软件设计规约的语言,是软件设计的严格而完整的描述.典型语言有PDL. 2.4 程序设计语言 即编程语言,可以分为低级语言与高级语言,过程式语言与非过程式语言,通用语言与专用语言,交互式语言与非交互式语言,顺序语言与并发语言与分布语言. 2.5 文档语言 书写软件文档使用的语言,比如Z语言. 3 软件工程 软件工程是建立和使用一套合理的工程原则,以便获得经济的软件,这种软件是可靠的,可以在实际机器上高效地运行.软件工程是应用计算机科学理论以及工程管理原则的方法

软件工程概述

ε祈祈猫儿з 提交于 2020-01-04 23:38:34
一:软件开发面临的挑战 客户不满意: 交付的许多功能不是客户需要的 交付的日期没有保障 客户使用是发现许多Bug 风险与成本问题 开发团队专注技术,忽视风险 无能力预测成本,导致预算超支 无力管理团队 无法评估开发人员能力及工作进度 困扰与如何提升团队的能力与效率 项目过程失控 客户需求变化频繁,无力应对 无法预见软件的交付质量 对流程盲目遵从,忽视客户业务价值 二:软件危机的原因 从事软件开发的人员对这个产业认识不充分、缺乏经验 缺乏统一的,标准化的开发过程设计,缺乏规范化的方法论进行指导 忽视软件开发前期的需求分析 文档资料不齐全、不准确 忽视测试的重要性 没有完善的质量保证体系 开发团队内部交流不顺畅,不充分 不重视维护,或由于以上原因造成维护工作的困难 三:软件的定义 软件 = 程序 + 数据 + 文档 程序:计算机可以接受的一系列指令,运行可以提供所要求的功能和性能 数据:使得程序能够适当地当代操作信息的数据结构 文档:描述程序的研制过程、方法和使用的图文资料 四:什么是软件工程? 1993年IEEE提出的软件工程概念 将系统性的、规范化的、可定量的方法应用于软件的开发、运行和维护,即工程化应用到软件上。 两个方面:第一方面:学科 第二方面:管理和开发技术结合,经济,高质量,按时开发,并维护 软件工程的基本原则 用分阶段的生命周期计划严格管理 坚持进行阶段评审

湖中大软件工程期末复习

痴心易碎 提交于 2020-01-04 17:22:41
软件工程期未复习 一、考题类型: 填空、判断、选择、简答 二、知识点: 1、软件生命周期的组成;由 软件定义、软件开发和运行维护 三个时期组成 2、软件配置管理的主要功能; 软件配置管理的功能主要有:( 1 )标识变化;( 2 )控制变化;( 3 )确保适当地实现了变化;( 4 )向需要知道这类信息的人报告变化。 3、在进行软件结构设计时应该遵循的最主要的原理; 模块独立 原理 4、系统的逻辑模型是由哪几部分构成; 数据字典和数据流图 5、用面向对象的观点来建立的系统,一般有哪三种模型; 对象模型:描述系统数据结构 动态模型:描述系统控制结构 功能模型:描述系统功能 6、度量软件规模的常用技术主要哪几种; 代码行技术 功能点技术 7、使用UML哪几种图形来分别建立对象模型、动态模型、功能模型; 使用UML的 类图来建立对象模型 ,使用UML的 状态图来建立动态模型 ,使用数据流图或UML的 用例图来建立功能模型 。 8、描绘软件结构的常用工具是哪两种图; 结构图和层次图 9、设计黑盒测试方案的技术主要有哪几种;设计黑盒测试方案的技术主要有: 等价划分、边界值分析和错误推测 ; 10、软件文档的类型; 用户文档、系统文档 11、如何根据已经估计的最小规模的平均值,最大规模的平均值,最可能的规模的平均值,运用所学的经验公式来估计程序的规模; 最小规模 (a) 、最大规模 (b)

第一次作业-准备篇

◇◆丶佛笑我妖孽 提交于 2020-01-04 08:18:40
课程: 软件工程1916|W(福州大学) 作业要求: 第一次作业-准备篇 目标:了解这门课所要用到的工具,注册好所有之后会用到的账号,对未来有一个简单的方向 具体方面:让我对自己的未来有一个思考,也对之前的大学生活有一个简单的回想和概括 阅读与思考 (1)回想一下你初入大学时对软件工程专业的畅想 当初你是如何做出选择软件工程专业的决定的? 当初喜欢玩游戏,有想要自己写一个属于自己的游戏的想法,而且了解后发现软件工程专业毕业后工资偏高,工作也比较好找,就报了软件工程专业。 你认为过去两年中接触到的课程是否符合你对软件工程专业的期待,为什么? 应该算不太符合,可能是电视剧中对于大学生活的描述太过轻松了,开始上课后发现要学的东西好多,各种语言、算法、工具都需要学习并且掌握,而且还有数学、物理这些我以为高中过后应该不会再接触的课程。 你觉得软件工程是你喜欢的领域吗,它是你擅长的领域吗? 我对于编程的兴趣其实不大,而且我也不太擅长编程,入学后陆续学了C、C++、Java、C#,其实我有时候会产生这个语句是哪个语言的这种疑问,在我了解了一些网络游戏的制作之后我也基本放弃了自己开发一种游戏的心,感觉真的对我来说太难了吧。 将来你会选择从事软件开发相关的工作吗?是的话给出你想去的城市、公司和岗位,否的话给出原因 未来我应该不会从事软件开发相关的工作,因为我知道自己编程方面的不足

个人学期总结

…衆ロ難τιáo~ 提交于 2020-01-04 02:41:27
个人学期总结 一、学期初,实验一中的任务4 ,大家拟定了5个准备从课程学习中找到答案的问题,通过一个学期的学习,相信大家已经有了答案,请根据自己的学习实践回答自己当初提的问题,并提出一个新的问题。 问题一 :作为一个缺乏软件开发经验的学生,如何在一学期的有限时间的学习中能够提升和完善自己(是更注重于概念知识的掌握理解还是项目的实践)?   答:一学期的时间对于既要理解和掌握软件工程这门学科的概念知识以及完成项目实践确实有些紧张。但是通过一学期软件工程的学习我得出,软件工程这门学科是一个实践性很强的学科,要想要真正的提升自己的水平和专业能力,必须要有实践操作,做中学的教学模式能够真正让我们对课本中生硬的概念有所理解和掌握。任何的经验都是在不断实践的过程中得到的,一学期的时间说多不多,说少也不少;用心去做,坚持高质量的完成任务,进步是在不经意间,慢慢的积累,慢慢的锻炼,最后发现收获是巨大的! 问题二 :在第二章“个人技术和流程”中提到为了让自己负责的模块功能定义尽量明确,模块内部的改变不会影响其他模块,而且模块的质量能够得到稳定的、量化的保证,我们采用单元测试的方法,但是怎么样才能写好一个单元测试呢?或者说因为我们在之前的学习和程序的编写中没有涉及到类似于这样的程序,怎么样来写一个单元测试呢?   答:一个好的团队项目,在编写代码和代码测试环节,首先团队成员要制定一个完善的编码规范

如何设计出优美的Web API?

扶醉桌前 提交于 2020-01-03 12:15:32
本 系列 前序文章索引: 程序员 为什么必须要懂架构? 架构到底是什么,你知道吗? 架构都有哪些,我该怎么选? 架构师都干什么,你知道吗? 架构师, 我们程序员打怪升级的主要方向,它不像某些技能报个培训班就能获得。胜任架构工作需要具备许多技能,既有硬技能还有软技能。俗话说:一口吃不成胖子。从程序员到架构师也无法一蹴而就,它是一个循序渐进、稳步提升的进阶过程,每个阶段都有每个阶段要掌握的技能,多项技能之间还存在先后顺序。如果想尽快转型升级至架构师,那你必须在日常工作中有意识地储备这些技能,接下来老兵哥结合亲身经历来给小伙伴们分享一下: 1. 硬技能 不像产品、管理等条线更加倚重通用技能,从技术条线转产品或管理,入门相对容易一些。但从产品或管理很难转型至架构,架构师必须从开发测试岗做起,在工作中不断提升专业技能和积累实践经验,从一个模块开始,到一个子系统,再到整个系统,最后到多个系统,这是一个循序渐进提升硬技能的过程,也可以看成构建架构师硬技能“点线面”。 1.1 点 老兵哥我刚入行时的岗位就是开发工程师,跟其他几个毕业生一起被安排在自动化测试平台项目组,整个系统由部门资深同事设计的,我们分别负责开发其中某个子系统的几个模块。这个阶段我主要关注函数、类和模块这个粒度,为了做好工作我要钻研编程语言 C/C++,以及熟悉 Visual C++ MFC、Socket 等代码库的使用

一份.Net的学习规划

随声附和 提交于 2020-01-03 03:02:34
智能信息处理实验室 .Net 小组发展规划 一、 研究方向 智能信息处理实验室 .Net 小组的主要研究方向是“ .Net 平台下软件开发技术及相关应用”,其研究内容包括 .Net 框架、 .Net 语言、面向对象的设计、软件工程学方法以及以上理论在实际中的应用。 小组将以 .Net 为开发平台,着眼于软件体系结构,特别是面向对象的软件设计方法,学习软件模块化、系统解耦合和设计模式等相关的理论知识,并结合实验室“ Web 语义”、“工作流”等已有的课题点,讨论以上技术在实际生产中的应用。 在更高层次上,小组将系统的学习目前较为常见的软件工程学方法,包括瀑布模式、螺旋模式和敏捷模式等。并在项目中尝试采用这些方法,分析这些模式的特点和适用范围,使小组成员掌握基本的软件项目管理能力。 二、 研究阶段 对于 .Net 下软件的开发的研究分为以下四个阶段: 第一阶段: .Net 开发环境的掌握和相关开发技术的学习。这一阶段主要是掌握一门 .Net 语言(推荐 C# );掌握 .Net 开发的基本技能,包括熟悉 .Net 框架中的核心类、用于数据访问的 ADO.Net 和用于 Web 应用的 Asp.Net 等;掌握 Web 开发的相关技术,包括数据库、 HTML 、 JavaScript 、 CSS 和服务器的配置等;熟悉 Visual Studio .Net 、 Visual Source

面向对象及软件工程——团队作业3

风格不统一 提交于 2020-01-03 01:28:58
一、 编码规范和编码原则 命名规范 (1) 方法命名: 我们 使用完整的英文描述,首字母小写,每个英文单词的首字母大写,其余字母小写,属性存取 是 使用 setX 、 getX ,返回布尔类型值的方法 是 使用 isX , 例 如下列命名方式: queryStaffById 、 isCodeExists() 、 getValue ; (2) 属性命名:使用完整的英文描述,首字母小写,每个英文单词的首字母大写,其余字母小写, 确保我们的 属性名和方法名 绝不 重复; (3) 常量命名: 我们 所有单词 的 首字母 都是 大写并用 “_” 分隔。 (4) 组件命名 : 都是 以组件类型结果,如: StaffService 、 OrgService ; (5) 数 据库命名 : 表: “ 模块名 _ 表名 ” , 字段: bool 类型用 “Is” 、 “Can” 、 “Has” 等表示;日期类型命名必须包含 “Date” ;时间类型必 须包含 “Time” 。 存储过程:使用 “proc_” 前缀。 视图:使用 “view_” 前缀。 触发器:使用 “trig_” 前缀。 (6) 属性和方法的命名一般不超过 15 个字母; (7) 将媒体查询放在相关规则的附近。 我们没有将他们 打包放在一个单一样式文件中或者放在文档底部。 (8) 所有声明语句都 是 以分号结尾

软件工程-团队作业3

限于喜欢 提交于 2020-01-03 01:24:38
团队成员 组长:1500802096 马柯宇 组员:1500802091 张安祺 1500802095 包明珍 1500802100 王旭文 1500802120 苏 桂 一、代码规范 PHP代码规范: (1)文档格式 1)对于只含有 php 代码的文件,我们将在文件结尾处忽略掉 "?>" 。这是为了防止多余的空格或者其它字符影响到代码。 例如: <?php $foo = 'foo'; 2) 缩进应该能够反映出代码的逻辑结果,尽量使用四个空格,禁止使用制表符TAB,因为这样能够保证有跨客户端编程器软件的灵活性。 例如: if (1 == $x) { $indented_code = 1; if (1 == $new_line) { $more_indented_code = 1; } } 3) 变量赋值必须保持相等间距和排列。 例如: $variable = 'demo'; $var = 'demo2'; 4 )每行代码长度应控制在80个字符以内,最长不超过120个字符。因为 linux 读入文件一般以80列为单位,就是说如果一行代码超过80个字符,那么系统将为此付出额外操作指令。这个虽然看起来是小问题,但是对于追求完美的程序员来说也是值得注意并遵守的规范。 5) 每行结尾不允许有多余的空格。 (2)命名约定 1)通常类文件都是以“.class.php“为后缀,且类文件名只允许字母

2014-软件工程基础-总结

时光总嘲笑我的痴心妄想 提交于 2020-01-01 22:51:40
本学期接近尾声,软件工程的课程也到了末尾,在此做一下总结。总结中可能涉及到其他课程,未必仅限于软件工程。 第一部分:链接到以前的博客,进行现在的体会的分析和说明: 个人项目: http://www.cnblogs.com/hks1994/p/3991963.html 第一次的个人项目,现在看来,其实还是有难度的,当时应该也是花了很多功夫,不过当时虽然时间紧张,但是事情不多,因此还是可以专心的做软工。不得不说,当时是非常幸运地了解到了c#中的dictionary类,否则,要么在数据结构的选择中纠结,要么在链表的使用中备受煎熬,不仅程序会变得难写,出来的结果也不会太好。其实也是一种机遇,当然也是积累的结果,有一定的必然性。与他人相比,数据结构方面我无疑占了很多的优势,与使用链表的同学相比,我的程序的运行时间是秒级,而他们的是小时级,这充分说明了数据结构的重要性。 阅读代码大全体会小结: http://www.cnblogs.com/hks1994/p/4025345.html 这应该是第一次阅读作业了。当时听到要看这么大的一本书时很是惊讶,后来才发现,其实基本的思路,基本的东西就是那几块,精髓并不是太多。 将函数分割为子程序,将类中定义的方法分开,方法之间,类之间的耦合度需要降低,这是面向对象课程上老师多次强调的东西。现在想来,面向对象课当时看起来那么蛋疼烦人