软件工程是把系统的、有序的、可量化的方法应用到软件的开发、运营、和维护的过程。软件工程包括软件需求分析、软件设计、软件构件、软件测试和软件维护。
对探讨理想团队模式的设想,首先要了解团队的特点以及了解各种团队模式。
团队的特点:团队有一致的集体目标,团队要一起完成这目标;团队成员有各自的分工,相互依赖合作,共同完成任务。
团队的模式:蜂窝模式、主治医生模式、明星模式、社区模式、业余剧团模式、秘密团队、特工团队、交响乐团模式、爵士乐模式、功能团队模式、官僚模式。
每个模式都有它的优缺点,我觉得理想的团队模式除了要符合团队的特点外,还需要更具情况选择合适的模式(成员的性格,目标,团队的需求等)不能照搬模式,比如学生之间的合作我比较推荐功能团队模式,具有不同能力的同事们平等协作,共同完成一个功能。
人们在开发、运营和维护软件的过程中有很多技术、做法、习惯、和思想体系。软件工程把这些相关的技术和过程统一到一个体系中,叫“软件开发流程”。目的是为了提高软件开发、运营、维护的效率,并提高软件的质量、用户满意度、可靠性和软件的可维护性。第一个提到的流程“写了再改”对于实际用户,对于解决实际需求的软件缺点太大,解决不了实际问题。对于瀑布模型以及它的各种变形,都具有重计划、重实现设计、重文档表达的特点。虽然解决了瀑布模型各个步骤不能分离的问题但是也带来了子系统之间进度不一的问题,同样用户只有到最后才能看到结果。这类模型的集大成者要算Rational统一流程。它由业务建模,需求,分析和设计,实现,测试,部署,配置和变更管理,项目管理,环境组成。除此之外还有老板驱动的流程,渐进交付的流程。
优秀的模式和流程都遵循TSP原则:使用妥善定义的流程,流程中的每一步都是可以重复的,可以衡量结果的;团队的各个成员对团队的目标、角色、产品都有统一的理解;尽量使用成熟的技术和做法;尽量多的收集数据,并用数据来帮助团队做出理性的决定;制定切合实际的计划和承诺,团队计划要由负责具体执行的角色来制定;增加团队的自我管理能力;专注于提高质量,争取在软件生命周期的早期发现问题。最有效提高质量的办法是做全面而细致的设计工作。