Design & Development Scott Battaglia Application Developer Enterprise Systems and Services Rutgers, the State University of New Jersey Copyright Scott Battaglia This work is the intellectual property of the author. Permission is granted for this material to be shared for non-commercial, educational purposes, provided that this copyright statement appears on the reproduced materials and notice is given that the copying is by permission of the author. To disseminate otherwise or to republish requires written permission from the author.
Background Enterprise Systems and Services (ESS) Architecture and Engineering Team Research Development Mentoring
Agenda Development Lifecycle Technologies Questions
Development Process Gather requirements High level planning Application Development System testing Release
Mission Statement Every application has a purpose or reason for being Clear and succinct representation of the application’s purpose Answer two questions: What are the opportunities or needs that we wish to address? What are we doing to address these needs?
Non-Functional Requirements Define how the software will do something, not what it will do software performance requirements, software external interface requirements, software design constraints, and software quality attributes
Functional Requirements Specifies a function that a system/software system or system/software component must be capable of performing. Define behavior of the system Usually defined as use cases
Risks Every application has unknowns or risks Affect development time
High Level Planning Iterative and incremental development Define: Milestones Release Candidates General Audience release Phase development
Iterative Development Develop system incrementally Allows developer to take advantage of what was being learned Start with simple implementation of subset of features Iteratively enhance the versions until product completion
Milestones Denote reaching an identifiable stage in completion of something Implement some subset of features Generally implemented in terms of use cases
Milestones Generally consist of following phases Design/Analysis Unit Tests Feature implementation Load Testing/Soak Testing Milestone release Client review
Milestones - Feedback Either demo milestone to clients Or give time to review Meet to discuss milestone Changes Enhancements Scrap features
Release Candidates Denotes feature complete Candidate for release as long as there are no show stoppers Follows iterative process
General Audience Generally only one Considered production release
Important Meetings During development lifecycle meetings are important: Kick off meetings Code Reviews Milestone Reviews Status Meetings Production Meetings After Release Party
Coding Standards Define Naming Conventions Formatting Standards Javadoc Standards Best Practices Leverage known libraries Coding to interfaces Logging Horizontal components Design Patterns
Technologies Integrated Development Environments (IDEs) Versioning Systems Issue Tracking Systems Test Coverage Tools Build Tools Continuous Integration Systems Mailing Lists
Summary Iterative design process Development process is agile, lightweight Create common standards Maximize usage of technology
Questions Any questions/comments?