"A feasibility study is a short, focused study that should
take place early in the RE process. It should answer three key questions: a)
does the system contribute to the overall objectives of the organization? b)
can the system be implemented within schedule and budget using current
technology? and c) can the system be integrated with other systems that are
used? If the answer to any of these questions is no, you should probably not go
ahead with the project."
"A model is an abstraction of the system being studied rather
than an alternative representation of that system. Ideally, a representation of
a system should maintain all the information about the entity being
represented. An abstraction deliberately simplifies and picks out the most
salient characteristics."
"Agile approaches to software development consider design and
implementation to be the central activities in the software process. They
incorporate other activities, such as requirements elicitation and testing,
into design and implementation. By contrast, a plan-driven approach to software
engineering identifies separate stages in the software process with outputs
associated with each stage."
"Agile methods universally rely on an incremental approach to software specification, development, and delivery. They are best suited to application development where the system requirements usually change rapidly during the development process. They are intended to deliver working software quickly to customers, who can then propose new and changed requirements to be included in later iterations of the system. They aim to cut down on process bureaucracy by avoiding work that has dubious long-term value and eliminating documentation that will probably never be used." (Ian Sommerville, "Software Engineering" 9th Ed., 2011)
"Computer science is concerned with the theories and methods that underlie computers and software systems, whereas software engineering is concerned with the practical problems of producing software. Some knowledge of computer science is essential for software engineers in the same way that some knowledge of physics is essential for electrical engineers. Computer science theory, however, is often most applicable to relatively small programs. Elegant theories of computer science cannot always be applied to large, complex problems that require a software solution." (Ian Sommerville, "Software Engineering" 9th Ed., 2011)
"Design patterns are high-level abstractions that document successful design solutions. They are fundamental to design reuse in object-oriented development." (Ian Sommerville, "Software Engineering" 9th Ed., 2011)
"In general, software engineers adopt a systematic and
organized approach to their work, as this is often the most effective way to
produce high-quality software. However, engineering is all about selecting the
most appropriate method for a set of circumstances so a more creative, less
formal approach to development may be effective in some circumstances. Less
formal development is particularly appropriate for the development of web-based
systems, which requires a blend of software and graphical design skills."
"Models are used during the requirements engineering process
to help derive the requirements for a system, during the design process to
describe the system to engineers implementing the system and after
implementation to document the system’s structure and operation."
"Most designers think of design patterns as a way of supporting object-oriented design. Patterns often rely on object characteristics such as inheritance and polymorphism to provide generality. However, the general principle of encapsulating experience in a pattern is one that is equally applicable to all software design approaches." (Ian Sommerville, "Software Engineering" 9th Ed., 2011)
"Programming is a personal activity and there is no general
process that is usually followed. Some programmers start with components that
they understand, develop these, and then move on to less-understood components.
Others take the opposite approach, leaving familiar components till last
because they know how to develop them. Some developers like to define data
early in the process then use this to drive the program development; others
leave data unspecified for as long as possible."
"Software systems do not exist in isolation. They are used in
a social and organizational context and software system requirements may be derived
or constrained by that context. Satisfying these social and organizational
requirements is often critical for the success of the system. One reason why
many software systems are delivered but never used is that their requirements
do not take proper account of how the social and organizational context affects
the practical operation of the system."
"System engineering is concerned with all aspects of the
development and evolution of complex systems where software plays a major role.
System engineering is therefore concerned with hardware development, policy and
process design and system deployment, as well as software engineering. System engineers
are involved in specifying the system, defining its overall architecture, and
then integrating the different parts to create the finished system. They are less
concerned with the engineering of the system components (hardware, software,
etc.)."
No comments:
Post a Comment