softwareDesign - Foundations of Software Engineering (for...

Info iconThis preview shows pages 1–10. Sign up to view the full content.

View Full Document Right Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: Foundations of Software Engineering (for non-software engineers) Software Design Guy-Vincent Jourdan Software design The software design phase is that step at which the solution materializes. After having uncovered what should be implemented, we are looking at how it will be implemented. It is a crucial step, that necessitates among other things: Technical skills Experience and expertise Vision Software design Van Vliet, H. Software Engineering: Principles and Practice, 2 nd Edition , Wiley, 2000 Meyer, B. Object Oriented Software Construction, 2 nd Edition , Prentice Hall, 1997 Gamma, E., Helm, R., Johnson, R. and Vlissides, J. Design Patterns, Addison-Wesley, 1995 Software design Designing software is a process leading from the requirements engineering phase to the development phase. It is usually broken down into high level design and detailed design. During the high level design phase, we decide how the product will be organized, broken down into interacting module, so that each module having a lower complexity than the system as a whole and the parts together solve the users problem. During the low level design, we will specify precisely how the software will be implemented. A step back We are seeking the production of quality software . We are looking for techniques that would help reaching that goal. What is, precisely, this goal? There are several factors to quality, and these factors fail in two categories: External factors, seen by the user (speed, ease of use) Internal factors, seen only by the software engineers (code is clear etc.) Ultimately, external factors are the only ones that matter. Internal ones are here to help achieve them. Lets review some of these external quality factors. External quality factors It is the top most factor: if the software doesnt do what it is supposed to do, little else matters! Correctness is immensely complicated by the challenge of having accurate and precise specification on the one hand, and relying on correct software (compiler, libraries, operating system, middleware) on the other hand Correctness The ability of software products to perform their exact tasks, as defined by their specification. External quality factors Correctness was about behavior in normal cases (according to the specifications), robustness is about the other cases: it is the ability of the software to degrade gracefully under abnormal conditions Robustness The ability of software systems to react appropriately to abnormal conditions. External quality factors We need extendibility because the environment of the software is going to change. Extendibility is improved by the simplicity of the design and the decentralization (modularity) Extendibility The ease of adapting software products to changes of specifications. External quality factors If we believe that software systems follows some pattern, we need to exploit this commonality and avoid starting a...
View Full Document

Page1 / 51

softwareDesign - Foundations of Software Engineering (for...

This preview shows document pages 1 - 10. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online