The Role of Software Processes in DSD

Slides:



Advertisements
Similar presentations
Numbers Treasure Hunt Following each question, click on the answer. If correct, the next page will load with a graphic first – these can be used to check.
Advertisements

Basic SDLC Models.
1
Chapter 7 System Models.
Chapter 8 Software Prototyping.
Processes and Operating Systems
Objectives To introduce software project management and to describe its distinctive characteristics To discuss project planning and the planning process.
Modern Systems Analyst and as a Project Manager
Agile Modeling Emitzá Guzmán Agile Modeling.
Using outcomes data for program improvement Kathy Hebbeler and Cornelia Taylor Early Childhood Outcome Center, SRI International.
1 Click here to End Presentation Software: Installation and Updates Internet Download CD release NACIS Updates.
Knowledge Extraction from Technical Documents Knowledge Extraction from Technical Documents *With first class-support for Feature Modeling Rehan Rauf,
Configuration management
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 5 Slide 1 Project management.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 5 Slide 1 Project management.
Chapter 5 – Enterprise Analysis
Turing Machines.
Facilitated by Joanne Fraser RiverSystems
Red Tag Date 13/12/11 5S.
OOAD – Dr. A. Alghamdi Mastering Object-Oriented Analysis and Design with UML Module 3: Requirements Overview Module 3 - Requirements Overview.
Software testing.
PP Test Review Sections 6-1 to 6-6
Project Management from Simple to Complex
Developing the Project Plan
Developing a Project Plan
Sample Service Screenshots Enterprise Cloud Service 11.3.
Lecture 6: Software Design (Part I)
Lecture 5: Requirements Engineering
Chapter 10 Software Testing
Software Processes.
1 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt 10 pt 15 pt 20 pt 25 pt 5 pt Synthetic.
Prescriptive Process models
Global Analysis and Distributed Systems Software Architecture Lecture # 5-6.
Key Concepts Planning Process Project Plan Work Breakdown Structure
Prof.ir. Klaas H.J. Robers, 14 July Graduation: a process organised by YOU.
McGraw-Hill/Irwin Copyright © 2007 by The McGraw-Hill Companies, Inc. All rights reserved. Chapter 12 View Design and Integration.
1 Phase III: Planning Action Developing Improvement Plans.
Chapter 11 Creating Framed Layouts Principles of Web Design, 4 th Edition.
Chapter 13 Web Page Design Studio
Introduction Peter Dolog dolog [at] cs [dot] aau [dot] dk Intelligent Web and Information Systems September 9, 2010.
Software Process Models
Chapter 2 Modeling the Process and Life Cycle Shari L. Pfleeger
CS487 Software Engineering Omar Aldawud
The software process A software process is a set of activities and associated results which lead to the production of a software product. This may involve.
SEP1 - 1 Introduction to Software Engineering Processes SWENET SEP1 Module Developed with support from the National Science Foundation.
Software Modeling SWE5441 Lecture 3 Eng. Mohammed Timraz
Software Architecture for DSD DSD Team. Overview What is software architecture and why is it so important? The role of architecture in determining system.
The Role of Software Processes in DSD DSD Team. Outline Review: usefulness of software processes Fitting processes to development problems Choosing a.
Project Planning and Synchronizing Using Reviews
Globally Distributed Development The Role of Software Processes in DSD DSD Team.
The Role of Software Engineering Brief overview of relationship of SE to managing DSD risks 1.
SE 555 Software Requirements & Specification Requirements Validation.
UML - Development Process 1 Software Development Process Using UML (2)
Introduction to RUP Spring Sharif Univ. of Tech.2 Outlines What is RUP? RUP Phases –Inception –Elaboration –Construction –Transition.
Chapter 2 The process Process, Methods, and Tools
-Nikhil Bhatia 28 th October What is RUP? Central Elements of RUP Project Lifecycle Phases Six Engineering Disciplines Three Supporting Disciplines.
1 Process Engineering A Systems Approach to Process Improvement Jeffrey L. Dutton Jacobs Sverdrup Advanced Systems Group Engineering Performance Improvement.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
Identify steps for understanding and solving the
Capability Maturity Models Software Engineering Institute (supported by DoD) The problems of software development are mainly caused by poor process management.
Modelling the Process and Life Cycle. The Meaning of Process A process: a series of steps involving activities, constrains, and resources that produce.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
RUP RATIONAL UNIFIED PROCESS Behnam Akbari 06 Oct
Copyright 2015, Robert W. Hasker. Classic Model Gathering Requirements Specification Scenarios Sequences Design Architecture Class, state models Implementation.
Chapter 2- Software Development Process  Product Components  Software Project Staff  Software Development Lifecycle Models.
The Software Lifecycle Stuart Faulk. Definition Software Life Cycle: evolution of a software development effort from concept to retirement Life Cycle.
The Role of Software Processes in DSD DSD Team. Outline Review: usefulness of software processes Fitting processes to development problems Choosing a.
Software Development Life Cycle
Presentation transcript:

