软件工程

构建之法阅读笔记01

痞子三分冷 提交于 2019-12-25 06:56:56
软件=程序+软件工程 (程序=数据结构+算法) 软件工程的核心:构建管理、源代码管理、软件设计、软件测试、项目管理。 结合企业得到的推论:软件企业=软件+商业模式。 软件工程包括的领域:软件需求分析、软件设计、软件构建、软件测试和软件维护。 软件的特殊性:复杂性、不可见性、易变性、服从性、非连续性。 软件工程的目标——创造“足够好”的软件,即包括用户的满意度、可靠性、软件流程的质量、可维护性。 什么是bug? 简单地说,就是软件的行为和用户的期望值不一样,就叫bug。 有实际用处的同时又是完美的软件,在世界上是不存在的。 单元测试也能帮助程序员记录这个模块的历史和设计变更的理由。 单元测试应该准确、快速地保证程序基本模块的正确性。 最好是在设计的时候就写好单元测试,这样单元测试就能体现API的语句。 单元测试不能解决所有的问题,不能期望它会发现所有的缺陷。 一般情况下,单元测试中的模块可以直接引用其他的模块,并期待其他的模块能返回正确的结果。 单元测试应该覆盖所测单元的所有的代码路径,包括错误处理路径。 100%的代码覆盖并不等同于100%的正确性。 回归测试最好要自动化,因为这样就可以对每一个构建快速运行所有回归测试,单元测试是回归测试的基础。 工程师在"需求分析"和“测试”这两方面明显要花更多的时间。 如何保证质量——回归测试。 个人感受: 过去只知道,程序=数据结构+算法

优秀架构师是怎么炼成的?

試著忘記壹切 提交于 2019-12-25 02:28:19
我们来讲一个故事,一位旅行者路过一个烈日下的工地,所有人都在那儿汗流浃背地搬砖。 旅行者问第一个人在干什么,那人头也没抬地回答:“我在搬砖。” 旅行者问第二个人在干什么,这个匆匆抬起头认真地说:“我在砌墙。” 旅行者问第三个人在干什么的时候,那个人脸上充满了光彩,很自信地说:“我在盖圣玛利亚大教堂。”这个故事是不是像极了我们从事软件开发工作的不同阶段的不同状态。每当听到从程序员到架构师的书或者文章时,我们总是充满好奇,想从其中获取一些观点亦或是技能点,接下来我们就详细讲讲一下,如何从程序员走向架构师。 首先我们定一个基准点:架构师只是功底深厚的程序员,千万不要成为不会写代码的架构师。 架构师应该是立足于技术和业务之间的中间角色或者平衡点, 在针对业务深刻理解的基础上,针对业务中存在诸多变数,挑选适合的技术架构和技术方案。可以这样说,一个架构师工作的好坏决定了整个开发项目的成败。 开篇的基准点:架构师只是功底深厚的程序员; 程序员从初级、中级、高级再到架构师,是一个不断经验积累的过程,但是在这过程中我们常常很迷茫,不仅仅是面对技术繁杂的无力感,更重要的是因为长期埋没于代码世界的浩大的分工体系中,无法看清从业务到系统架构的价值链条,无法清楚定位自己在分工体系的位置,处理不好自身与技术、业务的关系所致。所以在程序员生涯中除了技术实力以外,其它软实力也不容忽视。如:主动学习、积累经验

软件工程面试题目

