290 likes | 405 Views
Software Engineering in Practice CS 420 – Spring 2012. Dr. Orest Pilskalns orest@vancouver.wsu.edu http://bitterroot.vancouver.wsu.edu. About the Course. TA – TBD: Syllabus In Practice? Group project, Time Management, Cost Estimation More OOAD, Testing, and Analysis
E N D
Software Engineering in PracticeCS 420 – Spring 2012 Dr. Orest Pilskalns orest@vancouver.wsu.edu http://bitterroot.vancouver.wsu.edu
About the Course • TA – TBD: • Syllabus • In Practice? • Group project, Time Management, Cost Estimation • More OOAD, Testing, and Analysis • Version Control and Bug Tracking
Group Project • Group Project Proposals (so far): • Location based service framework • Server team (create framework) • Client team(s) create various apps • IDE
Tentative Schedule For Start of the Semester 1. Define High Level Description of Problem 2. Team, Time, and Project Management (Select Teams) 3. Version Control and Bug Tracking (Start Project) 4. Learn About Testing, Analysis, and Maintenance along the way
What Should I Know About Java and Ant? • core syntax • packages • exceptions • create ant build file • javadoc • inner classes and event handling • swing
What new technology will I learn? • Distributed computing • Java Application Servers (JSP/EJB) • Database/DB connections • Javascript (Google Maps API) • Mobile APIs
What is the difference between software engineering and computer science? • Computer science is concerned with theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software
OOAD • UML vs. Thinking in Objects • UML = notation • OOD: Principles and Patterns • Object interactions • Responsibility driven design • Patterns = named problem-solution formulas
OOAD • Use-Cases • Requirements analysis • Iterative Development • UP, Agile
Most Important Learning Goal • A critical ability in OO development is to skillfully assign responsibilities to software objects.
What is Analysis and Design • Analysis = investigation of the problem and requirements rather than a solution • Design = conceptual solution • OO Analysis = emphasis on find and describing objects • OO Design = emphasis on defining objects
Software Development Process • Describes approach to building deploying and maintaining software • Rational Unified Process (RUP) • Extreme Programming • Spiral Model • Waterfall
What is the Unified Process? 1. Iterative 2. Gives an example Structure 3. Flexible (Agile Methods can be Applied)
What is Iterative and Evolutionary Dev • Iterative: dev organized into short, fixed length mini projects • Outcomes of each iteration: • Tested • Integrated • Executable Partial System • Each Iteration Includes: • Req’s analysis • Design • Implementation • Testing • Evolutionary/Spiral Models
Benefits of Iterative • Less project failure • Early mitigation of risks • Visible Progress • Early Feedback, User Engagement • Manage Complexity • Methodically improve dev process
What about the Waterfall? • Research shows: • 45% of req’s never used • Schedule and estimate vary up to 400% • Too much time on requirements may superimpose Waterfall on Iterative • Why all the problems? 25%-30% change in requirements • Need feedback and adaptation
Iterative Approach Example (1) • Before Iteration 1: High Level Req’s (3 Days) • Chief Architect Names 10 – 20 Use-Cases • High business value, high risk • Deeply Analysis 10% of Req’s – 90% High Level • Before Iteration 1: Define Subset of Use-Cases (even parts of Use cases)
Iterative Approach Example (2) • Do Iteration 1 • Model design in pairs – create UML docs • Program • Test unit, acceptance load usability and so forth • Code Freeze (Integration Test) • Show Progress (get feedback from stakeholders)
Iterative Approach Example (3) • Do the second req’s workshop and adjust to feedback • Define Subset • Do Iteration 2
What is Risk-Driven and Client Driven 1: Identify and drive down highest risks 2: Build Visible Features Architecture Centric – Start with the Core Features!
Agile Principles • Highest priority is to satisfy customers. • Welcome changing req’s. • Deliver working software frequently • Customers and Developers work together • Build project around motivated people • Face to Face conversation best way to communicate • Working Software metric of progres • Agile method promotes sustainable development • Maintain constant pace • Continuous attention to technical excellence • Simplicity (Occam’s Razor) • Team reflects on becoming for effective
Agile Modeling • Used to Understand • Promote communication • Model only tricky parts • Use Simplest Tool Possible • Model in groups • Create Models in Parallel (Structure and Behavior) • Exact Details May not Be Important • All Prior Diagrams may be incomplete • Developers should do OO design themselves
What are the UP Phases • Inception – approximate vision, business case, scope , vague estimates • Elaboration – refined vision, iterative implantation of the core architecture, resolution of high risks and most requirements, realistic estimates • Construction –iterative implementation of the remaining lower risk elements and prep for deployment • Transition – more testing, deploy
What are UP Disciplines • Business Modeling – domain model artifacts • Requirements – use-cases • Design