The Role of Software Processes in DSD DSD Team

Outline Lecture: software process Review: usefulness of software processes Fitting processes to development problems Choosing a process Lab Exercise: Which process is best for DSD? Lecture: from process to project plan Importance of well defined process Implementing a process in a project plan Lab Exercise: familiarize with assembla tools

Problems in software development Knowing what the customers want; knowing the requirements Predicting time to develop Predicting resources needed to develop Managing change Knowing when you’re done Designing to enable distribution of work Coordinating work Tracking time, resources, quality, productivity, effectiveness, etc.

Addressed by Software Processes Developed as a tool for controlling complex software developments Answers the “who”, “what”, “when”, etc. questions What product should we work on next? What kind of person should do the work? What information is needed to do the work? When is the work finished? Intended use Provide guidance to developers in what to produce and when to produce it Provide a basis for planning and assessing development progress Different kinds of projects required different processes

Characteristic Processes: The Waterfall Model Process viewed as a sequential set of activities Imposes separation of concerns on software development activities Win Royce was first to propose the waterfall model. However, no one actually follows the strict sequence suggested by the diagram. There’s always backtracking and concurrency going on. Applies separation of concerns

Characteristic Processes: The Spiral Model Process viewed as repeating cycles of increasing scale Identify risks and determine (next set of) requirements, build next version by extension, increasing scale each time Early iterations may be prototypes Barry Boehm created the spiral model at least partly to illustrate the role of risks and mitigating risks in the software development process. As risks are resolved, spirals produce larger versions of the system

Characteristic Processes: The Iterative Model Process viewed as a sequence of iterations, each building on the last Build minimal useful subset, test, release, build next version by extension Early iterations may be prototypes Iterative models were described in the 1970s by Basili & Turner and by Parnas, among others. Unwrap a spiral model and what you find is an iterative model. Not very clear what the difference is. Agile methods “took over” the idea of iterative models and use them heavily, generally with rather short iterations, say 2-4 weeks. IBM

Characteristic Processes: Agile (scrum) Process viewed as nested sequence of builds (sprints) Each build adds small feature set Customer in loop, code centered (little or no documentation) Problem detection and correction though daily team meetings (scrum)

Formal Definition Process: we define a process as set of artifacts, activities, roles and the relationships between them where: Artifact: any work product of the software development process (requirements specifications, design documents, code, etc.) Activities: the tasks that produce the work products (requirements analysis, design, coding) Roles: responsibility for performing specific activities (requirements analyst, software architect, coder) Relationships: the relations between artifacts, activities, and roles that structure the process (precedes, responsible-for) Intuitively: roles produce artifacts by performing activities A coder is responsible for implementing module code as part of coding A tester is responsible for writing test cases as part of verification

Process Definition Graphic Relationships Roles: who does the work? Artifacts: what is produced? Activities: what tasks are done?

How do processes vary? Content: processes vary in the specific activities performed, artifacts produced, roles required, and the relationships between these, for example: Which specific activities are performed Which role performs which activities Formality: processes vary in how detailed, complex, and prescriptive they are How much detail is defined on the activities, etc. How closely developers are required to follow the written process

How do processes vary? Emphasis varies on artifacts, types of artifacts, rules governing activities, gating, roles, for example: Differ in form of requirements, design, test plan: Written document, conforming to standard template, reviewed by peers and users using standard review process, benchmarked and configuration controlled Notes on a web site Knowledge in the heads of the development team Differ in review procedures for documents and code: Formalized inspections with criteria for passing, e.g., Fagan inspections or active reviews Informal peer review meeting Office mate reads it over None Compare spiral to agile

Why do processes vary? Different processes reflect different assumptions about the developmental context and goals Context: project size, complexity, availability of stakeholders Goals: time-to-market, reliability, usability, maintainability, control of risk Process is something we can design to address project needs Must consider What kind of process do we need: which kinds of activities, artifacts, etc. fit our goals and risks? How much formality/complexity do we need? Formality and complexity imply overhead.

