首页 > 其他分享 >202031607230-王格 实验一 软件工程准备--构建之法与博客首秀

202031607230-王格 实验一 软件工程准备--构建之法与博客首秀

时间:2023-04-01 22:01:47浏览次数:60  
标签:首秀 202031607230 工程师 -- 账号 博客 软件工程 软件 源代码

实验一 软件工程准备

项目 内容
班级博客链接 2023年春软件工程
本次作业要求链接 实验一 软件工程准备
我的课程学习目标 1. 学习博客园软件开发者学习社区使用技巧和经验。
2. 了解Github工具的基本操作
3. 阅读《现代软件工程—构建之法》,深入了解什么是软件工程
本次作业在哪些方面帮我实现学习目标 1. 学会使用博客园学习
2.成功注册Github账号, 了解Github的基本操作
3. 阅读《现代软件工程—构建之法》,将上课所学知识更好的掌握

实验内容

任务1:调查问卷

任务2:在博客园平台注册个人博客账号和加入班级博客

  • 成功注册个人博客账号
  • 成功加入班级
  • 用途:师生交流、同学交流、发布作业、学习先进技术与工程经验

任务3:注册Github账号

  • 成功注册Github账号WangGe78
  • 用途:管理项目,记录(源码、文档,历次版本变更,bug发现与修复)等信息。

任务4:各位同学点击以下链接填写博客园账号与github账号的链接

  • 已成功填写自己的博客园与Github账号

任务5:构建之法与博客首秀

阅读《现代软件工程—构建之法》,参照参考文章的提问模板,尝试拟定3个准备从课程学习中找到答案的问题,并以写博客形式记录下来,博客要求使用Markdown排版。

问题一 软件工程是什么

 软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。
 软件工程包括下列领域:软件需求分析、软件设计、软件构建、软件测试和软件维护。
 软件工程和下列的学科相关:计算机科学、计算机工程、管理学、数学、项目管理学、质量管理、软件人体工学、系统工程、工业设计和用户体验设计。

问题二 软件开发的流程没有提速过程,开发成本也没有下降,为什么?软件开发过程有什么特别的难题?

 学者们总结了下面五点:
 1.复杂性( Complexity )
    软件可以说是人类创造的最复杂的系统类型。大型软件(操作系统、办公软件、搜索引擎)有超过百万行的源代码,上万个不同的文件。而软件工程师的肉眼通常一次只能看到30-80行源代码(相当于显示器的一屏),他们的智力、记忆力和常人差不多,在过去的几十年中并没有大的提高。软件的各个模块之间有各种显性或隐性的依赖关系,随着系统的成长和模块的增多,这些关系的数量往往以几何级数的速度增长。而理解运用这些复杂性的人并没有太大的变化。
 2.不可见性( Invisibility )
    软件工程师能直接看见源代码,但是源代码不是软件本身。软件以机器码的形式高速运行,还可能在几个 CPU 核上同时运行,工程师是"看"不到自己的源代码如何具体地在用户的机器上被执行的。商用软件出现了错误,工程师可以看到程序在出错的一瞬间留下的一些痕迹(错误代号、大致的目标代码位置、错误信息),但是几乎无法完整重现到底程序出现了什么问题。当工程师回过头来看源代码时,它们还是安静地排列在屏幕上。
3.易变性( Changeability )
  软件看上去很容易修改,修改软件比修改硬件容易多了。人们自然地期待软件能在下面两种情况下"改变": 
  a )让软件做新的事情; 
  b )让软件适应新的硬件。但是与此同时,正确地修改软件是一件很困难的事情。
4.服从性(Conformity )
  软件不能独立存在,它总是要运行在硬件上面,它要服从系统中其他组成部分的要求,它还要服从用户的要求、行业系统的要求(例如银行利率的变化)。
5.非连续性(Discontinuity)
  人们比较容易理解连续的系统:增加输入,就能看到相应输出的增加。但是许多软件系统却没有这样的特性,有时输人上很小的变化,会引起输出上极大的变化。

这些特性的前四个是佛瑞德·布鲁克斯(Fred Brooks Jr.) 在No Silver Bullet一文中提到的,第五个特性是瓦茨拉夫·拉里奇( Vaclav Rajlich )提到的。

问题三 初级软件工程师如何成长呢?

 1.积累软件开发相关的知识,提升技术技能(如对具体技术的掌握,动手能力)
    例如:对 Java、C/C ++、C#的掌握,诊断/提高效能的技术,对设备驱动程序(Device Driver)、内核调试器(Kernel Debugger)的掌握;对于某一开发平台的掌握。

 2. 积累问题领域的知识和经验(例如:对游戏、医疗或金融行业的了解)。
    第一点和第二点在很多简历上都可以看到,也可以比较容易地检测出来。随着经验的增长,一个工程师可以掌握更广泛,更深人的技术和问题领域的知识。

 3.对通用的软件设计思想和软件工程思想的理解。
    这一方面就比较虚,什么是好的软件设计思想?什么是好的软件工程思想?一个工程师开了博客,转发了很多别人的文章,这算有思想么?另一个工程师坚持做任何设计都要画UML图,这算有思想么?

 4.提升职业技能(区别于技术技能)。
    职业技能包括:自我管理的能力,表达和交流的能力,与人合作的能力,按质按量完成任务的执行力,这些能力在 IT 行业和其他行业都很重要。

 5.实际成果。
    绝大部分软件工程师的工作成果都是可以公开的,你参与的产品用户评价如何?市场占有率如何?对用户有多大价值?你在其中起了什么作用?行胜于言,这些实际的工作成果,是最重要的评价标准。

