CHAPTER 1: INTRODUCTION TO SOFTWARE ENGINEERING DESIGN

Similar documents
Course Outline Department of Computing Science Faculty of Science

Evolving Enterprise Architecture

Software Maintenance Cycles with the RUP

Software Engineering: A Practitioner s Approach, 7/e. Slides copyright 1996, 2001, 2005, 2009 by Roger S. Pressman

UNIT-III LIFE-CYCLE PHASES

Understanding Requirements. Slides copyright 1996, 2001, 2005, 2009, 2014 by Roger S. Pressman. For non-profit educational use only

Distilling Scenarios from Patterns for Software Architecture Evaluation A Position Paper

Object-oriented Analysis and Design

Fundamental Research in Systems Engineering: Asking Why? rather than How?

The Decision View of Software Architecture: Building by Browsing

Requirements Analysis aka Requirements Engineering. Requirements Elicitation Process

UML and Patterns.book Page 52 Thursday, September 16, :48 PM

Object-Oriented Design

An introduction to software development. Dr. C. Constantinides, P.Eng. Computer Science and Software Engineering Concordia University

Research on the Mechanism of Net-based Collaborative Product Design

The Impact of Conducting ATAM Evaluations on Army Programs

Strategic Considerations when Introducing Model Based Systems Engineering

Unit 5: Unified Software Development Process. 3C05: Unified Software Development Process USDP. USDP for your project. Iteration Workflows.

The secret behind mechatronics

Component Based Mechatronics Modelling Methodology

Grundlagen des Software Engineering Fundamentals of Software Engineering

A Mashup of Techniques to Create Reference Architectures

Technical Data Standards Development & Implementation

An introduction to these key work products

Issues and Challenges in Coupling Tropos with User-Centred Design

EGS-CC. System Engineering Team. Commonality of Ground Systems. Executive Summary

A FRAMEWORK FOR PERFORMING V&V WITHIN REUSE-BASED SOFTWARE ENGINEERING

Methodology for Agent-Oriented Software

UNIT IV SOFTWARE PROCESSES & TESTING SOFTWARE PROCESS - DEFINITION AND IMPLEMENTATION

CSE - Annual Research Review. From Informal WinWin Agreements to Formalized Requirements

Software Engineering. Slides copyright 1996, 2001, 2005, 2009, 2014 by Roger S. Pressman. For non-profit educational use only

SR&ED for the Software Sector Northwestern Ontario Innovation Centre

AN INTERROGATIVE REVIEW OF REQUIREMENT ENGINEERING FRAMEWORKS

Model Based Systems Engineering (MBSE) Business Case Considerations An Enabler of Risk Reduction

Thriving Systems Theory:

CC532 Collaborative System Design

Designing for recovery New challenges for large-scale, complex IT systems

Support of Design Reuse by Software Product Lines: Leveraging Commonality and Managing Variability

How to Keep a Reference Ontology Relevant to the Industry: a Case Study from the Smart Home

A FORMAL METHOD FOR MAPPING SOFTWARE ENGINEERING PRACTICES TO ESSENCE

Public Art Network Best Practice Goals and Guidelines

DEFENSE ACQUISITION UNIVERSITY EMPLOYEE SELF-ASSESSMENT. Outcomes and Enablers

Information Systemss and Software Engineering. Computer Science & Information Technology (CS)

Towards a Design Theory for Trustworthy Information

Towards Integrated System and Software Modeling for Embedded Systems

Arcade Game Maker Product Line Production Plan

Open Architecture Summit 2017 Industry Panel: Getting Everyone On Board

Systems Engineering Overview. Axel Claudio Alex Gonzalez

Patterns and their impact on system concerns

An Industrial Application of an Integrated UML and SDL Modeling Technique

Towards an MDA-based development methodology 1

Economics and Software Engineering: Transdisciplinary Issues in Research and Education

UX Adoption Maturity model. Paul Blunden: first published March 2015

Why It All Matters. Emergence Economics, Adaptive Policymaking, and the Virtues of Tinkering Without Tampering. Richard S. Whitt Google Inc.

Socio-cognitive Engineering

About Software Engineering.

A Theory about the Structure of GTSEs

Digital Engineering Support to Mission Engineering

Refinement and Evolution Issues in Bridging Requirements and Architectures

IBI GROUP S TOP 10. Smart City Strategy Success Factors

