项目管理及系统规划

news2025/2/5 11:32:17

一、项目管理

1.软件工程基本概念

1.1 软件

(1)什么是软件?

软件一般认为由三部分组成:
• 程序:在运行时,能提供所希望的功能和性能的指令集。
• 数据结构:使程序能够正确运行的数据结构
• 文档:描述程序研制过程、方法及使用的文档

(2)软件的特点
– 抽象性:逻辑实体,可记录,但看不到
– 可复制性:与开发成本相比,复制成本很低
– 无折旧
– 受硬件制约
– 未完全摆脱手工工艺
– 开发费用高

1.2 软件危机

(1)计算机软件发展的三个时期

1.计算机软件发展的三个时期
• 早期时代( 60 年代中期之前)程序设计阶段:硬件通用,软件专用;程序规模小,编写者和使用者为同一人(同组人)。
• 第二代( 60 年代中期 -70 年代中期)程序系统阶段:出现“软件作坊”、产品软件;“个体化”开发方法。
• 第三代( 70 年代中期之后)软件工程阶段:软件开发成为一门新兴的工程学科——软件工程。

2.计算机软件发展的三个时期及特点

程序设计程序系统软件工程
软件的范畴程序程序及说明书产品软件(项目软件)
主要程序设计语言汇编及机器语言高级语言高级语言系统、程序设计语言
软件工作范围程序编写包括设计和测试软件生存期
需求者程序设计者本人少数用户市场用户
维护者责任程序设计者开发小组专职维护人员
硬件特征价高 、 存储小 、 可 靠性差降价;速度、容量 、 可靠性明显提高向超高速、大容量、微型化发展
软件特征完全不受重视软件技术的发展不满足需要,出现软件危机开发技术有进步,但未获得突破性进展,软件危机未完全摆脱

(2)什么是软件危机

软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。主要是两个
问题:1. 如何开发软件,怎样满足对软件的日益增长的需求。2. 如何维护数量不断膨胀的已有软件。

(3)软件危机的主要表现

1. 对软件开发成本和进度的估计不准确
2. 用户不满意
3. 软件质量不高、可靠性差
4. 软件常常不可维护、错误难以改正。
5. 缺乏适当的文档资料
6. 软件成本占系统总成本的比例逐年上升
7. 软件开发速度跟不上计算机发展速度

(4)产生软件危机的原因

1. 与软件本身的特点有关。软件不同于硬件,它是计算机系统的逻辑部件而不是物理部件。在写出程序代码并在计算机运行之前,软件开发过程的进展情况较难衡量,软件开发的质量也较难评价。因此,管理和控制软件开发过程相当困难。
2. 软件不易于维护。软件维护通常意味着改正或修改原来的设计,客观上使软件较难维护,且软件不同于一般程序,它的规模大,不易于维护。

3. 在软件开发过程中,或多或少地采用了错误的方法和技术。
4. 对用户需求没有完整准确的认识,就匆忙着手编写程序。

(5)解决软件危机的途径

1. 技术措施:使用更好的软件开发方法和开发工具
2. 组织管理措施:软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。

1.3 软件工程

(1)什么是软件工程

– 软件工程是指导计算机软件开发和维护的工程学科。它采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。
– 软件工程是一门涉及软件计划、需求分析、设计、编码、测试和维护的原理、方法及工具的研究和应用的学科。

(2)软件工程的基本原理

– 1968 年在联邦德国召开的国际会议上正式“软件工程”术语。
– 目前有 100 多条关于软件工程的准则,其中最出名的是著名软件工程专家 B.W.Boehm在 1983 年提出的 7 条基本原理。

1. 用分阶段的生命周期计划严格管理
– 经统计表明,不成功的软件项目中有一半左右是由于计划不周造成的。
– Boehm 认为,在软件的整个生命周期中应制定并严格执行六类计划:项目概要计划、里程碑计划、项目控制计划、产品控制计划、验证计划、运行维护计划。

2. 坚持进行阶段评审
– 大部分错误是在编码之前造成的
– 错误发现与改正得越晚,所需付出的代价越高。
因此,在每个阶段都进行严格的评审,以便尽早发现在软件开发过程的错误。

3. 实行严格的产品控制
– 在软件开发过程中不要随意改变需求,因为改变某项需求往往需要付出较高的代价,但在实践中用户往往会提出需求变更,因此需要采取科学的产品控制技术。
– 目前主要实行基准配置管理:基准配置是指经过阶段评审后的软件配置成分,如各个阶段产生的文档或程序代码。
– 对涉及基准配置的修改,必须经过严格的评审,通过后才能实施修改。