总结

这本书语言诙谐、内容深刻透彻,借助四个小人物的故事,即讲了理论知识,又展示了实际工作中的问题、纠结和吐槽。及其适合初学者理解与掌握软件工程相关知识。对我学会这些知识有及其大的帮助。

标签:首秀,202031607230,工程师,--,账号,博客,软件工程,软件,源代码
From: https://www.cnblogs.com/wangge78/p/17279479.html

相关文章

  • 3.窗口函数
    语法:select排序函数/聚合函数over(<partitionby...>分区字段orderby排序字段)   #说明:注意over后面有一个空格说明:partitonby是可选的。如果不使用partitionby,那么就是将整张表作为一个集合,最后使用排序函数得到的就是每一条记录根据排序列的排序......
  • 赋值,浅拷贝,深拷贝
    在Python中,浅拷贝、深拷贝和赋值,它们之间的区别在于它们复制对象的方式,具体可以分别如下:1.赋值(相当于对象引用)赋值只是将一个变量指向一个已存在的对象,这个变量与这个对象就共享了一个内存地址,当修改这个对象时,所有指向它的变量都会发生变化,例如:list1=[1,2,3]list2=......
  • 从傅氏级数到傅氏变换
    傅氏级数傅氏级数和泰勒级数一样,是一种函数展开,与泰勒级数不同的是,傅氏级数的基底函数不是多项式,而是三角函数1,\(cosnx\),\(sinnx\),它保证了在\([0,2\pi]\)的区间上这些基底函数是正交的,即:$$\int_{0}^{2\pi}cosnxsinnx=0$$。这样展开的思路可能来源于函数本身可以看做一个......
  • 压测工具之JMeter讲解使用
    目录1JMeter1.1引言1.2压力测试指标1.3JMeter工具使用1.3.1JMeter安装1.3.2切换成中文1.3.3添加线程组1.3.4添加HTTP请求1.3.5添加监听器1.3.6自动压测1.4JMeterAddressAlreadyinuse错误解决1JMeter1.1引言在日常开发中,当完成一个接口开发时,需要对接口进行准......
  • 41、K8S-网络机制之Flannel
    1、网络基础1.1、Pod接入网络的具体实现1.1.1、虚拟网桥虚拟网桥:brdige,用纯软件的方式实现一个虚拟网络,用一个虚拟网卡接入到我们虚拟网桥上去。这样就能保证每一个容器和每一个pod都能有一个专用的网络接口,从而实现每一主机组件有网络接口。每一对网卡一半留在pod之......
  • AcWing第97场周赛复盘总结
    4944.热身计算-AcWing题库给定两个正整数$a,b$,请你分别计算$\min(a,b)$以及$\lfloor\frac{|a-b|}{2}\rfloor$的值。$\lfloor\frac{|a-b|}{2}\rfloor$表示不大于$\frac{|a-b|}{2}$的最大整数。输入格式共一行,包含两个正整数$a,b$。输出格式共一......
  • 拉氏变换与傅氏变换的区别
    拉氏变换(拉普拉斯变换)一个函数的傅氏变换存在的充分条件是一方面是这个函数必须是绝对可积的,另一方面是这个函数必须在\((-\infty,\infty)\)上有定义。对于那些定义在\((0,\infty)\)上的任意函数,傅氏变换不一定存在。所以为了使得对定义在\((0,\infty)\)上的任意函数也可以进行......
  • 将pdf文件以二进制形式拆分并且写入另一个pdf
    staticpublicvoidmain(String[]args){Filefile=newFile("C:\\ceshi2\\ceshi.pdf");Filefile2=newFile("C:\\ceshi2\\123.pdf");try{InputStreamInputStream=newFileInputStream(file);......
  • 软件测试经验与教训之测试小组的管理和软件测试的职业发展
    测试小组的管理测试经理要让员工可以成为互换的齿轮每个员工都会以不同的方式去完成自己的工作不能扼杀员工的创造性测试经理要对员工的创造性,可说服性,判断力或人际敏感性有大概的了解测试经理要让员工对其工作结果负责员工具有不同的强项和兴趣,需要进行针对性的进行管理......
  • 实验一 软件工程准备
    1、项目和内容简介 项目内容班级博客链接https://edu.cnblogs.com/campus/xbsf/2020CSSE本次作业要求链接https://edu.cnblogs.com/campus/xbsf/2020CSSE/homework/12938我的课程学习目标注册博客园和Github账号,学习使用博客园,了解Github的基本操作。本次作......