202031607213-李蕊 实验一 软件工程准备--构建之法与博客首秀

实验一 软件工程准备

一、实验介绍

项目 内容
班级博客链接 https://edu.cnblogs.com/campus/xbsf/2020CSSE
本次作业要求链接 https://edu.cnblogs.com/campus/xbsf/2020CSSE/homework/12938
我的课程学习目标 (1)学习博客园软件开发者学习社区使用技巧和经验。(2)了解Github的基本操作。
本次作业在哪些方面帮我实现学习目标 (1) 老师的帮助以及作业要求文档中清晰的指导步骤。(2)为注册开通博客以及练习使用Markdown编辑器提供了详细的博文链接。(3)对github的注册与使用提供了详细的步骤,方便学生学习。

二、实验内容

1.任务1:调查问卷 在以下网址提交课程调查问卷:

https://www.wjx.cn/vm/e4jdhAf.aspx#
调查问卷已提交!

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

用途:师生交流、同学交流、发布作业、学习先进技术与工程经验

博客园地址:http://www.cnblogs.com/

参考这篇博客创建个人博客园博客账号

班级博客地址:https://edu.cnblogs.com/campus/xbsf/2020CSSE

登录博客后,在浏览器中打开链接,加入班级(2023年春软件工程

3.任务3:注册Github账号

用途:管理项目,记录(源码、文档,历次版本变更,bug发现与修复)等信息。

Github地址:https://github.com/

Github基础操作及如何托管项目?
参考博客:https://www.cnblogs.com/wzq1998/p/14332417.html

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

https://www.chaojibiaoge.com/U/url/7zsup981

已填写完毕!

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

阅读《现代软件工程—构建之法》,参照参考文章的提问模板,尝试拟定3个准备从课程学习中找到答案的问题

(1)软件=程序+软件工程
程序=数据结构+算法

  • 程序,在这里指的是源程序,就是一行行的代码。它们是建立在数据结构上的一些算法。程序还要对数据进行操作,这些数据有些是静态的(例如软件的图标、提示信息),有些是动态的(例如程序生成的随机数字、程序通过网络下载的数据、用户的文字或语音输人等)。但是光有代码和静态数据还是不行,工程师要把它们构建为机器能懂的可执行代码。构建不仅仅是 cc 和 link 命令,一个复杂的软件不但要有合理的软件架构( Software Architecture )软件设计与实现( Software Design , Implementation and Debug ),还要有各种文件和数据来描述各个程序文件之间的依赖关系、编译参数、链接参数,等等。这些都是软件构建的过程。
  • 软件团队的成员每天都在修改各种源代码,怎么保证软件在修改过程中质量不断提高,至少要维持以前的质量?有些时候,我们要为某个需求写一些特殊功能,不久后又要把这些功能再合并回主要版本。有些程序要配置不同的界面,运行在中文、英文或其他语言的操作系统上;有些程序还有32位版本、64位版本等。这是源代码管理( Source Code Control )的问题,也叫配置管理( Software Configuration Management )。我们还有一系列的工具、流程和文档来保证程序的正确性,这些工具(也是软件)、流程应该达到很高的质量,才能保证开发出来的软件的质量。这就是质量保障( Quality Assurance ),具体的验证过程叫做软件测试( Test )
  • 一个软件或者服务要有人买,就得找到顾客。顾客有各种需求,有些靠谱,有些不靠谱;有些容易做到,有些难以做到。软件团队要从需求分析( Requirement Analysis )开始,把合适的需求梳理出来,然后逐步展开后续工作,如设计(软件架构)、实现(写数据结构和算法)、测试,到最后发布软件。
  • 软件团队的人员也会流动,新的成员要尽快读懂已有的程序,了解程序的设计,这叫程序理解( Program Comprehension )。软件在运行过程中还会这样那样的问题,也许我们要时不时给软件打一个补丁,或者维护众多的服务,团队的新老成员要一起修复各种各样的问题,这叫软件维护( Software Maintenance ),或者服务运营( Service Operation )。这一系列过程就是软件的生命周期( Software Life Cycle , SLC ),在这一周期中,有人得负责软件项目的管理( Project Management )

(2)软件工程是什么?

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

(3)软件系统使复杂的吗?
软件工程学科也没有提出通用的复杂性定义和度量方式,但针对某些具体的场景,有一些明确的定义和评估方式。

  • Manny Lehman的复杂度定义

    • Manny Lehman教授在软件演进法则中首次系统性提出了软件复杂度。
      • 软件(程序)复杂度是软件的一组特征,它由软件内部的相互关联引起。随着软件的实体(模块)的增加,软件内部的相互关联会指数式增长,直至无法被全部掌握和理解。

      • 在他的描述中,软件复杂度的影响是:
        软件的高复杂度,会导致在修改软件时引入非主观意图的变更的概率上升,最终在做变更的时候更容易引入缺陷。在更极端的情况下,软件复杂到几乎无法修改。

  • Halstead的复杂度定义

    • Halstead 复杂度 (Maurice H. Halstead, 1977) 是软件科学提出的第一个计算机软件的分析“定律”,用以确定计算机软件开发中的一些定量规律。Halstead 复杂度采用一组基本的度量值,这些度量值通常在程序产生之后得出,或者在设计完成之后进行估算。

    • Halstead 复杂度根据程序中语句行的操作符和操作数的数量计算程序复杂性。

      • 操作符和操作数的量越大,程序结构就越复杂。
      • 操作符通常包括语言保留字、函数调用、运算符,也可以包括有关的分隔符等。
      • 操作数可以是常数和变量等标识符。
posted @ 2023-03-31 23:33  李蕊  阅读(38)  评论(1编辑  收藏  举报