混乱开发,既伤身体又伤感情

   这几天读了些UML用户指南和设计模式面向对象开发,由于写了很长时间的程序,突然发现体力劳动越来越严重,情绪有些低落和凌乱。

   实现虽然已经结束,可是竟然在不知不觉中留下了一丝软件开发的阴影。这几天很不情愿去写代码,于是重新投入到软件工程方面的知识的研读和思考。很久以前一直在学习这方面的东西,而且很愿意投入自己的工程中使用。然而这次团队合作我们却陷入到深渊。

    3GCRM系统Android应用开放算是告一段落,就此刻的心情可以对这次开发做一个总结就是:失败的组织,混乱的开发,没有统一标准,团队软件工程的思想匮乏,工程进度控制不当,缺乏人性化,总之没有一样值得称赞。

    对这些问题想了想。

    首先团队合作出现问题:队员开发能力参差不齐,面对Android应用开发这个新的技术没能很好的接受;分工明确但是缺乏执行力;个队员开发速度不一致,存在了开发时间的浪费。

    其次,最重要的问题还要从软件开放的工程化思考。

    总体上这次项目开放实在混乱中进行这,最后我在进行模块组织的过程中并没能较为轻松的合并,而是参与了很多的代码的修改,错误调试等等。归结了一下主要存在这些问题:

    1.在需求分析已经做完整的前提下团队开发没能严格遵守

    2.各个模块虽然独立编程和实现,但是仅仅停留在面向功能编程的基础上,直接导致的是项目中冗余代码达到40%

    3.项目开发没有用到合理的设计,没能面向接口编程,封装性差。

    4.布局文件和程序文件没能进行有效的组织管理和命名

    5.在项目开发中没有制定统一的命令规则,这导致不同人员在使用其它功能能模块的时候出现命名混乱,代码可读性降低很多

    6.开发时间和模块开发顺序安排上不合理,致使开发周期变长,队员自身要求不够,没能严格遵守开发组的约定

    7.各队员对开发模块测试不完整,没能规定测试标准和测试要求,产生了模块组合出现错误的现象

    最后,从开放的状态和态度上,要求不够。细想,出现一种常见的现象就是:激动编码。共同存在的问题,遇到问题,总是第一时间想去编码实现和解决,这样产生的问题是问题解决了,项目中代码组织一团糟糕,失去了面向对象程序设计的基本准则和要求。

    激动编码也是混乱开发的一种普遍的体现形式。面对一个问题,可以通过思考和小的CASE测试来实现,但是这样的做法只能作为测试或者方法事例,绝不能投入到软件项目中去,试想如何每一个参与者都本着解决问题的心态去进行项目开放,结果可以想象,问题将会越解决越多。既然是工程就应该遵循规定和标准去做。

   遇到的问题还是很多,想想,看看然后真正的从软件工程化的角度去对待,可以激动,但一定冷静,毕竟编码只是软件开发的一个部分,不是全部。无论是从设计,还是使用,升级都需要而且必要合理和设计和规划。

   实习超乎寻常的累,就是没有重视软件开发的工程化,到头来精疲力尽而且感情备受打击,一团谈不上重用与健壮的代码,非人的UI设计,简略的开放文档只能算是出了力,没落好啊!

   已经经历了,算做软件开放的一个新的旅程的开始吧!大道至简,我想软件也是如此吧。

  

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

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

相关文章

常见的排序算法二——希尔排序

原理:被称为增量缩小排序。先将序列按增量划分为元素个数相同的若干组, 使用直接插入排序法进行排序,然后不断缩小增量直至为1, 最后使用直接插入排序完成排序。 要点:增量的选择以及排序最终以1为增量进行排序结束。 …

Centos搭建SVN服务器及配置文件

2019独角兽企业重金招聘Python工程师标准>>> 1、安装 #yum install subversion 判断是否安装成功 yum安装结束时会显示版本 svnserve, version 1.6.11 (r934486) 出现上面的提示,说明安装成功。 有了SVN软件后还需要建立SVN库。 #mkdir /opt/svn/repos …

.Net Micro Framework导航总贴(新手必看)

一、什么是.Net Micro Framework它是一个.Net框架(微型框架),也是一个嵌入式系统OS,可以裸奔在ARM单片机上,也可以运行在别的嵌入式系统上。我们可以用VisualStudio C#开发代码,调用对应各种硬件的类库方法…

char数组拷贝wchar数组

std::string str “123”; size_t nDestSize mbstowcs(NULL, str.c_str(), 0) 1; //size_t nDestSize strlen(str.c_str()) 1; wchar_t* wchDest new wchar_t[nDestSize]; wmemset(wchDest, 0, nDestSize); mbstowcs(wchDest, str.c_str(), nDestSize); std::wstring wst…

IP地址查询接口及调用方法

为什么80%的码农都做不了架构师?>>> 设计蜂巢IP地址查询接口:http://www.hujuntao.com/api/ip/ip.php腾讯IP地址查询接口:http://fw.qq.com/ipaddress新浪IP地址查询接口:http://int.dpool.sina.com.cn/iplookup/iplo…

c++11或c++14或c++17参数包的使用