Process Formality and Project Scale As projects grow larger and more complex, they typically require more formal and detailed processes Difficult for individual developers, or management to track the overall state of the development Difficult to keep track of who is supposed to be doing what (“Who do I talk to?”) Difficult to know when your job should be finished or what quality criteria it should satisfy A clear, well-defined process helps keep a large project coordinated

Distributed Development Contribution to Delay What factors contributed to underestimation? Here are two different perspectives. The top shows that the greater the distribution of the project across sites and organizations, the worse the estimate. For example, on average, Multiple Site projects within a single product group took about 50% more time than estimated. Projects that required external partnerships took about 75% more time than estimated, on average.

When Process Complexity & Project Complexity/Scale Mismatch But, there can be too much process as well Process is overhead Unnecessary process overhead leads to problems Developers feel frustrated “I want to write code, not documents” “I can’t understand what I’m supposed to do” “I’m afraid to touch this code” Progress is slowed “I have to wait for that other team to finish” “I have to wait for my code to be inspected” “We have an integration problem” You can have too little process or too much process. Process complexity should be matched to project complexity. Process should help development and not hinder it.

Prof. Einstein says…

Choosing a Process for DSD

Process Development Can view process development like software development: Choose/create a process to address specific project needs and constraints Think in terms of requirements, design, etc. Must ask the questions: What are the key problems or risks of DSD? What features of a process would help addresses the risks of DSD? How much formality is needed? I.e., how much detail and specificity about the artifacts, activities, roles and relations?

DSD Issues and Risks Key Problem: coordination at a distance i.e., the key difficulty is getting all the people involved to do the right task the right way at the right time Key risk factors: Restricted communication, flow of information Different organization, language, culture Lack of visibility into what remote teams are doing Potential difficulties: Different views of the problem (requirements) Different views of what the process is supposed to be Misunderstanding of what remote teams are doing Difficult to detect and correct problems Difficult to manage synchronize the work Difficult to detect and correct slips in schedule

Break

Exercise: Chose a process Assume that you are part of a small company doing distributed development Three teams of developers in USA, China, and Germany Teams are 8-10 people in mixed roles (some coders, testers, etc. at each site) Many team members have not worked together remotely before Discuss as a team Each person must take turns contributing Decide on team answer Determine which kind of process would be the best fit for a DSD project and how formal Hint: think about what happens over time

Team Exercise

Summary Co-located vs. DSD Co-located Development DSD Risks* Free flow of information through informal means Shared process view Clear ides of expertise, responsibility Common culture eases understanding Understand relationships People to tasks Task interdependencies Restricted flow of information, mostly formal Possibly different process views Unclear idea of expertise, responsibility on remote teams Possible misunderstandings due to cultural/language differences Vague or incorrect understanding of relationships *Standardizing the process helps mitigate these risks a people fill roles with well-defined responsibilities

Which process? Too little communication Problems not detected until system generation Too much communication Assumes daily meetings replace written documents © S. Faulk 2010

Lecture: From Process to Project Plan

Incremental Development Over Time Acts as a feedback loop with a calibration point at each delivery Allows cross checking of assumptions, understanding Early check if remote sites are doing what is expected Early check for communication effectiveness Allows plan adjustments at each increment Time Deploy Integ. &Test Code Design Requirements Increment Integ. & Test Implication is that the development process over time looks like this, i.e., we pretty much start over each time. This doesn’t mean that people do not carry forward experience or occasionally reuse things but that it is not an organized activity (part of a formalized process). Pretty inefficient.

Well-defined Process Benefits Process should also be relatively formal Written down in detail Required for all of the distributed sites Well-defined process clearly specifies The artifacts to be produced The set of activates that must be performed (e.g., specify requirements, review design, write code) The set of roles (e.g., coder, tester, designer) The relationships Which roles perform which activities to produce which artifacts The order of activities Which artifacts are needed as input to produce which other artifacts

Well-defined Process Benefits Helps address risks Everyone has common definition of the process Assigning roles clearly defines responsibilities Helps make clear what people should be working on Helps make clear when a task is finished Should answer for individuals the questions Is this my job? What do I do next? Am I done yet? Did I do a good job? However: not enough just to define the process, must check that people understand and follow it.

Importance of Clearly Defined Roles DSD coordination problems arise from communication problems Lack of contextual information makes unclear Exactly who knows what (who has expertise) Exactly who is doing what (work allocation) What questions or problems people have What assumptions people are making Etc.

