Software Engineering Saeed Akhtar The University of Lahore Lecture 6 Originally shared for: mashhoood.webs.com.

Slides:



Advertisements
Similar presentations
Principles That Guide Practice Unit II
Advertisements

Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
CHAPTER 1 SOFTWARE DEVELOPMENT. 2 Goals of software development Aspects of software quality Development life cycle models Basic concepts of algorithm.
Software Process Models
May 2, May 2, 2015May 2, 2015May 2, 2015 Azusa, CA Sheldon X. Liang Ph. D. Software Engineering in CS at APU Azusa Pacific University, Azusa, CA.
Chapter 4 Principles that Guide Practice
W5HH Principle As applied to Software Projects
Analysis Modeling Over view of today’s lesson T he analysis model is the first technical representation of a system. Analysis modeling uses a combination.
Computer Engineering 203 R Smith Requirements Management 6/ Requirements IEEE Standard Glossary A condition or capability needed by a user to solve.
Requirements Analysis Concepts & Principles
Chapter 5 Software Engineering Practice
The Software Development Life Cycle: An Overview
Chapter 4 Requirements Engineering
1 COSC 4406 Software Engineering COSC 4406 Software Engineering Haibin Zhu, Ph.D. Dept. of Computer Science and mathematics, Nipissing University, 100.
Katanosh Morovat.   This concept is a formal approach for identifying the rules that encapsulate the structure, constraint, and control of the operation.
Chapter 2 The process Process, Methods, and Tools
1 Chapter 5 Practice: A Generic View Software Engineering: A Practitioner’s Approach, 6th edition by Roger S. Pressman.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Design Issues Practice: A generic View Design Principles.
Chapter 2 소프트웨어공학 Software Engineering 임현승 강원대학교
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Requirements Engineering CSE-305 Requirements Engineering Process Tasks Lecture-5.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
1 5.1 Software Engineering Practice  Provide value to the user  KIS—keep it simple!  Maintain the product and project “vision”  What you produce,
1 Chapter 5 Software Engineering Practice. 2 What is “Practice”? Practice is a broad array of concepts, principles, methods, and tools that you must consider.
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
Coming up: Software Engineering: A Practitioner’s Approach, 6/e Chapter 5 Practice: A Generic View copyright © 1996, 2001, 2005 R.S. Pressman & Associates,
These courseware materials are to be used in conjunction with Software Engineering: A Practitioner’s Approach, 6/e and are provided with permission by.
CS 8532: Adv. Software Eng. – Spring 2009 Dr. Hisham Haddad Chapter 5 CS 8532: Advanced Software Engineering Dr. Hisham Haddad Class will start momentarily.
SOFTWARE DESIGN.
What is a Business Analyst? A Business Analyst is someone who works as a liaison among stakeholders in order to elicit, analyze, communicate and validate.
SOFTWARE DESIGN Design Concepts Design is a meaningful engineering representation of something that is to be built It can be traced to a customer’s requirements.
Design engineering Vilnius The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
Software Engineering Saeed Akhtar The University of Lahore Lecture 7 Originally shared for: mashhoood.webs.com.
Chapter 7 실무가이드 원칙 Principles that Guide Practice
1. copyright © 1996, 2001, Software Engineering a “quality” focus process model methods tools.
1 Software Engineering: A Practitioner’s Approach, 6/e Chapter 5 Practice: A Generic View Software Engineering: A Practitioner’s Approach, 6/e Chapter.
Chapter : Project Management Concept
By Germaine Cheung Hong Kong Computer Institute
Business Analysis. Business Analysis Concepts Enterprise Analysis ► Identify business opportunities ► Understand the business strategy ► Identify Business.
Software Project Management Lecture # 2 Originally shared for: mashhoood.webs.com.
1 Chapter 8 Building the Analysis Model (1) Analysis Concepts and Principles.
Requirements Engineering Requirements Elicitation Overview of Requirements Analysis.
Principles That Guide Practice
Interacting with consumer Software Engineering. So far… What is Software Engineering? Different software process models waterfall, incremental, spiral.
Software Engineering Principles Practical Advice and Steps for Managing Your Project.
Requirement Engineering
CS 281 Intro to Software Engineering Lecture 02 Software Engineering (1)
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
These slides are designed to accompany Software Engineering: A Practitioner’s Approach, 7/e (McGraw-Hill, 2009) Slides copyright 2009 by Roger Pressman.1.
CS 281 Intro to Software Engineering Lecture 08b Principles that Guide Practice (1)
System Development Life Cycle (SDLC). Activities Common to Software Projects Planning : Principles Principle #1. Understand the scope of the project.
 System Requirement Specification and System Planning.