4. 采用现代程序设计技术
– 实践表明:采用先进的技术既可提高软件开发的效率,又可提高软件维护的效率。
– 80 年代及之前:结构化分析、设计技术。
– 90 年代:面向对象分析、设计技术。

5. 结果应能清楚地审查
– 软件产品是看不见、摸不着的逻辑产品,开发过程难以评价和管理。
– 根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准,使所得的结果能够清楚地审查。

6. 开发小组的人员应该少而精

– 开发小组人员的素质和数量是影响软件产品质量和开发效率的重要因素。

– 开发小组人员数目的增加,使相互交流复杂、费用增加。

7. 承认不断改进软件工程实践的必要性

– 遵循前6条基本原理,就能够按照当代软件工程基本原理实现软件的工程化生产,但不能保证赶上时代前进的步伐。

– 积极主动采纳新的软件技术,且不断总结经验

(3)软件工程的传统途径

软件工程的传统途径是“生命周期法”,强调“结构化分析、结构化设计”。

1. “生命周期法”的起源

人类解决复杂问题时普遍采用的一个策略是“各个击破”,也就是对问题进行分解,然后再分别解决各个子问题的策略。

软件工程采用的“生命周期法”,就是从时间角度对软件开发和维护的复杂问题进行分解,把软件生存的漫长周期依次划分为若干个阶段,每个阶段有相对独立的任务,然后再逐步完成每个阶段的任务。

2. 生命周期划分的原则

各阶段的任务彼此间尽可能相对独立,同一个阶段各项任务的性质尽可能相同,从而降低每个阶段任务的复杂性,简化不同阶段之间的联系,有利于软件开发过程的组织管理。

3. 生命周期的划分

软件生命周期一般分为:软件定义(问题定义、可行性研究、需求分析)、软件开发(总体设计、详细设计、编码和单元测试、综合测试)、软件维护等三个时期。

生命周期法各阶段的工作小结

 4. “生命周期法”的特点

  • 阶段具有顺序性和依赖性
  • 推迟实现的观点
  • 质量保证的观点:每个阶段都必须完成规定的文档;每个阶段结束前都要对所完成的文档进行评审,以便尽早发现问题,改正错误。

1.4  软件开发过程模型

 

1.5  软件开发方法

  • 结构化分析、设计
  • JACKSON设计方法
  • 面向对象分析、设计

2.需求分析

3.系统设计

4.软件测试

5.系统测试

6.项目管理基础

二、系统规划

1.信息系统规划

2.整体构架设计及系统整合

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1336900.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

少走十年弯路!!!webpack详解

webpack是什么?? 本质上,webpack 是一个用于现代 JavaScript 应用程序的 静态模块打包工具。当 webpack 处理应用程序时,它会在内部从一个或多个入口点构建一个 依赖图(dependency graph),然后将你项目中所需的每一个模…

【问题系列】同时管理多版本node方案

目录 一、问题描述 二、解决方案 三、详细步骤 3.1 安装NVM: 3.2 运行NVM 3.3 安装Node.js 3.4 切换Node.js版本 3.5 验证安装: 四、拓展 4.1 设置默认 Node.js 版本 4.2 列出已安装的 Node.js 版本 4.3 其他命令介绍 一、问题描述 需要运行…

java:4-7运算符优先级

运算符优先级 运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如右表,上一行运算符总优先于下一行。只有单目运算符(第二行)、赋值运算符(倒数3行)是从右向左运算的。一览表, 不要背&#x…

Fiddler抓包,怎么抓抓得好抓得快?

01.什么是 Fiddler? Fiddler 是一个 HTTP 协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的 HTTP 通讯。Fiddler 提供了电脑端、移动端的抓包、包括 http 协议和 https 协议都可以捕获到报文并进行分析;可以设置断点调试、截取报文进行请…

智慧导游带你“一部手机游景区”——VR版

不知不觉中,元旦小假期快要来了,既然期待了这么久,那肯定不能让假期就这样平淡的“溜走”,各大景区的攻略你都做好了吗?是不是翻遍网上各式各样的图文攻略,依旧感觉没有做到位呢?你可能需要一个…

echarts生成地图(自定义区域色块,自定义图标样式,自定义移入效果)

一、使用echarts生成一个地图,看一下生成效果图 二、使用步骤 1.先准备需要的数据 DataV.GeoAtlas地理小工具系列 可以去这个网站下载需要的json数据,也可在线引入,但是发布到线上有问题,所以我这边是直接把数据下载到本地使用。 把下载好的数据放入到public里面 在api写入一…

【FPGA】分享一些FPGA高速信号处理相关的书籍

