What exactly is software design? What is software? When will the design phase begin when it is completed? They ask all the questions that need to be asked when considering what the software is. Thinking about software design undoubtedly affects the approach of software development and ultimately the production of the final product.
Design is one of the schematic areas where everyone agrees with the idea, but not necessarily in the form. After all, there are plenty of different design and development models. At some stage, someone questioned the current model to create a new one. One that is better suited or better understood by what software design, software development, software testing, and what can and should not be applied.
For example, a waterfall model restricts design or works at the specific phase of the software lifecycle model, but the prototype models will launch a new prototype (and consequently new sections) on each prototype (discard the prototypes).
Understand that how design perceives the concept that is often overlooked. Why? Many programmers do not necessarily know why they are planning something they do, just doing it; has been conditioning for years in the same way. They learn the concepts of object-oriented design, and often apply them to problems, not rhyme or cause. So you insist that succession is important to reusing code and design patterns validate structure and order. He has learned all the situations in which he works great. But did you learn the situations in which they do not work so well? Interfaces are great for object substitution and polymorphic use, but do you really need a surface in an area that is unlikely to change or do not know?
You know how and why we look at the software version as you do it, so you pay more attention to making mistakes, or you're likely to make it.
- Learn Software Design
- Ask yourself what good software development is?
- Ask yourself what's wrong software development?
- How did you get to your design decisions?
- Understand Your Decisions
Find out what your design is for you and what impact your design decisions have. Remember this every time you sit on the drawing board.
What do you think is good software design? You may think this is a simple or easy design. Or maybe this is something that is flexible; In the future, it supports a number of features, requiring fewer rewrites. Perhaps this is just something that is consistent, predictable and allows you to systematically solve the problem (software design patterns). None of these are a bad thing, but whatever you choose, this affects the way the system is designed.
If you think that good design is always minimalistic as if it were a subordinate to a solution. Delicious on small projects, but something bigger, you can fall into the trap, avoiding the potentially better (though more complex) solution. If you're always planning on flexibility, you may find it easy and straightforward to solve the problems
too complex plans were used when the simplest thing would do.
What are you trying to avoid most when designing a problem definition? Change, insecurity or something else. These are important because they are almost always present (there are things that you can minimize, but I do not care about it here). If you try to avoid change, for example, if you want to make simpler designs, because you think the design does not change. The client will inevitably change their minds, or the specifications will change and be in a difficult position, as the design is now forced to handle the change.
Think about what drives your design decisions. Are the factors from the actual project specification contributing to it? Was there time, budget or resources? If your project is time-bound (with almost every project), you might have urged it to look for simpler planning. We have no time to develop a more powerful solution.
Finally, understand your decisions is the best thing. He can not often change time constraints, but knowing he deliberately takes into account that this limitation in design better prepares his judgment and decisions. If you suddenly get more time to finish the project, would you finish the project early, leave your design or re-evaluate your choices?
Development is the primary way to understand how and why you do anything. You may make a lot of decisions about your design, but leaving such decisions can help improve the following.
This article is a software version series [http://codelines.net.au/blog/software-design-101]