WHITE PAPER FACILITY FOCUS: GMP Facility Modernization. By: David M. Marks, P.E.

Model Based Systems Engineering

Software-Intensive Systems Producibility

SEAri Short Course Series

Managing the Innovation Process. Development Stage: Technical Problem Solving, Product Design & Engineering

By the end of this chapter, you should: Understand what is meant by engineering design. Understand the phases of the engineering design process.

CONSIDERATIONS REGARDING THE TENURE AND PROMOTION OF CLASSICAL ARCHAEOLOGISTS EMPLOYED IN COLLEGES AND UNIVERSITIES

ARTEMIS The Embedded Systems European Technology Platform

SENG609.22: Agent-Based Software Engineering Assignment. Agent-Oriented Engineering Survey

A Knowledge-Centric Approach for Complex Systems. Chris R. Powell 1/29/2015

IS 525 Chapter 2. Methodology Dr. Nesrine Zemirli

GOALS TO ASPECTS: DISCOVERING ASPECTS ORIENTED REQUIREMENTS

Module Role of Software in Complex Systems

TELEMETRY SOFTWARE DEVELOPMENT LIFE CYCLE

in the New Zealand Curriculum

UNIT VIII SYSTEM METHODOLOGY 2014

Using Variability Modeling Principles to Capture Architectural Knowledge

Software System/Design & Architecture. Eng.Muhammad Fahad Khan Assistant Professor Department of Software Engineering

2009 HSC Society and Culture Sample Answers

EXERGY, ENERGY SYSTEM ANALYSIS AND OPTIMIZATION Vol. III - Artificial Intelligence in Component Design - Roberto Melli

AOSE Agent-Oriented Software Engineering: A Review and Application Example TNE 2009/2010. António Castro

IBM Rational Software

JOURNAL OF OBJECT TECHNOLOGY

OCEAN OBSERVATORIES INITIATIVE. Release 2 Schedule. OOI CI Release 2 Kickoff M a y 2,

Lecture 13: Requirements Analysis

Ivica Crnkovic Mälardalen University Department of Computer Science and Engineering

Buskerud University College: Program Systems Engineering

Transferring knowledge from operations to the design and optimization of work systems: bridging the offshore/onshore gap

Course Syllabus. P age 1 5

ThinkPlace case for IBM/MIT Lecture Series

Best practices in product development: Design Studies & Trade-Off Analyses

Your Project is a Business. What Are Your Project Challenges?

Soar Agents in Government Applications

Agent-Based Systems. Agent-Based Systems. Agent-Based Systems. Five pervasive trends in computing history. Agent-Based Systems. Agent-Based Systems

ENHANCED HUMAN-AGENT INTERACTION: AUGMENTING INTERACTION MODELS WITH EMBODIED AGENTS BY SERAFIN BENTO. MASTER OF SCIENCE in INFORMATION SYSTEMS

Introduction to Systems Approach and Backwards Planning

Proposed Curriculum Master of Science in Systems Engineering for The MITRE Corporation

ENGAGE MSU STUDENTS IN RESEARCH OF MODEL-BASED SYSTEMS ENGINEERING WITH APPLICATION TO NASA SOUNDING ROCKET MISSION

Software Life-Cycle Management

Improved Methods for the Generation of Full-Ship Simulation/Analysis Models NSRP ASE Subcontract Agreement

Transcription:

CHAPTER 1: INTRODUCTION TO SOFTWARE ENGINEERING DESIGN SESSION II: OVERVIEW OF SOFTWARE ENGINEERING DESIGN Software Engineering Design: Theory and Practice by Carlos E. Otero Slides copyright 2012 by Carlos E. Otero For non-profit educational use only May be reproduced only for student use when used in conjunction with Software Engineering Design: Theory and Practice. Any other reproduction or use is prohibited without the express written permission of the author. All copyright information must appear if these slides are posted on a website for student use. 8/24/2012 Software Engineering Design: Theory and Practice 1

SESSION S AGENDA Software Engineering Design Why study software engineering design? Software design challenges Requirements volatility Processes Technology Ethical and Professional issues Managing design influences Software design process Software architecture Detailed design Construction design HCI design 8/24/2012 Software Engineering Design: Theory and Practice 2

