Chapter 18: Implementation Considerations

Slides:



Advertisements
Similar presentations
Systems Analysis and Design in a Changing World, 6th Edition
Advertisements

INFO415 Approaches to System Development: Part 1
Slide Set to accompany Web Engineering: A Practitioner’s Approach
These slides are designed to accompany Web Engineering: A Practitioner’s Approach (The McGraw-Hill Companies, Inc.) by Roger Pressman and David Lowe, copyright.
NAUG NAUG Knowledge Evening – th February 2007.
CS 325: Software Engineering January 15, 2015 Software Process & Methodology Prototyping Process Model Evolutionary Process Model Spiral Process Model.
Chapter 22 Object-Oriented Systems Analysis and Design and UML Systems Analysis and Design Kendall and Kendall Fifth Edition.
Chapter 15: System Modeling with UML
PowerPoint Presentation for Dennis, Wixom & Tegarden Systems Analysis and Design Copyright 2001 © John Wiley & Sons, Inc. All rights reserved. Slide 1.
Computer Engineering 203 R Smith Agile Development 1/ Agile Methods What are Agile Methods? – Extreme Programming is the best known example – SCRUM.
© Copyright Eliyahu Brutman Programming Techniques Course.
Deriving a Design Class Diagram Yonglei Tao 1. Responsibilities  Doing  do something itself  initiate action in other objects  control and coordinate.
Xtreme Programming. Software Life Cycle The activities that take place between the time software program is first conceived and the time it is finally.
© 2006 Pearson Addison-Wesley. All rights reserved2-1 Chapter 2 Principles of Programming & Software Engineering.
An Agile View of Process
Test Driven Development Derived from Dr. Fawcett’s notes Phil Pratt-Szeliga Fall 2009.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Extreme Programming.
Credits: Adopted from Web Engineering: A Practitioner’s Approach (The McGraw-Hill Companies, Inc.) by Roger Pressman and David Lowe, copyright Agile.
Software Process Model
PowerPoint Presentation for Dennis, Wixom, & Tegarden Systems Analysis and Design with UML, 3rd Edition Copyright © 2009 John Wiley & Sons, Inc. All rights.
Software Development Process
UML - Development Process 1 Software Development Process Using UML (2)
-Nikhil Bhatia 28 th October What is RUP? Central Elements of RUP Project Lifecycle Phases Six Engineering Disciplines Three Supporting Disciplines.
Implementation Considerations Yonglei Tao. Components of Coding Standards 2  File header  file location, version number, author, project, update history.
1 Advanced Computer Programming Project Management: Methodologies Copyright © Texas Education Agency, 2013.
RUP Implementation and Testing
The Unified Process Object Interaction Modeling and Design Class Diagram 中国科学技术大学软件学院 孟宁 2012年10月.
Understand Application Lifecycle Management
GCSE OCR 3 A451 Computing Professional standards
Chapter 10: Applying Responsibility Assignment Patterns
Chapter 8: Actor-System Interaction Modeling
Putting together a complete system Chapter 10. Overview  Design a modest but complete system  A collection of objects work together to solve a problem.
Chapter 14. Activity Modeling for Transformational Systems
1 5.1 Software Engineering Practice  Provide value to the user  KIS—keep it simple!  Maintain the product and project “vision”  What you produce,
Coming up: Software Engineering: A Practitioner’s Approach, 6/e Chapter 5 Practice: A Generic View copyright © 1996, 2001, 2005 R.S. Pressman & Associates,
Extreme/Agile Programming Prabhaker Mateti. ACK These slides are collected from many authors along with a few of mine. Many thanks to all these authors.
Key Takeaway Points A use case is a business process; it begins with an actor, ends with the actor, and accomplishes a business task for the actor. Use.
Design engineering Vilnius The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
XP – Extreme Programming
Chapter 1. Introduction.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
1 Introduction to Software Engineering Lecture 1.
Notes of Rational Related cyt. 2 Outline 3 Capturing business requirements using use cases Practical principles  Find the right boundaries for your.
Chapter 12: User Interface Design
Chapter 2 Software processes. Topics covered Software process models Process activities Coping with change.
Chapter 4 프로세스 모델 Process Models
PowerPoint Presentation for Dennis, Wixom, & Tegarden Systems Analysis and Design with UML, 3rd Edition Copyright © 2009 John Wiley & Sons, Inc. All rights.
Slide 1 Systems Analysis and Design with UML Version 2.0, Second Edition Alan Dennis, Barbara Wixom, and David Tegarden Chapter 9: Moving on to Design.
Lecture 9-1 : Intro. to UML (Unified Modeling Language)
Software Engineering and Object-Oriented Design Topics: Solutions Modules Key Programming Issues Development Methods Object-Oriented Principles.
Chapter 7 Software Engineering © 2007 Pearson Addison-Wesley. All rights reserved.
Requirements Engineering Requirements Engineering in Agile Methods Lecture-28.
Chapter 2 – Software Processes Lecture 1 1Chapter 2 Software Processes.
310414IMPLEMENTATION1 IMPLEMENTATIONIMPLEMENTATION SOFTWARE ENGINEERING SOFTWARE ENGINEERING.
Software Development. The Software Life Cycle Encompasses all activities from initial analysis until obsolescence Analysis of problem or request Analysis.
Software Development Life Cycle. The Software Life Cycle  Encompasses all activities from initial analysis until end of work  Formal process for software.
Project Management Software development models & methodologies
Software Development.
CS 389 – Software Engineering
Chapter 2 – Software Processes
Extreme Programming.
Chapter 6: Architectural Design
Chapter 14. Activity Modeling for Transformational Systems
Chapter 9: Object Interaction Modeling
Software Development Process Using UML Recap
Chapter 11: Deriving a Design Class Diagram
Chapter 18: Implementation Considerations
Chapter 8: Actor-System Interaction Modeling
Presentation transcript:

Chapter 18: Implementation Considerations

Key Takeaway Points Everyone in the team should follow the same coding standards. Test-driven development, pair programming, and code review improve the quality of the code. Classes should be implemented according to their dependencies to reduce the need for test stubs.

Implementation in the Methodology Context Use case-iteration allocation matrix Business goals & needs Current situation Accommodating Requirements Change Customer feedback Acquiring Requirements (Domain Modeling) Iteration use cases Domain Modeling Preliminary requirements Domain model Domain model Deriving Use Cases from Requirements Actor-System Interaction Modeling Abstract & high level use cases, use case diagrams Expanded use cases & UI design Allocating Use Cases & Subsystems to Iterations Behavior Modeling & Responsibility Assignment Behavior models Use case-iteration allocation matrix Deriving Design Class Diagram Producing an Architecture Design Design class diagram Software architecture Test Driven Development, Integration, & Deployment (a) Planning Phase (b) Iterative Phase – activities during each iteration control flow data flow control flow & data flow

Coding Standards Define the required and optional items. Define the format and language. Define the coding requirements and conventions. Define the rules and responsibilities to create and implement the coding standards, as well as review and improve the practice.

Components of Coding Standards? File header file location, version number, author, project, update history. Description of classes – a functional description for each class including purpose description of methods description of fields in-code comments Conventions

Coding Conventions Naming conventions specify rules for naming packages, modules, paths, files, classes, attributes, functions, constants, and the like. Formatting conventions specify formatting rules for line breaking, indentation, alignment, and spacing. In-code comment conventions define the requirements and guidelines for writing in-code documentation.

Guidelines for Practicing Coding Standards Define barely enough coding standards. The coding standards should be easy to understand and practice. The coding standards should be documented and include examples. Training on how to use the coding standards is helpful.

Guidelines for Practicing Coding Standards The coding standards, once defined and published, should be practiced, enforced, and checked for compliance regularly. It is important to assign the responsibilities to individuals and make sure that all involved know the assignment. The practice of coding standards should involve stakeholders.