Roles Help! Well defined roles provide a badly need structure Define who is responsible for what Gives guidance for expected expertise Relations between roles tell you Who needs to talk to each other (e.g., shared responsibility, handoff, etc.) What you need to be talking about Provides bases for forming professional relationships Upshot: in DSD it is critical that Roles and their responsibilities are clearly defined Well defined lines of communication are established between roles at different sites People consistently perform the role’s responsibilities

Examples: Process Specs Release_06/Process Template Design Document.doc Release_06/GEN-001RevisionControl.html

Project Planning in DSD

From Process to Plan Process definition manifests itself in the project plan Process definition is an abstraction Many possible ways of implementing the same process Project plan makes process concrete, it assigns People to roles Artifacts to deliverables Activities to tasks over time Project plan should be one of the first products but expect it to evolve For DSD, essential that distributed teams agree on the project plan

Project Plan Minimal plan contents Usually owned by project manager Tasks to be performed Person(s) assigned to roles and tasks Deadline for each task Sequencing among tasks Risks and mitigation strategies Usually owned by project manager Updated as project proceeds

Project Roles & Responsibilities Number of team members taking on the role Artifacts for which the role is responsible Systems Engineer 1 use cases, requirements, preliminary screenshots Architect 1 or 2 Module, uses, process structures, interface specifications Developer >1 Module implementation Tester & Integrator Module tests, System generation and verification plan, test results report Project Manager Project plan, project measures, retrospective report

Work Breakdown Structure This is a technique to analyze the content of work and cost by decomposing it into its component parts. It is produced by: Identifying the key elements Decomposing each element into component parts Continuing to decompose until manageable work packages have been identified. These can then be allocated to the appropriate person The WBS is used to allocate responsibilities For the software, the WBS depends on the software architecture (discuss next)

Work Breakdown Structure Example: work packages by project phase

Milestone Planning Milestone planning is used to show the major steps that are needed to reach the goal on time Milestones typically mark completion of key deliverables or establishment of baselines Baseline: when a work product is put under configuration management and all changes are controlled Often associated with management review points E.g., Requirements baseline, project plan complete, code ready to test Can use Gantt or PERT charts, put milestones in Assembla

Gantt Charts Method for visualizing a project schedule showing The set of tasks Start and completion times Task dependencies Responsibilities

Example Gantt Chart http://www.spottydog.u-net.com/guides/faq/faq.html

DSD Project Plan Common project plan is key to coordination Clear definition of roles and responsibilities Clear dependencies between tasks hence, what needs to be done next Provides basis for tracking progress Just one part of necessary communication! Teams must agree on project plan but… Still easy to have misunderstanding about meaning of plan Still may go off track Must detect and correct as soon as possible This is not easy Plan must be continuously updated

Plans vs. Reality (Rational vs. Irrational) …... A B C D G F E Z L K J I H M … In an ideal world, the project proceeds as planned, moving from one milestone/artifact to the next. Project manager is happy.

Plans vs. Reality (Rational vs. Irrational) …... A B C D … E F G M Z H I J A’ C’ … K L In the real world, errors, requirements and other changes cause backtracking and replanning. (Green lines represent backtracking.) Project manager very unhappy. Can’t help this. That’s the way that the world is. A’’ B’ C’’ D’ H’ Planned Actual w/ backtracking

Plans vs. Reality Making The Reality Seem Rational Document as if it had been rational Readers can follow a sequential story Explain significant changeable decisions What alternatives were (are) there? Why did we choose A’’ rather than A or A’ Later readers (maintainers) understand the trade-offs and can be guided by them

Plans vs. Reality Documenting The Decisions …... A’’ B’ C’’ D’ G F E Z L K J I H’ M … (B) (C,C,’) (D) (A,A’) Make the reality appear to be rational by documenting reasons for backtracking. Why did we do A” instead of A or A’? The documentation should explain reasons for key decisions and the alternatives that were considered. Hard to do, but important. Future developers need it. (H)

Measurement Measuring progress is an important part of any real project plan Addressed in Prof. Zhou Minghui’s lectures

Summary Processes provide methods for managing software developments over time Must choose the right process to address a project’s specific problems and constraints Incremental process provide the feedback between distributed teams required for DSD Processes must be defined and realized in a project plan The project plan must evolve as the project progresses

Questions? Break

Lab Exercise Use some of the assembla project management tools Assume we will do a small software development project with your distributed team Communicate with your team members to choose roles for each person Requirements engineer, architect, project manager, coder, reviewer, tester One person may have multiple roles and vice versa Each person should try out two or three roles Add a milestone to define roles Add roles to your wiki page