回眸只為那壹抹淺笑 提交于 2019-12-24 18:48:49
sofm file code learn . 1. what is sofm project and sofm dangerous ? it was caused how why? 答案:软件危机,软件开发技术的进步未能满足发展的需求。 导致原因:a.软件规模越来越大,规模越来越复杂。 b.生产方式落后,生产效率缓慢 c.软件开发管理困难复杂,开发技术落后。 2. 什么是软件工程?目标和内容是什么 ? 答案:软件工程师用科学的知识和技术原理来定义,开发,维护的一门科学。 目标:付出较低成本,达到要求功能。 内容:开发技术和开发管理。 a.开发技术主要研究:软件开发方法,开发过程,开发工具和环境。 b.开发管理主要研究:软件管理学,软件经济学,软件心理学。 3.什么是需求分析?需求分析的基本任务是什么? 答案:需求分析:将用户非形式的需求陈述转化成完整的需求定义,再又需求定义转换成相应的需求规格说明的过程。 基本任务: a.问题识别:双方确定对问题的综合需求(功能需求,性能需求,环境需求,用户界面需求)。 b.分析问题:导出软件的逻辑模型。 c.编写文档。 4. 什么是结构分析方法?该方法使用什么描述工具? 答案:结构化分析简称 SA, 面向数据流的分析方法。采用自顶而下逐层分解的分析策略。 使用数据字典,数据流图作为描述工具。 5.什么是概要设计?该阶段的基本任务是什么? 答案:

个人作业——软件工程实践总结作业

六月ゝ 毕业季﹏ 提交于 2019-12-24 14:42:29
项目 内容 作业课程 班级链接 作业要求 作业要求 作业目标 作业目标 作业正文 作业正文   一、回望 1.对比开篇博客你对课程目标和期待与目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么? 首先呢我开学写的目标是能提高编程能力,投入项目实战,这些基本在几次个人编程作业和团队项目中得到了实现。不足的地方就是还不是很精通,代码量不够,这学期太忙没有很多时间自学和练习,在项目中也仅仅负责了一小部分。 2.对比第一次作业的简历中预期将增长的能力以及第二次作业的学习路线图与你当前的所学所得,你达到了当时的预期值吗? 简历中预期增长的能力是掌握一门语言,试着做做项目;学习路线图的话我做的JAVA的学习路线图。对比当前的所学所得,我觉得算达到了一半以上的预期值吧,虽然JAVA语言还没有很熟练,项目也只是参与了一小部分,但感觉已经收获挺多了。 3.总结这门课程的实践总结和给你带来的提升? (1)统计一下,你在这门软件工程实践中,一共完成了多少行的代码; 大约500行左右 (2)软工实践的各次作业分别花了多少时间? 作业 耗时 个人第一次作业(简历) 1小时 个人第二次作业(学习路线图) 3小时 个人第三次作业(Sudoku) 42小时 个人第四次作业(家族树原型) 24小时 个人第五次作业(家族树实现) 48小时 个人第六次作业(软件评测) 2小时

软件工程背景知识及过程模型

感情迁移 提交于 2019-12-24 10:42:35
一、背景知识: 软件开发的基本过程: 需求定义→软件设计→软件实现→软件测试→软件维护 软件的定义: 软件=程序+数据+文档 程序:可以按照设计好的 功能 和 性能 要求执行的指令序列 数据:程序能正确处理信息的数据结构 文档:与程序的 开发 、 维护 、 使用 有关的图文资料 软件的特点: 包含个人因素的大规模知识型工作 有工具辅助的软件开发也尚未实现自动化(即无法像硬件加工一样,机械组装已有部件,软件开发还未达到组装已有模块的程度) 对开发和运行的计算机软硬件环境具有依赖性 需求往往在变更,开发进度难估算 软件测试困难,覆盖所有路径的测试难实现。 软件测试只能证明软件中有缺陷,不能证明软件中没有缺陷。 软件不会损耗,(参考硬件的磨损和老化),软件维护不再具有经济性时,软件即被淘汰 软件危机: 1965年——1985年,20世纪60——80年代 于1968年提出 催生了软件工程这一学科 没有化解软件危机的灵丹妙药,已知的技术和方法都是进一步改进 SWEBOK(软件工程知识体系指南) PDCA环(戴明环):    二、软件过程: 以质量为中心,以软件工程,方法,工具为三要素。其中软件过程是基础,是联系各层的桥梁,工具为过程和方法提供支持。 软件过程的定义:软件过程定义了软件开发中的一系列活动,所以过程都具有下列活动: 沟通 建模 计划 构造 部署 项目管理(贯穿于以上所有活动)

