软件工程学习笔记1

软件工程概述

1.1软件与软件危机

概念:软件=程序+数据+文档

特点:

1.软件本身的复杂性
2.软件的成本高昂
3.软件开发未摆脱手工开发方式
4.软件维护与硬件有本质差别,维护难度高
5.软件开发不是传统硬件制造过程
6.软件是一种逻辑实体,无磨损性

软件危机:

在计算机软件开发和维护过程中所遇到的一系列严重问题。

软件危机原因:

1,主观原因:
1.忽视需求,轻视维护。
2.没有认识到程序只是软件的一部分
3.没有认识到软件开发只是漫长生命周期中的一个比较次要阶段
4.越到后期引入变动付出代价越高昂
2.客观原因:
1.软件是逻辑实体、缺乏可见性,管理和控制困难
2.软件不会磨损,修改原来设计,维护困难
3.软件规模大,程序复杂性随规模增加指数上升

消除软件危机的途径:

管理+技术

1.2软件工程

定义:

采用工程的概念、原理、技术和方法来开发和维护软件,把经过长时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,经济地开发出高质量软件并维护它

软件工程方法学:
定义:

在软件生命周期全过程中使用的一整套技术方法的集和

三要素:

方法(怎么做) + 工具(用什么做) + 过程(何时做)

方法学分类:

1.传统方法学(生命周期方法学)

  • 采用结构化技术完成软件开发各项任务
  • 把软件生命周期的全过程依次划分为若干阶段
  • 每个阶段开始和结束有严格标准
  • 每个阶段结束后进行严格审查

2.面向对象方法学

  • 把对象作为融合了数据及在数据上的操作行为的统一的软件构件
  • 把所有对象划分为类
  • 按照父类与子类关系,把若干类组成层次结构的系统
  • 对象彼此间仅能通过发送消息互相联系

1.3软件生命周期

1.3.1软件定义:

1.问题定义
2.可行性研究
3.需求分析

1.3.2软件开发:

1.总体设计:设计软件结构。确定程序由哪些模块组成及模块间的关系
2.详细设计:针对每个模块,详细设计规格说明。确定算法和数据结构
3.编码和单元测试:将详细设计内容用语言实现,并测试每个模块
4.综合测试:通过各类测试使软件达到预定要求

1.3.3软件维护

1.4软件过程

定义:

为了获得高质量软件所需要完成的一系列任务框架。通常用软件生命周期模型描述软件过程。

主要包括:

  • 瀑布模型(还有改进的瀑布模型):
    用户只有等到整个过程的末期才能见到开发成果,中间提出的变更要求难以得到相应。
  • 快速原型模型:
    关键在于用交互的快速建立起来的原型取代静态的需求规格说明书。
  • 螺旋模型(可以看成增加了风险分析的快速原型模型):
    适合复杂大型软件系统,没迭代一次就前进一周。
    每周包括:确定目标–>分析该策略可能存在的风险–>排除风险,实现目标–>评价
  • 喷泉模型
  • 增量模型:
    结合了瀑布模型的顺序特征和快速原型模型的迭代特征。在开发过程的各次迭代中,每次完成一个增量。

2.1可行性研究任务

目的:

用最小的代价在最小的时间内确定问题是否能够解决。

实质:

系统分析和设计过程的大大压缩和简化,在较高层次上以较为抽象的方式进行系统分析和设计过程。

过程:

1.分析和澄清问题定义
2.导出系统的逻辑模型:数据流图+数据字典
3.根据逻辑模型探索若干可供选择解法
4.研究每种解法的可行性:经济可行性、技术可行性、操作可行性、其他。

2.2可行性研究内容

步骤:

1.复查系统规模和目标
2.研究目前正在使用的系统:
重在了解,不花时间分析怎么实现。

–未完待续
后续内容请关注CSDN本专栏
更多内容请关注公众号
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

故事已经翻了几页

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值