Software Design Process CSE874 Software System Design Architecture

  • Slides: 17
Download presentation
Software Design Process CSE-874 Software System Design & Architecture Dr. Awais Majeed awais. majeed@bcs.

Software Design Process CSE-874 Software System Design & Architecture Dr. Awais Majeed awais. majeed@bcs. org

Outline n n n Software Design Viewpoints/Representations Design process Levels of design Software design

Outline n n n Software Design Viewpoints/Representations Design process Levels of design Software design principles Software design methods

Software Design n A software design is a meaningful engineering representation of some software

Software Design n A software design is a meaningful engineering representation of some software product that is to be built. The process of applying various techniques and principles for the purpose of defining a device, a process or a system in sufficient detail to permit its physical realization” [TAY 59] n A design can be traced to the customer's requirements and can be assessed for quality against predefined criteria. n It lays down the groundwork for achieving non-functional requirements (performance, maintainability, reusability, etc. ) n It takes target technology into account (e. g. , kind of middleware, database design, etc. )

Software Design … n From abstractions to systems q q q abstractions allow us

Software Design … n From abstractions to systems q q q abstractions allow us to ignore implementation details of procedures and data structures for large systems, we need to abstract away even more detail we need to represent higher level abstractions

Viewpoints/Representations n n Viewpoints help in creating abstractions A viewpoint tells you which details

Viewpoints/Representations n n Viewpoints help in creating abstractions A viewpoint tells you which details you can ignore when forming an abstraction It defines which details are relevant and which are not Viewpoints can overlap q Some aspects of a design are common to several viewpoints

Design Representations q q Help us to see the big picture allow us to

Design Representations q q Help us to see the big picture allow us to communicate our designs with others n n n q allow us to measure various quality attributes n q customers, managers, other developers, people with varying technical expertise These representations may not be correct/completeness, consistency, complexity Help in documenting the design for future reference n Must be complete and correct

Software Design Representations n Structural q n Functional q n Tasks performed by system

Software Design Representations n Structural q n Functional q n Tasks performed by system Behavioural q n Static properties Cause and effect, system behaviour Data Modeling q Data objects and their relationships

Software Design in SDLC n n In SDLC (Software Development Life Cycle), Design phase

Software Design in SDLC n n In SDLC (Software Development Life Cycle), Design phase is one of the most important phases. In the software engineering context, design focuses on four major areas of concern: data, architecture, interfaces and procedures/components.

Design Process n n n During the design process, the software specifications are transformed

Design Process n n n During the design process, the software specifications are transformed into design models that describe the details of the data structures, system architecture, interface, and components. The emphasis in design phase/process is on quality. This phase provides us with representation of software that can be assessed for quality.

Analysis to Software design

Analysis to Software design

Design Process Activities n Architectural design n Interface design n Component design n Data

Design Process Activities n Architectural design n Interface design n Component design n Data structure design n Algorithm design

Levels of Software Design n Architectural design (high-level design) q q q n architecture

Levels of Software Design n Architectural design (high-level design) q q q n architecture - the overall structure, main modules and their connections addresses the main non-functional requirements (e. g. , reliability, performance) hard to change Detailed design (low-level design) q q the inner structure of the main modules detailed enough to be implemented in the programming language

Software Design should be: n n n Simple Correct & Complete Loosely coupled Understandable

Software Design should be: n n n Simple Correct & Complete Loosely coupled Understandable Adaptable Maintainable

Software Design Methods n n n Structured Methods q Process functions are identified Object-Oriented

Software Design Methods n n n Structured Methods q Process functions are identified Object-Oriented q develop an object model of a system Data-Oriented q Entities are determined for each sub-system, then entity inter-relationships are examined to develop the additional entities needed to support the relationships. Component-based q Divide the system into components Formal Methods q Requirements and programs are translated into mathematical notation

Which method to choose? n n n Data oriented design is useful for systems

Which method to choose? n n n Data oriented design is useful for systems that process lots of data, e. g. database and banking applications Structured design is useful for process intensive systems that will be programmed using a procedural language such as FORTRAN. OO methods are useful for any system that will be programmed using an object oriented language such as C++. Component-based Methods are used for the large systems that can be modularized. Formal methods are considered to be an alternative to OO and classical design methods, but their use is expensive and claims of reduced errors remain unproven. However, the ability to formally validate the correctness of a software artifact is appealing and research on formal methods is ongoing.

Software Design Strategies n n n Divide-and-conquer/stepwise refinement Top-down vs. bottom-up Data abstraction and

Software Design Strategies n n n Divide-and-conquer/stepwise refinement Top-down vs. bottom-up Data abstraction and information hiding Use of heuristics Use of patterns and pattern languages Iterative and incremental approach

Reading for Next Week n Chapter 5 of “Software Engineering” 9 th Ed, by

Reading for Next Week n Chapter 5 of “Software Engineering” 9 th Ed, by Sommerville n Rest of the reading material for Week 2 will be available from q q q http: //learn. mcs. edu. pk Look for Software Design & Architecture course in Fall 2012 category of MS Software Engineering category. Login as guest.