zoukankan      html  css  js  c++  java
  • 速读《现代软件工程——构建之法》有感

    速读《现代软件工程——构建之法》有感

           大三第二学期,我们在有了《数据结构》、《算法分析》、《C语言程序设计》等专业课的背景知识后,开设了《软件工程导论》课程,本课程主要结合邹欣老师编写的《现代软件工程——构建之法》授课。在快速通读教材《现代软件工程——构建之法》之后,我拟定了5个准备从本课程学习中找到答案的问题,问题如下所示:

           1.《现代软件工程——构建之法》第一章中总结提出软件开发过程中的本质特性主要有:

    (1) 复杂性(Complexity):软件可以说是人类创造的最复杂的系统类型,软件的各个模块之间有各种显性或隐性的依赖关系,随着系统的成长和模块的增多,这些关系的数量往往以几何级数的速度增长。

    (2) 不可见性(Invisibility):工程师是“看”不到自己的源代码如何具体地在用户的机器上被执行的。

    (3) 易变性(Changeability):人们自然地期待软件能在下面两种情况下“改变”: a) 让软件做新的事情;b) 让软件适应新的硬件。

    (4) 服从性(Conformity):软件不能独立存在,它总是要运行在硬件上面,它要服从系统中其他组成部分的要求,它还要服从用户的要求、行业系统的要求。

    (5) 非连续性(Discontinuity):输入上很小的变化,会引起输出上极大的变化。

            面对以上难题, 那么如何使软件能够更加行之有效地为人类服务呢?作为创新型时代的大学生,我们应该怎样避免自己“灵光一现”的想法随着这门课程的结束而消失呢?

          2. 第六章提出"敏捷流程",在软件工程的语境里,“敏捷流程”是一系列价值观和方法论的集合。敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用的状态

           当然软件开发过程中的“敏捷流程”离不开第二章提到个人技术与第五章提到的团队和流程。在这学期的软件工程实验中,怎样培养自我的软件工程师技术和素质?如何同团队成员协作共进?“敏捷流程”是否适合我们团队?同时,我自己感觉敏捷流程中,我们需要考虑的很详细,而且有些步骤很难做到。例如,冲刺阶段的“每日立会”对于初学软件工程的我们来说是否适用、是否有效率呢? “实践是检验真理的唯一标准”,我希望在本学期课程结束时,我能听到自己内心深处的答案。

           3. 第八章提到的需求分析对于整个软件开发十分重要,因为这关乎到软件是否能够受到针对人群的欢迎,所以软件团队必须进行用户调研,文章中讲述了以下九种方法来获取信息。通过各种各样的调研手段,我们可以找到客户的需要。

    1、焦点小组(Focus Group)
    2、深入面谈(In-depth Interview)
    3、卡片分类(Card Sorting)
    4、用户调查问卷(User Survey)
    5、用户日志研究(User Diary Study)
    6、人类学调查(Ethnographic Study)
    7、眼动跟踪研究(Eye Tracking)
    8、快速原型研究(Quick Prototype)

    9、A/B测试(A/B Test)

           在知道用户需要后,如何将软件功能和用户需求进行互相联系呢?在制定出软件的功能后,怎样定位功能的优先级呢? 同时,我们应该怎样平衡商业利益与用户要求呢?

           4. 第十章讲到了典型用户和典型场景,我想典型用户需要去细化特征,细化的程度怎么把握呢?当然,典型用户对于软件设计有很大的价值,那么我们应该怎样处理、平衡典型用户与普通用户需求差异?

           5. 第十一章软件设计与实现,此阶段需要对我们分析的需求进行解决,面对现实世界里的实体与属性,软件系统应该怎样交互、表现它们之间的关系呢?在第一章概述中我们知道“软件=程序+软件工程”,毫无疑问,此时应该通过编程来解决问题,然而,“程序=数据结构+算法”,数据结构与算法设计课是我们IT学习者必须掌握的课程,那么我们应该怎样把这两者与软件设计结合起来?把自己已经掌握的理论知识应用到实践中呢?

           由于时间紧张,我只是扫读了本书,在接下来的学习中,我将会结合《软件工程导论》视频课,细细评味、探究软件工程方面的知识,解决上述自己的疑问。 " Build to Learn,Build to Show,Build to Serve,Build to Win.”期待我的后续,如有不恰当之处,还望大家及时指正,谢谢!

  • 相关阅读:
    Elasticsearch Query DSL 整理总结(三)—— Match Phrase Query 和 Match Phrase Prefix Query
    Elasticsearch Query DSL 整理总结(二)—— 要搞懂 Match Query,看这篇就够了
    Elasticsearch Query DSL 整理总结(一)—— Query DSL 概要,MatchAllQuery,全文查询简述
    Elasticsearch Java Rest Client API 整理总结 (三)——Building Queries
    Elasticsearch date 类型详解
    python 历险记(五)— python 中的模块
    python 历险记(四)— python 中常用的 json 操作
    python 历险记(三)— python 的常用文件操作
    Elasticsearch Java Rest Client API 整理总结 (二) —— SearchAPI
    Elasticsearch Java Rest Client API 整理总结 (一)——Document API
  • 原文地址:https://www.cnblogs.com/Fuenli/p/8545388.html
Copyright © 2011-2022 走看看