Current Software is rarley written from scratch.
Software can be written to extend or modify something that is already written and in use.
Normaly, programs are made from off the shelf style components to do tasks within the progam. Most of the task is just configuring it to work in your spesific use case.
Software Design
The decodeion of the structure of the software to be implemented, data models, interfaces and algorythms.
Platform information, software requirements, and Data decodeions get turned in to System architecure, database design, interface specification, and component decodeions
Examples of Process Models
The waterfall model
Incremental Development
Reuse-Oriented sotware engenering
Waterfall:
Good:
Process is easy to see and track at each stage
Timescales are predictable
Bad:
Process is inflexible
Can only be used when requirements are likley to stay unchanged throughout the process
Incremental Development:
Good:
Its easier to add/remove requirements to the software after development has started
Easier to get feedback from customers
Bad:
The process is hard to visualise
Can be confusing to follow the plan
Reuse-oriented software Engineering:
This is a little different from the other two methods, as it relies components to already be written previously or by other people.
Good:
Reduces the ammount of code to be written
Speedy to create the finished product
Bad:
Requirements sometimes are not met as compromises may need to be made to incorporate the components.
Difficulties in understanding software that has already been written.