实验一 软件工程准备
项目 | 内容 |
---|---|
班级博客链接 | 2023年春软件工程(2020级计算机科学与技术) |
本次作业要求链接 | 实验一 软件工程准备 |
我的课程学习目标 | 学会使用博客园进行学习、了解Github的基本操作、阅读《现代软件工程——构建之法》 |
本次作业帮我实现的学习目标 | 能够使用博客园学习、了解了Github的基本操作、阅读《现代软件工程——构建之法》 后对软件工程有了一个初步的认识 |
任务完成情况说明:
任务一:调查问卷
- 已在指定网址提交课程调查问卷
任务二:在博客园平台注册个人博客账号和加入班级博客
- 已完成博客园账号注册并成功加入班级
任务三:注册Github账号
- 已注册Github账号
- 初步了解了Github基础操作及如何托管项目
任务四:点击指定链接填写博客园账号与github账号
- 已如实填写自己的博客园账号与Github账号信息
任务五:构建之法与博客首秀
我已阅读《现代软件工程—构建之法》,并拟定了如下三个问题:
问题一:软件工程是什么?它包含哪些领域?和哪些学科相关?
1. 软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营和维护上的过程。
2. 软件工程包括下列领域:软件需求分析、软件设计、软件构建、软件测试和软件维护。
3. 软件工程和如下学科相关:计算机科学、计算机工程、管理学、数学、项目管理学、质量管理、软件人体工学、系统工程、工业设计与用户体验设计。
问题二:软件开发过程有什么特别的难题?
1. 复杂性
软件可以说是人类创造的最复杂的系统类型。大型软件(操作系统、办公软件、搜索引擎)有超过百万行的源代码,上万个不同的文件。而软件工程师的肉眼通常一次只能看到30—80行源代码(相当于显示器的一屏),他们的智力、记忆力和常人差不多,在过去的几十年中并没有大的提高。软件的各个模块之间有各种显性或隐性的依赖关系,随着系统的成长和模块的增多,这些关系的数量往往以几何级数的速度增长。而理解运用这些复杂性的人并没有太大的变化。
2. 不可见性
软件工程师能直接看见源代码,但是源代码不是软件本身。软件以机器码的形式高速运行,还可能在几个CPU核上同时运行,工程师是“看”不到自己的源代码如何具体地在用户的机器上被执行的。商用软件出现了错误,工程师可以看到程序在出错的一瞬间留下的一些痕迹(错误代号、大致的目标代码位置、错误信息),但是几乎无法完整重现到底程序出现了什么问题。当工程师回过头来看源代码时,它们还是安静地排列在屏幕上。
3. 易变性
软件看上去很容易修改,修改软件比修改硬件容易多了。人们自然地期待软件能在下面两种情况下“改变”:(a)让软件做新的事情;(b)让软件适应新的硬件。但是与此同时,正确地修改软件是一件很困难的事情。
4. 服从性
软件不能独立存在,它总是要运行在硬件上面,它要服从系统中其他组成部分的要求,它还要服从用户的要求、行业系统的要求(例如银行利率的变化)。
5. 非连续性
人们比较容易理解连续的系统:增加输入,就能看到相应输出的增加。但是许多软件系统却没有这样的特性,有时输入上很小的变化,会引起输出上极大的变化。
问题三:在一个项目中,PM的具体任务是什么?
1. 带领团队形成团队的目标/远景,把抽象的目标转化为可执行的、具体的、优美的设计;
2. 管理软件的具体功能的生命周期(需求/设想/设计/实现/测试/修改/发布/升级/迁移/淘汰);
3. 创建并维护软件的规格说明书,让它成为开发/测试人员及时准确的指导,而不是障碍;
4. 代表客户和用户的利益,主动收集用户反馈,预期用户新的需求。协调并决定各种需求的优先级;
5. 分析并带领其他成员对缺陷/变更需求形成一致意见,并确保实施;
6. 带领其他成员确保项目保持功能/时间/资源的合理平衡,跟踪项目进展,确保团队发布令客户满意的软件;
7. 收集团队项目管理和软件工程的各种数据,客观分析项目实施过程中的优缺点,推动项目成员持续改进,从而提振士气。