||||||||||||||

|:--|:--|

|项目|内容|

|软件工程|https://www.cnblogs.com/nwnu-daizh/|

|作业要求在博客里|https://www.cnblogs.com/nwnu-daizh/p/12369881.html|

|作业学习目标|通过学习《构建之法——现代软件工程》初步了解软件工程的相关知识|

markdown编辑器简要教程

目录

  对于软件我们已经再熟悉不过了,日常生活中大家都使用软件,最简单的就是手机里装了许多软件,我们每天使用手机就是使用软件,软件是为满足人们某种需求,被人开发出来,被人应用的集合体。从专业的角度来讲,软件工程=程序+软件工程 ,而程序=数据结构+算法。对于程序我们已经接触了C语言,Java面向对象以及pathy等,数据结构的课程也已经学习完了,那么软件工程是什么呢?

在乐学软件工程中狄国强老师说了一句

“软件如艺术,工程如人生,学软件工程,修人生艺术”

因此我对我们本学期要学习的软件工程这门课有了极大的好奇心。在看了娄老师的提问方式的文章之后,其中有一句话触动了我

“提问的目的绝不是为了轻而易举地获得答案,而是为了逐步培养自己的思考能力,去形成自己分析问题、解决问题的思路。”

任何事情,若是我能一直做到提出问题提,然后去想方设法解决问题,那么结果无疑是有最大收获的。

以下是我通过阅读邹欣老师的《软件之法——现代软件工程》后提出的三个问题:

在第一章中有这样一个小情节:阿超用一个给儿子打印几道不同的题目,老师知道后需求上面多加几个要求题目,接着是教导主任提议把程序放到学校官网并且保证界面是英文,从中我们可以看到客户的需求从一个简单的程序扩展到能满足各种功能的应用软件,扩展到一个能保证服务质量的服务软件。

问题一:在软件工程的整个生命周期中,软件需求分析起什么作用?软件团队是满足用户的各种需求最终保证软件的完善?


在前面的数据库课程设计中老师简单地介绍了需求分析,一个好的软件的需求分析是要在前期花费大量地时间和经历去完成,当时也提到了软件工程,因此我想了解软件团队把软件工程需求分析是如何做到更多用户地满意,它所付出地代价又是如何,在阅读了第八章地内容后得到相应地解析:主要有如下几个步骤:

1.获取和引导需求

软件团队要找到软件利益者(用户),了解和挖掘他们对软件地需求,引导他们表达处真实地需求;需求还可能来自软件企业本身,软件企业=软件+商业模式,企业所采用地商业模式是会对软件提出需求;需求还可以来自技术团队本身,团队在考虑软件地代码、框架,所依赖平台地长期演化会提出对技术地需求,包括代码的迁移、框架的烟花、平台的变化、或者引入新的技术、编程语言等。

2.分析和定义需求

这是指对各个方面获取的需求进行规整,定义需求的内涵,从各个角度将需求量化:需求实现的最后期限,实现需求大致需要的时间和资源成本,各个不同的需求的优先级、需求带来的收益等等。

3.验证需求

软件团队要跟利益相关者沟通,通过分析报告、技术原型、用户调查或演示等先后i向他们验证软件团队对耶这些需求的认知。

4.软件铲平的生命周期中管理需求

在软件的生命周期中,需求在发生变化,技术在发展,团队成员的能力也在提高。原来认为重要的事情可能不再重要,有些功能原来技术上很难实现,现在出现了捷径,一些相关的法则会发生变化,外部的合作伙伴突然发生变化,这些都要求我们不断对需求进行重新审核并作出相应的更新。