Chapter 2: The Process. What is Process? Software Engineering Process is the glue that holds the technology layers together and enables rational and timely.
Software Engineering Principles I (Spring 2017)
Lecture 3 Prescriptive Process Models
Principles that Guide Practice
Software Life Cycle Models
Chapter 4 CS435: Introduction to Software Engineering
Software Requirements analysis & specifications
Software engineering practices And Software requirements Engineering
For University Use Only
Chapter 4 Principles that Guide Practice
Software Engineering Practice: A Generic View
Chapter 7 Principles that Guide Practice
REQUIREMENT ENGINEERING
Chapter 4 Principles that Guide Practice
Chapter 4 Principles that Guide Practice
Chapter 4 Principles that Guide Practice
Software Requirements Engineering
Presentation transcript:

Software Engineering Saeed Akhtar The University of Lahore Lecture 6 Originally shared for: mashhoood.webs.com

Review of Last Lecture Working of Agile Model? Pros and cons of Agile Model? When to use Agile? Difference from other Models?

Software Engineering Practices

The Essence of Practice George Polya, in a book (about problem solving), describes the essence of software engineering practice … Understand the problem (communication and analysis). Plan a solution (modeling and software design). Carry out the plan (code generation). Examine the result for accuracy (testing and quality assurance).

Core Software Engineering Principles The reason it all exists: Provide value to the customer and the user KISS—keep it simple, stupid! Does not mean quick and dirty Maintain the product and project “vision” What you produce, others will consume Be open to the future Plan ahead for reuse Think! (before action)

Communication Practice Principles 1. Listen (instead of talking too much) 2. Prepare before you communicate Understand the business domain Prepare an agenda 3. Facilitate the communication, there should be a leader Ensure moving in a productive direction Mediate any conflict Ensure other principles are followed 4. Face-to-face is best 5. Take notes and document decisions

Communication Practice Principles Cont’d 6. Collaborate with the customer 7. Stay focused, modularize your discussion (conclude each issue) 8. Draw pictures when things are unclear 9. Move on … Once you agree to something If you can’t agree Something is unclear and cannot be resolved at the moment 10. Negotiation works best when both parties win (not a contest or game). Compromise when necessary

Planning Practice Principles 1. Understand the project scope Scope clears your destination 2. Involve the customer (and other stakeholders) Customer defines priorities and constraints Negotiate order of delivery, timelines, … 3. Recognize that planning is iterative (revised based on feedback) 4. Estimate based on what you know Provide an indication of effort, cost, and task duration (maybe unreliable) 5. Consider risk

Planning Principles Cont’d 6. Be realistic Noise, change, mistakes, omissions, ambiguity 7. Adjust granularity as you plan (level of details) 8. Define how quality will be achieved (formal technical reviews, pair programming) 9. Define how you’ll accommodate changes 10. Track what you’ve planned and make adjustment

Planning Practices Ask Boehm’s questions Why is the system being developed? Justify the expenditure of people, time, and money What will be done? Identify functionality When will it be accomplished? Workflow, timeline, milestones Who is responsible for a function? Where are they located (organizationally)? How will the job be done technically and managerially? How much of each resource is needed? (estimation)

Analysis Modeling Practice We create models to gain a better understanding of the actual entity to be built Analysis models represent the customer requirements by depicting the software in three different domains: the information domain, the functional domain, and the behavioral domain. Design models represent characteristics of the software that help practitioners to construct it effectively: the architecture, the user interface, and component-level detail.

Analysis Modeling Practice Analysis modeling principles 1. Represent the information domain Input data: from end-users, other systems, or external devices Output data: via the user interface, network interface, reports, graphics, … The data stores 2. Represent software functions Different levels of abstraction 3. Represent software behavior As a consequence of external events 4. Partition these representations Partitioning: divide and conquer Layered or hierarchical 5. Move from essence toward implementation

Design Modeling Principles Principles 1. Design must be traceable to the analysis model 2. Always consider architecture 3. Focus on the design of data 4. Interfaces (both user and internal) must be designed 5. Components should exhibit functional independence 6. Components should be loosely coupled 7. Design representation should be easily understood 8. The design model should be developed iteratively

Construction Practices Preparation principles : Before you write one line of code, be sure you: Understand of the problem you’re trying to solve (see communication and modeling) Understand basic design principles and concepts. Pick a programming language that meets the needs of the software to be built and the environment in which it will operate. Select a programming environment that provides tools that will make your work easier. Create a set of unit tests that will be applied once the component you code is completed.

Construction Practices Coding principles: As you begin writing code, be sure you: Constrain your algorithms by following structured programming practice. Select data structures that will meet the needs of the design. Understand the software architecture and create interfaces that are consistent with it. Keep conditional logic as simple as possible. Create nested loops in a way that makes them easily testable. Select meaningful variable names and follow other local coding standards. Write code that is self-documenting.

Construction Practices Validation Principles : After you’ve completed your first coding pass, be sure you: Conduct a code walkthrough when appropriate. Perform unit tests and correct errors you’ve uncovered. Refactor the code.

Construction Practices Testing Principles All tests should be traceable to requirements Tests should be planned Testing begins “in the small” and moves toward “in the large”

Deployment Practices Principles Manage customer expectations for each increment A complete delivery package should be assembled and tested Instructional materials must be provided to end-users Buggy software should be fixed first, delivered later

Thank You