include //张开函数啦 template void display1(T a) { std::cout << a << std::endl; } template void display1() { std::cout << “void” << std::endl; } //逗号展开函数 template<typename Tvoid,typename … Args> void display1(T fi…

加解密技术(Cryptography)基本概念

转载自&#xff1a;http://www.cnblogs.com/piyeyong/archive/2010/06/10/1744692.html 要想实现在不安全的网络上的安全通信&#xff0c;需要考虑3个方面的问题&#xff1a;保密(Privacy)&#xff0c;认证(Authentication)&#xff0c;完整性(Integrity)。 1.保密(Privacy) 数…

select的列子说明select内部实现原理

1:select内部是个数组&#xff0c;而epoll内部结构是红黑二叉树 2&#xff1a;select查询起来慢&#xff0c;而epoll查询起来快 3:每次循环&#xff0c;内部都要发生拷贝&#xff08;查看相关代码&#xff09;而epoll不需要这样的操作,也就是初始化一次拷贝 #include #include&…

.NET配置文件读写实例(附SosoftConfigHelper类)

配置文件在软件开发中起到举足轻重的作用&#xff0c;可以说不可或缺。.NET程序可使用.config文件作为配置文件&#xff0c;例如WinForm程序的*.app.config、Web程序的web.config。.config文件是标准的XML文件。本实例可读取、修改和添加app.confing或者web.config文件的appSet…

关于shared_from_this的转换

声明&#xff1a;以下这函数&#xff0c;使用场景再lambda表达式中使用 std::weak_ptr<websockets_session> weak_self() { return std::weak_ptr<websockets_session>(shared_from_this()); }

HTML5标签

<header>主要用于导航&#xff0c;头部&#xff0c;可以嵌套&#xff0c;但不可以嵌套在<address>标签中。 <hgroup>在<header>里面定义具体内容的&#xff0c;是一个小容器。 <article></article>:大块文章&#xff0c;主要用于文字的显示…

多态的调用方法

1: 父类的指针指向子类的地址&#xff0c;然后调用虚函数 列子: #include<iostream> #include<memory> class A { public: A() default; virtual ~A() default; virtual void display() { std::cout << "A" <<…

spring security3 统计在线用户

首先&#xff0c;我们需要使得ConcurrentSessionFilter生效并在spring-security.xml配置。[html] view plaincopy<http auto-config"true" use-expressions"true"> <!-- Uncomment to limit the number of sessions a user can have --> …

node.js编程错误记录集

这是有关于我最近学习node.js中出现的错误的记录和纠正过程&#xff0c;因为我只是一名初学者&#xff0c;所以&#xff0c;遇到的错误可能真的是非常简单&#xff0c;如拼写错误等等&#xff0c;这些我当然是不会记录下来的&#xff0c;但是如果是一些我一时看不懂&#xff0c…

wstring和string简单正则表达式使用

std::regex e("([ ])3DSMAX(\d{4})_MAIN([^ ])"); //std::regex e("([^ ])3DSMAX(\d{4})_MAIN"); std::smatch sub_match; //从第一行中解析请求方法、路径和 HTTP 版本 std::string line “VRAY30_RT_FOR_3DSMAX2016_MAIN”; if (std::regex_match(line,…

【引用】phpmyadmin提示Access denied for user 'root'@'localhost' (using password: NO)的解决办法...

一、错误内容 今天用phpmyadmin连接mysql里面的某个数据库时时遇到了下面的提示&#xff1a; #1045 - Access denied for user rootlocalhost (using password: NO) phpMyAdmin 试图连接到 MySQL 服务器&#xff0c;但服务器拒绝连接。您应该检查 config.inc.php 中的主机、用户…

Nuget 启用数据库迁移的时候一定要把包含DbContext的项目设为启动项目

在为项目启用数据库迁移的时候&#xff08;enable-migrations&#xff09;出现如下错误&#xff1a; 在程序集“XX”中未找到迁移配置类型“XX.Migrations.Configuration” 之前一直正确的&#xff0c;并没有修改项目中的代码&#xff0c;花了小半天找原因&#xff0c;stackove…

string、wstring、UTF-8、UTF-16、UTF-32之间转换

//string转wstring std::wstring string_to_wstring(const std::string& str) { setlocale(LC_ALL, “”); std::int64_t size mbstowcs(NULL, str.c_str(), 0); std::wstring w_str; w_str.resize(size); //算出代转wstring字节 mbstowcs(w_str.data(), str.c_str(), str…

论贱人

来源于我在论坛的一帖&#xff0c;个中缘由不说也罢。<<论贱人>> 天地阴阳&#xff0c;构精而生万物&#xff0c;万物生而后人生。物有性格&#xff0c;人亦有性格。性有善恶之分&#xff0c;格有贵贱之别。古人尝论人性之善恶&#xff0c;孟子云人性本善&#xff…

Delphi用ini文档实现界面无闪烁多语言转换

越来越多的程序使用了多国语言切换&#xff0c;虽然DELPHI自带多语言包的添加和配置&#xff0c; 但是那种方法在切换语言时界面会出现闪烁&#xff0c;而且实现起来很麻烦&#xff0c;这里我介绍给大家的是利用INI文件来读取界面的语种文字&#xff0c; 用这种方法&#x…