SOFTWARE ENGINEERING DESIGN In the previous session, we presented a general motivation for software engineering design and important concepts for designers. These included: Design for large-scale, complex, systems The software engineering life-cycle A micro-process for problem solving, and A holistic (macro) process for problem solving In the previous session, design was introduced as a systematic and intelligent process for generating, evaluating, and specifying designs for devices, systems, or processes. In software engineering, design provides blueprints that capture how software systems will meet their required functions and how they will be shaped to meet their intended quality. 8/24/2012 Software Engineering Design: Theory and Practice 3

SOFTWARE ENGINEERING DESIGN Formally, software engineering design is defined as: (1) The process of identifying, evaluating, validating, and specifying the architectural, detailed, and construction models required to build software that meets its intended functional and non-functional requirements; and, (2) the result of such process. In the software industry, the term design is used interchangeably to describe both the process and product resulting from such process. From the process perspective, it describes the phase, activities, tasks, and interrelationship between them required to model software s structure and behavior before construction. This is concerned mostly with the project management s aspect of development. From the product perspective, it describes artifacts resulting from design activities, e.g., class diagram. This is concerned mostly with the technical aspects of development. 8/24/2012 Software Engineering Design: Theory and Practice 4

SOFTWARE ENGINEERING DESIGN PRODUCT DEVELOPMENT From the product development s perspective, studying software design is important, mainly, because: Requirements are mapped to conceptual models of software Provide models that represent structure and behavior Main components and interfaces are identified Quality of future system is born Modularization, cohesiveness, coupling, etc. Provide means to evaluate quality attributes, e.g., usability. Solutions can be reused in other projects Design forms the foundation for all other development activities Construction Testing Maintenance 8/24/2012 Software Engineering Design: Theory and Practice 5

SOFTWARE ENGINEERING DESIGN PROJECT MANAGEMENT From the project management s perspective, studying software design is important, mainly, because: Good software design help minimize effects of requirements volatility This can minimize impact on schedule and cost. Increases efficiency in human resource allocation. Designs decompose systems so that teams can work on different parts of the problem in parallel. By decomposing system, teams can work in distributed fashion. These can have positive effects in schedule and cost. Shields the project from having one guy owning the whole system. Multiple personnel owns multiple components. If one leaves the company, it is easier to replace Documented designs can be used by new personnel to minimize the learning curve. Overall, design helps improve project management. Planning, organization, staffing, and tracking 8/24/2012 Software Engineering Design: Theory and Practice 6

SOFTWARE DESIGN CHALLENGES Today, the software design phase has evolved from an ad-hoc and sometimes overlooked phase to an essential phase of the development life-cycle. The increasing complexity of today s software systems has created a set of particular challenges that makes it hard for software engineers to meet the continuous customer demand for higher software quality. These challenges have prompted software engineers to pay closer attention to the design process: To better understand, apply, and promulgate well-known design principles, processes, and professional practices. The major design challenges include: Requirements volatility Inconsistent development processes Fast, and ever-changing technology Ethical and professional practices Managing design influences To understand these better, we need to explore them in more depth 8/24/2012 Software Engineering Design: Theory and Practice 7

SOFTWARE DESIGN CHALLENGE #1 REQUIREMENTS VOLATILITY Requirements volatility is a major reason for the complexity of software projects. The common view is that software can be modified easily Requirements are not fully specified before design and construction Requirements are changed after design and construction Consider if we take this approach for the development of a house! Desired Product Oops I don t remember seeing a requirement for this Product Developed Product Developed Customers now want a bigger house and more windows by next week! There goes my job again!! 8/24/2012 Software Engineering Design: Theory and Practice 8

SOFTWARE DESIGN CHALLENGE #1 REQUIREMENTS VOLATILITY In software projects, although much effort is put into the requirements phase to ensure that requirements are complete and consistent, that is rarely the case. This makes the software design phase the most influential one when it comes to minimizing the effects of new or changing requirements. This forces designers to create designs that provide solutions to problems at a given state while also anticipating changes and accommodating them with minimal effort. Because of requirements volatility, software engineers must have a strong understanding of the principles of software design and develop skills to manage complexity and change in software projects. 8/24/2012 Software Engineering Design: Theory and Practice 9

