zoukankan      html  css  js  c++  java
  • 201771010134-杨其菊 实验一 软件工程准备-阅读<构建之法>初步认识课程

    实验一 软件工程准备

    项目 内容
    课程班级博客链接 https://www.cnblogs.com/nwnu-daizh/
    作业要求链接 https://www.cnblogs.com/nwnu-daizh/p/12369881.html
    我的课程学习目标 (1)学习软件工程基础概念和理论;(2)学习个人在团队中如何发挥作用;(3)团队如何更好协作;(4)熟悉项目开发的流程
    这个作业在哪些方面帮助我实现课程目标 (1)学会使用MarkDown编辑博客;(2)对课程有整体的初步了解
                  斯科特.杨讲学习每门课程前都应该对这门课程有整体性的了解,认识其特点,才能对应以正确的学习方式。尽管已经上过两节软件工程这么课程,
             但我对软件工程课程的认识还是在云雾之中。在此之前我的第一认知是:既然是属于计算机专业 ,又有工程二字,我便猜想是门偏实践的课程,大致浏
             览 《构建之法——现代软件工程》之后发现基本为理论知识,且作者有“想让学生在一个学期内实践一些软件工程的方法论和工具,并且具体了解它们的一
             些优缺点”之言,到此我对本课程的定位是理论与实践相结合的课程。
               《构建之法——现代软件工程》通俗来说一个团队开发一个项目的过程,从项目需求分析、团队任务分配、项目的实施等等,直到最终项目的完美呈现。
             内容大致有以下:
               - 软件工程等基础概念
               - 个人、团队意识
               - 项目从需求分析、设计实现等到最终结果的过程
               由此我心中才有些谱。希望通过这门课程我能学习软件工程基础概念和理论,学习个人在团队中如何发挥作用以及团队如何更好协作,熟悉项目开发的
               流程。
    

    浏览《构建之法——现代软件工程》后的3个问题

    • 问题一
      开源代码如何获取商业价值?

      一个软件团队或企业要养活自己,市面上有很多赚钱的方式:
      有的交钱买断
      有的“先试用再交钱”,有些软件也提供试用版、免费版和正式版、还有的类似期刊订阅,每年交钱。
      有些不但免费,连源代码也一并奉送,但要求活动源代码的开发人员遵守某种约定
      有的送硬件,有些软件要收钱
      .....

      之前疑惑为何有很大规模的开源软件,即使本着知识分享的精神,也不大说得通有些花费很大代价和心血得出的成果开源?关于软件为何开源以及那些开源的软件产品如何运作?我查询得到以下结果:(1)“只要有足够的测试员和共同开发者,所有问题都会在很短时间内被发现了,而且很容易被解决”,(2)把补丁回馈给社区因而不需要再去维护他们;(3)提升名誉;(4)大部分人参与开源事业是因为他们相信开源事业,或者想帮助别人,但这只是小部分,大部分人依然从中获得收益,比如通过增值服务,二次开发,商业授权,捐赠等方式。[1][2]他们又是如何获得收益的?(5)也有人说开源代码的盈利就是服务。我还是不太懂具体如何操作?

    • 问题二
      软件维护到底面临什么问题?什么情况下会放弃软件维护?
      我浏览论坛,看到如下:

    • 1、软件难以看懂
      1)原来的软件代码的书写习惯非常差,很难阅读,例如使用无规律的变量名称、过长的函数等;而且反复的修改使软件结构混乱,层层嵌套的注释更是难以匹配;
      2)没有可以参考的文档,或者文档不全,或者文档太老;
      3)现在的维护人员都不知道系统原有的业务逻辑;

    • 2、修改带来不良影响
      1)对某一功能模块的修改,需要做多大范围的测试才能保证它没有给其他模块带来负作用呢?
      2)由于各种成本的限制,很多时候只能以“打补丁”的方式来进行修改,而不是全面解决问题,以至于积累了很多潜伏的风险;
      3)跟踪软件版本的演化是一件非常困难的事;
      4)对程序的修改,导致了文档的不一致;

    • 3、原来的软件质量有缺陷
      1)软件本身就有质量问题,只是日常维护已经很不容易,更不要说修改;
      2)软件设计时为维护工作考虑得太少,例如对错误给出的提示很不清楚,过分依赖输入数据的正确性;
      3)软件的可移植性、可扩展性很差。设备、软件(主要是系统软件)的更新换代对软件的兼容性提出了巨大的考验。可是,有几个软件在设计时充分考虑了可移植性呢?将一套系统从32位机上移到64位机上,即使没有对任何语句进行修改,也必须做全面的测试以保证不会突然当机;
      4)软件的易用性不高,必须要专业人员才能维护;

    • 4、客户需求不断变化
      1)软件更新的速度赶不上需求变化的速度;
      2)原来的技术、模式、结构不能满足新的需求;
      3)多次变化后连客户也不清楚到底要什么;
      4)层层堆叠的补丁给系统带来了预料之外的负担。例如不断增加的、过多的报表降低了系统效率。

    我还剩余的问题是,既然有如此多方面的因素使得维护困难,那一个软件到什么时候会被放弃维护?

    • 问题三
      软件工程的目的是尽快构建出足够好的软件,那么具备判定“合适”、“足够好”的能力?
      《构建之法——现代软件工程》中说:

    软件工程的一个重要任务,就是要在时间,成本等多种要素约束下贱下决定一个软件在什么时候能“足够好”,可以发布。

    第七章节“实战中的软件工程”又以实例为主,告诉我们学习经验,但要结合实际情况选择合适的方式,“没有最好的,只有更好的。这句话适用于编程语言、软件工程的方法、流程、框架等等”。我们如何才能具备判断“合适”,“足够好”的能力呢?资料中说好的软件考虑用户满意度、可靠度、软件流程的质量和可维护性四方面,但我还是很困惑:没有软件是会达到完美的程度,但到底在这四方面要到怎样的程度后才能发布软件?软件工程充满“估计”和“变化”,这个“度”好像很难把握。

    小结:本次实验学会用MarkDown撰写博文,浏览《构建之法——现代软件工程》使我对软件工程这门课有了初步认识,以及对这门课程产生一些思考。“软件工程包括了开发、运营、维护软件的过程中的很多技术、习惯和思想”。想要做好软件项目,离不开人、技术、工具和方法。正如书中所提到的“软件工程,唯一不变的是变化”。人和软件项目,最具复杂性的两样的结合,没有最好,只有更好。
    参考文献:
    [1]邹欣. 构建之法——现代软件工程[M]. 人民邮电出版社, 2014.
    [2]x6gw.开源软件的商业价值[EB/OL] https://www.open-open.com/pdf/6f44ae5828e54019b1c486b3ea9ead32.html 2015-07-29/2020-3-1
    [3]商梦.如何通过开源项目(代码)去赚钱?[EB/OL] https://www.zhihu.com/question/20086670 2019-04-11/2020-3-1
    [4]coludflashes.软件维护到底面临什么问题?[EB/OL] https://bbs.csdn.net/topics/40316201 2003-11-11/2020-3-1
    [5]代码湾.科普:开源是什么?开源就等于免费吗?[EB/OL] https://blog.csdn.net/b9q8e64lo6mm/article/details/80102347 2018-04-27/2020-3-1

  • 相关阅读:
    安装AD域时,出现NetBIOS名称冲突?
    SharePoint Server 2010 安装图解
    Visual C++ 2011519
    Visual C++ 2011520
    Visual C++ 2011518
    Visual C++ 2011520
    设计模式创建型 C++版本
    线程条件变量,一次性初始化
    Visual C++ 2011526
    Visual C++ 2011512
  • 原文地址:https://www.cnblogs.com/yqj-yf-111/p/12383586.html
Copyright © 2011-2022 走看看