Chapter 1
What is software? Computer program with a set of documentation (system design and structure and user documentation), configuration data and all additional sources of information directly related to the program.
There are 2 types of software product:
From developers’ stand of view, one of the main differences of those types is that for customized case the specifications for a software product is done mostly by the organization which buying it. For generic product development, specifications are created by the same development organization. Nowadays, there is no straight line between those types as there was several years ago.
Software engineers, as any other engineers, make things work by applying theories, methods and tools (created, mostly, by computer scientists, but when it comes to practical problems, there’s often need to change the solution and develop your own way, still, based on some theory). Software engineering is not all about coding programs, there are much more problems to solve during the work on project, for example project management, scheduling of work, testing and choosing the right way to go.
Software engineering is concerned with all aspects of the development and evolution of complex systems. System engineering is concerned with hardware development, policy and process design.
Software process consists of four fundamental activities:
Different types of software need different development process.
Software process model is a simplified description of a software process that presents one view of a process. And again, choice of a view depends on the system developing, sometimes it is useful to apply a workflow model, sometimes, for example – a role/action model. Most software process models are based on one of three general models or paradigms of software development.
A software engineering method is a structured approach to software development whose aim is to facilitate the production of high-quality software in a cost-effective way. If not talking about history, today most common method is based on UML (Unified Modeling Language), which was created from different approaches from the past.
As any other thing related to software engineering, methods may vary depending on different situations.
For a software engineer it is always important to make sure the product is good, and there are different tools to analyze that. Overall, good piece of software should meet these attributes:
My thoughts
First chapter is introduction and most of things look familiar for me, especially after attending COMP3104 lectures. I think about software development as very complex process, which technically never ends because always has something to make better or add more features. While facing big problems and developing large systems, the necessity of every point of development become stronger. As such, I understand why maintainability is so important for both developers and customers. Software engineering is a lot of responsibility: to other engineers, to customers and society around the product. It is a big challenge – applying theoretical methods on practice.