Information about Software Design
Software design is a process of problem-solving and planning for a software solution. After the purpose and specifications of software is determined, software developers will design or employ designers to develop a plan for a solution. It includes low-level component and algorithm implementation issues as well as the architectural view.
The software requirements analysis (SRA) step of a software development process yields specifications that are used in software engineering. If the software is "semiautomated" or user centered, software design may involve user experience design yielding a story board to help determine those specifications. If the software is completely automated (meaning no user or user interface), a software design may be as simple as a flow chart or text describing a planned sequence of events. There are also semi-formal methods like Unified Modeling Language and Fundamental modeling concepts. In either case some documentation of the plan is usually the product of the design.
A software design may be platform-independent or platform-specific, depending on the availability of the technology called for by the design.
The software requirements analysis (SRA) step of a software development process yields specifications that are used in software engineering. If the software is "semiautomated" or user centered, software design may involve user experience design yielding a story board to help determine those specifications. If the software is completely automated (meaning no user or user interface), a software design may be as simple as a flow chart or text describing a planned sequence of events. There are also semi-formal methods like Unified Modeling Language and Fundamental modeling concepts. In either case some documentation of the plan is usually the product of the design.
A software design may be platform-independent or platform-specific, depending on the availability of the technology called for by the design.
Design Considerations
There are many aspects to consider in the design of a piece of software. The importance of each should reflect the goals the software is trying to achieve. Some of these aspects are:- Extensibility - New capabilities can be added to the software without major changes to the underlying architecture.
- Robustness - The software is able to operate under stress or tolerate unpredictable or invalid input. For example, it can be designed with a resilience to low memory conditions.
- Reliability - The software is able to perform a required function under stated conditions for a specified period of time.
- Fault-tolerance - The software is resistant to and able to recover from component failure.
- Security - The software is able to withstand hostile acts and influences.
- Maintainability - The software can be restored to a specified condition within a specified period of time. For example, virus software may include the ability to periodically receive virus definition updates in order to maintain the software's effectiveness.
- Compatibility - The software is able to operate with other products that are designed for interoperability with another product. For example, a piece of software may be backward-compatible with an older version of itself.
- Modularity - the resulting software comprises of well defined, independent components. That leads to better maintainability. The components could be then implemented and tested in isolation before being integrated to form a desired software system. This allows division of work in a software development project.
- Reuse - the modular components designed should capture the essence of the functionality expected out of them and no more or less. This single-minded purpose render the components reusable wherever there are similar needs in other designs.
Design Patterns
A software designer or architect may identify a design problem which has been solved by others before. A template or pattern describing a solution to a common problem is known as a design pattern. (Design pattern (computer science)). The reuse of such patterns can speed up the software development process, having been tested and proved in the past.Usage
Software design documentation may be reviewed or presented to allow constraints, specifications and even requirements to be adjusted prior to programming. Redesign may occur after review of a programmed simulation or prototype. It is possible to design software in the process of programming, without a plan or requirement analysis, but for more complex projects this would not be considered a professional approach. A separate design prior to programming allows for multidisciplinary designers and Subject Matter Experts (SMEs) to collaborate with highly-skilled programmers for software that is both useful and technically sound.See also
- Software development
- Software blueprint
- Software architecture
- Search Based Software Engineering
- User experience
- Experience design
- Model-driven architecture
- Software Design Description (IEEE 1016)
- Design pattern (computer science)
Computer software is a general term used to describe a collection of computer programs, procedures and documentation that perform some task on a computer system. [1]
..... Click the link for more information.
..... Click the link for more information.
A software developer is a person who is concerned with one or more facets of the software development process, a somewhat broader scope of computer programming or a specialty of project managing.
..... Click the link for more information.
..... Click the link for more information.
Design, usually considered in the context of the applied arts, engineering, architecture, and other such creative endeavors, is used both as a noun and a verb. As a verb, "to design" refers to the process of originating and developing a plan for a product, structure, system, or
..... Click the link for more information.
..... Click the link for more information.
Designer is a broad term for a person who designs any of a variety of things. That usually implies the task of creating or of being creative in a particular area of expertise.
..... Click the link for more information.
..... Click the link for more information.
In artificial systems and software engineering, requirements analysis encompasses those tasks that go into determining the needs or conditions to meet for a new or altered device, taking account of the possibly conflicting requirements of the various stakeholders, such as
..... Click the link for more information.
..... Click the link for more information.
A software development process is a structure imposed on the development of a software product. Synonyms include software life cycle and software process. There are several models for such processes, each describing approaches to a variety of tasks or activities that
..... Click the link for more information.
..... Click the link for more information.
specification is an explicit set of requirements to be satisfied by a material, product, or service. (ASTM definition)
..... Click the link for more information.
Use of a Specification
In engineering, manufacturing, and business, it is vital for suppliers, purchasers, and users of materials, products, or..... Click the link for more information.
Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software.[1] The term software engineering
..... Click the link for more information.
..... Click the link for more information.
User-centered design (UCD) is a philosophy and a process. It is a philosophy that places the person (as opposed to the 'thing') at the center; it is a process that focuses on cognitive factors (such as perception, memory, learning, problem-solving, etc.
..... Click the link for more information.
..... Click the link for more information.
User experience design is a subset of the field of experience design which pertains to the creation of the architecture and interaction models which impact a user's perception of a device or system.
..... Click the link for more information.
..... Click the link for more information.
Storyboards are graphic organizers such as a series of illustrations or images displayed in sequence for the purpose of previsualizing a motion graphic or interactive media sequence, including website interactivity.
..... Click the link for more information.
..... Click the link for more information.
Automation (ancient Greek: = self dictated), roboticization [1] or industrial automation or numerical control is the use of control systems such as computers to control industrial machinery and processes, replacing human operators.
..... Click the link for more information.
..... Click the link for more information.
User can refer to:
..... Click the link for more information.
- User (computing), one who uses a computer system
- User (telecommunications), one who employs the services provided by a telecommunication system
- USER, a recording artist
..... Click the link for more information.
The user interface (or Human Machine Interface) is the aggregate of means by which people (the users) interact with a particular machine, device, computer program or other complex tool (the system).
..... Click the link for more information.
..... Click the link for more information.
flowchart (also spelled flow-chart and flow chart) is a schematic representation of an algorithm or a process. A flowchart is one of the seven basic tools of quality control, which also includes the histogram, Pareto chart, check sheet, control chart, cause-and-effect
..... Click the link for more information.
..... Click the link for more information.
Semi-formal is a dress code that is analogous to black tie, and indicates a level of dress between a lounge suit and white tie. Traditionally, semi-formal calls for a dinner jacket in the evening or a stroller before six o'clock.
..... Click the link for more information.
..... Click the link for more information.
In the field of software engineering, the Unified Modeling Language (UML) is a standardized specification language for object modeling. UML is a general-purpose modeling language that includes a graphical notation used to create an abstract model of a system, referred to as a
..... Click the link for more information.
..... Click the link for more information.
Fundamental Modeling Concepts (FMC) provide a framework to describe software-intensive systems. It strongly emphasizes the communication about software-intensive systems by using a semi-formal graphical notation that can easily be understood.
..... Click the link for more information.
..... Click the link for more information.
In general terms, documentation is any communicable material (such as text, video, audio, etc., or combinations thereof) used to explain some attributes of an object, system or procedure.
..... Click the link for more information.
..... Click the link for more information.
A platform-independent model or PIM is a model of a software or business system that is independent of the specific technological platform used to implement it.
The term platform-independent model is most frequently used in the context of the MDA approach.
..... Click the link for more information.
The term platform-independent model is most frequently used in the context of the MDA approach.
..... Click the link for more information.
A platform-specific model is a model of a software or business system that is linked to a specific technological platform (e.g. a specific programming language, operating system or database). Platform-specific models are indispensable for the actual implementation of a system.
..... Click the link for more information.
..... Click the link for more information.
In software engineering, a design pattern is a general repeatable solution to a commonly occurring problem in software design. A design pattern is not a finished design that can be transformed directly into code.
..... Click the link for more information.
..... Click the link for more information.
A design document is a description of a software product that a software designer writes in order to give a software development team an overall guidance of the architecture of the software project.
..... Click the link for more information.
..... Click the link for more information.
Computer programming (often shortened to programming or coding) is the process of writing, testing, and maintaining the source code of computer programs. The source code is written in a programming language.
..... Click the link for more information.
..... Click the link for more information.
simulation is an imitation of some real thing, state of affairs, or process. The act of simulating something generally entails representing certain key characteristics or behaviours of a selected physical or abstract system.
..... Click the link for more information.
..... Click the link for more information.
A prototype is an original type, form, or instance of some thing serving as a typical example, basis, epitome, or standard for other things of the same category.
..... Click the link for more information.
Semantics
In semantics, prototypes or prototypical instances..... Click the link for more information.
Interdisciplinarity is the act of drawing from and integrating two or more academic disciplines, professions, technologies, departments, their methods and insights, in the pursuit of a common goal.
..... Click the link for more information.
..... Click the link for more information.
A Subject Matter Expert (SME) is a person who is an expert in a particular area. Invariably, the term is used when there are professionals with technical project knowledge but without expertise in the field of application.
..... Click the link for more information.
..... Click the link for more information.
Software development is the translation of a user need or marketing goal into a software product.[1][2] Software development is sometimes understood to encompass the processes of software engineering combined with the research and goals of software marketing
..... Click the link for more information.
..... Click the link for more information.
must be prescriptive and therefore exhibit the same formality as other prescriptive languages such as C++ or Java. Software blueprinting exponents claim that this provides the following advantages over enduring inspiration:
..... Click the link for more information.
..... Click the link for more information.
This article is copied from an article on Wikipedia.org - the free encyclopedia created and edited by online user community. The text was not checked or edited by anyone on our staff. Although the vast majority of the wikipedia encyclopedia articles provide accurate and timely information please do not assume the accuracy of any particular article. This article is distributed under the terms of GNU Free Documentation License.
Herod_Archelaus