Real Software World

Comments
Would you like to comment?

Sign In if already a member, or Join Now for a free account.

Presentation Transcript Presentation Transcript

: 1 Real World Software Environment

Advantages of this course : Advantages of this course Participants will learn about the right mind for success in real software world Participants will learn about real world software development processes and methodologies so that They can quickly adjust to real software world Participants will learn about range of opportunities available in software world So that They can take a well informed and well thought decision about their career Participants will learn how to keep pace with continuously changing technology world So that They can continuously enhance their skill sets and always maintain their employability 2

Agenda : 3 Agenda SW mind set for real world software SW Development Methodologies Software development Mode SW development Life Cycle SW development Roles SW development Areas SW development Companies SW development standards

Right mindset for real World Software Development : 4 Right mindset for real World Software Development “Incremental and Continuous learning” mind set “Collaboration and Communication” mind set “Quality on Time” mind set “ Welcome Change” mind set

Continuous and Incremental Learning Mind set : Continuous and Incremental Learning Mind set In Software world , software technology is continuously changing at rapid rate The process of software development , delivery, deployment and monitoring is also continuously evolving and changing at a rapid rate Only by Continuously and Incrementally learning new technologies and adopting new and better way of working, you can maintain your employability on long term basis Later in the session , we will discuss that how you can developed for your selves a customized process of continuous and incremental learning 5

Collaboration and communication mind set : Collaboration and communication mind set Software development is all about team work Collaboration means Making a deliberate effort to understand the team goal and how team wants to achieve the goal Making a deliberate effort to understand what is your role and how its contributes in meeting the team goal Taking full responsibility for your work and delivering “Quality on time” Being pro-active and taking appropriate initiate for going an “extra miles” if it helps in meeting the team goal. Helping other in the interest of over all team goal Making a sincere and deliberate effort to understand other team members point of view 6

Collaboration and communication : Collaboration and communication We communicate Verbally In writing Via audio-visual medium Via our body language Via our action Communication via action is the most powerful way of communication What you do impact so loudly that it does not matter what you say You communicate strongly every time you keep or break a promise Be aware of the impact your communication is creating on others Does it making other comfortable/uncomfortable ? Are other able to understand what you are trying to communicate ? The most important communication skill is “understanding other points of view” by Attentive Listening Focus Reading Seeking clarification if in doubt 7

Collaboration and communication mind set : Collaboration and communication mind set The second most important communication skill is conveying your point of view via Clear Verbal, written and Audio-visual communication Clear and precise written communication Communication skill are best developed by preparation, practice and review Preparation mean knowing in advance What you want to communicate ? Who you want to communicate to ? How you want to communicate ? Before any important meeting/presentation the right question to ask is What outcome I want after the meeting/presentation ? Practice , Practice and Practice Never miss an opportunity to make a audio-visual/presentation/tech-talk etc. Regularly review and improve the impact of your verbal, written , audio-visual , body language and action communication 8

“Quality on time” mind set : “Quality on time” mind set Delivering on time is challenging Delivering quality work is challenging Delivering “ quality on time” is by far the biggest challenge in software word Delivering “quality on time” is a mental model which we need to adopt for being successful in real software world . Later on in this session we will have a detail look into this concept 9

Software development Methodologies : 10 Software development Methodologies Waterfall process Iterative and Incremental process (IID) Microsoft Solution framework Rational unified Process (RUP) Agile Software development(ASD)

Software development methodologies Waterfall vs iterative&increnetal : Software development methodologies Waterfall vs iterative&increnetal Req . Architecture and design coding Testing Release 11 Req Arch. & design Coding Coding Testing Release Candidate ? Release Candidate ?

: 12 Software development methodologies Microsoft solution framework

Software development methodologies RUP(Rational unified process) : 13 Software development methodologies RUP(Rational unified process)

: 14 Software development methodologies Working on deliverables/Artifacts Inputs Process Tools End user Deliverables Best practices and standards