SOFTWARE DESIGN CHALLENGE #2 THE PROCESS Software engineering is a process-oriented field. In the design phase, processes involve a set of activities and tasks required to bridge the gap between requirements and construction. For example: Architectural and detailed designs Design reviews Establishing quality evaluation criteria Establishing design change management and version control Adopting design tools The problem is that in many cases, a company s design process is not well established, is poorly understood, is approached with minimalistic expectations, is focused on one form of design, e.g., user interface, while ignoring others, or, is simply, not done at all! 8/24/2012 Software Engineering Design: Theory and Practice 10

SOFTWARE DESIGN CHALLENGE #3 THE TECHNOLOGY The technology for designing and implementing today software systems continues to evolve to provide improved capabilities. For example, Modeling languages and tools Programming languages Integrated development environments Design strategies, patterns, etc. As new technologies emerge, software designers are required to assimilate and employ them all at the same time. In some cases, old and new technology needs to coexist in the same project! This creates a demand for capable designers that can assimilate new concepts and technology quickly and effectively. This is challenging because of the time required for both learning new technology and completing a project on-time, while making sure that the new technology interoperates well with old legacy systems. 8/24/2012 Software Engineering Design: Theory and Practice 11

SOFTWARE DESIGN CHALLENGE #4 ETHICAL AND PROFESSIONAL PRACTICES Designers create blueprints that drive the construction of software. Tight schedules can create external pressures to deviate from the formal design process to get the product out the door. In some cases, this can have catastrophic consequences To correctly and responsibly execute the design phase, designers are required to exert strong leadership skills to: Influence and negotiate with stakeholders Motivate the development team Enforcing ethical guidelines Evaluate the social impacts of their designs in the public domain or in safetycritical systems Follow and enforce the ethical and professional practices This is a challenge when attempting under numerous pressures from different stakeholders, e.g., management, customer, peers, etc. 8/24/2012 Software Engineering Design: Theory and Practice 12

SOFTWARE DESIGN CHALLENGE #5 MANAGING DESIGN INFLUENCES Besides negative pressures, designs are shaped by other influences from stakeholders, the development organization, and other factors (e.g., the designers own experiences). These influences can have cyclical effects between the system and its external influences, such that external factors affect the development of the system and the system affects its external factors [1]. Managing these influences is essential for maximizing the quality of systems and their related influence on future business opportunities. Of specific importance are design influences that come from the system s stakeholders and, its developing organization 8/24/2012 Software Engineering Design: Theory and Practice 13

SOFTWARE DESIGN CHALLENGE #5 MANAGING DESIGN INFLUENCES Software projects can have a multitude of stakeholders, each with specific wants and needs that influence the software design. Some conflicting with each other! Each stakeholder believes he/she is correct. This requires some design trade-offs to satisfy each customer. Difficult to do in large-scale systems! This is difficult to do since design decisions need to accommodate all concerns without negatively affecting the I want Security! project. I want performance! Yikes! I want Usability! 8/24/2012 Software Engineering Design: Theory and Practice 14

SOFTWARE DESIGN CHALLENGE #5 MANAGING DESIGN INFLUENCES The developing organization also influences designs significantly. Consider software development across site boundaries! Consider coordinating design efforts Consider conducting peer reviews Consider developing code from design Consider managing version control In this case, design must support such development! At the same time, designs can influence the developing organization to enter new areas of business. Consider a design that supports plug-ins to enhance capabilities of the software. Someone may realize that existing functionality can be enhanced via plug-in to solve a problem in a different domain, giving the developing organization a competitive advantage! Managing these influences is challenging because it requires designers to span out of the technical domain to have keen interest in the organization as a whole. 8/24/2012 Software Engineering Design: Theory and Practice 15

SOFTWARE DESIGN PROCESS Up until now, we have spent quite a bit of time discussing properties of software design. We have also defined software design from the process perspective, which referred to the phase, activities, tasks, and interrelationship between them required to model software s structure and behavior before construction. However, we have not formally described what goes on within the design phase. Let s examine in depth the software design process A software design process is a set of activities and controls that specify how resources work together for the production of software design artifacts. Two major activities of the software design process include: Software Architecture Detailed Design 8/24/2012 Software Engineering Design: Theory and Practice 16