个人阅读&个人总结

耗尽温柔 提交于 2019-12-23 19:15:45
助教推荐的这些文章都是软件工程的经典之作,读完之后对这学期的软工学习有了更深的认识。才觉得学习软件工程之前写的都不算是软件工程,只是些程序。真正的软件工程历史悠久,其对程序员带来的痛苦伴随着很多代人,许多经典的软件工程著作和讨论都是几十年前就完成的,虽然软件行业日新月异,但其中的哲学和根本却从未改变。 软件工程中到底有没有银弹呢? No Silver Bullet --Essence andAccident in Software Engineering 在西方文化中,狼人是一种十分可怕的怪物。其最恐怖的地方在于,他们会忽然从十分熟悉的人变为恶魔。就像中国的黑狗血可以制服妖怪一样,狼人的克星是银弹(Silver Bullets)。作者用狼人来比喻软件工程,银弹以比喻可以克服软件工程中困难的通用方法。人们渴望得到银弹,但就像题目所直截了当地描绘的那样,作者认为并不存在这种通用方法。 首先,从软件开发近10年的历史(文章写于1986年)上来看,不存在一种单独的开发、技术或管理技巧可以完全保证效率、可靠性、简易性的提高。 其次,软件开发中存在一些本质的困难。 硬件速度的增加相对软件开发的进步是十分快的。 软件本身内在的困难(复杂性、整合性、不断变化性、不可见性)和不断出现的意外。 在解决这些问题的过程中,工程师们取得了一系列突破:高级程序设计语言、时间共享、统一的编程环境

201671010416 焦少梅 实验三 作业的互评与改进

拟墨画扇 提交于 2019-12-23 14:12:32
实验三 作业的互评与改进 任务一 三个评论作业地址和点评内容: 2019春季计算机学院软件工程(罗杰)(北京航空航天大学) https://edu.cnblogs.com/campus/buaa/BUAA_SE_2019_LJ 评价内容:看了你的博文,我意识到了在团队协作当中,不能仅仅单方面依靠自己团队的仅有的知识,而是应该要经常向自己的“前辈” 汲取经验,那么在自己的团队中就在不会出现类似的错误 评价地址: https://www.cnblogs.com/mizhiniurou/p/10536041.html 软件工程1916|W(福州大学) https://edu.cnblogs.com/campus/fzu/SoftwareEngineering1916W 评价内容:看到这位同学的博客内容,首先内容清晰可见,其次这位同学对自己还是比较了解的,在对于未来也是充满期待的,博文中提到自己在分岔路口选择了考研,那么希望这位同学在以后的时间里能够更加熟练和应用开发软件,并且积极向其他人汲取经验,同时我自己也在思考面临分叉路我的选择是什么?祝你考研成功。 评价地址: https://www.cnblogs.com/hsyuan0910/p/10433531.html 2016级计算机科学与工程学院软件工程(西北师范大学) https://edu.cnblogs.com/campus

201671030107胡文艳实验三作业互评与改进报告

