softwareDesign - Foundations of Software Engineering(for...

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

View Full Document Right Arrow Icon
Foundations of Software Engineering (for non-software engineers) Software Design Guy-Vincent Jourdan
Image of page 1

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

View Full Document Right Arrow Icon
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
Image of page 2
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
Image of page 3

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

View Full Document Right Arrow Icon
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 user’s problem. During the low level design, we will specify precisely how the software will be implemented.
Image of page 4
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. Let’s review some of these external quality factors.
Image of page 5

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

View Full Document Right Arrow Icon
External quality factors It is the top most factor: if the software doesn’t 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.
Image of page 6
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.
Image of page 7

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

View Full Document Right Arrow Icon
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.
Image of page 8
External quality factors If we believe that software systems follows some pattern, we need to exploit this commonality and avoid starting a component from scratch every time.
Image of page 9

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

View Full Document Right Arrow Icon
Image of page 10
This is the end of the preview. Sign up to access the rest of the document.

{[ snackBarMessage ]}

What students are saying

  • Left Quote Icon

    As a current student on this bumpy collegiate pathway, I stumbled upon Course Hero, where I can find study resources for nearly all my courses, get online help from tutors 24/7, and even share my old projects, papers, and lecture notes with other students.

    Student Picture

    Kiran Temple University Fox School of Business ‘17, Course Hero Intern

  • Left Quote Icon

    I cannot even describe how much Course Hero helped me this summer. It’s truly become something I can always rely on and help me. In the end, I was not only able to survive summer classes, but I was able to thrive thanks to Course Hero.

    Student Picture

    Dana University of Pennsylvania ‘17, Course Hero Intern

  • Left Quote Icon

    The ability to access any university’s resources through Course Hero proved invaluable in my case. I was behind on Tulane coursework and actually used UCLA’s materials to help me move forward and get everything together on time.

    Student Picture

    Jill Tulane University ‘16, Course Hero Intern