Software development methodologies Agile software development (ASD) process and Principal : 15 Software development methodologies Agile software development (ASD) process and Principal Customer satisfaction by short time boxed iteration Short and time boxed meetings lean and principal centric process in place of rule driven processes Working software of acceptable quality is delivered frequently (weeks rather than months) Welcome changes in requirements even during late stages of iteration Close collaboration and co-operation between business people and developers Simplicity and clarity of design and code Self-organizing teams Daily builds and continuous integration Test driven development --- Focus on Unit testing

SW development – Mode : 16 SW development – Mode Development Mode Release Production Mode

SW development Life Cycle – Development Mode : 17 SW development Life Cycle – Development Mode Project Management Quality Assurance Documentation Reviews Build and Config. management Communication Req. Architecture and design Coding Testing Coding Testing Req. Architecture and design Release ? Release ?

SW development Life Cycle – Development Mode Requirements : 18 SW development Life Cycle – Development Mode Requirements Characteristic of SW requirements Req. tend to be ambiguous Req. tend to change over time Req. are best developed over time in iterative and Incremental manner Requirement Change Management Types of Software Requirements Business Requirement Functional or user Requirements Non Functional Requirement RASP ilities of Requirements Constraints Quality requirements

SW development Life Cycle – Development Mode Requirements – Function requirement : Function requirements are best understood by use cases Use case Components System boundary Use case Actors Primary actors Secondary actors Use Case Goal Use case behavior Main path and exceptions path Use case precondition and post condition 19 SW development Life Cycle – Development Mode Requirements – Function requirement

A typical use case : A typical use case 20 Reserve room add to waiting list Send email Extend uses Extend use case is an extension of functionality of main use case Uses use encapsulate the common requirements

Use case realization : Use case realization 21 Use case realization is done via robustness analysis Robust analysis divide a use case into three type of components Entity objects or long live objects Controller objects or use case application Boundary objects interact with out side world Robustness Analysis rules Controller object should talk to entity objects Boundary objects should talk to Controller objects External objects should talk to Boundary objects External object should never talk to entity objects directly Get room( ) Reserve room ( )

SW development Life Cycle – Development Mode Requirements – NFR : 22 RAsSP Reliability Availability Security Scalability Performance ilities Usability Adaptability Modifiability Extendibility Inter-operability SW development Life Cycle – Development Mode Requirements – NFR

SW development Life Cycle – Development Mode Requirements : 23 SW development Life Cycle – Development Mode Requirements Requirements Process Requirements Elicitation Requirements Analysis Requirements Specification SMART Requirements Reviews Requirement Communication

SW development Life Cycle – Development Mode Architecture and Design : 24 Software Architecture Subsystem and Components How do they interacts Public and private interface of Subsystem and Components List of Artifacts and Deliverables Different view of Architecture Conceptual Logical Physical SW development Life Cycle – Development Mode Architecture and Design

SW development Life Cycle – Development Mode Architecture and Design : List of artifacts and deliverables HLD Object and data model ORM Mapping LLD Sequence diagram Public and Private interfaces 25 SW development Life Cycle – Development Mode Architecture and Design

Software development – Team Development Environment : Software development – Team Development Environment 26 LAN Developer IDE Developer IDE IDE Build machine CI System Issue mgt. System Version Control System Test System

: 27 Naming Standards Self Describing, uniform and consistent naming standards Comments Appropriate Comments “Anybody can write software that a machine can understand, but it requires a real professional to write software which can be understood by another human beings” Martin flower Project Directory Code, Compile , Deploy and Test Cycle Unit testing Junit Test NG Http unit ….. Refactoring Forward and Reverse engineering SW development Life Cycle – Development Mode Development

SW development Life Cycle – Development Mode Software team environment : 28 Integrated development environment(IDE) like Visual Studio or Eclipse Unit testing/Coverage via Junit, TestNG , Cobertura, Nunit Enforce coding standard with CheckStyle Source code control and configuration management system (SCCS) Perforce , CVC Build tools like ANT and Maven Continuous integration System Cruse Control Software issue management system BugZilla , Trac Wiki A collaborative platform like Twiki SW development Life Cycle – Development Mode Software team environment

SW development Life Cycle – Development Mode Testing : 29 Testing process Test Cases are created from requirement documents Execution of test cases Bug Reporting Bug Severity and priority Bug Triaging Bug fixing Test regression Test Coverage Type of testing Black Box Testing White Box Testing Test Automation Performance and Scalability Testing Usability Testing Security testing SW development Life Cycle – Development Mode Testing

