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


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

           大三第二学期,我们在有了《数据结构》、《算法分析》、《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.”期待我的后续,如有不恰当之处,还望大家及时指正,谢谢!

  • 相关阅读:
    MongoCola使用教程 1 MongoDB的基本操作和聚合功能
    [教程]MongoDB 从入门到进阶 (TextSearch)
    MongoCola使用教程 2 MongoDB的Replset 初始化和配置
    [教程]MongoDB 从入门到进阶 (aggregation数据库状态)
    [教程]MongoDB 从入门到进阶 (概要 以及 高级索引篇 TimeToLive GeoNear)
    C#多线程函数如何传参数和返回值
    QQ邮箱 C# 发邮件 常见错误异常
    关于c#中的Timer控件的简单用法
    要想使用线程 想去方法 应该传入object 传参
    quartz给任务传参数以及维持任务的状态
  • 原文地址:https://www.cnblogs.com/Fuenli/p/8545388.html
Copyright © 2020-2023  润新知