Software Architecture SOFTWARE DESIGN PROCESS Corresponds to a macro design approach for creating models that depict the quality and function of the software system. Provides black-box models used to evaluate the system s projected capabilities as well as its expected quality. Designed using multiple perspectives, therefore, allows different stakeholders with different backgrounds to evaluate the design to ensure that it addresses their concerns. It provides the major structural components and interfaces of the system. It focuses on the quality aspects of the system before detailed design or construction can begin. They serve as important communication, reasoning, and analysis tool that supports the development and growth of the system [1] Lays the foundation for all subsequent work in the software engineering lifecycle. 8/24/2012 Software Engineering Design: Theory and Practice 17

SOFTWARE DESIGN PROCESS Detailed Design Whereas software architecture deals with the major structural components and interfaces of the system, detailed design focuses mostly on the internals of those components and interfaces. Begins after the software architecture activity is specified, reviewed, and deemed sufficiently complete. Builds on the software architecture to provide a white-box approach to design the structure and behavior of the system. Refines the architecture to reach a point where the software design, including architecture and detailed design, is deemed sufficiently complete for the construction phase to begin. Focuses on functional requirements, whereas the architecture focuses mostly on non-functional, or quality, requirements. Two important tasks of the detailed design activity include: Interface Design Component Design 8/24/2012 Software Engineering Design: Theory and Practice 18

SOFTWARE DESIGN PROCESS Interface design Refers to the design activity that deals with specification of interfaces between components in the design. Provide a standardized way for accessing services provided by software components. Allow for multiple efforts to occur in parallel, as long as interfaces are obeyed, therefore, it is one of the first tasks during detailed design. Can be performed for both internal interfaces and external interfaces, e.g., XML messaging specification for communication across the network. Component design During architecture, major components are identified. During component design, the internal design of (the structure and behavior of) these components is created. In object-oriented systems, using UML, component designs are typically in the form of class diagrams, sequence diagrams, etc. When creating these designs, several design principles, heuristics, and patterns are often used in professional practice. Sometimes referred to as component-level design. 8/24/2012 Software Engineering Design: Theory and Practice 19

SOFTWARE DESIGN PROCESS Software architecture and detailed design are well-known activities of the software design phase, however, other important activities are required for supporting the creation of architectural and detailed designs. Therefore, when scoping the software design process, the effort required for these other activities must be considered! Other important activities that require time and effort include: Design documentation Management activities An often neglected activity when scoping design efforts is the design that occurs during construction. This form of design is important to model complex functions or routines identified during detailed design. Construction design is a form of detailed design that occurs mostly during the construction phase. Construction design is important to reason, communicate, and document the solution to complex programming problems. Another important design activity is the Human-computer interface design. Design activity where general principles are applied to optimize the interface between humans and computers. 8/24/2012 Software Engineering Design: Theory and Practice 20

SOFTWARE DESIGN PROCESS The software design phase has several activities, each having one or more tasks. Architecture Identifying views Identifying patterns Detailed Design Interface design Component design Construction Design Flow-based design Table-based design Human-computer Interface Design Each design activity needs to be Documented, and All processes need to be managed! We will spend the rest of the semester learning how to carry out these activities (including tasks), how to document these efforts, and how to manage them! 8/24/2012 Software Engineering Design: Theory and Practice 21

SOFTWARE DESIGN PROCESS In the previous slide, it is seen that architectural designs are elaborated through detailed design, which are further elaborated through construction design. In practice, design activities are not carried out in such orderly and controlled fashion. Quite a bit of iteration occurs between these activities. In a perfect world, all design work would take place during the design phase. In practice, the distribution of design activities varies throughout the software development life-cycle. In most projects, most of the design efforts occur during the design phase, but some design inevitably occurs in other life-cycle phases, e.g., Requirements Construction In some cases, architectural design efforts occur during the requirement s phase. In some cases, detailed design occurs during the construction phase. These cases will become evident as we cover these activities during the course. 8/24/2012 Software Engineering Design: Theory and Practice 22

WHAT S NEXT In the next session, we will continue the focused discussions on software engineering design. Specifically, Roles of software designers Systems Engineer Software architect Component designer User interface designer Design principles Modularization Abstraction Encapsulation Cohesion and coupling Separation of interface and implementation Sufficiency and completeness Design strategies Object-oriented vs. structured design Practical design considerations 8/24/2012 Software Engineering Design: Theory and Practice 23

REFERENCES [1] Bass, Len, Paul Clements, and Rick Kazman. Software Architecture in Practice, 2d ed. Boston: Addison-Wesley, 2003. 8/24/2012 Software Engineering Design: Theory and Practice 24