SW development Life Cycle – Development Mode Project Management – Documents : 30 Type of Software documentation Technical documentation (Internal focus) User documentation (external focus) Marketing and sales documentation(external focus) Developing Software documentation Developed in IID mode Develop document as per need basis Self review and stakeholders review Developed from the stake holder perspective SW development Life Cycle – Development Mode Project Management – Documents

: 31 Beta Program Release Success Criteria Numbers of Features Number of Bugs Documentation Training Readiness Support readiness Release readiness review Zero Bug Bounce Decision to release Release notes Known and unknown issues Delivery mode Internet CD SW development Life Cycle – Development Mode Release

Slide 32 : 32 Installation in Production test set up Installation time Memory foot print Ease of Installation Configuration Deployment in production mode Execution and Monitoring Bug and issue reporting Patch updates Upgrades Versioning Side by Side execution SW development Life Cycle – Production Mode

SW development Stakeholder : 33 SW development Stakeholder Customer User Consultants Development team Management Regulatory bodies Standard bodies

SW development – Project management : 34 SW development – Project management Risk Quality SW Project Management Triangle Resource Scope Schedule The Challenge in software projects is to deliver ; ‘Quality On Schedule In Budget’ By Proactively Managing ‘Risk and Uncertainties ‘ Associate with Scope, Resource and schedule

Software development – Project Management triple Trade off : 35 Software development – Project Management triple Trade off Resource Schedule Scope If Schedule is decided , resource is fixed , then scope can be adjusted If scope is fixed, Schedule is decided then resource is adjusted ….. Risk Quality Resource Scope Schedule Triple trade off example

SW development Project Management Scope Analysis : 36 Scope What is to be done and what is not to be done Scope Analysis Problem Domain and Solution domain Function and non function requirements (FR/NFR) Constraints Boundary analysis : Inclusion and Exclusion from Scope Feature Triage/Prioritize Features V, E, D Agreement on Scope among all stakeholders SW development Project Management Scope Analysis

SW development Life Cycle Project Management Estimation : 37 Size or Volume The triple classification L, M , H Complexity S, M , H Effort In hours Focus hours required to complete a task Pessimistic and optimistic estimate Accuracy of estimate (Probability) Ball park figure Buffer Scheduling On which date work will start and on which date work will end Milestone based scheduling Status visibility SW development Life Cycle Project Management Estimation

SW development Project Management Scheduling and Execution : 38 SW development Project Management Scheduling and Execution Work breakdown structure Work packages Task list Task relationship Scheduling Milestones Status visibility Early warning report Data collection for evidence based analysis and feedback

SW development - Quality : 39 Quality Comes from “with in” The Acid test of Quality is “Adherence to quality requirements” “Satisfied stakeholders experience” “Positive experience of stakeholders Difference between Quality Assurance and Quality Control Quality is a continuous Process Quality Assurance process must start from the beginning and continue till the end “Our focus should be to prevent entry of defect in software development , rather than on fixing bugs at later stage” “The earlier we detect bugs or other quality issues, easier and less expensive it becomes to solve them “ Absence of bugs does not mean good quality Quality trade off Analysis SW development - Quality

SW development Real World : Roles : 40 Requirements Business Analyst Process Analyst Architecture and design Architect Designer Development Programmer Developer Build engineer Testers Support Support engineer Maintenance Engineer Documentation Technical Writers SW development Real World : Roles Training and development Training Engineer Management Project manager Program Manager Product manager Account manager QA Manager Development./Delivery Manager Training manager Profession Service Profession service engineer System Integrators Consultant Marketing and Sales Marketing and sales engineers Software Analysis Software analyst

Slide 41 : 41 SW development- Horizontal

SW verticals : 42 SW verticals BFSI Telco Health care Retail Manufacturing Civil aviation and airlines Engineering and science Energy oil and Gas , Power) …