Organizing the Implementation Artifacts Architectural-style organization: Classes are organized according to an architectural style. Functional subsystem organization: Classes are organized according to the functional subsystems of the software system. Hybrid organizations: architectural-style functional subsystem organization functional subsystem architectural-style organization

Database Connectivity N-Tier Architecture (a) Sequence diagram showing layers of a system :Use Case GUI :Use Case Controller :Business Object :DB Mgr :Net Mgr (b) Corresponding N-Tier architecture GUI Controller Business Objects Database Connectivity Network

Corresponding Directory Structure

Assign classes to team members according to Implementation Assign classes to team members according to dependencies between classes, and abilities of the team members to reduce number of test stubs Implement classes test driven development pair programming deriving method skeleton from sequence diagrams Implement association relationships

From Sequence Diagram to Implementation :Checkout GUI :DBMgr l:Loan d:Document public class CheckoutGUI { DBMgr dbm=new DBMgr (); public void process(String[] cnList) { for(int i=0; i<cnList.length; i++) { Document d=dbm.getDocument(cnList[i]); if (d.isAvailable()) { Loan l=new Loan(u, d); dbm.saveLoan(l); d.setAvailable(false); dbm.saveDocument(d); } <<uid,cnList>> u:= getUser(uid): User Patron <<msg>> [u!=null] process(cnList) Loop (for each cn in cnList) d:=get Document(cn): Document a:=isAvailable():boolean [a]create(u,d) [a]saveLoan(l) [a]setAvailable(false) [a]save- Document(d)

Implementing Association Relationships A one-to-one association between class A and class B is implemented by A holding a reference to B if A calls a function of B, and/or B holding a reference to A if B calls a function of A. A one-to-many association between is implemented by A holding a collection of references to B if A calls functions of B instances, or B holding a reference to A if instances of B call a function of A. A many-to-many association is implemented by a collection of references from A to B, and vice versa.

Pair Programming Two developers program at one machine simultaneously. They discuss how to implement the features. The one with the keyboard and mouse implements the functionality, the other reviews the program as it is being typed. The developers switch roles periodically, whenever they like, or between programming sessions. Each session lasts one to three hours. Pairs are not fixed, they switch around all the time. All team members are required to work with others. If two people cannot work together, they don’t have to pair with each other.

Merits of Pair Programming It reduces pressure and brings fun to programming because there is always someone with whom to share the stress and joy of success. It enhances team communication because the partners exchange ideas during pair programming. Pair-switching helps team members gain insight into the components of the system. This improves productivity and quality. It enhances mutual understanding and collaboration because pair programming lets the team members understand each other and learn from each other in various ways and aspects. It tends to produce simpler and more efficient solutions faster because discussions stimulate creative thinking and help in problem solving.

Pair Programming Limitations It is not for everyone—there are programmers who prefer to work alone. Discussions between the partners can take a lot of time. Therefore, it should focus on solving the problem and getting the work done. It could be slow to start due to the need to adapt to the differences of the partners. Other limitations: the partners have to be at the same location it may be difficult for the partners to find a meeting time due to conflicting schedules, and it might not be as effective as systematic review methods in detecting defects.

Test Driven Development Write/edit tests for features to be implemented next Prepare for TDD Run new tests All new tests fail? N Y Halt Y Y Write/edit production code More features to implement? Test coverage accomplished? N N N All tests pass? Run all tests Add tests to increase coverage Y Refactor code

Merits of Test Driven Development TDD helps the team understand and improve requirements. TDD produces high-quality code. TDD improves program structure and readability through refactoring. TDD makes it easier to debug.

Applying Agile Principles Develop small, incremental releases and iterate; focus on frequent delivery of software products. Complete each feature before moving onto the next. Test early and often. Everybody owns the code—everybody is responsible for the quality of the code.