问题二:软件工程的特点是什么?这些特点有哪些表现?


  • 软件的特点:知识性、社会性、复杂性、不可见性、硬件性、规模越来越大。
  • 知识性的表现:创意为王、知识产权、无磨损、开发投入大辅之零成本、出阿波速度快、容易被侵权盗版。
  • 社会性的表现:由人开发 、为人所用 、人的水星带入软件 、不同人的思想行为影响软件。
  • 软件的复杂性的表现:需求越来越复杂、解决方案越来越复杂 、工具越来越复杂、 质量控制越来越难。
  • 软件的不可见性:没有运行时看不见摸不着,运行时内部处理不可见,描述起来:不方便 、不形象 不直观。
  • 软件的硬件性的表现:软件的运行与硬件的关系非常密切、与硬件环境的相关性非常高、不同硬件中的软件许多都互不相通。
  • 软件规模越来越大的表现:使用的人群越来越多、软件需求越来越多样化、应用范围越来越大。

问题三:软件工程研发中的具体工作需要做哪些?


1.制定计划(理解问题,系统的目标和范围,可行行报告)

  • 确定要开发软件系统的总目标
  • 给出功能、性能、可靠性以及接口等方面的要求
  • 完成该软件任务的可行性研究(包括估计资源,成本,效应,开发进度)

2.需求分析和定义(用户的要求,需求规格说明书)

  • 对待开发软件提出的需求进行分析并给出详细的定义
  • 编写软件需求说明书(设计人员的阶段,用户手册就要这这个阶段着手了,最好用图,标做)

3.软件设计(建立软件结构,各个模块的功能,概要设计和详细设计,两个主要文档)

  • 总体设计(概要设计) :这个阶段的主要任务是确定系统的架构,即给出软件的体系结构
  • 详细设计(模块设计) :这个阶段的主要任务是进一步确定如何实现这个系统;

4.编码和单元测试(编码,文档,数据)这个阶段的任务就是实现已做的设计,即写出正确的,容易理解和维护的程序代码。

5.集成和系统测试( 发现和排除错误)这个阶段就是通过各种类型的测试来提高软件质量,使软件大道预定的要求。分两种:集成测试,系统测试。

6.软件维护(改进软件产品)软件维护发生在软件已经正式交付使用之后,维护的主要目标是使系统持久地满足用户的需要。

小结:本次博客通过学习使用markdown编辑器的简要知识,运用到本次博客中,相关操作通过资料查询后学会了一些方法,我发现使用markdown可以设计自己喜欢的模板,同时实验是通过阅读邹欣老师的博客以及她的《构建之法——现代软件工程》提出了三个问题,这种边提问边思考的方式我感觉对我以后的学习有了一些感触,首次接触软件工程这一门学科,老师提供了许多学习的方法,比如乐学软件工程教学以及邹欣老师的博客等等,还有本次要完成github的托管,课下也查看了老师提供的视频,完成了相应的操作。

