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.
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