Sunday, June 20, 2010

Introduction

The goal of software engineers is to create practical software systems that have social and/or economic value using a systematic software development process. The software development process transforms a user's needs into software, and this process can integrate a subset of the following practices: requirements engineering, system analysis, architecture, design, coding, integration, design and code reviews, testing, maintenance, project management, and configuration management. Software engineers choose an appropriate subset of these practices that best fit the parameters of the software they are developing.


Members of the software industry face many unique challenges during development of a software application. Software is a tractable, not physical medium, which provides limitless opportunities to model a bounded world. Due to the tractability of software, requirements can change frequently during the course of the project, which can lead to uncertainty. Scheduling problems can arise due to schedule optimism and schedule pressure. Software engineers are optimistic on the time it will take to develop a project, and therefore will make aggressive commitments. Schedule pressure comes from these aggressive commitments and the feeling that a project hinges on specific feature. Software engineering deals with the entire process of creating a software product, and the best practices involved with development.


Defination of Software Engineering

Software Engineering has come to mean at least two different things in our industry.  First of all the term "software engineer" has generally replaced the term "programmer".  So, in that sense there is a tendency to extrapolate in people's minds that Software Engineering is merely the act of programming.  Secondly, the term "Software Engineering" has been used to describe "building of software systems which are so large or so complex that they are built by a team or teams of engineers", as was used in Fundamentals of Software Engineering. Yet, there is increasing evidence that many of the processes we have been developing for large groups of engineers also apply to the best practices of even individual engineers. 

Software Engineering is intended to mean the best-practice processes used to create and/or maintain software, whether for groups or individuals, in attempt to rid ourselves of the usual haphazard methods that have plagued the software industry.  This would include subjects like Configuration Management, Project Planning, Project Tracking, Software Quality Assurance, Risk Management, Formal Inspections, etc.  

No comments:

Post a Comment