SW development Companies types By nature of business : 43 SW development Companies types By nature of business Software Product vs Software Services vs Hybrid Product Companies Develop Software products Same products are soled to different customers world wide Normally products are highly configurable for specific customers Requires high degree of creativity and innovation for creating new products and continuously adding new features to the products High risk and reward potential Working for a product company Pros Opportunity to work gain in-depth technical and domain expertise in a particular area Cons Quality of experience to some extend depend upon which stage of the product life cycle you get an opportunity to work

SW development Companies types Service Companies : 44 SW development Companies types Service Companies Offer IT services to other companies Work on shore and off shore mode , now the trends is towards offshore model Work on time and material basis but now the trend is towards fixed cost basis Need very high degree of Project execution efficiency for delivering “quality on time “ Work done by service company ADM (Application development and maintenance) Software testing services PDM( Product development and maintenance) ISM(Infrastructure service management) IT Consultancy Enterprise integration services Working for a service company Pros Opportunity to work on different technologies and software development Opportunity to get on the job training Cons It may require a long time to get in depth experience

SW development Companies types : 45 SW development Companies types India’s leading service company : SWITCH Satyam Wipro Infosys TCS Cognizant HCL ……. Others IBM Accenture …….

SW development CompaniesBy Size : 46 SW development CompaniesBy Size Large Companies IBM Oracle Microsoft SAP HP ….. Small and Medium Size Companies Start up

SW development Companies typesBy size : 47 SW development Companies typesBy size Working for large service company Pros Opportunity to get very good on the job training Opportunity to work on large IT projects Opportunity to work in wide range technologies Opportunity to work in a stable environments Cons One of the many employee Lack of visibility working for a Small and medium Companies Pros Opportunity to grow with the company Opportunity to make a visible contribution Cons Working for Startup Pros Opportunity to work on cutting edge technologies and on innovative products May provide very fast growth Cons Highly risky and unstable environment

Some exciting companies to work with : 48 Some exciting companies to work with NASSCOM Announces Top 15 “Exciting Emerging Companies To Work For” Corbus (India) Private LimitedRMSI Private LimitedHytech Professionals India Pvt LtdNagarro Software Pvt. Ltd.VCustomer Services India Pvt Ltde4e India Pvt LtdSynygy India Pvt LtdAjuba Solutions (India) Pvt. Ltd.Mindlogicx Infotech LimitedNucleus Software Exports Ltd.Infogain India (P) LtdValueLabs (India)Barry-Wehmiller International Resources Pvt Ltd GlobalLogic India Pvt Ltd AgreeYa Solutions (India) Pvt Ltd  100 IT innovators 2007 http://www.nasscom.in/Nasscom/templates/NormalPage.aspx?id=53050

Keeping yourself always employable Continuous learning and improvement : 49 Keeping yourself always employable Continuous learning and improvement Create your custom knowledge portfolio and continuously review and update it Spend time regularly and in small chunk on learning something relevant and new Understand the concepts and practice/apply to develop and practical skill Focus on fundamentals Mastery on at least one programming language : java#, C or C++ Understand at least one relevant domain OOAD, SOAD,Design patterns, best practices XML Standards RDBMS fundamental/SQL99 Software estimation and evidence based scheduling

Keeping yourself always employable Continuous learning and improvement : 50 Keeping yourself always employable Continuous learning and improvement Read at least one technical or non technical book every quarter Do not work on internet, make internet work for you Subscribe customized information via RSS reader like Google Reader etc. Customized your browser/add relevance plug-in and extensions Create your customized on line reference library : Reference management tool like Zotero Tagging Wiki Use Mind map for getting best from your reading/browsing Like Free mind Participate in open source projects Review architecture and source code for an open source projects Fix bugs in open source projects Write code for open source Projects

Keeping yourself always employable Continuous learning and improvement : Some of the books you can read Beginning java objects, from concepts to code by Jacquie barker Head first java Head first C# Applying UML and Patterns by Craig Larman J2EE 1.4 - A professional Guide by Aaron E. Walsh Pojo in action by Chris Richardson Introducing Microsoft .NET by David S. Platt of web site you should visit regularly http://en.wikipedia.org/wiki/Main_Page www.java.world.com www.infoq.com www.developer.com www.serverside.com 51 Keeping yourself always employable Continuous learning and improvement

2 Members Recommend this Teacher
Copyrights © 2009 authorGEN. All rights reserved.