written 2.7 years ago by |
Software Engineering:
Software engineering covers not only the technical aspects of building software systems, but also management issues, such as directing programming teams, scheduling, and budgeting.
Software engineering is an engineering branch associated with development of software product using well-defined scientific principles, methods and procedures. The outcome of software engineering is an efficient and reliable software product. Software project management has wider scope than software engineering process as it involves communication, pre and post-delivery support etc.
The need of software engineering arises because of higher rate of change in user requirements and environment on which the software is working.
- Large software - It is easier to build a wall than to a house or building, likewise, as the size of software become large engineering has to step to give it a scientific process.
- Scalability- If the software process were not based on scientific and engineering concepts, it would be easier to re-create new software than to scale an existing one.
- Cost- As hardware industry has shown its skills and huge manufacturing has lower down the price of computer and electronic hardware. But the cost of software remains high if proper process is not adapted.
- Dynamic Nature- The always growing and adapting nature of software hugely depends upon the environment in which user works. If the nature of software is always changing, new enhancements need to be done in the existing one. This is where software engineering plays a good role.
- Quality Management- Better process of software development provides better and quality software product.
Reverse Engineering:
Reverse engineering is taking apart an object to see how it works in order to duplicate or enhance the object. The practice, taken from older industries, is now frequently used on computer hardware and software. Software reverse engineering involves reversing a program's machine code (the string of 0s and 1s that are sent to the logic processor) back into the source code that it was written in, using program language statements.
Reverse-engineering is used for many purposes: as a learning tool; as a way to make new, compatible products that are cheaper than what's currently on the market; for making software interoperate more effectively or to bridge data between different operating systems or databases; and to uncover the undocumented features of commercial products.
Following are reasons for reverse engineering a part or product:
- The original manufacturer of a product no longer produces a product
- There is inadequate documentation of the original design
- The original manufacturer no longer exists, but a customer needs the product
- The original design documentation has been lost or never existed
- Some bad features of a product need to be designed out. For example, excessive wear might indicate where a product should be improved
- To strengthen the good features of a product based on long-term usage of the product
- To analyze the good and bad features of competitors' product
- To explore new avenues to improve product performance and features
- To gain competitive benchmarking methods to understand competitor's products and develop better products
- The original CAD model is not sufficient to support modifications or current manufacturing methods
- The original supplier is unable or unwilling to provide additional parts
- The original equipment manufacturers are either unwilling or unable to supply replacement parts, or demand inflated costs for sole-source parts
- To update obsolete materials or antiquated manufacturing processes with more current, less-expensive technologies.