201771010128王玉兰实验一软件工程准备——<阅读《构建之法——现代软件工程》初步了解软件工程>的更多相关文章

  1. 2nd 阅读构建之法有感

    阅读构建之法有感 利用这一周的时间,我大致了解构建之法一书,这本书带我走进了一个全新的领域.它让我以一种新的视角去了解软件产业的发展和工作,领略软件工程的独特魅力,更给出了简单易懂的方式去理解何为软件 ...

  2. SE_Work1_阅读构建之法&项目管理实践

    项目 内容 课程:北航-2020-春-软件工程 博客园班级博客 要求:阅读<构建之法>并回答问题 个人博客作业 我在这个课程的目标是 提升团队管理及合作能力,开发一项满意的工程项目 这个作 ...

  3. 【软件工程】《构建之法》 & Git+ & CI/CD

    <构建之法> & Git+ & CI/CD 个人阅读作业#2 项目 内容 本作业所属课程 2020春季软件工程(罗杰 任健) 本作业要求 个人阅读作业#2 我的课程目标 具 ...

  4. 201771010128王玉兰《面向对象程序设计(Java)第十四周学习总结》

    第一部分:理论知识总结: (1)Swing 设计模式(Design pattern)是设计者一种流行的 思考设计问题的方法,是一套被反复使用,多数人 知晓的,经过分类编目的,代码设计经验的总结. 使用 ...

  5. 201771010128王玉兰《面向对象程序设计(Java)》第八周学习总结

    第一部分:理论知识部分总结 (1)接口:接口不是类,而是对类胡一组需求描述,由常量肯一组抽象方法组成. a:接口中不包括变量和有具体实现的方法 b:只要类实现了接口,则该类要遵从接口描述的统 一格式进 ...

  6. 201771010128王玉兰《面向对象程序设计(Java)》课程学习总结

    1.实验目的与要求 (1) 综合掌握java基本程序结构: (2) 综合掌握java面向对象程序设计特点: (3) 综合掌握java GUI 程序设计结构: (4) 综合掌握java多线程编程模型: ...

  7. 201771010128王玉兰《面向对象与程序设计(Java)》第十七周学习总结

    第一部分:理论基础 线程的同步 多线程并发运行不确定性问题解决方案:引入线 程同步机制,使得另一线程要使用该方法,就只 能等待. 在Java中解决多线程同步问题的方法有两种: - Java SE 5. ...

  8. 201771010128王玉兰《面向对象程序设计(Java)》第十六周学习总结

    第一部分:理论基础 1.线程的概念 进程:进程是程序的一次动态执行,它对应了从代码加 载.执行至执行完毕的一个完整过程.  多线程:多线程是进程执行过程中产生的多条执行线索.  线程:线程是比进程执行 ...

  9. 201771010128王玉兰《面向对象与程序设计(java)第十五周学习总结》

    第一部分:理论知识 一:JAR文件 Java程序的打包:程序编译完成后,程序员 将.class文件压缩打包为.jar文件后,GUI界面 程序就可以直接双击图标运行. jar文件(Java归档)既可以包 ...

随机推荐

  1. bootstrap-内联文本元素-小号文本

    说明 使用 <small> 标签包裹,其内的文本将被设置为父容器字体大小的 85% 示例 <!DOCTYPE html> <html lang="zh-CN&q ...

  2. bootstrap-分页-默认分页

    说明 默认分页 示例 <!DOCTYPE html> <html lang="zh-CN">    <head>      <meta c ...

  3. 数学--数论--HDU 5223 - GCD

    Describtion In mathematics, the greatest common divisor (gcd) of two or more integers, when at least ...

  4. muduo网络库源码学习————互斥锁

    muduo源码的互斥锁源码位于muduo/base,Mutex.h,进行了两个类的封装,在实际的使用中更常使用MutexLockGuard类,因为该类可以在析构函数中自动解锁,避免了某些情况忘记解锁. ...

  5. django源码分析——静态文件staticfiles中间件

    本文环境python3.5.2,django1.10.x系列 1.在上一篇文章中已经分析过handler的处理过程,其中load_middleware就是将配置的中间件进行初始化,然后调用相应的设置方 ...

  6. 70行实现Promise核心源码

    70行实现Promise核心源码 前言: ​ 一直以来都是只会调用Promise的API,而且调API还是调用axios封装好的Promise,太丢人了!!!没有真正的去了解过它的原理是如何实现的,自 ...

  7. andorid jar/库源码解析之EventBus

    目录:andorid jar/库源码解析 EventBus: 作用: 用于不同Activity,Service等之间传递消息(数据). 栗子: A页面:onCreate定义   EventBus.ge ...

  8. SQLite使用(一)

    简单介绍SQLite常用API: int sqlite3_open( const char *filename, /* Database filename (UTF-8) */ sqlite3 **p ...

  9. Java λ表达式

    目录 Java Lambda表达式 1. 函数式编程思想 2. 体验Lambda的更优写法 3. Lambda表达式的标准格式 4. 练习:使用Lambda表达式(无参无返回) 5. 练习:使用Lam ...

  10. python gdal 读取栅格数据

    1.gdal包简介 gdal是空间数据处理的开源包,其支持超过100种栅格数据类型,涵盖所有主流GIS与RS数据格式,包括Arc/Info ASCII Grid(asc),GeoTiff (tiff) ...