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