試著忘記壹切 提交于 2019-12-23 14:12:07
任务1:要给出所点评作业的链接地址,点评内容和阅读心得 读了你的这篇博客,一方面给我的印象就是排版整齐,内容充实,态度认真;另外一方面就是通过别人反省自己,看了你的博客,我觉得我的博客还有很多需要改进的地方,而你的这些优点也正是我需要学习和借鉴的地方。 ——引用自 2016级计算机科学与工程学院软件工程(西北师范大学) NWNU李蓉同学的博客《构建之法与博客首秀》第四条评论 读了你的这篇博客,我觉得格式整齐,内容充实,通过这篇博文,我也能够感受到你对自己专业的主见和思想。你说你对软件工程的兴趣不大,我也一样,但愿我们都可以真的做到会以积极乐观的态度对待,热情的态度学习。 ——引用自 软件工程1916|W(福州大学) 陈迎仁同学的博客《软工实践——思考与实践》第五条评论 读了你的博客,感觉内容非常充实,而且字里行间都透漏着你个人的思想。 你说你目前尚不清楚想从事什么职业。我打算既在实验室实习也在企业实习,在实习中认清自己的长处和特点,发现自己想要的是什么,我感觉你比较迷茫。但有个确定的目标总是好的。 ——引用自 2019春季计算机学院软件工程(罗杰)(北京航空航天大学) Kilotron 同学的博客《软件工程第0次个人作业》第三条评论 阅读感悟 通过阅读其他同学的博客,我觉得我的博客写的内容不够充实和完整,内容简短,以后需要向其他同学他们的排版,而且会认真对待每一次作业 任务2

201671010429苏生玲实验三作业互评与改进报告

半世苍凉 提交于 2019-12-23 14:08:27
任务一: 1.阅读评论一:2019春季计算机学院软件工程(罗杰) 链接: https://www.cnblogs.com/greenland/p/10528363.html#4204689 评论内容: 阅读心得:阅读了该同学的博客,我觉得他们结对编程去做项目,可以集中团队的想法,能更完善的去考虑,在日常中编程中我们要养成团队协作的能力,锻炼与团队的沟通能力,在团队中充分锻炼自己,提高编程能力,毕竟大的项目还是需要团队协作完成。 2.阅读评论二:软件工程1916|W(福州大学) 链接: https://www.cnblogs.com/xiang-peng/p/10540046.html#4204715 评论内容: 阅读心得:该同学的解题思路清晰,掌握一定的编码能力,想要学好这门课程我们要理论加实践相结合,要有良好的分析问题解决问题的能力,还要精通编程语言。 3.阅读评论三:2016级计算机科学与工程学院软件工程(西北师范大学) 链接: https://www.cnblogs.com/zouz/p/10504523.html#4204106 评论内容: 阅读心得: 我们在学习过程中缺少的往往就是探索知识的能力,遇到问题我们要多去思考,自己摸索进一步去寻求问题的答案,大家往往是老师要求做什么就做什么,我感觉这位同学他有认真去看这本书,有认真去分析,提出的问题有针对性。 任务二

201671010420刘振华实验三作业互评与改进

旧巷老猫 提交于 2019-12-23 14:06:30
任务一 作业互评 评论地址: https://www.cnblogs.com/coder200/p/10487615.html 评论内容:在软件工程的学习中,我们必须从最基本的知识由下而上理解学习,因为软件工程本身就是从开发的开始到结束的过程,从最简单做起,争取成功。 阅读心得:学习软件工程不仅仅是学习软件工程,还需要掌握博客、GitHub、编辑器等常用软件。 任务二 软件工程国家标准 阶段 可行性研究 开发计划 需求分析 设计 实现 测试 使用与维护 可行性研究报告 √ 项目开发计划 √ √ 软件需求说明书 √ 数据要求说明书 √ 测试计划 √ √ 概要计划说明书 √ 详细计划说明书 √ 数据库设计说明书 √ 模块开发卷宗 √ √ 用户手册 √ √ √ 操作手册 √ √ 测试分析报告 √ 开发进度月报 √ √ √ √ √ 项目开发总结 √ 任务三 团队采访 采访团队 小幸运团队 项目名称 汽车配件管理软件 项目简介 分公司总公司的项目配件及维修费用管理 项目开发人员名单 纪慧鑫 杨毅 付静 张翔 王鹏 采访人员观点 开发过程难上加难,而且是经过好几届师兄师姐做出来的,规划过程不是很好 采访心得 开发一个一个软件非常不容易,最重要的是要需求分析,如果不清楚用户需要什么将会浪费不必要的人力物力财力 问题一:开发这个软件用了多长时间? 将近两年时间,经过了两届师兄姐的努力。 问题二