在做FPGA工程师的这些年,买过好多书,也看过好多书,分享一下。 后续会慢慢的补充书评。 【FPGA】分享一些FPGA入门学习的书籍【FPGA】分享一些FPGA协同MATLAB开发的书籍 【FPGA】分享一些FPGA视频图像处理相关的书籍 【FPGA】分享一些FPGA高速…

Python实现API接口并发测试

目录 一、引言 二、准备工作 三、并发测试的实现 1、导入必要的库 2、定义并发测试函数 3、调用并发测试函数 四、测试结果分析和优化 五、总结 一、引言 随着微服务架构和RESTful API的普及,API接口测试变得越来越重要。并发测试是API测试的一个重要方面&…

入门IC必读书目推荐!你真的不能错过

在IC行业,技术和经验都很重要,为了更好的学习,现为大家整理了各岗位的学习书目。 以上书目,可以免费分享,你想要哪本呢~ 这里放个口:入门IC必读书目 通用基础类 《半导体物理学》 这本书被国内大部分高校…

PostgreSQL数据库有哪些优点

在现在的这个数据驱动的社会中,数据库管理系统的选择对于企业来说非常重要的。PostgreSQL凭着他卓越的特性和优势成为了大多数组织和开发者的选择。那PostgreSQL数据库有哪些优势呢,下面以我的理解简单的介绍一下。 可靠性 系统设计重视数据完整性和一…

SpringBoot3 核心原理

1. 事件和监听器 1. 生命周期监听 场景:监听应用的生命周期 1. 监听器-SpringApplicationRunListener 自定义SpringApplicationRunListener来监听事件; 编写SpringApplicationRunListener 实现类在 META-INF/spring.factories 中配置 org.springfram…

MyBatis框架——MyBatis实现查询功能

一、简单查询 查询数据中的一条数据或多条数据,返回,有两种实现方式: 第一种,用注解的方式实现,方法如下图: 第二种,用mapper的方式实现,方法如下图: 注意:…

Python-logging模块之配置字典

Python-logging模块之配置字典 目录 介绍模版功能详情 formatters日志格式fitters过滤器handlers日志处理器loggers日志记录器 字典的加载进阶操作 无名loggers日志轮转 介绍 由于不少小伙伴在使用logging.basicConfig基本日志配置时经常遇到乱码问题,这其实是…

Flamingo与亚马逊云科技合作,进一步优化海外客户的访问体验

据中国海关统计,2023年上半年,我国跨境电商进出口规模约1.1万亿元,比上年同期(下同)增长16.6%,增速加快13.7个百分点。其中,出口约8254亿元,增长20.6%,占同期我国出口总值…

分支限界法求解01背包(优先队列)【java】

实验内容:运用分支限界法解决0-1背包问题 实验目的:分支限界法按广度优先策略遍历问题的解空间树,在遍历过程中,对已经处理的每一个结点根据限界函数估算目标函数的可能取值,从中选取使目标函数取得极值的结点优先进行广度忧先搜…

xxl-job报错:xxl-job registry fail:The access token is wrong

1、报错信息 .ExecutorRegistryThread : >>>>>>>>>>> xxl-job registry fail, registryParam:RegistryParam{registryGroupEXECUTOR, registryKeyxxl-job-executor-sample, registryValuehttp://192.168.133.1:9999/}, registryResult:Re…

支持二开可定制化的企业电子招标采购系统源码

随着企业的快速发展,招采管理逐渐成为企业运营中的重要环节。为了满足公司对内部招采管理提升的要求,建立一个公平、公开、公正的采购环境至关重要。在这个背景下,我们开发了一款电子招标采购软件,以最大限度地控制采购成本&#…

Pandas 数据处理入门

Python的Pandas库是数据科学家和分析师的神器。在本文中,我们将详细探讨如何利用Pandas进行有效的数据处理,包括数据结构的理解、数据的导入、探索和基本处理。 认识Pandas 简要介绍Pandas的重要性安装和导入Pandas库 import pandas as pdPandas数据结…

简单实现通过代码启动 appium server

一、前置说明 总体目录:《从 0-1 搭建企业级 APP 自动化测试框架》上节回顾:在 os_util 工具类和方法的实现 中,实现了启动应用程序和查杀进程的一些基本方法。本节目标:简单实现通过代码启动 appium server,代替手动…

【低照度图像增强系列(2)】Retinex(SSR/MSR/MSRCR)算法详解与代码实现

前言 ☀️ 在低照度场景下进行目标检测任务,常存在图像RGB特征信息少、提取特征困难、目标识别和定位精度低等问题,给检测带来一定的难度。 🌻使用图像增强模块对原始图像进行画质提升,恢复各类图像信息,再使用目标检…